Maixduino быстрый старт

В конце 2018 года был анонсирован чип Kendryte K210. Kendryte K210 - это система на кристалле (SoC), которая объединяет: два 64-битных ядра RISC-V IMAFDC (RV64GC), каждое со встроенным независимым FPU и тактовой частотой от 400 до 600 МГц; Аппаратный ускоритель сверточных нейронных сетей (CNN) KPU; Аппаратный ускоритель аудио APU; SRAM 8 МБ.


Особенности Kendryte K210 
  • Kendryte K210 - двухъядерный 64-разрядный RISC-V процессор с частотой 400 МГц (разгоняемый до 800 МГц)
  • Аппаратный ускоритель KPU CNN
  • Аппаратный ускоритель APU с поддержкой до 8 микрофонов, частота дискретизации до 192 кГц
  • FPIOA (Field Programmable IO Array), отображающий 255 функций для всех 48 GPIO на чипе.
  • SRAM 8 Мбайт общего назначения, включая 5.9 МБ, используемые в качестве памяти AI SRAM
  • AXI ROM для загрузки пользовательской программы из SPI-памяти
Kendryte K210 поддерживает платформы глубокого обучения Tiny-Yolo, Mobilenet и TensorFlow Lite с идентификацией изображений QVGA с частотой 60fps или VGA - 30fps.


Типичные области применения:
  • Приложения Smart Home (Умный Дом), такие как роботы-уборщики, умные колонки, электронные дверные замки, домашний мониторинг;
  • Приложения медицинской промышленности, такие как вспомогательная диагностика и лечение, распознавание медицинских изображений, экстренная сигнализация;
  • Приложения Smart Industry, такие как промышленное оборудование, умная сортировка, мониторинг электрооборудования;
  • Образовательные приложения, такие как образовательные роботы, интеллектуальные интерактивные платформы, проверка эффективности обучения;
  • Сельскохозяйственные приложения, такие как сельскохозяйственный мониторинг, мониторинг вредителей и болезней, автоматизированный контроль и т. д.
В течение года появилось множество плат на основе данного чипа. Я конечно не мог пройти мимо и активно следил за развитием платформ на его основе. Оптимальной по соотношению цены и комплектации, на мой взгляд, является платформа Maixduino, представленная компанией Seeed studio. Maixduino представляет собой плату в форм-факторе Arduino uno, которая сочетает модуль sipeed M1 и ESP32-WROOM-32. На плате также установлен mems микрофон и аудио усилитель. В комплекте идет камера OV2640 и дисплей с разрешением 320*240. Прошивка и питание платы осуществляется через разъем USB-C. За общение с ПК отвечает микросхема CH552, которая представляет собой двухканальный USB-UART конвертер. Таким образом мы можем отдельно получить доступ как к SIPEED, так и к ESP32.

Maixduino

Характеристики Maixduino

Модуль AISipeed M1 / Sipeed MAIX-I AIoT
Система на кристалле (SoC)Kendryte K210 (CPU+KPU+APU)
Процессор2 x 64-битных ядра RISC-V IMAFDC (RV64GC), каждое со встроенным независимым FPU, тактовая частота 400-600 МГц. 2 x 32Ki I-Cache (Кеш инструкций), 2 x 32Ki D-Cache (Кеш данных);
Аппаратный ускоритель сверточных нейронных сетей (CNN) KPU;
Аппаратный ускоритель аудио APU
ОЗУ8 МБ встроенной SRAM
ХранилищеСлот для карты Micro SD (TF);
Встроенный Flash модуль на 16M
Видео вход24-контактный разъем камеры DVP;
Поддерживает видео захват решением до 640×480 @ 30fps;
Поддерживает форматы входного изображения YUV422 и RGB565
Видео выходМожет выводить изображения как на KPU так и на дисплей — 24-контактный разъем для 8-битного ЖК-дисплея MCU
Аудио входВстроенный всенаправленный цифровой I2S MEMS Микрофон MSM261S4030H0
Аудио выходDAC+PA:
ЦАП TM8211: 16-битный динамический диапазон; Низкое гармоническое искажение;
NS4150: выходная мощность 3 Вт, разъем динамика с шагом 1.25 мм; КПД до 90%;
Беспроводная связьМодуль ESP32:
Поддерживает 2.4G 802.11.b/g/n
802.11 n (2,4 ГГц), скорость до 150 Мбит/с
Полный стандарт Bluetooth v4.2, включая традиционный Bluetooth (BR/EDR) и Bluetooth Low Energy (BLE)
USB1 x USB 2.0 устройство тип C для питания и программирования как K210, так и ESP32 через двухканальный чип CH522
ПериферияArduino UNO-совместимые разъемы с цифровыми входами/выходами/ШИМ, I2C, UART, 6-кратными аналоговыми входами и сигналами питания
ПитаниеUSB Type-C;
6 — 12 В, >600 мА через разъем питания;
4.8 — 5.2 В через Vin (?)
Кнопкисброса (reset) и загрузки (boot)
Индикаторы (LED)Питания (Power), TX-K210, RX-K210, TX-ESP32 и RX-ESP32
Форм-факторArduino Uno
Температурный диапазонот -30 °C до 85 °

Структура Maixduino


Плата поставляется в пластиковом боксе с фирменной маркировкой Sipeed.

При подаче питания на плуту, если она в порядке, на дисплее появится приветственное сообщение на красном фоне.
Потребление при подключенном дисплее составляет порядка 220 мА.
При подключении к ПК, автоматически устанавливаются драйвера для CH552 - в системе появляются два виртуальных com-порта. 
Работать с платой можно, используя предоставляемый производителем SDK, но этот путь для более опытных пользователей. Для менее опытных более удобным вариантом будет использование привычной Arduino IDE или Platformio. Но наиболее удобным вариантом будет использование специализированной IDE - MaixPy и языка MicroPython. MaixPy представляет собой адаптированную OpenMV IDE. Скачать MaixPy можно по ссылке.
MaixPy, имеет текстовый редактор, средство просмотра кадрового буфера, позволяющее видеть то, что видит камера, последовательный терминал для отладки и отображение гистограммы для облегчения отслеживания цвета. MaixPy поддерживает русский язык и интуитивно понятна.


При первом запуске MaixPy необходимо выбрать соответствующую плату.

Для подключения к Maixduino нужно нажать кнопку в левом нижнем углу и указать правильным com-порт, в моем случае -  это первый их двух. При успешном подключении дисплей станет белым. 
В отличие от OpenMV IDE MaixPy не содержит встроенных примеров кроме одного. Дополнительные примеры можно найти на Github. Также можно использовать большинство примеров для OpenMV.
Для запуска текущего скрипта необходимо нажать кнопку, расположенную ниже кнопки подключения.
Пример helloworld.py просто выводит изображение с камеры на дисплей и частоту кадров (FPS) в терминал. При активном буфере кадра в MaixPy FPS составляет около 14, буфер кадра можно заблокировать FPS при этом немного увеличится до 16.
Доступны примеры, которые позволяют записывать видео и сохранять фото на MicroSD карту.
Также есть возможность воспроизводить видео, аудио и фото с карты памяти.
Kendryte K210 имеет встроенный ускоритель быстрого преобразования Фурье (FFT), работу которого можно проверить запустив скрипт demo_fft_spectrum.py, расположенный в папке hardware. В скрипте необходимо изменить пины шины I2S, к которым подключен микрофон: WS на 19 и SLCK на 18.


Для более серьезных примеров, использующих возможности машинного зрения, необходимо обновление прошивки и загрузка соответствующих обученных моделей нейронной сети. В следующих частях будут рассмотрены примеры детектирования и распознавания лиц.

Комментарии

Популярные сообщения из этого блога

OpenMV - "Ардуино" для машинного зрения

TTGO T-Watch - конструктор смарт-часов на ESP32