

ABX00087 UNO R4 WiFi İnkişaf Şurası
Arduino UNO R4 WiFi + ADXL345 + Edge istifadə edərək Kriket Atışının Tanınması
impuls
Bu sənəd ADXL345 akselerometr və Edge Impulse Studio ilə Arduino UNO R4 WiFi istifadə edərək kriket atışlarının tanınması sisteminin qurulması üçün tam iş axını təmin edir. Layihə akselerometr məlumatlarının toplanması, maşın öyrənməsi modelinin öyrədilməsi və real vaxt rejimində çəkilişlərin təsnifatı üçün öyrədilmiş modeli yenidən Arduino-da yerləşdirməyi əhatə edir.
Bu layihədə nəzərə alınan kriket atışları:
- Sürücüyü örtün
- Düz sürücü
- Çəkiliş
Addım 1: Avadanlıq Tələbləri
– Arduino UNO R4 WiFi
– ADXL345 Akselerometr (I2C)
- keçid telləri
- Breadboard (isteğe bağlı)
– USB Type-C kabeli
Addım 2: Proqram Tələbləri
- Arduino IDE (son)
– Edge Impulse Studio hesabı (pulsuz)
– Edge Impulse CLI alətləri (Node.js tələb olunur)
– Adafruit ADXL345 kitabxanası
Addım 3: ADXL345 naqillərinin çəkilməsi
ADXL345 sensorunu Arduino UNO R4 WiFi-yə aşağıdakı kimi qoşun:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (isteğe bağlı, I2C rejimi üçün)
SDO → üzən və ya GND
Addım 4: IDE Sensorunu Hazırlayın
Arduino IDE-də Sensor Kitabxanalarını necə quraşdırmaq olar?
Arduino IDE-ni açın
Alətlər → Kitabxanaları idarə et… və quraşdırın: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Əvəzində LSM6DSO və ya MPU6050 varsa: müvafiq olaraq SparkFun LSM6DSO, Adafruit LSM6DS və ya MPU6050 quraşdırın.)
Addım 5: Məlumatların toplanması üçün Arduino eskizi
Bu eskizi Arduino UNO R4 WiFi-yə yükləyin. O, akselerometr məlumatlarını CSV formatında (x,y,z) Edge Impulse üçün ~18 Hz-də ötürür.
#daxildir
#daxildir
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
quraşdırmanı ləğv edin () {
Serial.begin(115200);
əgər (!accel.begin()) {
Serial.println("ADXL345 aşkarlanmadı");
isə (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
boş döngə () {
sensors_event_t e;
accel.getEvent(&e);
Serial.print (e.sürətlənmə.x);
Serial.print(“,”);
Serial.print(e.sürətlənmə.y);
Serial.print(“,”);
Serial.println(e.acceleration.z);gecikmə(55); // ~18 Hz
}
Edge Impulse qurun

Addım 6: Edge Impulse-ə qoşulma
- Arduino Serial Monitoru bağlayın.
- Komandanı işə salın: kənar impuls-məlumat-ekspeditor - tezlik 18
- Ox adlarını daxil edin: accX, accY, accZ
- Cihazınızı adlandırın: Arduino-Cricket-Board
- Edge Impulse Studio-da "Cihazlar" altında əlaqəni təsdiqləyin.


Addım 7: Məlumatların toplanması
Edge Impulse Studio-da → Məlumatların toplanması:
– Cihaz: Arduino-Cricket-Board
– Sensor: Akselerometr (3 ox)
– Sampuzunluq: 2000 ms (2 saniyə)
– Tezlik: 18 Hz
Ən azı 40 saniyə qeyd edinamphər sinif üzrə:
- Sürücüyü örtün
- Düz sürücü
- Çəkiliş
Məlumat toplamaq Məsamples
Diski örtün
Cihaz: Arduino-Cricket-Board
ETİKET: Diski örtün
Sensor: 3 oxlu sensor (accX, accY, accZ)
Sampuzunluq: 10000ms
Tezlik: 18 Hz
ExampXam məlumat:
accX -0.32
uyğunluq 9.61
accZ -0.12
Düz Sürücü
Cihaz: Arduino-Cricket-Board
ETİKET: Düz Sürücü
Sensor: 3 oxlu sensor (accX, accY, accZ)
Sampuzunluq: 10000ms
Tezlik: 18 Hz
ExampXam məlumat:
accX 1.24
uyğunluq 8.93
accZ -0.42
Çək
Cihaz: Arduino-Cricket-Board
ETİKET: Çəkiliş
Sensor: 3 oxlu sensor (accX, accY, accZ)
Sampuzunluq: 10000 ms
Tezlik: 18 Hz
ExampXam məlumat:
accX 2.01
uyğunluq 7.84
accZ -0.63 
Addım 8: İmpuls Dizaynı
Impuls yarat: açın:
Giriş bloku: Zaman seriyası məlumatları (3 ox).
Pəncərə ölçüsü: 1000 ms Pəncərə artımı (addım): 200 ms Aktivləşdirin: Baltalar, Böyüklük (isteğe bağlı), tezlik 18.
Emal bloku: Spektral analiz (aka Hərəkət üçün Spektral Xüsusiyyətlər). Pəncərə ölçüsü: 1000 ms Pəncərə artımı (addım): 200 ms Aktivləşdirin: Baltalar, Böyüklük (isteğe bağlı), bütün defoltları ilk olaraq saxlayın.
Öyrənmə bloku: Təsnifat (Keras).
İmpulsu yadda saxla klikləyin. 
Xüsusiyyətlər yaradın:
Spektral analizə keçin, Parametrləri Saxla, sonra Təlim dəsti üçün funksiyalar yaradın seçiminə klikləyin.

Kiçik bir model yetişdirin
Təsnifatlayıcıya (Keras) gedin və aşağıdakı kimi kompakt konfiqurasiyadan istifadə edin:
Neyron şəbəkəsi: 1-2 sıx təbəqə (məsələn, 60 → 30), ReLU
Dövrlər: 40-60
Öyrənmə dərəcəsi: 0.001–0.005
Partiya ölçüsü: 32
Məlumat bölgüsü: 80/20 (qatar/test)
Məlumatları yadda saxlayın və məşq edin
Dayanma dəsti ilə Model testini qiymətləndirin və yoxlayın.
Qarışıqlıq matrisini yoxlayın; dairə və yuxarı üst-üstə düşürsə, daha müxtəlif məlumat toplayın və ya çimləyin
Spektral parametrlər (pəncərə ölçüsü / səs-küy mərtəbəsi).
Addım 9: Arduino-da yerləşdirmə
Yerləşdirməyə keçin:
Arduino kitabxanasını seçin (C++ kitabxanası da işləyir).
Model ölçüsünü kiçiltmək üçün EON Kompilyatorunu işə salın (əgər varsa).
.zip-i endirin, sonra Arduino IDE-də: Eskiz → Kitabxana daxil edin → .ZIP Kitabxanası əlavə edin…ampStatic bufer və Continuous under kimi File → Məsamples →
Layihə adınız – Edge Impulse. Arduino UNO EK R4 WiFi + ADXL345 üçün çıxarış eskizi.
Addım 10: Arduino çıxarış eskizi
#daxildir
#daxildir
#daxildir // Edge Impulse başlığı ilə əvəz edin
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
statik bool debug_nn = false;
quraşdırmanı ləğv edin () {
Serial.begin(115200);
isə (!Serial) {}
əgər (!accel.begin()) {
Serial.println("XƏT: ADXL345 aşkarlanmadı");
isə (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
boş döngə () {
float bufer[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
üçün (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
sensors_event_t e;
accel.getEvent(&e);
bufer[ix + 0] = e.sürətlənmə.x;
bufer[ix + 1] = e.sürətlənmə.y;
bufer[ix + 2] = e.acceleration.z;
int32_t wait = (int32_t)(next_tick – micros());
əgər (gözləyin > 0) gecikməMikrosaniyələr(gözləyin);
}
siqnal_t siqnalı;
int err = numpy::signal_from_bufer(bufer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &siqnal);
əgər (err != 0) qaytarın;
ei_impulse_result_t nəticə = {0};
EI_IMPULSE_ERROR res = run_classifier(&siqnal, &nəticə,
debug_nn);
əgər (res != EI_IMPULSE_OK) qaytarın;
üçün (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf(“%s: %.3f “, nəticə. təsnifat[ix].etiket,
nəticə.təsnifat[ix].dəyər);
}
#əgər EI_CLASSIFIER_ANOMALİ VAR == 1
ei_printf(“anomaliya: %.3f”, nəticə.anomaliya);
#endif
ei_printf("\n");
}
Çıxış məsələnample:
Məsləhətlər:
EI_CLASSIFIER_INTERVAL_MS-i məlumat ötürücü tezliyi ilə sinxronlaşdırın (məsələn, 100 Hz → 10 ms). Edge Impulse kitabxanası bu sabiti avtomatik olaraq impulsunuzdan təyin edir.
Davamlı aşkarlama (sürüşmə pəncərəsi) istəyirsinizsə, Davamlı ex-dən başlayınample EI kitabxanasına daxildir və ADXL345 oxunuşlarında dəyişdirin.
Tezliklə video dərsləri əlavə edəcəyik; o vaxta qədər bizi izləyin - https://www.youtube.com/@RobuInlabs
Hələ də bəzi şübhələriniz varsa, Edged Impulse tərəfindən bu videoya baxa bilərsiniz: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Sənədlər / Resurslar
![]() |
Arduino ABX00087 UNO R4 WiFi İnkişaf Şurası [pdf] İstifadəçi təlimatı R4 WiFi, ADXL345, ABX00087 UNO R4 WiFi İnkişaf Şurası, ABX00087, UNO R4 WiFi İnkişaf Şurası, WiFi İnkişaf Şurası, İnkişaf Şurası, İdarə Heyəti |
