

ABX00087 UNO R4 وائی فائی ڈویلپمنٹ بورڈ
Arduino UNO R4 WiFi + ADXL345 + Edge کا استعمال کرتے ہوئے کرکٹ شاٹ کی شناخت
تسلسل
یہ دستاویز ADXL345 ایکسلرومیٹر اور Edge Impulse Studio کے ساتھ Arduino UNO R4 وائی فائی کا استعمال کرتے ہوئے کرکٹ شاٹ ریکگنیشن سسٹم بنانے کے لیے ایک مکمل ورک فلو فراہم کرتی ہے۔ اس پروجیکٹ میں ایکسلرومیٹر ڈیٹا اکٹھا کرنا، مشین لرننگ ماڈل کو تربیت دینا، اور تربیت یافتہ ماڈل کو اصل وقت میں شاٹ کی درجہ بندی کے لیے واپس Arduino میں تعینات کرنا شامل ہے۔
اس پروجیکٹ میں کرکٹ شاٹس پر غور کیا گیا:
- کور ڈرائیو
- سٹریٹ ڈرائیو
- پل شاٹ
مرحلہ 1: ہارڈ ویئر کی ضروریات
- Arduino UNO R4 وائی فائی
- ADXL345 ایکسلرومیٹر (I2C)
- جمپر تاریں۔
- بریڈ بورڈ (اختیاری)
- USB ٹائپ سی کیبل
مرحلہ 2: سافٹ ویئر کی ضروریات
- Arduino IDE (تازہ ترین)
- ایج امپلس اسٹوڈیو اکاؤنٹ (مفت)
- Edge Impulse CLI ٹولز (Node.js درکار ہے)
- Adafruit ADXL345 لائبریری
مرحلہ 3: ADXL345 کی وائرنگ
ADXL345 سینسر کو Arduino UNO R4 وائی فائی سے اس طرح جوڑیں:
VCC → 3.3V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (اختیاری، I2C موڈ کے لیے)
SDO → فلوٹنگ یا GND
مرحلہ 4: IDE سینسر کو تیار کریں۔
Arduino IDE میں سینسر لائبریریوں کو کیسے انسٹال کریں؟
Arduino IDE کھولیں۔
ٹولز کھولیں → لائبریریوں کا نظم کریں… اور انسٹال کریں: Adafruit ADXL345 Unified Adafruit Unified Sensor
(اگر اس کے بجائے آپ کے پاس LSM6DSO یا MPU6050 ہے: SparkFun LSM6DSO، Adafruit LSM6DS یا MPU6050 اس کے مطابق انسٹال کریں۔)
مرحلہ 5: ڈیٹا اکٹھا کرنے کے لیے Arduino خاکہ
اس خاکے کو اپنے Arduino UNO R4 WiFi پر اپ لوڈ کریں۔ یہ ایکسلرومیٹر ڈیٹا کو CSV فارمیٹ (x,y,z) میں Edge Impulse کے لیے ~18 Hz پر سٹریم کرتا ہے۔
#شامل
#شامل
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
باطل سیٹ اپ() {
Serial.begin(115200)؛
اگر (!accel.begin()) {
Serial.println("کوئی ADXL345 نہیں ملا")؛
جبکہ (1)؛
}
accel.setRange(ADXL345_RANGE_4_G)؛
}
باطل لوپ() {
sensors_event_t e;
accel.getEvent(&e)؛
سیریل پرنٹ (e.acceleration.x)؛
سیریل پرنٹ ("،")؛
Serial.print(e.acceleration.y)؛
سیریل پرنٹ ("،")؛
Serial.println(e.acceleration.z)؛ تاخیر(55)؛ // ~18 ہرٹز
}
ایج امپلس سیٹ اپ کریں۔

مرحلہ 6: ایج امپلس سے جڑنا
- Arduino سیریل مانیٹر بند کریں۔
- کمانڈ چلائیں: edge-impulse-data-forwarder -frequency 18
- محور کے نام درج کریں: accX، accY، accZ
- اپنے آلے کا نام رکھیں: Arduino-Cricket-Board
- 'ڈیوائسز' کے تحت ایج امپلس اسٹوڈیو میں کنکشن کی تصدیق کریں۔


مرحلہ 7: ڈیٹا اکٹھا کرنا
Edge Impulse Studio → ڈیٹا کے حصول میں:
- ڈیوائس: Arduino-Cricket-Board
- سینسر: ایکسلرومیٹر (3 محور)
- ایسample لمبائی: 2000 ms (2 سیکنڈ)
- تعدد: 18 ہرٹج
کم از کم 40 سیکنڈ ریکارڈ کریں۔ampلیس فی کلاس:
- کور ڈرائیو
- سٹریٹ ڈرائیو
- پل شاٹ
ڈیٹا اکٹھا کریں Examples
کور ڈرائیو
ڈیوائس: Arduino-Cricket-Board
لیبل: کور ڈرائیو
سینسر: 3 محوروں والا سینسر (accX، accY، accZ)
Sample لمبائی: 10000ms
تعدد: 18 ہرٹج
Exampخام ڈیٹا:
accX -0.32
accY 9.61
accZ -0.12
سٹریٹ ڈرائیو
ڈیوائس: Arduino-Cricket-Board
لیبل: سٹریٹ ڈرائیو
سینسر: 3 محوروں والا سینسر (accX، accY، accZ)
Sample لمبائی: 10000ms
تعدد: 18 ہرٹج
Exampخام ڈیٹا:
accX 1.24
accY 8.93
accZ -0.42
شاٹ ھیںچو
ڈیوائس: Arduino-Cricket-Board
لیبل: پل شاٹ
سینسر: 3 محوروں والا سینسر (accX، accY، accZ)
Sample لمبائی: 10000 ms
تعدد: 18 ہرٹج
Exampخام ڈیٹا:
accX 2.01
accY 7.84
accZ -0.63 
مرحلہ 8: امپلس ڈیزائن
تحریک پیدا کریں کھولیں:
ان پٹ بلاک: ٹائم سیریز کا ڈیٹا (3 محور)۔
ونڈو کا سائز: 1000 ms ونڈو میں اضافہ (سٹرائیڈ): 200 ms فعال کریں: محور، شدت (اختیاری)، فریکوئنسی 18۔
پروسیسنگ بلاک: اسپیکٹرل تجزیہ (عرف حرکت کے لیے اسپیکٹرل فیچرز)۔ ونڈو کا سائز: 1000 ms ونڈو میں اضافہ (سٹرائیڈ): 200 ms فعال کریں: Axes، Magnitude (اختیاری)، پہلے تمام ڈیفالٹس رکھیں۔
سیکھنے کا بلاک: درجہ بندی (کیرا)۔
تسلسل کو محفوظ کریں پر کلک کریں۔ 
خصوصیات پیدا کریں:
سپیکٹرل تجزیہ پر جائیں، پیرامیٹرز کو محفوظ کریں پر کلک کریں، پھر تربیتی سیٹ کے لیے خصوصیات پیدا کریں۔

ایک چھوٹے ماڈل کو تربیت دیں۔
کلاسیفائر (کیراس) پر جائیں اور ایک کمپیکٹ کنفگ استعمال کریں جیسے:
نیورل نیٹ ورک: 1–2 گھنی تہیں (مثال کے طور پر، 60 → 30)، ReLU
عہد: 40-60
سیکھنے کی شرح: 0.001–0.005
بیچ سائز: 32
ڈیٹا تقسیم: 80/20 (ٹرین/ٹیسٹ)
ڈیٹا کو محفوظ کریں اور تربیت دیں۔
ہولڈ آؤٹ سیٹ کے ساتھ ماڈل ٹیسٹنگ کی جانچ اور جانچ کریں۔
کنفیوژن میٹرکس کا معائنہ کریں؛ اگر دائرہ اور اوپر اوورلیپ ہوتے ہیں، تو مزید متنوع ڈیٹا اکٹھا کریں یا موافقت کریں۔
سپیکٹرل پیرامیٹرز (کھڑکی کا سائز / شور فرش)۔
مرحلہ 9: Arduino میں تعیناتی
تعیناتی پر جائیں:
Arduino لائبریری کا انتخاب کریں (C++ لائبریری بھی کام کرتی ہے)۔
ماڈل کے سائز کو سکڑنے کے لیے EON کمپائلر (اگر دستیاب ہو) کو فعال کریں۔
.zip ڈاؤن لوڈ کریں، پھر Arduino IDE میں: خاکہ → لائبریری شامل کریں → .ZIP لائبریری شامل کریں…amples جیسے جامد بفر اور کنٹینیو انڈر File → سابقamples →
آپ کے پروجیکٹ کا نام - ایج امپلس۔ Arduino UNO EK R4 WiFi + ADXL345 کے لیے انفرنس خاکہ۔
مرحلہ 10: Arduino inference خاکہ
#شامل
#شامل
#شامل // Edge Impulse ہیڈر سے تبدیل کریں۔
Adafruit_ADXL345_Unified accel =
Adafruit_ADXL345_Unified(12345);
static bool debug_nn = غلط;
باطل سیٹ اپ() {
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 = micros() + (EI_CLASSIFIER_INTERVAL_MS *
1000)
sensors_event_t e;
accel.getEvent(&e)؛
بفر[ix + 0] = e.acceleration.x؛
بفر[ix + 1] = e.acceleration.y؛
بفر[ix + 2] = e.acceleration.z؛
int32_t انتظار = (int32_t)(اگلی_ٹک - مائیکرو ())؛
اگر (انتظار> 0) مائیکرو سیکنڈ میں تاخیر (انتظار)؛
}
سگنل_ٹی سگنل؛
int err = numpy::signal_from_buffer(بفر،
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE، &سگنل؛
اگر (غلطی! = 0) واپس آئے؛
ei_impulse_result_t نتیجہ = {0};
EI_IMPULSE_ERROR res = run_classifier(&signal, & result,
debug_nn);
اگر (res != EI_IMPULSE_OK) واپسی
برائے (سائز_ٹی ix = 0؛ ix < EI_CLASSIFIER_LABEL_COUNT؛ ix++) {
ei_printf(“%s: %.3f “, result.classification[ix].label,
result.classification[ix].value)؛
}
#اگر EI_CLASSIFIER_HAS_ANOMALY == 1
ei_printf("بے ضابطگی: %.3f"، نتیجہ۔انومالی)؛
#endif
ei_printf("\n")؛
}
آؤٹ پٹ سابقampلی:
تجاویز:
EI_CLASSIFIER_INTERVAL_MS کو اپنے ڈیٹا فارورڈر فریکوئنسی کے ساتھ مطابقت پذیر رکھیں (مثال کے طور پر، 100 Hz → 10 ms)۔ Edge Impulse لائبریری اس مستقل کو آپ کے تسلسل سے خود بخود سیٹ کرتی ہے۔
اگر آپ مسلسل پتہ لگانے (سلائیڈنگ ونڈو) چاہتے ہیں، تو Continuous ex سے شروع کریں۔ample EI لائبریری کے ساتھ شامل ہے اور ADXL345 ریڈز میں تبادلہ۔
ہم جلد ہی ویڈیو سبق شامل کریں گے؛ تب تک، دیکھتے رہیں - https://www.youtube.com/@RobuInlabs
اور اگر آپ کو اب بھی کچھ شبہات ہیں، تو آپ ایجڈ امپلس کے ذریعہ یہ ویڈیو دیکھ سکتے ہیں: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

دستاویزات / وسائل
![]() |
Arduino ABX00087 UNO R4 وائی فائی ڈویلپمنٹ بورڈ [پی ڈی ایف] یوزر گائیڈ R4 وائی فائی، ADXL345، ABX00087 UNO R4 وائی فائی ڈویلپمنٹ بورڈ، ABX00087، UNO R4 وائی فائی ڈویلپمنٹ بورڈ، وائی فائی ڈویلپمنٹ بورڈ، ترقیاتی بورڈ، بورڈ |
