मोटर्स और सेंसर्स की सुरक्षित वायरिंग
मोटर ड्राइवर, मोटर्स और अल्ट्रासोनिक सेंसर को Arduino से कनेक्ट करें, पहला टेस्ट स्केच अपलोड करें, और पहियों को ज़मीन से ऊपर उठाकर टेस्ट करें। हर कदम पर सुरक्षा सबसे पहले।
60 सेकंड में
मोटर्स और सेंसर्स की सुरक्षित वायरिंग
मोटर ड्राइवर, मोटर्स और अल्ट्रासोनिक सेंसर को Arduino से कनेक्ट करें, पहला टेस्ट स्केच अपलोड करें, और पहियों को ज़मीन से ऊपर उठाकर टेस्ट करें। हर कदम पर सुरक्षा सबसे पहले।
शुरू करने से पहले सुरक्षा नियम
- वायरिंग करते समय पावर बंद रखें। कोई भी तार बदलने से पहले बैटरी निकाल दें, या स्विच ऑफ करें, और USB को अनप्लग करें।
- पोलैरिटी (polarity) की जाँच करें। लाल आमतौर पर + होता है और काला आमतौर पर −, लेकिन बैटरी होल्डर और बोर्ड पर बने निशानों को ज़रूर देखें। उल्टी लगी बैटरी पार्ट्स को खराब कर सकती है।
- शुरुआती टेस्ट के लिए पहियों को ज़मीन से ऊपर रखें। रोबोट को किसी डिब्बे या किताबों के ढेर पर रखें ताकि पहिए हवा में घूमें।
- गर्मी और गंध पर ध्यान दें। अगर कोई चीज़ गर्म होती है, धुआँ निकलता है या जलने की गंध आती है, तो तुरंत बैटरी हटा दें और वायरिंग की जाँच करें।
- देखरेख। छोटी उम्र के सीखने वालों को किसी बड़े की मौजूदगी में ही इसे बनाना चाहिए, खासकर सोल्डरिंग करते समय या लिथियम सेल इस्तेमाल करते समय।
कनेक्शन्स
| यहाँ से | यहाँ तक | क्यों |
|---|---|---|
| बैटरी + (एक स्विच के ज़रिए) | ड्राइवर मोटर पावर इनपुट (अक्सर 12V या VS लिखा होता है) | मोटर्स के लिए पावर |
| बैटरी − | ड्राइवर GND | वापसी का रास्ता (Return path) |
| ड्राइवर GND | Arduino GND | कॉमन ग्राउंड: बोर्ड और ड्राइवर का ग्राउंड एक ही होना चाहिए नहीं तो सिग्नल काम नहीं करेंगे |
| Arduino पिन 5, 7, 8 | ड्राइवर ENA, IN1, IN2 | बाएँ मोटर की स्पीड और दिशा |
| Arduino पिन 6, 9, 10 | ड्राइवर ENB, IN3, IN4 | दाएँ मोटर की स्पीड और दिशा |
| ड्राइवर मोटर A / मोटर B आउटपुट | बाएँ और दाएँ मोटर के तार | अगर कोई पहिया उल्टा घूमता है, तो उस मोटर के दोनों तारों को आपस में बदल दें |
| HC-SR04 VCC, GND | Arduino 5V, GND | सेंसर के लिए पावर |
| HC-SR04 TRIG, ECHO | Arduino पिन 2, 3 | साउंड बर्स्ट भेजें, गूँज (echo) को मापें |
| IR सेंसर्स VCC, GND, OUT | Arduino 5V, GND, पिन 11 और 12 | बाद के लिए लाइन सेंसर्स |
पहला टेस्ट स्केच
// First test for an Arduino Uno + L298N-type driver + HC-SR04.
// Check your board's pin labels and datasheet: your pins may differ.
// First run: wheels OFF the ground.
const int ENA = 5, IN1 = 7, IN2 = 8; // left motor
const int ENB = 6, IN3 = 9, IN4 = 10; // right motor
const int TRIG = 2, ECHO = 3; // ultrasonic sensor
const int IR_LEFT = 11, IR_RIGHT = 12; // line sensors (used later)
void setMotor(int en, int a, int b, int speed) { // speed from -255 to 255
digitalWrite(a, speed > 0 ? HIGH : LOW);
digitalWrite(b, speed < 0 ? HIGH : LOW);
analogWrite(en, constrain(abs(speed), 0, 255));
}
void drive(int left, int right) {
setMotor(ENA, IN1, IN2, left);
setMotor(ENB, IN3, IN4, right);
}
long distanceCm() {
digitalWrite(TRIG, LOW); delayMicroseconds(2);
digitalWrite(TRIG, HIGH); delayMicroseconds(10);
digitalWrite(TRIG, LOW);
long us = pulseIn(ECHO, HIGH, 30000); // wait at most 30 ms for the echo
if (us == 0) return -1; // no echo: we do not know
return us * 0.0343 / 2; // there and back, so divide by 2
}
void setup() {
int outputs[] = {ENA, IN1, IN2, ENB, IN3, IN4, TRIG};
for (int p : outputs) pinMode(p, OUTPUT);
pinMode(ECHO, INPUT);
pinMode(IR_LEFT, INPUT);
pinMode(IR_RIGHT, INPUT);
Serial.begin(9600);
drive(0, 0);
delay(3000); // time to put the robot down and step back
}
void loop() {
long d = distanceCm();
Serial.println(d);
if (d < 0 || d < 20) drive(0, 0); // unsure or too close: stop
else drive(150, 150); // gentle forward speed
delay(50);
}- 1
रोबोट को डिब्बे पर रखकर अपलोड करें
पहिए हवा में होने चाहिए। बैटरी लगाएँ, अपलोड करने के बाद स्विच ऑन करें। - 2
Serial Monitor पर नज़र रखें
सेंसर के सामने अपना हाथ हिलाएँ। क्या दूरी बदलती है? - 3
पहियों की दिशा जाँचें
दोनों पहियों को आगे की तरफ घूमना चाहिए। अगर कोई एक उल्टा घूमता है, तो पावर बंद करें और उस मोटर के दोनों तारों को आपस में बदल दें। - 4
रुकने की जाँच करें
अपना हाथ 10 सेमी आगे रखें। दोनों पहियों को रुक जाना चाहिए। - 5
फर्श पर टेस्ट, धीरे-धीरे
अब इसे किसी खुली जगह पर फर्श पर रखें, और एक हाथ स्विच पर तैयार रखें।
distanceCm() असल में s["distance"] है, और drive(left, right) वही है जो आपके decide फ़ंक्शन ने लौटाया था। जो कोड आपने ब्राउज़र में लिखा था, वह सीधे असली रोबोट पर काम करता है, बस भाषा अलग है।और देखें और पढ़ें
लैब
एक वायर्ड, टेस्ट किया गया रोबोट जो धीरे-धीरे आगे बढ़ता है और बाधा से पहले रुक जाता है, साथ ही एक हस्ताक्षरित सुरक्षा चेकलिस्ट।
समस्या
यह लैब आपके असली बोर्ड के साथ की जाती है। यदि आपके पास अभी पार्ट्स नहीं हैं, तो कागज़ पर चरण 1 और 2 करें।
- अपने पार्ट्स के लिए कागज़ पर एक वायरिंग डायग्राम बनाएँ। अपने बोर्ड के पिन लेबल्स और डेटाशीट से प्रत्येक पिन को लेबल करें।
- एक सुरक्षा चेकलिस्ट लिखें: वायरिंग करते समय पावर बंद, पोलैरिटी की जाँच, ग्राउंड्स जुड़े हुए, पहिए ज़मीन से ऊपर, बाल और उंगलियाँ दूर, वयस्क मौजूद (यदि आवश्यक हो)।
- एक समय में एक पार्ट जोड़ते हुए, रोबोट की वायरिंग करें। पाठ से टेस्ट स्केच अपलोड करें (यदि आपके पिन अलग हैं तो पिन नंबर बदलें)।
- डिब्बे पर टेस्ट करें: Serial Monitor में दूरियाँ, दोनों पहियों की दिशा, और 20 सेमी पर रुकने की जाँच करें।
- फिर धीमी गति से फर्श पर टेस्ट करें। रिकॉर्ड करें: क्या यह समय पर रुका? यह बाधा से कितनी दूर रुका?
// For the REAL board (Arduino IDE), not the browser.
// Fill in YOUR pin numbers from your board's pin labels and datasheet.
const int ENA = 5, IN1 = 7, IN2 = 8; // left motor
const int ENB = 6, IN3 = 9, IN4 = 10; // right motor
const int TRIG = 2, ECHO = 3; // ultrasonic sensor
// Safety checklist (tick before powering on):
// [ ] batteries out while wiring [ ] polarity checked
// [ ] all grounds connected [ ] wheels off the ground
// [ ] hands, hair, sleeves clear [ ] adult present if needed
// Paste the setMotor, drive, distanceCm, setup and loop functions from the lesson here.आपका काम तब पूरा होगा जब
कठिन सवाल
उत्तर देखने से पहले ख़ुद जवाब देने की कोशिश करें। अगर आप इनके जवाब दे सकते हैं, तो आप पाठ समझ गए हैं।
Q1रोबोट बॉक्स टेस्ट में तो समय पर रुक जाता है, लेकिन फर्श पर यह बाधा से टकरा जाता है। ऐसा क्यों, और आप इसे कैसे ठीक करेंगे?दिखाएं
बॉक्स पर पहिए आज़ादी से घूमते हैं और लगभग तुरंत रुक जाते हैं। फर्श पर रोबोट का वज़न होता है और motors बंद होने के बाद भी वह लुढ़कता रहता है, चिकने फर्श पर और भी ज़्यादा। sensor भी सिर्फ हर 50 ms या उसके आसपास ही रीडिंग लेता है। इसे ठीक करने के लिए रुकने की दूरी बढ़ाएं, दूरी कम होने पर स्पीड धीमी करें (जैसे पाठ 2 की virtual lab में किया था), और ज़रूरत पड़ने पर ब्रेक लगाने के लिए motors को थोड़ी देर उल्टा चलाएं।
Q2sketch "no echo" (-1) को "रास्ता साफ़ है" मानने के बजाय रुकने की वजह क्यों मानता है?दिखाएं
No echo का मतलब यह हो सकता है कि रेंज में कुछ नहीं है, लेकिन इसका मतलब यह भी हो सकता है कि sensor अनप्लग है, चीज़ बहुत नरम या तिरछी है, या वायरिंग गलत है। जब रोबोट को यह फर्क समझ न आए, तो सुरक्षित विकल्प यही है कि वह रुक जाए। रोबोट को fail safe होना चाहिए: जब पक्का न हो, तो ऐसा काम करें जिससे कोई नुकसान न हो।
अक्सर पूछे जाने वाले सवाल
ग्राउंड्स को आपस में जोड़ना क्यों ज़रूरी है?
सिग्नल एक वोल्टेज होता है जिसे ग्राउंड के संदर्भ में मापा जाता है। अगर Arduino और ड्राइवर के ग्राउंड अलग-अलग हैं, तो ड्राइवर Arduino के HIGH और LOW को ठीक से "देख" नहीं पाता है, और मोटर्स अजीब तरह से व्यवहार करती हैं या बिल्कुल नहीं चलती हैं। सभी ग्राउंड्स को एक साथ जोड़ें।
मेरी मोटर सिर्फ एक ही दिशा में चलती है। क्या गड़बड़ है?
जाँचें कि दोनों दिशा वाले पिन (उदाहरण के लिए IN1 और IN2) जुड़े हुए हैं और setup() में आउटपुट के रूप में सेट हैं। कोड की भी जाँच करें: प्रत्येक दिशा के लिए एक HIGH और दूसरा LOW होना चाहिए।
दूरी हमेशा -1 प्रिंट होती है। मुझे क्या जाँचना चाहिए?
जाँचें कि VCC और GND जुड़े हुए हैं, TRIG और ECHO सही पिनों पर हैं (और आपस में बदले नहीं गए हैं), और सेंसर के सामने उसकी रेंज के अंदर कोई चीज़ है। 3.3 V बोर्ड के साथ, echo पिन पर वोल्टेज लेवल की जाँच करें।
क्या मैं Arduino C++ के बजाय Pico पर MicroPython का उपयोग कर सकता हूँ?
हाँ। बुनियादी विचार वही हैं: पिनों को आउटपुट के रूप में सेट करें, ड्राइवर को PWM भेजें, एको (echo) का समय मापें। पिन नंबरों और इसके द्वारा दिए जाने वाले फ़ंक्शन्स के लिए Pico के डॉक्यूमेंटेशन को देखें, और अपने बोर्ड के पिन लेबल्स और डेटाशीट की जाँच करें।
पाठ का टेस्ट
5 सवाल। पास होने और इस पाठ को पूरा करने के लिए 3 सही होने चाहिए (60%)।