

ABX00087 UNO R4 वाइफाइ विकास बोर्ड
Arduino UNO R4 WiFi + ADXL345 + Edge प्रयोग गरेर क्रिकेट शट पहिचान
आवेग
यो कागजातले ADXL345 एक्सेलेरोमिटर र एज इम्पल्स स्टुडियोको साथ Arduino UNO R4 WiFi प्रयोग गरेर क्रिकेट शट पहिचान प्रणाली निर्माण गर्न पूर्ण कार्यप्रवाह प्रदान गर्दछ। यस परियोजनामा एक्सेलेरोमिटर डेटा सङ्कलन गर्ने, मेसिन लर्निङ मोडेललाई तालिम दिने र वास्तविक-समय शट वर्गीकरणको लागि प्रशिक्षित मोडेललाई Arduino मा फिर्ता तैनाथ गर्ने समावेश छ।
यस परियोजनामा विचार गरिएका क्रिकेट शटहरू:
- कभर ड्राइभ
- स्ट्रेट ड्राइभ
- पुल शट
चरण 1: हार्डवेयर आवश्यकताहरू
- Arduino UNO R4 वाइफाइ
- ADXL345 एक्सेलेरोमिटर (I2C)
- जम्पर तारहरू
- ब्रेडबोर्ड (वैकल्पिक)
- USB टाइप-सी केबल
चरण 2: सफ्टवेयर आवश्यकताहरू
- Arduino IDE (पछिल्लो)
– एज इम्पल्स स्टुडियो खाता (नि:शुल्क)
- एज इम्पल्स CLI उपकरणहरू (Node.js आवश्यक)
- Adafruit ADXL345 पुस्तकालय
चरण ३: ADXL345 को तार लगाउने
ADXL345 सेन्सरलाई Arduino UNO R4 WiFi मा निम्नानुसार जडान गर्नुहोस्:
VCC → ३.३V
GND → GND
SDA → SDA (A4)
SCL → SCL (A5)
CS → 3.3V (वैकल्पिक, I2C मोडको लागि)
SDO → फ्लोटिंग वा GND
चरण ४: IDE सेन्सर तयार पार्नुहोस्
Arduino IDE मा सेन्सर लाइब्रेरी कसरी स्थापना गर्ने?
Arduino IDE खोल्नुहोस्
उपकरणहरू खोल्नुहोस् → पुस्तकालयहरू व्यवस्थापन गर्नुहोस्... र स्थापना गर्नुहोस्: Adafruit ADXL345 Unified Adafruit Unified Sensor
(यदि तपाईंसँग LSM6DSO वा MPU6050 छ भने: तदनुसार SparkFun LSM6DSO, Adafruit LSM6DS वा MPU6050 स्थापना गर्नुहोस्।)
चरण ५: डेटा सङ्कलनको लागि Arduino स्केच
यो स्केच तपाईंको Arduino UNO R4 WiFi मा अपलोड गर्नुहोस्। यसले Edge Impulse को लागि ~18 Hz मा CSV ढाँचा (x,y,z) मा एक्सेलेरोमिटर डेटा स्ट्रिम गर्दछ।
#समावेश गर्नुहोस्
#समावेश गर्नुहोस्
Adafruit_ADXL345_एकीकृत गति =
एडफ्रुट_एडीएक्सएल३४५_युनिफाइड(१२३४५);
शून्य सेटअप() {
Serial.begin(115200);
यदि (!accel.begin()) {
Serial.println(“ADXL345 पत्ता लागेन”);
जबकि (1);
}
एक्सेल.सेटरेन्ज(ADXL345_RANGE_4_G);
}
शून्य पाश() {
सेन्सर_घटना_टी;
एक्सेल.गेटइभेन्ट(&e);
सिरियल.प्रिन्ट (e.acceleration.x);
सिरियल.प्रिन्ट(“,”);
सिरियल.प्रिन्ट(e.acceleration.y);
सिरियल.प्रिन्ट(“,”);
Serial.println(e.acceleration.z);delay(55); // ~18 Hz
}
एज इम्पल्स सेटअप गर्नुहोस्

चरण ६: एज इम्पल्समा जडान गर्दै
- Arduino सिरियल मनिटर बन्द गर्नुहोस्।
- आदेश चलाउनुहोस्: edge-impulse-data-forwarder –frequency 18
- अक्षका नामहरू प्रविष्ट गर्नुहोस्: accX, accY, accZ
- तपाईंको उपकरणको नाम दिनुहोस्: Arduino-Cricket-Board
- 'उपकरणहरू' अन्तर्गत एज इम्पल्स स्टुडियोमा जडान पुष्टि गर्नुहोस्।


चरण ३: डेटा सङ्कलन
एज इम्पल्स स्टुडियो → डेटा अधिग्रहणमा:
- उपकरण: Arduino-क्रिकेट-बोर्ड
- सेन्सर: एक्सेलेरोमिटर (३ अक्ष)
- एसampलम्बाइ: २००० मिलिसेकेन्ड (२ सेकेन्ड)
- आवृत्ति: ५० हर्ट्ज
कम्तिमा ४० सेकेन्ड रेकर्ड गर्नुहोस्ampप्रति कक्षा कम:
- कभर ड्राइभ
- स्ट्रेट ड्राइभ
- पुल शट
डेटा सङ्कलन गर्नुहोस् पूर्वampलेस
कभर ड्राइभ
उपकरण: Arduino-क्रिकेट-बोर्ड
लेबल: कभर ड्राइभ
सेन्सर: ३ अक्ष भएको सेन्सर (accX, accY, accZ)
Sampलम्बाइ: १०००० मि.से.
आवृत्ति: 18 हर्ट्ज
Exampकच्चा डेटा:
accX -०.३२
खाता ९.६१
accZ -०.१२
स्ट्रेट ड्राइभ
उपकरण: Arduino-क्रिकेट-बोर्ड
लेबल: स्ट्रेट ड्राइभ
सेन्सर: ३ अक्ष भएको सेन्सर (accX, accY, accZ)
Sampलम्बाइ: १०००० मि.से.
आवृत्ति: 18 हर्ट्ज
Exampकच्चा डेटा:
accX १.२४
खाता ९.६१
accZ -०.१२
पुल शट
उपकरण: Arduino-क्रिकेट-बोर्ड
लेबल: पुल शट
सेन्सर: ३ अक्ष भएको सेन्सर (accX, accY, accZ)
Sampलम्बाइ: १०००० मिलिसेकेन्ड
आवृत्ति: 18 हर्ट्ज
Exampकच्चा डेटा:
accX १.२४
खाता ९.६१
accZ -०.१२ 
चरण ८: आवेग डिजाइन
आवेग सिर्जना गर्नुहोस् खोल्नुहोस्:
इनपुट ब्लक: समय श्रृंखला डेटा (३ अक्षहरू)।
विन्डो आकार: १००० मिलिसेकेन्ड विन्डो वृद्धि (स्ट्राइड): २०० मिलिसेकेन्ड सक्षम गर्नुहोस्: अक्ष, परिमाण (वैकल्पिक), फ्रिक्वेन्सी १८।
प्रशोधन ब्लक: स्पेक्ट्रल विश्लेषण (गतिको लागि स्पेक्ट्रल सुविधाहरू पनि भनिन्छ)। विन्डो आकार: १००० मिलिसेकेन्ड विन्डो वृद्धि (स्ट्राइड): २०० मिलिसेकेन्ड सक्षम गर्नुहोस्: अक्ष, परिमाण (वैकल्पिक), पहिले सबै पूर्वनिर्धारितहरू राख्नुहोस्।
सिकाइ खण्ड: वर्गीकरण (केरा)।
सेभ इम्पल्समा क्लिक गर्नुहोस्। 
सुविधाहरू उत्पन्न गर्नुहोस्:
स्पेक्ट्रल विश्लेषणमा जानुहोस्, प्यारामिटरहरू बचत गर्नुहोस् मा क्लिक गर्नुहोस्, त्यसपछि प्रशिक्षण सेटको लागि सुविधाहरू उत्पन्न गर्नुहोस्।

सानो मोडेललाई तालिम दिनुहोस्
क्लासिफायर (केरास) मा जानुहोस् र कम्प्याक्ट कन्फिग प्रयोग गर्नुहोस् जस्तै:
स्नायु सञ्जाल: १-२ बाक्लो तहहरू (जस्तै, ६० → ३०), ReLU
युगहरू: ४०-६०
सिकाइ दर: ०.००१–०.००३
ब्याच साइज: ३२
डेटा विभाजन: ८०/२० (ट्रेन/परीक्षण)
डेटा बचत गर्नुहोस् र तालिम दिनुहोस्
होल्डआउट सेटको साथ मोडेल परीक्षणको मूल्याङ्कन र जाँच गर्नुहोस्।
कन्फ्युजन म्याट्रिक्सको निरीक्षण गर्नुहोस्; यदि सर्कल र माथि ओभरल्याप हुन्छ भने, थप विविध डेटा सङ्कलन गर्नुहोस् वा ट्वीक गर्नुहोस्
स्पेक्ट्रल प्यारामिटरहरू (झ्यालको आकार / आवाज भुइँ)।
चरण ९: Arduino मा तैनाती
तैनाथीमा जानुहोस्:
Arduino लाइब्रेरी छान्नुहोस् (C++ लाइब्रेरीले पनि काम गर्छ)।
मोडेलको आकार घटाउन EON कम्पाइलर (यदि उपलब्ध छ भने) सक्षम गर्नुहोस्।
.zip डाउनलोड गर्नुहोस्, त्यसपछि Arduino IDE मा: स्केच → लाइब्रेरी समावेश गर्नुहोस् → .ZIP लाइब्रेरी थप्नुहोस्... यसले ex थप्छampजस्तै Static buffer र Continuous under File → उदाहरणampलेस →
तपाईंको परियोजनाको नाम - एज इम्पल्स। Arduino UNO EK R4 WiFi + ADXL345 को लागि अनुमान स्केच।
चरण १०: अर्डिनो इन्फरन्स स्केच
#समावेश गर्नुहोस्
#समावेश गर्नुहोस्
#समावेश गर्नुहोस् // एज इम्पल्स हेडरले बदल्नुहोस्
Adafruit_ADXL345_एकीकृत गति =
एडफ्रुट_एडीएक्सएल३४५_युनिफाइड(१२३४५);
स्थिर बुल debug_nn = गलत;
शून्य सेटअप() {
Serial.begin(115200);
जबकि (!सिरियल) {}
यदि (!accel.begin()) {
Serial.println(“त्रुटि: ADXL345 पत्ता लागेन”);
जबकि (1);
}
एक्सेल.सेटरेन्ज(ADXL345_RANGE_4_G);
}
शून्य पाश() {
फ्लोट बफर[EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE] = {0};
(आकार_t ix = ०; ix <EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE; ix += को लागि
६) {
uint64_t अर्को_टिक = माइक्रोस() + (EI_CLASSIFIER_INTERVAL_MS *
८);
सेन्सर_घटना_टी;
एक्सेल.गेटइभेन्ट(&e);
बफर[ix + ०] = e.acceleration.x;
बफर[ix + १] = e.acceleration.y;
बफर[ix + २] = e.acceleration.z;
int32_t पर्खनुहोस् = (int32_t)(अर्को_टिक - माइक्रोस());
यदि (पर्खनुहोस् > ०) ढिलाइ छ भने माइक्रोसेकेन्ड (पर्खनुहोस्);
}
संकेत_टी संकेत;
int error = numpy::signal_from_buffer(बफर,
EI_CLASSIFIER_DSP_INPUT_FRAME_SIZE, र सिग्नल);
यदि (त्रुटि != ०) फर्काउँछ भने;
ei_impulse_result_t नतिजा = {0};
EI_IMPULSE_ERROR res = रन_क्लासिफायर(&सिग्नल, &परिणाम,
डिबग_एनएन);
यदि (res != EI_IMPULSE_OK) फिर्ता हुन्छ भने;
(आकार_t ix = ०; ix <EI_CLASSIFIER_LABEL_COUNT; ix++) को लागि {
ei_printf(“%s: %.3f“, परिणाम.वर्गीकरण[ix].लेबल,
परिणाम.वर्गीकरण[ix].मान);
}
#यदि EI_CLASSIFIER_HAS_ANOMALY == १
ei_printf(“विसंगति:%.3f”, परिणाम.विसंगति);
#endif
ei_printf(“\n”);
}
आउटपुट पूर्वampLe:
सुझावहरू:
EI_CLASSIFIER_INTERVAL_MS लाई तपाईंको डेटा फर्वार्डर फ्रिक्वेन्सी (जस्तै, १०० हर्ट्ज → १० एमएस) सँग सिङ्कमा राख्नुहोस्। एज इम्पल्स लाइब्रेरीले तपाईंको इम्पल्सबाट यो स्थिरांक स्वचालित रूपमा सेट गर्छ।
यदि तपाईं निरन्तर पत्ता लगाउन चाहनुहुन्छ (स्लाइडिङ विन्डो), निरन्तर पूर्वबाट सुरु गर्नुहोस्ampEI लाइब्रेरीसँग समावेश गरिएको छ र ADXL345 रिडहरूमा स्वैप गरिएको छ।
हामी चाँडै नै भिडियो ट्युटोरियलहरू थप्नेछौं; त्यतिन्जेल, सम्पर्कमा रहनुहोस् - https://www.youtube.com/@RobuInlabs
र यदि तपाईंलाई अझै पनि केही शंका छ भने, तपाईं एज्ड इम्पल्सको यो भिडियो हेर्न सक्नुहुन्छ: https://www.youtube.com/watch?v=FseGCn-oBA0&t=468s

कागजातहरू / स्रोतहरू
![]() |
Arduino ABX00087 UNO R4 वाइफाइ विकास बोर्ड [pdf] प्रयोगकर्ता गाइड R4 वाइफाइ, ADXL345, ABX00087 UNO R4 वाइफाइ विकास बोर्ड, ABX00087, UNO R4 वाइफाइ विकास बोर्ड, वाइफाइ विकास बोर्ड, विकास बोर्ड, बोर्ड |
