Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Manufacturing Technology >> Производственный процесс

Управление RGB-светом по голосовым командам с TinyML на Arduino Nano 33 BLE Sense

Компоненты и материалы

Arduino Nano 33 BLE Sense ×1

Программное обеспечение и сервисы

О проекте

Проект демонстрирует встраиваемое машинное обучение (TinyML) для распознавания ключевых слов на микроконтроллере. Arduino Nano 33 BLE Sense оснащен микрофоном, IMU, датчиками среды и жестами. Микроконтроллер nRF52840 (64 МГц, 1 МБ Flash, 256 КБ ОЗУ) позволяет запускать нейросеть локально. Встроенный RGB-светодиод показывает распознанный цвет.

Подготовка Edge Impulse

  1. Создать проект в Edge Impulse, установить CLI.
  2. Прошить фирмварь Edge Impulse на плату (двойной клик по Reset → bootloader → flash_windows.bat).
  3. Запустить edge-impulse-daemon, привязать устройство к проекту.

Сбор датасета

Классы: «on», «off», «red», «green», «blue». Записано по ~1 минуте каждого слова с интервалом 1–2 сек. Добавлены фоновый шум и неизвестные слова из готовых наборов Edge Impulse. Датасет сбалансирован 80/20 (train/test).

Обучение модели

Развертывание на плате

Модель экспортируется как Arduino-библиотека, добавляется в IDE, компилируется и загружается. Плата непрерывно сэмплирует звук, классифицирует и при уверенности > 0.7 выполняет действие: включает/выключает LED или меняет цвет.

Основной скетч (RGBLEDKeywordDetection)


#include <PDM.h>
#include <keyword_detection_inference.h>
#include <map>

#define CONFIDENCE_THRESHOLD 0.7
#define EI_CLASSIFIER_SLICES_PER_MODEL_WINDOW 3

static const uint32_t colors[] = {0x00ff0000, 0x0000ff00, 0x000000ff}; // R,G,B
enum Actions { LED_ON=1, LED_OFF=0, LED_RED=2, LED_GREEN=3, LED_BLUE=4, NONE=5 };
enum Functions { CHANGE_LED_ON_OFF=0, CHANGE_LED_COLOR=1, CHANGE_LED_NONE=2 };

static const uint8_t redPin=22, greenPin=23, bluePin=24;
const std::map<Actions, Functions> actionToFunctionMap = { ... };
const std::map<const char*, Actions> labelToActionMap = {
  {"on", LED_ON}, {"off", LED_OFF}, {"red", LED_RED},
  {"green", LED_GREEN}, {"blue", LED_BLUE}, {"unknown", NONE}, {"noise", NONE}
};

// PDM callback, inference loop, performAction(), setPixelColor()...

Код использует PDM для аудио, двойную буферизацию, непрерывный вывод классификатора. Функция performAction маппит метку класса на действие с LED. Полный код в репозитории.

Производственный процесс

  1. Безопасность промышленного IoT: ключевые тренды и лучшие практики на 2020 год
  2. Edge & Cloud Computing в IoT: краткий эволюционный обзор
  3. Почему Edge Computing критичен для успеха IoT
  4. Kontron KBox A‑150‑WKL: высокопроизводительный низкоэнергетический IoT Edge PC для промышленной автоматизации
  5. Edge-вычисления: ускорение внедрения AI на периферии сети
  6. Четыре проверенных шага к успеху пограничных вычислений в умных фабриках
  7. Microsoft анонсирует Azure Edge Zones для питания 5G IoT и ИИ нагрузок
  8. Почему открытый исходный код движет инновациями на периферии — важная электронная книга
  9. Ультрачувствительная система обнаружения химического оружия для низкоуровневых угроз
  10. Почему газоанализаторы должны быть в идеальном состоянии: 3 критические причины