Лагатып ArduinoМадэльная плата Arduino ABX00087 UNO R4 Wi-Fi

Мадэльная плата ABX00087 UNO R4 WiFi

Распазнаванне кідкоў у крыкет з дапамогай Arduino UNO R4 WiFi + ADXL345 + Edge
Імпульс
У гэтым дакуменце прадстаўлены поўны працоўны працэс для стварэння сістэмы распазнавання ўдараў па крыкеце з выкарыстаннем Arduino UNO R4 WiFi з акселерометрам ADXL345 і Edge Impulse Studio. Праект уключае збор дадзеных акселерометра, навучанне мадэлі машыннага навучання і разгортванне навучанай мадэлі назад у Arduino для класіфікацыі ўдараў у рэжыме рэальнага часу.
У гэтым праекце разглядаліся наступныя ўдары па крыкету:
– Вокладка дыска
– Прамы прывад
– Цягні стрэл

Крок 1: Патрабаванні да абсталявання

– Arduino UNO R4 Wi-Fi
– Акселерометр ADXL345 (I2C)
– Перамычкі
– Макетная плата (па жаданні)
– Кабель USB Type-C

Крок 2: Патрабаванні да праграмнага забеспячэння

– Arduino IDE (апошняя версія)
– Акаўнт Edge Impulse Studio (бясплатны)
– Інструменты каманднага радка Edge Impulse (патрабуецца Node.js)
– Бібліятэка Adafruit ADXL345

Крок 3: Падключэнне ADXL345

Падключыце датчык ADXL345 да Arduino UNO R4 WiFi наступным чынам:
VCC → 3.3 В
GND → GND
ПДД → ПДД (А4)
СЦЛ → СЦЛ (А5)
CS → 3.3 В (дадаткова, для рэжыму I2C)
SDO → плаваючы або GNDМадэльная плата Arduino ABX00087 UNO R4 WiFi - большview

Крок 4: Падрыхтуйце датчык IDE

Як усталяваць бібліятэкі датчыкаў у Arduino IDE?
Адкрыйце асяроддзе распрацоўкі Arduino
Адкрыйце «Інструменты» → «Кіраванне бібліятэкамі»… і ўсталюйце: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Калі ў вас замест гэтага LSM6DSO або MPU6050: усталюйце адпаведна SparkFun LSM6DSO, Adafruit LSM6DS або MPU6050.)

Крок 5: Эскіз Arduino для збору дадзеных

Загрузіце гэты эскіз на ваш Arduino UNO R4 WiFi. Ён перадае дадзеныя акселерометра ў фармаце CSV (x,y,z) з частатой ~18 Гц для Edge Impulse.
#уключыць
#уключыць
Adafruit_ADXL345_Unified паскарэнне =
Adafruit_ADXL345_Unified(12345);
несапраўдная ўстаноўка() {
Serial.begin(115200);
калі (!accel.begin()) {
Serial.println(“ADXL345 не выяўлены”);
пакуль (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
несапраўдны цыкл() {
падзеі_датчыкаў;
accel.getEvent(&e);
Серыйны.друк (e.acceleration.x);
Серыйны.друк(",");
Серыйны.друк(e.acceleration.y);
Серыйны.друк(",");
Serial.println(e.acceleration.z); затрымка(55); // ~18 Гц
}

Налада Edge Impulse

Мадэльная плата Arduino ABX00087 UNO R4 WiFi - Налада

Крок 6: Падключэнне да Edge Impulse

  1. Закрыць манітор паслядоўнага порта Arduino.
  2. Выканайце каманду: edge-impulse-data-forwarder –frequency 18
  3. Увядзіце назвы восяў: accX, accY, accZ
  4. Назавіце сваю прыладу: Arduino-Cricket-Board
  5. Пацвердзіце падключэнне ў Edge Impulse Studio ў раздзеле «Прылады».

Мадэльная плата Arduino ABX00087 UNO R4 WiFi - падключэнне да Edge ImpulseМадэльная плата Arduino ABX00087 UNO R4 WiFi - падключэнне да Edge Impulse 1

Крок 7: Збор дадзеных

У Edge Impulse Studio → Збор дадзеных:
– Прылада: крыкетная дошка Arduino
– Датчык: акселерометр (3 восі)
– Сampпрацягласць файла: 2000 мс (2 секунды)
– Частата: 18 Гц
Запішыце не менш за 40 секундampколькасць у класе:
– Вокладка дыска
– Прамы прывад
– Цягні стрэлМадэльная плата Arduino ABX00087 UNO R4 WiFi - збор дадзеныхЗбор дадзеных Exampлес
Вокладка Drive
Прылада: Arduino-Cricket-Board
Лэйбл: Cover Drive
Датчык: Датчык з 3 восямі (accX, accY, accZ)
Sampдаўжыня файла: 10000 мс
Частата: 18 Гц
ExampНеапрацаваныя дадзеныя:
accX -0.32
рахунак 9.61
accZ -0.12
Прамы прывад
Прылада: Arduino-Cricket-Board
Пазнака: Straight Drive
Датчык: Датчык з 3 восямі (accX, accY, accZ)
Sampдаўжыня файла: 10000 мс
Частата: 18 Гц
ExampНеапрацаваныя дадзеныя:
accX 1.24
рахунак 8.93
accZ -0.42
Цягні стрэл
Прылада: Arduino-Cricket-Board
Пазнака: Pull Shot
Датчык: Датчык з 3 восямі (accX, accY, accZ)
Sampдаўжыня файла: 10000 мс
Частата: 18 Гц
ExampНеапрацаваныя дадзеныя:
accX 2.01
рахунак 7.84
accZ -0.63 Мадэльная плата Arduino ABX00087 UNO R4 WiFi - Збор дадзеных 1

Крок 8: Імпульсны дызайн

Адкрыць Стварыць імпульс:
Уваходны блок: Дадзеныя часовых шэрагаў (3 восі).
Памер акна: 1000 мс Павелічэнне акна (крок): 200 мс Уключэнне: восі, велічыня (неабавязкова), частата 18.
Блок апрацоўкі: Спектральны аналіз (г.зн. Спектральныя асаблівасці для руху). Памер акна: 1000 мс Павелічэнне акна (крок): 200 мс Уключэнне: Восі, Велічыня (неабавязкова), пакінуць усе значэнні па змаўчанні першымі.
Навучальны блок: Класіфікацыя (Keras).
Націсніце «Захаваць імпульс». Мадэльная плата Arduino ABX00087 UNO R4 WiFi - Impulse Design

Генерацыя функцый:
Перайдзіце ў раздзел «Спектральны аналіз», націсніце «Захаваць параметры», а затым «Згенераваць прыкметы для навучальнага набору».

Плата распрацоўкі Arduino ABX00087 UNO R4 WiFi - навучальны набор

Навучанне невялікай мадэлі
Перайдзіце ў класіфікатар (Keras) і выкарыстоўвайце кампактную канфігурацыю, напрыклад:
Нейронная сетка: 1–2 шчыльныя пласты (напрыклад, 60 → 30), ReLU
Эпохі: 40–60 гг.
Хуткасць навучання: 0.001–0.005
Памер партыі: 32
Падзел дадзеных: 80/20 (навучанне/тэст)
Захоўвайце і навучайце дадзеныяМадэльная плата Arduino ABX00087 UNO R4 WiFi - Захаванне і навучанне дадзеных

Ацаніце і праверце тэставанне мадэлі з усталяваным затрымкай.
Праверце матрыцу блытаніны; калі круг і ўверх перакрываюцца, збярыце больш разнастайныя дадзеныя або ўдакладніце іх
Спектральныя параметры (памер акна / узровень шуму).

Крок 9: Разгортванне на Arduino

Перайдзіце да разгортвання:
Выберыце бібліятэку Arduino (бібліятэка C++ таксама працуе).
Уключыце кампілятар EON (калі даступны), каб паменшыць памер мадэлі. Мадэльная плата Arduino ABX00087 UNO R4 WiFi - разгортванне на ArduinoСпампуйце .zip-архіў, затым у Arduino IDE: Sketch → Include Library → Add .ZIP Library… Гэта дадае exampтакія як статычны буфер і бесперапынны пад File → Прыкладampлес →
Назва вашага праекта – Edge Impulse. Схема вываду для Arduino UNO EK R4 WiFi + ADXL345.

Крок 10: Эскіз вываду Arduino

#уключыць
#уключыць
#уключыць // Замяніць загалоўкам Edge Impulse
Adafruit_ADXL345_Unified паскарэнне =
Adafruit_ADXL345_Unified(12345);
статычны bool debug_nn = false;
несапраўдная ўстаноўка() {
Serial.begin(115200);
пакуль (!Серыйны) {}
калі (!accel.begin()) {
Serial.println(“ПАМЫЛКА: ADXL345 не выяўлены”);
пакуль (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
несапраўдны цыкл() {
буфер з плаваючай колькасцю[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
для (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = мікрасхемы() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
падзеі_датчыкаў;
accel.getEvent(&e);
буфер[ix + 0] = e.acceleration.x;
буфер[ix + 1] = e.acceleration.y;
буфер[ix + 2] = e.acceleration.z;
int32_t чакаць = (int32_t)(next_tick – мікрасекунд());
калі (чаканне > 0) затрымкаМікрасеконды(чаканне);
}
сігнал_t сігнал;
int err = numpy::signal_from_buffer(буфер,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &сігнал);
калі (памылка != 0) вярнуць;

Вынік ei_impulse_result_t = {0};
EI_IMPULSE_ERROR res = run_classifier(&сігнал, &вынік,
debug_nn);
калі (res != EI_IMPULSE_OK) вярнуць;

для (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, вынік.класіфікацыя[ix].метка,
вынік.класіфікацыя[ix].значэнне);
}
#калі EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf(“анамалія: %.3f”, вынік.анамалія);
#endif
ei_printf(“\n”);
}

Выхад прampль:

Мадэль распрацоўкі Arduino ABX00087 UNO R4 WiFi - эскіз вываду ArduinoПарады:
Сінхранізуйце EI_CLASSIFIER_INTERVAL_MS з частатой вашага перасылальніка дадзеных (напрыклад, 100 Гц → 10 мс). Бібліятэка Edge Impulse аўтаматычна ўсталёўвае гэту канстанту з вашага імпульсу.
Калі вам патрэбна бесперапыннае выяўленне (слізгальнае акно), пачніце з рэжыму бесперапыннага выяўленняampуключаны ў бібліятэку EI і падключаецца да чытанняў ADXL345.
Неўзабаве мы дадамо відэаўрокі; а пакуль што сачыце за навінамі – https://www.youtube.com/@RobuInlabs
А калі ў вас усё яшчэ ёсць сумневы, вы можаце паглядзець гэта відэа ад Edged Impulse: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Лагатып Arduino

Дакументы / Рэсурсы

Мадэльная плата Arduino ABX00087 UNO R4 Wi-Fi [pdfКіраўніцтва карыстальніка
R4 WiFi, ADXL345, ABX00087 Мадэль UNO R4 WiFi, ABX00087, Мадэль UNO R4 WiFi, Мадэль WiFi, Мадэль, Мадэль

Спасылкі

Пакінуць каментар

Ваш электронны адрас не будзе апублікаваны. Абавязковыя для запаўнення палі пазначаны *