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

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

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

Arduino Nano 33 BLE Sense 1 шт.
Espressif ESP8266 ESP-01 1 шт.
Arducam Mini 2MP Plus 1 шт.
MAX7219 дисплей (4 в 1, 32×8) 1 шт.
Зуммер (Buzzer) 1 шт.
Сервопривод SG90 (или MG995/MG959) 2 шт.
Adafruit Micro-Lipo Charger 1 шт.
Adafruit Li-Po аккумулятор 1 шт.
Arduino MKR WiFi 1010 1 шт.
RGB LED (общий катод) 1 шт.
Ультразвуковой датчик HC-SR04 1 шт.

Инструменты

Приложения и сервисы

О проекте

Обзор

Пандемия ввела ограничение на социальное взаимодействие: дистанцию. Многие страны вводили карантины, торговые центры закрывались из-за резкого снижения посещаемости. Это привело к массовым увольнениям персонала и экономическим трудностям владельцев бизнеса.

По данным на июль 2020 г., в США потери рабочих мест с доходом <$40 тыс./год составили миллионы в сферах гостеприимства, розничной торговли и развлечений. Глобально — более 103 000 уволенных.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Проблема

Для открытых ТЦ остается неопределенность риска: плотность людей в магазинах. Маски и запрет касаний нарушают. Персонал, не могущий работать удаленно, находится в опасности. Как гарантировать, что конкретный магазин безопасен для входа?

Эксперименты показывают распространение вирусов через касания. Поэтому решено автоматизировать самые используемые устройства для бесконтактного взаимодействия.

Разработанные решения

  1. Умный домофон на TinyML (Arduino Nano 33 BLE Sense): Компьютерное зрение + TinyML обнаруживают человека у двери и звонят в звонок без касания.
  2. IoT-система мониторинга температуры с оповещением: При входе ультразвуковой датчик фиксирует человека, термометр (AMG8833) измеряет температуру, данные уходят в ThingSpeak. При превышении порога (38.1°C) — звуковая тревога и блокировка входа.
  3. Бесконтактный лифт на распознавании речи (TinyML на Arduino BLE 33 Sense): Голосовые команды «вверх»/«вниз» управляют сервоприводами, нажимающими кнопки панели. Точнее ультразвука и жестов, работает на расстоянии.
  4. Детекция масок (TinyML + IoT): Модель на Arduino BLE 33 Sense определяет наличие маски, данные в ThingSpeak для мониторинга и ограничений.
  5. Умная очередь в супермаркете (TinyML + IoT + CV): Допуск по 50 человек, затем 15 мин ожидания. Данные в реальном времени на дашборде.
  6. Мониторинг людей в проходе и авто-санетизация UV: Детекция людей в зоне, при превышении порога — UV-облучение. Данные санитизации в ThingSpeak.

Настройка (требования)

Железо

1) Arduino Nano 33 BLE Sense — nRF52840, Cortex-M4 64 MHz, 1 MB Flash, 256 KB RAM, Bluetooth, NFC, ультра-низкое потребление. Главная фича — Edge AI (TinyML) через TensorFlow Lite.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

2) ESP8266 ESP-01 — Wi-Fi модуль для микроконтроллеров, самодостаточный SoC, до 9 GPIO.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

3) Arducam Mini 2MP Plus — 2 Мп SPI-камера (OV2640), компактная, простая интеграция с Arduino/Raspberry Pi.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

4) Arduino MKR WiFi 1010 — SAMD21 Cortex-M0, WiFi/BLE (NINA-W10), крипточип ECC508, зарядка Li-Po, RGB LED.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Программные инструменты

Реализация подпроектов

1. Бесконтактный лифт (голос «вверх»/«вниз»)

Проблема: загрязненные кнопки. Ультразвук и жесты — ложные срабатывания или близкое расстояние. Решение: голос на Arduino 33 BLE Sense. Команды «up»/«down» → сервопривод нажимает кнопку.

Обучение модели в Edge Impulse:

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Логика ответа (фрагмент):

if (found_command[0] == 'up') {
  last_command_time = current_time;
  digitalWrite(LEDG, LOW); // зеленый = вверх
  servo_7.write(0);        // нажать кнопку
  delay(100);
  digitalWrite(LEDG, HIGH);
  servo_7.write(180);      // возврат
}
if (found_command[0] == 'down') {
  last_command_time = current_time;
  digitalWrite(LEDG, LOW);
  servo_7.write(0);
  delay(100);
  digitalWrite(LEDG, HIGH);
  servo_7.write(180);
}

Модель ~24–28 КБ из 256 КБ флеш. Логика: захват аудио → спектрограммы → TFLite inference → решение → серво.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

График точности vs дистанция активации: голосовое управление выигрывает у ультразвука и жестов.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

2. Умный домофон (лицо → звонок)

CDC: вирус живет на пластике/металле до 3 дней. Традиционные домофоны требуют нажатия кнопки. Решение: детекция лица на TinyML (Arduino 33 BLE Sense) → зуммер + LED-матрица «Person».

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Использована предобученная TensorFlow Person Detection (классы: unused, person, notperson). Arducam Mini 2MP → Nano 33 BLE Sense (96×96). TF Lite: Depthwise Conv2D → Conv2D → AveragePool2D → Flatten.

Ключевая функция (Arduino_detection_responder.cpp):

uint8_t person_score = output->data.uint8[kPersonIndex];
uint8_t no_person_score = output->data.uint8[kNotAPersonIndex];
RespondToDetection(error_reporter, person_score, no_person_score);

Логика: если person_score > no_person_score → зуммер ВКЛ, матрица «Person», (опционально серво включает видео домофон).

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Компоненты: Nano 33 BLE Sense, зуммер, Arducam, зарядка Li-Po, батарея, MAX7219.

3. Автономный IoT-термометр входа

Ручной замер температуры — контакт, нет логирования. Решение: Arduino MKR WiFi 1010 + AMG8833 (термокамера) + HC-SR04 (ультразвук) → ThingSpeak дашборд. При >38.1°C — закрыть ворота (серво), зуммер.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Логика: ультразвук (дистанция ≤20 см) → MKR WiFi 1010 → открыть ворота (серво 0°) → AMG8833 замер → отправка в ThingSpeak → если T>38.1 → закрыть ворота (180°), зуммер.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

ThingSpeak дашборд: график температура/время, публичный доступ для посетителей. Встраиваемый iframe:

<iframe width="450" height="260" style="border: 1px solid #cccccc;" 
src="https://thingspeak.com/channels/1121969/charts/1?bgcolor=%23ffffff&color=%23d62020&dynamic=true&results=600&timescale=10&type=line"></iframe>
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Код (фрагменты):

#include <Wire.h>
#include <Adafruit_AMG88xx.h>
#include <Servo.h>
#include <WiFi.h>
#include <WiFiMulti.h>

Servo servo1;
int trigPin = 9, echoPin = 8;
long distance, duration;
WiFiMulti WiFiMulti;
const char* ssid = "YourSSID";
const char* password = "YourPass";
const char* host = "api.thingspeak.com/1121969";
String api_key = "YOUR_API_KEY";
Adafruit_AMG88xx amg;

void setup() {
  Serial.begin(9600);
  servo1.attach(7);
  pinMode(trigPin, OUTPUT); pinMode(echoPin, INPUT);
  Connect_to_Wifi();
  if (!amg.begin()) { while(1); }
  delay(100);
}

void loop() {
  ultra();
  servo1.write(0); // открыть
  if (distance <= 20) {
    float temp = amg.readThermistor();
    Send_Data(temp);
    if (temp > 38.1) { servo1.write(180); digitalWrite(6, HIGH); } // закрыть + зуммер
  }
}

void Send_Data(float temp) {
  WiFiClient client;
  if (!client.connect(host, 80)) return;
  String data = api_key + "&field1=" + String(temp) + "\r\n";
  client.print("POST /update HTTP/1.1\nHost: api.thingspeak.com\nConnection: close\nX-THINGSPEAKAPIKEY: " + api_key + "\nContent-Type: application/x-www-form-urlencoded\nContent-Length: " + data.length() + "\n\n" + data);
  delay(200);
  client.stop();
}

4. Умная очередь (TinyML + IoT)

Проблема: ручное управление очередями, нет данных для посетителей. Решение: детекция людей на входе/выходе (Arducam + Nano 33 BLE Sense + Person Detection TF Lite) → серво ворота → счетчики в ThingSpeak через ESP8266. Порог 50 человек → закрытие на 15 мин, ожидание на MAX7219.

Алгоритм ожидания: X (вошли) - Y (вышли) = внутри. Z (лимит) - (X-Y) = свободно. Если отрицательно → время ожидания = |свободно| × среднее время пребывания.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Преимущества над ультразвуком/ИК: точность, использование существующих камер, снижение железа.

5. Детекция масок (TinyML)

Маски защищают от капельного заражения. Добавляем к person detection кастомную модель mask/no_mask (Edge Impulse, MobileNetV2 0.35, 30 эпох, 813 тренировочных / 487 тестовых фото). Точность 92.6% (train), 98.15% (test). Оптимизированная модель ~676 KB, 440 KB RAM.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Логика: mask_score > no_mask_score → открыть ворота (серво 0°), счетчик масок++. Иначе — закрыть, счетчик no_mask++. Данные в ThingSpeak (два поля).

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

6. Мониторинг проходов и авто-UV санитизация

Вирус живет на поверхностях часами/днями. Ручная UV-санитизация неэффективна. Решение: по модулям на проходах (Arducam + Nano 33 BLE Sense + Person Detection) → счетчик людей → пороги загрязнения → RGB индикация (зеленый/синий/красный) → при >150 человек — UV-лампа (сброс счетчика). Данные в ThingSpeak (4 поля: еда, спорт, одежда, электроника). Разные пороги для зон.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Логика responder (пороги):

if (person_score > no_person_score) { count++; }
if (count 1-25)   -> GREEN (безопасно)
if (count 26-50)  -> BLUE (внимание)
if (count 51-100) -> RED (загрязнено)
if (count 101-110)-> UV ON (санитизация)
if (count > 111)  -> count = 0 (сброс после UV)

Пороги настраиваемы: еда (строже), электроника (мягче). ESP8266 шлет count в ThingSpeak.

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

Go-to-Market и практичность

Код (ссылки на GitHub)

Схемы

Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266
Spectrino: TinyML и IoT бесконтактные решения на Arduino Nano 33 BLE Sense и ESP8266

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

  1. Подключение Raspberry Pi 3 к датчику DHT11 и загрузка данных в облако ThingsIo.ai
  2. Выбор правильного беспроводного протокола для IoT-решений.asset tracking
  3. Создание классической игры Pong на Arduino UNO с OLED-дисплеем: пошаговый урок
  4. IoT-монитор пульса в реальном времени на Arduino и MAX30100
  5. Pixie: DIY-наручные часы на Arduino Pro Mini и NeoPixel — стильный светодиодный тахометр времени
  6. Интерактивный HMI-проект на Nextion с Arduino Mega и датчиками
  7. Оценка здоровья растений с TinyML: Практическое руководство
  8. Клеточный автомат «Жизнь» Конвея на Arduino Nano с OLED 128x64
  9. Система управления бассейном на Azure IoT: умные датчики и удаленный мониторинг
  10. Улучшение операций открытых вагон-платформ с IoT-трекинговыми решениями