Simple Self Driving Arduino car without sensors
Hello Readers, मेरे दिमाग में idea आया है जिसे में www.mechanic37.com पर share कर रहा हूँ जिसमे microcontroller Arduino uno से एक simple self driving कार बनाने का बनाने का एक ऐसी self driving car जो की बिना किसी sensor के आपके बताये हुए रास्ते(map)पर चलेगी मेने simple mathmatics का use करके ये idea create किया है जिसमे आप को यदि programming आती हो तो और भी बढ़िया है नहीं तो आप मेरे program को भी copy कर सकते है
आपको simple self driving कार बनाने के लिए इन चीज़ों की जरूरत होगी
- Computer
- Arduino Uno with usb cable
- L293D motor driver
- Dc Motors-2
- Solderless bord
- Car जिसमे दोनों motor को रखने की जगह हो
- Scale
- Ribin या धागा -wheel की speed जानने के लिए
Theory&Control-मेने material list में 2 motor की जरूरत होगी ऐसा लिखा है आप इसे समझ ही गए होंगे क्यूंकि दो motor में से एक car को आगे-पीछे(forword-back) ले जाने का काम करेगी और दूसरी motor car के लिए streering का काम करेगी car को right-left में मोड़ने का इन दोनों मोटरों को motor driver l293d control करेगी और l293d को Arduino uno जो की एक Arduino का सबसे बढ़िया microcontroller है और Arduino uno को computer से programing या coding करके control किया जायेगा और 9v की बैटरी आप use कर सकते है
इन motors को control करने का तरीका कुछ ऐसा होगा की ये motors time के हिसाब से run होंगी मेने नीचे एक program दिया है जिसके अनुसार motors control होंगी जैसे 10second के लिए पहली फिर 1second के लिए दूसरी (right-left करने वाली)
तो हम start करते है अपनी cute and very simple self driving car को बनाना
Step1 Car के लिए circuit बनाएं-
circuit बनाने के लिए आपको चाहिए solderless bord,Arduino uno,L293d,motors,jumper wire या simple wire जो की Arduino bord और solderless bord दोनों में फिट आ सके ये सभी आने के बाद देखे image
आपका circuit सही से काम करेगा इसको जानने के लिए और motor को पहले बिना car में सेट किये रन करवा के देखेंगे की रन हो रही है और फिर motors को car के wheel और steering में सेट कर देंगे फिर calculaton को follow कर के program को chage कर दें
Step2 Calculation-
- जो car आपने ली है उसके wheel की radius को scale से माप कर के परिधि(
circumference) को 2*pi*r से निकाल लें pi=3.14 or 22/7 - forword-backword वाली wheel की speed-revolution/minute(एक चक्कर/मिनट) निकाले और फिर चक्कर/second निकाले wheel की speed से ही map को desine होगा
- wheel को एक चक्कर लगाने पर वो अपने परिधि(circumference) के बराबर ही दूरी तय करेगा यदि हम wheel की speed निकाल लें चक्कर/सेकंड में तो हम एक second में तय की गयी दूरी निकाल लेंगे
- Car को right-left करने वाली motor को steering wheel से connect करने के बाद motor को run करेंगे तो steering के rotation को angle को या घुमाव के हिसाब से नोट करें की कितने समय में (programming में mili second का भी use कर सकते है ) कितनी steering घूम जाती है note करें
calculation करने के बाद step3 को अच्छी तरह से read करें program में time सेट आपको ही करना पड़ेगा ये आपके द्वारा लिए गए wheel पर depend करेगा की wheels की radius कितनी है और आपको कितनी दूरी तय करनी है example-यदि आपकी car की wheel 10 चक्कर/second लगाती है तो wheel पहले कोड से 10 second तक घूमेगी 10 second तक घूमने में wheel 100 चक्कर लगायेगी यदि wheel की radius 10mm है तब परधि 62mm होगी जिससे पहले कोड से car 10 second में 62*100=6200mm की distance तय करेगी
step3 programming
circuit बनने के बाद और सारी calculation होने के बाद अपनी Arduino से usb cable connect कर computer से connect करें और arduino uno bord select कर के नीचे program को Arduino uno में upload करने से पहले आपके द्वारा लिए गए wheel की radius और steering की time के साथ rotation स्पीड को ध्यान में रखते हुए program में time change करें
मेने हर एक movment के लिए program का अलग हिस्सा बनाया red color से दोनों motor के घूमने के चार कोड है आप इसके घूमने के समय को कम और ज्यादा कर सकते है
/* Author-mechanic37
project- very simple self driving car
source- www.mechanic37.com
*/
//Motor A के लिए
const int motorA1 = 5; //motor A के एक सिरे A1 को l293d की 14 pin से जोड़ें
const int motorA2 = 6; //motor A के एक सिरे A2 को l293d की 10 pin से जोड़ें
//Motor B के लिए
const int motorB1 = 10; //motor B के एक सिरे B1 को l293d की 7 pin से जोड़ें
const int motorB2 = 9; //motor B के एक सिरे B2 को l293d की 2 pin से जोड़ें
void setup(){
//output इन पिनों में होगा
pinMode(motorA1, OUTPUT);
pinMode(motorA2, OUTPUT);
pinMode(motorB1, OUTPUT);
pinMode(motorB2, OUTPUT);
//Motor Control
//इस नीचे लिखे कोड से motor A wheel को forward घुमाएगी
digitalWrite(motorA1, HIGH);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(10000);//इतने समय तक ये mili second में time है इसका मतलब 10 second होगा
//ये कोड motor B से steering को right side मोड़ेगी
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, HIGH);
digitalWrite(motorB2, LOW);
delay(200); //सिर्फ 200 milisecond में आप इसे कम ज्यादा भी कर सकते है
//इस कोड से motor B wheel को back घुमाएगी
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, HIGH);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
delay(2000);//इतने समय तक
//इस कोड से motor steering को left साइड मुड़ेगी .
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, HIGH);
delay(200);
//ये कोड motors को off करने के लिए
digitalWrite(motorA1, LOW);
digitalWrite(motorA2, LOW);
digitalWrite(motorB1, LOW);
digitalWrite(motorB2, LOW);
}
void loop(){
}
इन चारों कोड जो मेने program में red कलर से highlight किये है उनको आप time भी change करके जरूरत के अनुसार repeat भी कर सकते है कितनी भी बार बस motor off करने वाले कोड से पहले repeat करें
step4
map बनाएं calculation के बाद –
अपने calculation की first step,second,third setep में पहली motor के forward-backword wheel लिए calculation की है जिसमे अपने जाना होगा की car एक second में कितनी दूरी तय करेगी और car की steering कितने समय में कितना घूम जाएगी steering के लिए समय milisecond में होगा जो आप सेट कर सकते है program में
मेरे द्वारा create किया गया program में मेने सभी चारों motion दिए है देखे red कलर से लिखे program पहला कोड wheel को 10 second तक घुमायेगा आप देखें की आपने अपनी car के लिए कितने radius का wheel लिया है calculation step से परधि के बराबर एक चक्कर में दूरी चलेगी आपकी wheel और आपने ribin का use करके या किसी और method का use करके wheel की speed-revolution/second में निकाली होगी यदि आपकी car की wheel 10 चक्कर/second लगाती है तो wheel पहले कोड से 10 second तक घूमेगी 10 second तक घूमने में wheel 100 चक्कर लगायेगी
यदि wheel की radius 10mm है तब परधि 62mm होगी जिससे पहले कोड से car 10 second में 62*100=6200mm की distance तय करेगी और दूसरे कोड से right side मुड़ेगी
ऐसे calculation करके map बनाएं map आप अपने room में जमीन पर लाइने खींच करके बना सकते है यदि आपकी calculation सही होगी तो आपकी car बिलकुल उसी रास्ते पर जाएगी जिसके लिए अपने program में time के लिए calculation की थी
Best of luck
Leave a Reply