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

BeeMonitor

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

Arduino Nano 33 BLE Sense
× 1
Кабель USB-A - Micro-USB
× 1

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

IDE Arduino
Edge Impulse Studio
Android Studio

Об этом проекте

Введение

Мы представим разработку приложения для борьбы с пчелами, которое помогает пчеловоду эффективно производить мед и другие продукты. Приложение охватывает сферу пчеловодства. Мы видим мотивацию в том, чтобы помочь пчеловоду контролировать пчел и быть максимально эффективными. Это облегчило бы пчеловоду долгие часы работы над отдельными ульями. Идея состоит в том, что на основе температуры и влажности приложение предлагает анализ состояния пчелиной семьи в конкретном улье и обнаружение особого события, называемого роением. Это мероприятие, на котором пчелиная семья делится на две части. Одна часть остается в улье, а другая покидает улей и находит новый дом. Первая часть остается в улье и ждет, пока вылупится новая королева, а вторая половина покидает улей вместе со старой маткой. Здесь важно, чтобы пчеловод принял своевременные меры. В этом ему поможет приложение для борьбы с пчелами, которое распознает такое событие на основе обработки звука жужжания пчел.

Решение

Поскольку у отдельного пчеловода обычно имеется большое количество ульев, а следовательно, и много ульев, ручной осмотр отдельного улья требует много времени. С помощью нашего приложения пчеловод подключается к отдельным ульям через мобильный терминал и соединение Bluetooth, где он может видеть состояние здоровья пчелиной семьи. Кроме того, приложение предупредит пчеловода в случае стая, что он сможет принять своевременные меры и пчелы не ускользнут на природу, что снизит производство меда.

Описание

Система состоит из микроконтроллера Arduino Nano BLE 33 Sense, который также содержит микрофон на своей печатной плате. С помощью алгоритма, работающего на микроконтроллере, контроллер слушает жужжание пчел и с помощью изученной модели распознает разницу в жужжании пчел, когда матка находится в улье и когда Нет. Помимо обнаружения рождения, Arduino также включает датчик температуры и влажности. С помощью этих данных мы можем определить состояние или здоровье пчелиной семьи, находящейся в улье. Поскольку целью было низкое энергопотребление, система измеряет это состояние только несколько раз в день или в периоды времени с 10 до 13 часов, когда вероятность образования скоплений наиболее высока. В остальное время устройство в основном простаивает и не потребляет энергию.

Модель машинного обучения

Описание процедуры EdgeImpulse

  • Сбор данных с помощью микрофона.

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

  • Спектральный анализ звуков

Затем данные были обработаны с использованием спектрограммы.

  • Построение модели с использованием нейронной сети

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

На приведенном ниже графике показано, как модель работает на основе собранных данных.

  • Создайте библиотеку и загрузите в Arduino

Наконец, мы создали библиотеку для загрузки на плату Arduino.

Аппаратное обеспечение

  • Arduino Nano BLE 33 Sense
  • Заряд аккумулятора
  • Мобильный терминал Android

Связь

Для получения данных от Arduino в приложение на телефоне Android мы использовали возможность подключения по Bluetooth. Arduino Nano BLE 33 Sense предлагает модуль Bluetooth на своей плате. Это соединение позволяет подключаться к Arduino внутри улья и находиться на таком расстоянии от улья, где нет риска укусов пчел.

Приложение для Android

Затем мы разработали приложение для Android, необходимое для подключения к Arduino Nano BLE 33 Sense и начала загрузки данных и предупреждений о статусе пчелиного семейства.

1. Подключение к устройству в улье

2. Главный экран с данными о температуре и влажности и предупреждениями о событиях.

Ниже вы можете увидеть предупреждения, которые устройство Arduino отправляет в приложение Android.

Концепция работы

Сделай сам!

Инструкция по тестированию нашей системы.

Шаг 1 Скачивание программной среды .ino для программирования Arduino ble 33 sense. Скомпилируйте код и отправьте его на плату Arduino.

https://www.arduino.cc/en/software

Шаг 2 Загрузите приложение на свое устройство Android (файл .apk во вложении)

Шаг 3 Установите устройство Arduino в улей.

Шаг 4 Подключение к устройству через Bluetooth

Улучшения

  • Улучшение модели машинного обучения за счет увеличения базы данных по жужжанию пчел.
  • Добавьте дополнительные функции в приложение для Android.
  • Мы видим улучшения в создании базы данных с информацией о ульях в сети LoraWan, где данные могут быть отправлены на сервер и доступны в любом месте и в любое время.

Заключение

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

Код

  • Arduino Nano ble 33 sense
  • ei-smartbees-arduino-1.0.6.zip
Arduino Nanoble 33 sense C / C ++
 / * Примеры Edge Impulse Arduino Авторские права (c) 2021 EdgeImpulse Inc. Настоящим предоставляется бесплатное разрешение любому лицу, получающему копию этого программного обеспечения и связанных файлов документации («Программное обеспечение»), для работы с Программное обеспечение без ограничений, включая, помимо прочего, права на использование, копирование, изменение, объединение, публикацию, распространение, сублицензирование и / или продажу копий Программного обеспечения, а также разрешение лицам, которым предоставляется Программное обеспечение, делать это, при условии соблюдения следующие условия:Приведенное выше уведомление об авторских правах и это уведомление о разрешении должны быть включены во все копии или существенные части Программного обеспечения. ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИИ КОММЕРЧЕСКОЙ ЦЕННОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И НЕЗАЩИТЫ ОТ ПРАКТИКИ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ВЛАДЕЛЬЦЫ АВТОРСКИХ ПРАВ НЕ НЕСЕТ ОТВЕТСТВЕННОСТИ ЗА ЛЮБЫЕ ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ДРУГИЕ ОТВЕТСТВЕННОСТЬ, ПРОИЗВОДИМЫЕ В РЕЗУЛЬТАТЕ ДОГОВОРА, ПРАКТИКИ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИМ, ВНУТРЕННИЕ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ИСПОЛЬЗОВАНИЕМ ИЛИ ДРУГИМИ ДЕЛАМИ ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ. * /// Если ваша цель ограничена в памяти, удалите этот макрос, чтобы сохранить 10 КБ ОЗУ # define EIDSP_QUANTIZE_FILTERBANK 0 / * Включает ----------------------- ----------------------------------------- * / # include  #include  #include  #include  #include  #define BLE_UUID_STRING "1A3AC131-31EF-758B-BC51-54A61958EFICE" -9U_A61958EFICE "#E_A61958EFICE" 082F-C079-9E75AAE428B1 "/ ** Аудио буферы, указатели и селекторы * / typedef struct {int16_t * buffer; uint8_t buf_ready; uint32_t buf_count; uint32_t n_samples;} inference_t; статический вывод inference_t; статический подписанный короткий sampleBuffer [2048]; статический bool debug_nn =false; // Установите значение true, чтобы увидеть, например, функции, сгенерированные из необработанного сигналаBLEDevice central; BLEService service (BLE_UUID_TEST_SERVICE); BLEStringCharacteristic serviceOutput (BLE_UUID_STRING, BLERead | BLENotify, 200); / ** @brief Arduino setup function * / void setup () {// поместите здесь свой код настройки запустить один раз:Serial.begin (115200); в то время как (! серийный); pinMode (LED_BUILTIN, ВЫХОД); if (! BLE.begin ()) {Serial.println ("не удалось запустить BLE!"); в то время как (1); } BLE.setLocalName ("Пчелиный улей"); BLE.setAdvertisedService (услуга); service.addCharacteristic (serviceOutput); BLE.addService (услуга); BLE.advertise (); Serial.println («Bluetooth-устройство активно, ожидает подключения ...»); if (! HTS.begin ()) {Serial.println («Не удалось инициализировать датчик температуры влажности!»); в то время как (1); } if (mic_inference_start (EI_CLASSIFIER_RAW_SAMPLE_COUNT) ==false) {ei_printf ("ОШИБКА:не удалось настроить выборку звука \ r \ n"); возвращение; }} / ** @brief основная функция Arduino. Запускает цикл вывода. * / Void loop () {central =BLE.central (); if (центральный) {Serial.print ("Подключен к центральному:"); Serial.println (центральный адрес ()); digitalWrite (LED_BUILTIN, HIGH); while (central.connected ()) {ei_printf ("Начало вывода через 2 секунды ... \ n"); задержка (2000); ei_printf ("Запись ... \ n"); bool m =микрофон_inference_record (); if (! m) {ei_printf ("ОШИБКА:не удалось записать звук ... \ n"); возвращение; } температура поплавка =HTS.readTemperature (); влажность поплавка =HTS.readHumidity (); StaticJsonDocument <600> doc; doc ["температура"] =(round (temperature * 10) /10.0); doc ["влажность"] =(круглый (влажность * 10) / 10,0); документ ["событие"] =""; ei_printf ("Запись завершена \ n"); signal_t ​​signal; signal.total_length =EI_CLASSIFIER_RAW_SAMPLE_COUNT; signal.get_data =&микрофон_audio_signal_get_data; ei_impulse_result_t result ={0}; EI_IMPULSE_ERROR r =run_classifier (&сигнал, &результат, debug_nn); if (r! =EI_IMPULSE_OK) {ei_printf ("ERR:Не удалось запустить классификатор (% d) \ n", r); возвращение; } // выводим прогнозы ei_printf ("Predictions"); ei_printf ("(DSP:% d мс., Классификация:% d мс., Аномалия:% d мс.)", result.timing.dsp, result.timing.classification, result.timing.anomaly); ei_printf (":\ п"); прогнозы с плавающей запятой [3]; for (size_t ix =0; ix  0) {Serial.write (print_buf); }} / ** @brief обратный вызов полного буфера PDM Получить данные и вызвать обратный вызов аудиопотока * / static void pdm_data_ready_inference_callback (void) {int bytesAvailable =PDM.available (); // считываем в буфер выборки int bytesRead =PDM.read ((char *) &sampleBuffer [0], bytesAvailable); if (inference.buf_ready ==0) {для (int i =0; i > 1; i ++) {inference.buffer [inference.buf_count ++] =sampleBuffer [i]; если (inference.buf_count> =inference.n_samples) {inference.buf_count =0; inference.buf_ready =1; ломать; }}}} / ** @brief Инициализация структуры вывода и настройка / запуск PDM @param [in] n_samples n образцов @return {description_of_the_return_value} * / static bool mic_inference_start (uint32_t n_samples) {inference.buffer =(int16_t *) malloc (n_samples * sizeof (int16_t)); если (inference.buffer ==NULL) {вернуть ложь; } inference.buf_count =0; inference.n_samples =n_samples; inference.buf_ready =0; // настраиваем обратный вызов приема данных PDM.onReceive (&pdm_data_ready_inference_callback); // необязательно установить усиление, по умолчанию 20 PDM.setGain (80); PDM.setBufferSize (4096); // инициализируем PDM с:// - одним каналом (моно режим) // - частотой дискретизации 16 кГц if (! PDM.begin (1, EI_CLASSIFIER_FREQUENCY)) {ei_printf ("Не удалось запустить PDM!"); микрофон_inference_end (); вернуть ложь; } return true;} / ** @brief Ожидание новых данных @return Истина по завершении * / static bool mic_inference_record (void) {inference.buf_ready =0; inference.buf_count =0; while (inference.buf_ready ==0) {// задержка (10); задержка (2000); } return true;} / ** Получить необработанные данные аудиосигнала * / static int mic_audio_signal_get_data (смещение size_t, длина size_t, float * out_ptr) {numpy ::int16_to_float (&inference.buffer [смещение], out_ptr, length); return 0;} / ** @brief Остановить PDM и освободить буферы * / static void mic_inference_end (void) {PDM.end (); free (inference.buffer);} # if! defined (EI_CLASSIFIER_SENSOR) || EI_CLASSIFIER_SENSOR! =EI_CLASSIFIER_SENSOR_MICROPHONE # error «Неверная модель для текущего датчика.» # Endif 
ei-smartbees-arduino-1.0.6.zip C / C ++
Библиотека с моделью машинного обучения
 Без предварительного просмотра (только загрузка). 
Приложение Andorid
https://github.com/TCodingB/BeeMonitor.git
Файл Apk для устройства Android
https://github.com/TCodingB/BeeMonitor/tree/main/apk/debug

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

  1. Что такое VMC Machining?
  2. Руководство по лазерной маркировке алюминия
  3. Сварка MIG против сварки TIG
  4. Руководство по лазерной маркировке
  5. Рекомендации по высокопроизводительной швейцарской обработке
  6. Руководство по созданию прототипов с ЧПУ
  7. Понимание процесса изготовления вала
  8. Что такое маркировка волоконным лазером?
  9. Электрополировка против пассивации
  10. Что такое пассивация нержавеющей стали?