

לוח פיתוח WiFi ABX00087 UNO R4
זיהוי זריקות קריקט באמצעות Arduino UNO R4 WiFi + ADXL345 + Edge
דַחַף
מסמך זה מספק תהליך עבודה מלא לבניית מערכת לזיהוי זריקות קריקט באמצעות Arduino UNO R4 WiFi עם מד תאוצה ADXL345 ו-Edge Impulse Studio. הפרויקט כולל איסוף נתוני מד תאוצה, אימון מודל למידת מכונה ופריסת המודל המאומן בחזרה לארדואינו לסיווג זריקות בזמן אמת.
זריקות קריקט שנלקחו בחשבון בפרויקט זה:
– כונן כיסוי
– כונן ישר
– יריית משיכה
שלב 1: דרישות חומרה
– ארדואינו UNO R4 WiFi
מד תאוצה ADXL345 (I2C)
חוטי גשר
– קרש לחם (אופציונלי)
- כבל USB Type-C
שלב 2: דרישות תוכנה
– IDE של ארדואינו (החדש ביותר)
– חשבון ב-Edge Impulse Studio (חינם)
– כלי ממשק שורת פקודה (CLI) של Edge Impulse (נדרש Node.js)
– ספריית Adafruit ADXL345
שלב 3: חיווט ה-ADXL345
חבר את חיישן ADXL345 ל-Arduino UNO R4 WiFi באופן הבא:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (אופציונלי, עבור מצב I2C)
SDO → צף או GND
שלב 4: הכנת חיישן IDE
כיצד להתקין ספריות חיישנים בארדואינו IDE?
פתח את IDE של ארדואינו
פתח כלים ← ניהול ספריות… והתקן: Adafruit ADXL345 Unified Adafruit Unified Sensor
(אם יש לכם LSM6DSO או MPU6050 במקום זאת: התקינו את SparkFun LSM6DSO, Adafruit LSM6DS או MPU6050 בהתאם.)
שלב 5: סקיצה של ארדואינו לאיסוף נתונים
העלה את הסקיצה הזו ל-Arduino UNO R4 WiFi שלך. היא משדרת נתוני מד תאוצה בפורמט CSV (x,y,z) במהירות של ~18 הרץ עבור Edge Impulse.
#לִכלוֹל
#לִכלוֹל
Adafruit_ADXL345_מאוחד אקסל =
Adafruit_ADXL345_Unified(12345);
void setup() {
Serial.begin(115200);
אם (!accel.begin()) {
Serial.println("לא זוהה ADXL345");
בעוד (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
חיישנים_אירוע_t e;
accel.getEvent(&e);
הדפסה סריאלית (e.acceleration.x);
סידורי.הדפסה(",");
Serial.print(e.acceleration.y);
סידורי.הדפסה(",");
Serial.println(e.acceleration.z);delay(55); // ~18 הרץ
}
הגדר אימפולס קצה

שלב 6: חיבור ל-Edge Impulse
- סגור את צג הארדואינו הסידורי.
- הפעל את הפקודה: edge-impulse-data-forwarder –frequency 18
- הזינו שמות צירים: accX, accY, accZ
- תן שם למכשיר שלך: Arduino-Cricket-Board
- אשר את החיבור ב-Edge Impulse Studio תחת 'מכשירים'.


שלב 7: איסוף נתונים
ב-Edge Impulse Studio → איסוף נתונים:
– מכשיר: ארדואינו-קריקט-לוח
– חיישן: מד תאוצה (3 צירים)
– שampאורך קובץ: 2000 מילישניות (2 שניות)
– תדר: 18 הרץ
להקליט לפחות 40 שניותampמספרים לכל כיתה:
– כונן כיסוי
– כונן ישר
– יריית משיכה
איסוף נתונים לדוגמהamples
Cover Drive
מכשיר: ארדואינו-קריקט-לוח
תווית: כונן כיסוי
חיישן: חיישן עם 3 צירים (accX, accY, accZ)
Sampאורך: 10000ms
תדר: 18 הרץ
Exampהנתונים הגולמיים:
accX -0.32
חשבון 9.61
accZ -0.12
ישר דרייב
מכשיר: ארדואינו-קריקט-לוח
תווית: הנעה ישרה
חיישן: חיישן עם 3 צירים (accX, accY, accZ)
Sampאורך: 10000ms
תדר: 18 הרץ
Exampהנתונים הגולמיים:
accX 1.24
חשבון 8.93
accZ -0.42
יריית משיכה
מכשיר: ארדואינו-קריקט-לוח
תווית: יריית משיכה
חיישן: חיישן עם 3 צירים (accX, accY, accZ)
Sampאורך: 10000 מילישניות
תדר: 18 הרץ
Exampהנתונים הגולמיים:
accX 2.01
חשבון 7.84
accZ -0.63 
שלב 8: עיצוב אימפולסיבי
פתח יצירת דחף:
בלוק קלט: נתוני סדרות זמן (3 צירים).
גודל חלון: 1000 אלפיות שנייה הגדלת חלון (צעד): 200 אלפיות שנייה הפעלה: צירים, גודל (אופציונלי), תדר 18.
בלוק עיבוד: ניתוח ספקטרלי (aka תכונות ספקטרליות לתנועה). גודל חלון: 1000 אלפיות שנייה הגדלת חלון (צעד): 200 אלפיות שנייה הפעלה: צירים, גודל (אופציונלי), שמירה על כל ברירות המחדל תחילה.
בלוק למידה: סיווג (קרס).
לחץ על שמור אימפולס. 
יצירת תכונות:
עבור אל ניתוח ספקטרלי, לחץ על שמור פרמטרים ולאחר מכן צור תכונות עבור קבוצת האימון.

אימון מודל קטן
עבור אל Classifier (Keras) והשתמש בתצורה קומפקטית כמו:
רשת נוירונים: 1-2 שכבות צפופות (למשל, 60 → 30), ReLU
תקופות: 40–60
קצב למידה: 0.001–0.005
גודל אצווה: 32
חלוקת נתונים: 80/20 (אימון/בדיקה)
שמור ואמן את הנתונים
הערכת ובדיקת בדיקות מודל עם קבוצת ה-holdout.
בדוק את מטריצת הבלבול; אם העיגול והמעלה חופפים, אסוף נתונים מגוונים יותר או תקן אותם
פרמטרים ספקטרליים (גודל חלון / רצפת רעש).
שלב 9: פריסה לארדואינו
עבור אל פריסה:
בחר ספריית ארדואינו (ספריית ++C עובדת גם כן).
הפעל את מהדר EON (אם זמין) כדי להקטין את גודל המודל.
הורד את קובץ ה-.zip, לאחר מכן ב-Arduino IDE: Sketch → Include Library → Add .ZIP Library… זה מוסיף קבצים נוספים.ampכמו חיץ סטטי ותחתית רציפה File ← דוגמהamples →
שם הפרויקט שלך - Edge Impulse. סקיצה של הסקה עבור Arduino UNO EK R4 WiFi + ADXL345.
שלב 10: סקיצת הסקה של ארדואינו
#לִכלוֹל
#לִכלוֹל
#לִכלוֹל // החלף בכותרת Edge Impulse
Adafruit_ADXL345_מאוחד אקסל =
Adafruit_ADXL345_Unified(12345);
סטטי bool debug_nn = false;
void setup() {
Serial.begin(115200);
בעוד (!סידורי) {}
אם (!accel.begin()) {
Serial.println("שגיאה: ADXL345 לא זוהה");
בעוד (1);
}
accel.setRange(ADXL345_RANGE_4_G);
}
void loop() {
מאגר צף[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
עבור (size_t ix = 0; ix < EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix +=)
3) {
uint64_t next_tick = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000);
חיישנים_אירוע_t e;
accel.getEvent(&e);
buffer[ix + 0] = e.acceleration.x;
buffer[ix + 1] = e.acceleration.y;
buffer[ix + 2] = e.acceleration.z;
int32_t המתנה = (int32_t)(next_tick – מיקרוס());
אם (המתן > 0) delayMicroseconds(המתן);
}
אות_t אות;
int error = numpy::signal_from_buffer(buffer,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, &אות);
אם (err != 0) מחזירים;
תוצאה ei_impulse_result_t = {0};
EI_IMPULSE_ERROR תוצאה = run_classifier(&signal, &result,
debug_nn);
אם (res != EI_IMPULSE_OK) החזרה;
עבור (size_t ix = 0; ix < EI_CLASSIFIER_LABEL_COUNT; ix++) {
ei_printf("%s: %.3f ", result.classification[ix].label,
תוצאה.סיווג[ix].ערך);
}
#אם EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf("אנומליה: %.3f", result.anomaly);
#endif
ei_printf("\n");
}
פלט למשלampעל:
טיפים:
שמרו על 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

מסמכים / משאבים
![]() |
לוח פיתוח WiFi של ארדואינו ABX00087 UNO R4 [pdfמדריך למשתמש R4 WiFi, ADXL345, לוח פיתוח WiFi ABX00087 של UNO R4, ABX00087, לוח פיתוח WiFi של UNO R4, לוח פיתוח WiFi, לוח פיתוח, לוח |
