एक मिनी रोबोट बनाएंशुरुआतीपाठ 2699 मिनट का पाठ

मोटर्स और सेंसर्स की सुरक्षित वायरिंग

मोटर ड्राइवर, मोटर्स और अल्ट्रासोनिक सेंसर को Arduino से कनेक्ट करें, पहला टेस्ट स्केच अपलोड करें, और पहियों को ज़मीन से ऊपर उठाकर टेस्ट करें। हर कदम पर सुरक्षा सबसे पहले।

पाठ वीडियो में

60 सेकंड में

मोटर्स और सेंसर्स की सुरक्षित वायरिंग

मोटर ड्राइवर, मोटर्स और अल्ट्रासोनिक सेंसर को Arduino से कनेक्ट करें, पहला टेस्ट स्केच अपलोड करें, और पहियों को ज़मीन से ऊपर उठाकर टेस्ट करें। हर कदम पर सुरक्षा सबसे पहले।

1/5
आसान शब्दों में
रोबोट की वायरिंग करना घर में पानी के पाइप जोड़ने जैसा है। पानी को टंकी से आना चाहिए, नल से गुज़रना चाहिए, बाल्टी तक पहुँचना चाहिए और वापस नाली में बहना चाहिए। अगर एक भी पाइप छूटा, तो कुछ नहीं बहेगा। अगर आपने गलत पाइप जोड़ दिए, तो बाढ़ आ जाएगी। बिजली को भी पूरा रास्ता चाहिए होता है, और गलत तार चीज़ों को गर्म कर सकता है।
यह पाठ आपके तय किए गए रोबोट की वायरिंग करता है: एक Arduino Uno, एक L298N-टाइप मोटर ड्राइवर, दो TT मोटर, एक HC-SR04 सेंसर और दो IR सेंसर। अगर आप दूसरे पार्ट्स इस्तेमाल करते हैं, तो तरीका वही रहेगा, लेकिन पिन अलग हो सकते हैं। हर कनेक्शन से पहले अपने बोर्ड के पिन लेबल्स और डेटाशीट ज़रूर देखें।

शुरू करने से पहले सुरक्षा नियम

  1. वायरिंग करते समय पावर बंद रखें। कोई भी तार बदलने से पहले बैटरी निकाल दें, या स्विच ऑफ करें, और USB को अनप्लग करें।
  2. पोलैरिटी (polarity) की जाँच करें। लाल आमतौर पर + होता है और काला आमतौर पर −, लेकिन बैटरी होल्डर और बोर्ड पर बने निशानों को ज़रूर देखें। उल्टी लगी बैटरी पार्ट्स को खराब कर सकती है।
  3. शुरुआती टेस्ट के लिए पहियों को ज़मीन से ऊपर रखें। रोबोट को किसी डिब्बे या किताबों के ढेर पर रखें ताकि पहिए हवा में घूमें।
  4. गर्मी और गंध पर ध्यान दें। अगर कोई चीज़ गर्म होती है, धुआँ निकलता है या जलने की गंध आती है, तो तुरंत बैटरी हटा दें और वायरिंग की जाँच करें।
  5. देखरेख। छोटी उम्र के सीखने वालों को किसी बड़े की मौजूदगी में ही इसे बनाना चाहिए, खासकर सोल्डरिंग करते समय या लिथियम सेल इस्तेमाल करते समय।
ख़तरा
सोल्डरिंग आयरन बहुत गर्म होते हैं (सैकड़ों डिग्री सेल्सियस) और त्वचा को तुरंत जला सकते हैं। आयरन को हमेशा उसके स्टैंड पर रखें, धातु की नोक को कभी न छुएँ, धुएँ से दूर किसी हवादार जगह पर काम करें, आँखों की सुरक्षा के लिए चश्मा पहनें, और सोल्डर छूने के बाद हाथ धोएँ। काम खत्म होने पर आयरन को अनप्लग करें, और उसे रखने से पहले ठंडा होने दें।
ख़तरा
बैटरी सुरक्षा। बैटरी में बहुत सारी ऊर्जा जमा होती है। बैटरी के दोनों सिरों को कभी भी किसी तार, सिक्के या औज़ार से न जोड़ें (शॉर्ट सर्किट): तार बहुत गर्म हो सकते हैं और सेल से रिसाव हो सकता है या आग लग सकती है। लिथियम सेल (जैसे 18650 सेल और फ्लैट LiPo पैक) को अतिरिक्त सावधानी की ज़रूरत होती है: केवल सही होल्डर और सही चार्जर का उपयोग करें, उन्हें कभी भी बिना देखरेख के चार्ज न करें, और किसी भी ऐसे सेल का उपयोग न करें जो फूला हुआ, मुड़ा हुआ या गर्म हो। शुरुआती सीखने वालों को सामान्य AA सेल से शुरुआत करनी चाहिए। कम उम्र के सीखने वालों को किसी वयस्क के साथ काम करना चाहिए।

कनेक्शन्स

यहाँ सेयहाँ तकक्यों
बैटरी + (एक स्विच के ज़रिए)ड्राइवर मोटर पावर इनपुट (अक्सर 12V या VS लिखा होता है)मोटर्स के लिए पावर
बैटरी −ड्राइवर GNDवापसी का रास्ता (Return path)
ड्राइवर GNDArduino GNDकॉमन ग्राउंड: बोर्ड और ड्राइवर का ग्राउंड एक ही होना चाहिए नहीं तो सिग्नल काम नहीं करेंगे
Arduino पिन 5, 7, 8ड्राइवर ENA, IN1, IN2बाएँ मोटर की स्पीड और दिशा
Arduino पिन 6, 9, 10ड्राइवर ENB, IN3, IN4दाएँ मोटर की स्पीड और दिशा
ड्राइवर मोटर A / मोटर B आउटपुटबाएँ और दाएँ मोटर के तारअगर कोई पहिया उल्टा घूमता है, तो उस मोटर के दोनों तारों को आपस में बदल दें
HC-SR04 VCC, GNDArduino 5V, GNDसेंसर के लिए पावर
HC-SR04 TRIG, ECHOArduino पिन 2, 3साउंड बर्स्ट भेजें, गूँज (echo) को मापें
IR सेंसर्स VCC, GND, OUTArduino 5V, GND, पिन 11 और 12बाद के लिए लाइन सेंसर्स
नोट
कई L298N-टाइप बोर्डों पर, ENA और ENB पिनों पर छोटे जम्पर कैप लगे होते हैं। कैप लगे होने पर मोटर हमेशा पूरी स्पीड पर चलती है। स्पीड कंट्रोल करने के लिए उन्हें हटा दें और ENA/ENB को PWM पिनों से जोड़ें (Uno पर, ~ से मार्क किए गए पिन जैसे कि 5 और 6)। Arduino के लिए, टेस्टिंग के दौरान इसे USB से पावर दें। बोर्ड को पावर देने के लिए ड्राइवर के किसी भी 5 V आउटपुट का उपयोग करने से पहले उसकी डेटाशीट ज़रूर देखें।

पहला टेस्ट स्केच

यह स्केच असली Arduino बोर्ड के लिए है, जिसे Arduino C++ में लिखा गया है और Arduino IDE से अपलोड किया गया है। यह 3 सेकंड इंतज़ार करता है, फिर धीरे-धीरे आगे बढ़ता है और जब कोई चीज़ 20 सेमी से करीब आती है तो रुक जाता है। यह दूरी को प्रिंट करता है ताकि आप इसे Serial Monitor में देख सकें।
Arduino C++ (for the real board): first drive-and-stop testcpp
// 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. 1

    रोबोट को डिब्बे पर रखकर अपलोड करें

    पहिए हवा में होने चाहिए। बैटरी लगाएँ, अपलोड करने के बाद स्विच ऑन करें।
  2. 2

    Serial Monitor पर नज़र रखें

    सेंसर के सामने अपना हाथ हिलाएँ। क्या दूरी बदलती है?
  3. 3

    पहियों की दिशा जाँचें

    दोनों पहियों को आगे की तरफ घूमना चाहिए। अगर कोई एक उल्टा घूमता है, तो पावर बंद करें और उस मोटर के दोनों तारों को आपस में बदल दें।
  4. 4

    रुकने की जाँच करें

    अपना हाथ 10 सेमी आगे रखें। दोनों पहियों को रुक जाना चाहिए।
  5. 5

    फर्श पर टेस्ट, धीरे-धीरे

    अब इसे किसी खुली जगह पर फर्श पर रखें, और एक हाथ स्विच पर तैयार रखें।
ध्यान दें कि यह स्केच आपकी वर्चुअल लैब से कैसे मेल खाता है: distanceCm() असल में s["distance"] है, और drive(left, right) वही है जो आपके decide फ़ंक्शन ने लौटाया था। जो कोड आपने ब्राउज़र में लिखा था, वह सीधे असली रोबोट पर काम करता है, बस भाषा अलग है।
सावधान रहें
अगर रोबोट कुछ अप्रत्याशित करता है, तो पहले उसे बंद करें, फिर सोचें। चलते हुए रोबोट को उसके पहियों से पकड़ने की कोशिश न करें।
यह करके देखें। वायरिंग करने से पहले, हर तार को उसके रंग के साथ कागज़ पर बनाएँ, और जोड़ते समय हर एक पर टिक लगाते जाएँ। किसी दूसरे व्यक्ति से कहें कि वह असली बोर्ड से आपके चित्र का मिलान करके जाँच करे।

और देखें और पढ़ें

लैब

एक वायर्ड, टेस्ट किया गया रोबोट जो धीरे-धीरे आगे बढ़ता है और बाधा से पहले रुक जाता है, साथ ही एक हस्ताक्षरित सुरक्षा चेकलिस्ट।

~60 min

समस्या

यह लैब आपके असली बोर्ड के साथ की जाती है। यदि आपके पास अभी पार्ट्स नहीं हैं, तो कागज़ पर चरण 1 और 2 करें।

  1. अपने पार्ट्स के लिए कागज़ पर एक वायरिंग डायग्राम बनाएँ। अपने बोर्ड के पिन लेबल्स और डेटाशीट से प्रत्येक पिन को लेबल करें।
  2. एक सुरक्षा चेकलिस्ट लिखें: वायरिंग करते समय पावर बंद, पोलैरिटी की जाँच, ग्राउंड्स जुड़े हुए, पहिए ज़मीन से ऊपर, बाल और उंगलियाँ दूर, वयस्क मौजूद (यदि आवश्यक हो)।
  3. एक समय में एक पार्ट जोड़ते हुए, रोबोट की वायरिंग करें। पाठ से टेस्ट स्केच अपलोड करें (यदि आपके पिन अलग हैं तो पिन नंबर बदलें)।
  4. डिब्बे पर टेस्ट करें: Serial Monitor में दूरियाँ, दोनों पहियों की दिशा, और 20 सेमी पर रुकने की जाँच करें।
  5. फिर धीमी गति से फर्श पर टेस्ट करें। रिकॉर्ड करें: क्या यह समय पर रुका? यह बाधा से कितनी दूर रुका?
शुरुआती कोडcpp
// 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%)।

टेस्ट देने और अपनी प्रोग्रेस सेव करने के लिए साइन इन करें