TinyML на Pi Pico — налаштування середовища і збірка

Покроковий довідник до статті про TinyML на Raspberry Pi Pico. Усе, що потрібно, аби повторити проєкт з нуля: середовище, бібліотеки, заливка, типові помилки.


Що знадобиться

Залізо:

  • Raspberry Pi Pico (RP2040) — будь-яка ревізія
  • MPU6050 (акселерометр + гіроскоп), модуль на GY-521 — підійде
  • 4 перемички
  • USB-кабель microUSB (для прошивки і живлення)

Софт:

  • Arduino IDE 2.x (або 1.8.x)
  • ядро arduino-pico від Earle Philhower
  • бібліотека Chirale_TensorFlowLite
  • Python з TensorFlow (для навчання моделі — можна Google Colab у браузері)

Крок 1. Ставимо ядро arduino-pico

За замовчуванням Arduino IDE не знає про Pi Pico. Треба додати «board manager URL».

  1. Відкрий File → Preferences
  2. У полі Additional Boards Manager URLs додай:
  3. Tools → Board → Boards Manager, знайди Raspberry Pi Pico/RP2040, постав.
  4. Обери плату: Tools → Board → Raspberry Pi Pico/RP2040 → Raspberry Pi Pico

Не плутай з офіційним ядром Arduino Mbed OS. На вибір буде два — arduino-pico (від Earle Philhower) і Arduino Mbed OS RP2040 Boards (офіційне). Бери перше. Воно сумісніше з більшістю бібліотек і не тягне за собою mbed-абстракцій.


Крок 2. Ставимо Chirale_TensorFlowLite

Через стандартний Library Manager:

  1. Sketch → Include Library → Manage Libraries
  2. У пошуку: Chirale_TensorFlowLite
  3. Натисни Install

Бібліотека з офіційного каталогу Arduino: https://docs.arduino.cc/libraries/chirale_tensorflowlite/

Чесно про сумісність з Pico. Бібліотека офіційно протестована на Arduino Nano 33 BLE, Nicla, Portenta, Giga R1, Nano ESP32. RP2040 у списку підтверджених немає, автори прямо пишуть: «сумісність з іншими платами не гарантується, перевіряйте самі». Я перевірив — під arduino-pico працює. Якщо хочеш канонічний шлях саме для Pico — є pico-tflmicro (офіційний порт під Pico SDK), але він живе вже не в Arduino IDE.


Крок 3. Підключаємо MPU6050

Чотири дроти між Pi Pico і модулем MPU6050:

Pi Pico MPU6050
3V3 (OUT, pin 36) VCC
GND GND
GP16 SDA
GP17 SCL

Я живлю від 3.3 В, не від 5 В. Більшість GY-521 мають внутрішній регулятор і терплять 5 В, але рівні логіки I2C тоді стають 5 В — і прямо в I/O Pico вони не безпечні. Безпечніше тримати все на 3.3 В.

Pull-up резистори на SDA/SCL на модулях GY-521 уже розпаяні (зазвичай 4.7 кΩ або 10 кΩ), додаткові не потрібні.


Крок 4. Тренуємо модель (на ПК або в Colab)

Скрипт train_model_MPU.py створює просту модель і експортує її як model_data.h. Запускати не на Pico, а на ПК.

 

Залежності:

Або, простіше — відкрий Google Colab, скопіюй вміст train_model_MPU.py у новий ноутбук, натисни «Run All». На виході — файл model_data.h, який можна завантажити.


Крок 5. Збираємо проєкт

Структура теки скетча:

 

Обидва файли мають бути в одній теці, з однаковою назвою теки і .ino-файлу.

Tools → Board → Raspberry Pi Pico Tools → Port → /dev/ttyACM0 (або відповідний COM на Windows) Sketch → Upload

Перший раз Pico треба перевести в bootloader: затисни кнопку BOOTSEL, встав USB. Після цього з’явиться як USB-флешка — Arduino IDE сам залиє прошивку, далі вже працює без BOOTSEL.


Крок 6. Перевірка

Tools → Serial Monitor, швидкість 115200.

Якщо все добре — побачиш:


Типові помилки збірки

fatal error: TensorFlowLite.h: No such file or directory

Бібліотека Chirale_TensorFlowLite не встановлена або обрана не та плата. Перевір Tools → Board — має стояти Raspberry Pi Pico від arduino-pico, не Mbed-варіант.

model_data.h: No such file or directory

Файл model_data.h лежить не в теці скетча. Він мусить бути поряд з .ino-файлом, у тій самій папці.

AllocateTensors() failed

kTensorArenaSize замалий. Збільш у скетчі до 4 КБ або 8 КБ:

Failed to get model schema. Schema version 4 is not supported.

Модель збережена новішою версією TFLite, ніж та, що в Chirale_TensorFlowLite. Або онови бібліотеку, або експортуй модель старшою версією TensorFlow.

Serial Monitor мовчить

Перевір швидкість (115200), порт у Tools → Port, і чи запалюється LED на Pico при підключенні. Якщо нема — натисни BOOTSEL + reset і залий знову.

MPU6050 видає нулі або однакові числа

Перевір I2C-адресу: за замовчуванням 0x68, але якщо пін AD0 підтягнутий до VCC — стане 0x69. Перевір живлення (3.3 В), GND, і дроти SDA/SCL (не переплутані).


Альтернативи

  • ArduTFLite — обгортка над Chirale_TensorFlowLite з простішим API в Arduino-стилі. Підходить, якщо не хочеш бачити MicroInterpreter і тензори напряму.
  • pico-tflmicro — офіційний порт TFLite Micro під Pico SDK. Канонічний шлях, але вимагає CMake-збірки замість Arduino IDE.
  • Edge Impulse — веб-сервіс для збору даних і навчання моделі, генерує готову бібліотеку Arduino. Простіше для новачка, але приховує більшу частину «магії».

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *