

Papan Pengembangan WiFi ABX00087 UNO R4
Pengenalan Tembakan Kriket menggunakan Arduino UNO R4 WiFi + ADXL345 + Edge
Impuls
Dokumen ini menyediakan alur kerja lengkap untuk membangun sistem pengenalan tembakan kriket menggunakan Arduino UNO R4 WiFi dengan akselerometer ADXL345 dan Edge Impulse Studio. Proyek ini melibatkan pengumpulan data akselerometer, pelatihan model pembelajaran mesin, dan penerapan kembali model yang telah dilatih ke Arduino untuk klasifikasi tembakan secara real-time.
Pukulan kriket yang dipertimbangkan dalam proyek ini:
– Penutup Drive
– Penggerak Lurus
– Tarik Tembakan
Langkah 1: Persyaratan Perangkat Keras
– Arduino UNO R4 WiFi
– Akselerometer ADXL345 (I2C)
– Kabel jumper
– Papan tempat memotong roti (opsional)
– Kabel USB Tipe-C
Langkah 2: Persyaratan Perangkat Lunak
– Arduino IDE (terbaru)
– Akun Edge Impulse Studio (gratis)
– Alat CLI Edge Impulse (diperlukan Node.js)
– Perpustakaan Adafruit ADXL345
Langkah 3: Pengkabelan ADXL345
Hubungkan sensor ADXL345 ke Arduino UNO R4 WiFi sebagai berikut:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (opsional, untuk mode I2C)
SDO → mengambang atau GND
Langkah 4: Siapkan Sensor IDE
Bagaimana cara memasang pustaka sensor di Arduino IDE?
Buka Arduino IDE
Buka Alat → Kelola Perpustakaan… dan instal: Adafruit ADXL345 Unified Adafruit Unified Sensor
(Jika Anda memiliki LSM6DSO atau MPU6050: instal SparkFun LSM6DSO, Adafruit LSM6DS atau MPU6050 yang sesuai.)
Langkah 5: Sketsa Arduino untuk Pengumpulan Data
Unggah sketsa ini ke Arduino UNO R4 WiFi Anda. Sketsa ini akan mengalirkan data akselerometer dalam format CSV (x,y,z) pada ~18 Hz untuk Edge Impulse.
#termasuk
#termasuk
Adafruit_ADXL345_Akselerasi terpadu =
Adafruit_ADXL345_Unified(12345);
batalkan pengaturan() {
Serial.mulai(115200);
jika (!accel.begin()) {
Serial.println(“ADXL345 tidak terdeteksi”);
sementara (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
kekosongan loop() {
sensor_peristiwa_t e;
accel.getEvent(&e);
Serial.print (e.percepatan.x);
Serial.print(“,”);
Serial.print(e.percepatan.y);
Serial.print(“,”);
Serial.println(e.percepatan.z);penundaan(55); // ~18 Hz
}
Siapkan Edge Impulse

Langkah 6: Menghubungkan ke Edge Impulse
- Tutup Arduino Serial Monitor.
- Jalankan perintah: edge-impulse-data-forwarder –frekuensi 18
- Masukkan nama sumbu: accX, accY, accZ
- Beri nama perangkat Anda: Arduino-Cricket-Board
- Konfirmasikan koneksi di Edge Impulse Studio di bawah 'Perangkat'.


Langkah 7: Pengumpulan Data
Di Edge Impulse Studio → Akuisisi data:
– Perangkat: Arduino-Cricket-Board
– Sensor: Akselerometer (3 sumbu)
- Samppanjang le: 2000 ms (2 detik)
– Frekuensi: 18 Hz
Rekam setidaknya 40 detikamples per class:
– Penutup Drive
– Penggerak Lurus
– Tarik Tembakan
Kumpulkan Data Exampsedikit
Penutup Drive
Perangkat: Arduino-Cricket-Board
Label: Penutup Drive
Sensor: Sensor dengan 3 sumbu (accX, accY, accZ)
Samppanjang file: 10000ms
Frekuensi: 18 Hz
Example Raw Data:
accX -0.32
akses 9.61
accZ -0.12
Penggerak Lurus
Perangkat: Arduino-Cricket-Board
Label: Penggerak Lurus
Sensor: Sensor dengan 3 sumbu (accX, accY, accZ)
Samppanjang file: 10000ms
Frekuensi: 18 Hz
Example Raw Data:
accX 1.24
akses 8.93
accZ -0.42
Tarik Tembakan
Perangkat: Arduino-Cricket-Board
Label: Tarik Tembakan
Sensor: Sensor dengan 3 sumbu (accX, accY, accZ)
Samppanjang le:10000 ms
Frekuensi: 18 Hz
Example Raw Data:
accX 2.01
akses 7.84
accZ -0.63 
Langkah 8: Desain Impuls
Buka Buat impuls:
Blok masukan: Data deret waktu (3 sumbu).
Ukuran jendela: 1000 ms Peningkatan jendela (langkah): 200 ms Aktifkan: Sumbu, Besaran (opsional), frekuensi 18.
Blok pemrosesan: Analisis spektral (alias Fitur Spektral untuk gerak). Ukuran jendela: 1000 ms. Peningkatan jendela (langkah): 200 ms. Aktifkan: Sumbu, Besaran (opsional), pertahankan semua nilai default terlebih dahulu.
Blok pembelajaran: Klasifikasi (Keras).
Klik Simpan impuls. 
Hasilkan fitur:
Buka Analisis spektral, klik Simpan parameter, lalu Hasilkan fitur untuk set pelatihan.

Melatih model kecil
Buka Classifier (Keras) dan gunakan konfigurasi ringkas seperti:
Jaringan saraf: 1–2 lapisan padat (misalnya, 60 → 30), ReLU
Zaman: 40–60
Kecepatan pembelajaran: 0.001–0.005
Ukuran batch: 32
Pembagian data: 80/20 (latihan/uji)
Simpan dan latih data
Mengevaluasi dan memeriksa pengujian Model dengan set penahan.
Periksa matriks kebingungan; jika lingkaran dan atas tumpang tindih, kumpulkan data yang lebih beragam atau sesuaikan
Parameter spektral (ukuran jendela/tingkat kebisingan).
Langkah 9: Penerapan ke Arduino
Buka Penyebaran:
Pilih pustaka Arduino (pustaka C++ juga berfungsi).
Aktifkan Kompiler EON (jika tersedia) untuk mengecilkan ukuran model.
Unduh .zip, lalu di Arduino IDE: Sketsa → Sertakan Perpustakaan → Tambahkan Perpustakaan .ZIP… Ini menambahkan examples seperti buffer Statis dan Kontinu di bawah File → Contohample →
Nama Proyek Anda – Edge Impulse. Sketsa inferensi untuk Arduino UNO EK R4 WiFi + ADXL345.
Langkah 10: Sketsa Inferensi Arduino
#termasuk
#termasuk
#termasuk // Ganti dengan header Edge Impulse
Adafruit_ADXL345_Akselerasi terpadu =
Adafruit_ADXL345_Unified(12345);
statis bool debug_nn = salah;
batalkan pengaturan() {
Serial.mulai(115200);
sementara (!Serial) {}
jika (!accel.begin()) {
Serial.println(“KESALAHAN: ADXL345 tidak terdeteksi”);
sementara (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
kekosongan loop() {
buffer mengapung[UKURAN_FRAME_INPUT_DSP_KLASSIFIER_EI] = {0};
untuk (ukuran_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=
3) {
uint64_t centang_berikutnya = mikro() + (INTERVAL_MS_KLASIFIKASI_EI *
Bahasa Indonesia: 1000);
sensor_peristiwa_t e;
accel.getEvent(&e);
buffer[ix + 0] = e.percepatan.x;
buffer[ix + 1] = e.percepatan.y;
buffer[ix + 2] = e.percepatan.z;
int32_t tunggu = (int32_t)(centang_berikutnya – mikro());
jika (tunggu > 0) tundaMikrodetik(tunggu);
}
sinyal_t sinyal;
int err = numpy::sinyal_dari_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &sinyal);
jika (err != 0) kembali;
ei_impulse_result_t hasil = {0};
EI_IMPULSE_ERROR res = jalankan_pengklasifikasi(&sinyal, &hasil,
debug_nn);
jika (res != EI_IMPULSE_OK) kembali;
untuk (ukuran_t ix = 0; ix < JUMLAH_LABEL_KLASSIFIER_EI; ix++) {
ei_printf(“%s: %.3f “, hasil.klasifikasi[ix].label,
hasil.klasifikasi[ix].nilai);
}
#jika EI_CLASSIFIER_MEMILIKI_ANOMALI == 1
ei_printf(“anomali: %.3f”, hasil.anomali);
#akhiri jika
ei_printf(“\n”);
}
Keluaran misampsaya:
Kiat:
Pastikan EI_CLASSIFIER_INTERVAL_MS sinkron dengan frekuensi penerus data Anda (misalnya, 100 Hz → 10 ms). Pustaka Edge Impulse menyetel konstanta ini secara otomatis dari impuls Anda.
Jika Anda menginginkan deteksi berkelanjutan (jendela geser), mulailah dari jendela berkelanjutanample disertakan dengan pustaka EI dan swap dalam pembacaan ADXL345.
Kami akan segera menambahkan tutorial video; sampai saat itu, nantikan – https://www.youtube.com/@RobuInlabs
Dan jika Anda masih ragu, Anda dapat menonton video Edged Impulse ini: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

Dokumen / Sumber Daya
![]() |
Papan Pengembangan WiFi Arduino ABX00087 UNO R4 [Bahasa Indonesia:] Panduan Pengguna R4 WiFi, ADXL345, ABX00087 Papan Pengembangan UNO R4 WiFi, ABX00087, Papan Pengembangan UNO R4 WiFi, Papan Pengembangan WiFi, Papan Pengembangan, Papan |
