Obstacle Avoiding Robot Car Using An Arduino
HTML-код
- Опубликовано: 1 июл 2024
- In this video, I’ll be showing you how to build your own Arduino based obstacle avoiding robot car. The car uses a servo mounted ultrasonic sensor to detect objects in front of and on either side of the car and an L293D DC motor driver shield to drive four geared motors, one on each wheel. An Arduino Uno underneath the shield controls the motor shield, ultrasonic sensor, and the servo.
The car drives itself forward until an object comes within the range of the sensor. The car then monitors the object until it is within the minimum distance and then stops moving. The servo is then used to turn the ultrasonic sensor left and the right, taking distance measurements in each direction. The car then decides which direction to turn based on which side has more distance available to move, then turns and continues on until the next object is detected. If both sides are blocked, the car will turn around and drive back out the way it came.
Full step by step written guide along with print files & code - www.the-diy-life.com/arduino-...
Components Required & Purchase Links
• Arduino Uno - amzn.to/2OgoMvv
• L293D Motor Driver Shield- amzn.to/3fpTzld
• Micro Servo - amzn.to/380rddp
• Ultrasonic Sensor Module - amzn.to/2ZktM8G
• 4 x Geared DC Motors & Wheels - amzn.to/3dAZghI
• 9-12V Battery Pack
• 8 x M3 x 15mm Socket Head Screws - amzn.to/2V7vaZ5
• Ribbon Cable - amzn.to/340xB3B
• Header Pins - amzn.to/2wY3k9g
If you've got any suggestions for future Arduino or electronics projects, let me know in the comments section. Хобби
Amazing tutorial Michail! short, precise, complete and simply explained.
Thank you very much
keep up the good work.
Thanks Mohammad
This is simply wow! So well explained
Great project! Thankyou for your work on this. Just changed a few speed settings for mine, works great.
That's great to hear!
@@MichaelKlements Hi! I've since noticed it only ever turns one direction, regardless of obstacles location.
I can reverse the turn direction by changing AF_DCMotor assignments Left to Right, but I can't get it to decide to best turn direction, it only goes same way each time. The servo was incorrectly looking right first, but fixing that didn't fix the problem. I downloaded your Code again in case I accidently changed something that matters, no go. Also played around with the 'int checkDirection()' in curiosity.. Anyway maybe you can suggest an answer if you have time. Thanks from QLD Australia.
Thank you so much Michael! I'm really grateful ❤❤ Especially when you linked the again products,, you've got my respect man! Not only are you an amazing electronic device maker but also you're an amazing guy for helping us rookies so much 💗
Thanks for the feedback and support Henin!
thank you so much , i just learned about the part when you can put a max wait int the pulseIn() function.
appreciate it :)
Amazing project !
Just Additional Information...
Ask permission Mr. Michael Klements
for those of you who are new to assembling, then there is a problem with the speed of the motor.. the solution is:
1. Change the byte value of motorSpeed
2. check the condition of the battery, is it still good or not
3. check the state of the gear motors (dynamo)
Thank you for your attention
Greetings from Ponorogo, East Java, Indonesia
What do you suggest to use instead of byte?
bro loved the project thank you so much
That's an awesome car dude. Sounds like you from GP.
Very nice video. The only thing I am missing is how to access the pins on the top of the motor shield. But this video is exactly what I was looking for.
HI Michael Klements , you are very great .
Hey Michael , Loved how you made it look so easy but I need help I'm facing a problem..
I have my trig and echo pin connected to A1 and A0 respectively and I replaced the no. in your code to A1 A0, and when I turn on the car the motors dont run and servo motor is also not moving..
please help me out here:(
thanks man
it helped in my school project
tysm bro video was too good with nice explaination
Thanks it is most helpful for me
Thank you very much for this
thank you so much for the help, it was very intresting and emosjonell. this expirience was life changeing. I have many of these robots now wich roams my grochery stores. i'am now a proffesional robot maker. i build robots, hand made. im rich now.
Thanks a lot brother ❤️❤️
this is so cool!!!
Can i do this with my old toy
Car which can turn right and left with the help of gear motor
How can plug that may also in the Motordrive shield
How did you solder on pin 13? I’m struggling with this one!
Great!.. the circuit diagram please 🥺
Hi Michael, thanks for the project! I did everything and made some changes on my own and the car works good! Just one issue, the servo motor is spinning too fast, so fast that it removes the wiring sometimes. Do you have any idea on how to fix this, like how to slow down the servo?
Hi Techysoham, thats great to hear. There are some Arduino libraries that offer servo speed control, the other option would be to create a functional that moves the servo in single single-degree increments with a small delay between each step.
Bro which type of battery will use🤔
What are the library you installed for the code
Hi i need help i want to add gsm module and pir sensor on this project can you help me where to insert the codes
How did you attach the wires to geared DC motors? And did you solder or just inserted the pin heads on pin no. 2 and 13?
Thanks
They're soldered to the motors, the headers are also soldered to pins 2 and 13.
Hi Michael, great project. i am relatively new to Arduino and understand most of the sketch. However I would like to understand the difference between calling a function following a void command such as "void stopMove() and the call to distance=getDistance() where the getDistance code starts with the statement "int getDistance()" why isn't getDistance also a void statement? cheers.
Hi Kerrie,
There are two different types of functions, ones starting with void just carry out the code in the function and ones that start with int (or String, char, Boolean etc.) are functions that return an a variable or “answer” of that type.
void stopMove just tells the motors to stop.
Where
int getDistance returns the distance measured to the object as an int variable type.
Hope that helps make it clear
Oh my god, How can I ever thank you???? My car worked soo well, there's just one thing. The speed is too low, but other than that, everything is working great.
Can you help me with the Speed issue?
The only way to increase the speed is to use a higher supply voltage - but still stay under the maximum voltage that the driver shield can handle.
@@MichaelKlements Oh okay Thanks for the information.
Does anyone have the circuit simulation of this arduino in proteus 8?
Hola profe. felicitaciones por su trabajo el único problema que tengo es que no hace los giros, o solo avanza o solo retrocede, gracias por la respuesta saludos de Lima _Perú
revisa el código y los cables
very good one
i did it everything was fine and gd
Thats great!
Hello, great project! I've run into a few problems and by modifying the code a little I managed to find the solutions. Although there is one problem that I can't find a way to fix. The ultrasonic module only detects a wall once, it stops after the 2nd wall, but the engines still continue forward into the wall. Could you help me, please? (My modifications did not cause this problem since when I used the original code it didn't work either)
can u copy and paste ur code plz need help
Hi Michael, it would be a great help if you tell me what I'm doing wrong here. Even though I copied your code the robot doesn't function correctly. when infront of a wall when activated it checks for spaces to move and once it finds a way it moves and doesn't stop again when it encounters any obstacles. I've seen some other people have the same problem as I. I made sure that my connections are correct so what might be the problem. Thank you very much.
For anybody wondering. I fixed this problem by adding return; after moveForward() in the if statement that's in the void loop
Hey, this video was amazing. Actually, I wanted to know how you fit the pins on thr motor driver shield? Thanks!
I just soldered them onto the board myself.
Bro aapka project work kr rha hai?
@@abhishekrathore9470 yea man fully agree
Hola, estoy haciendo un automóvil Arduino para un proyecto escolar sigue todos los pasos en el video pero el carro no camina / tengo tarjeta R3 Wifi MCU ATmega 328p / Wifi ESP8266 / Usb ch320g - se tiene que hacer alguna configuración diferente ?
hello Mr. Klements, I tried putting a 3 x 3.7V rechargeable battery with a total of 11.1V but when I added 5V to it giving a total of whopping 16.1V, the Arduino Mega 2560 stopped working. Did I supply too much current? is the 11.1V enough for the 4 motors?
I'm not sure how or why you added 5V to it, 11.1V is enough to supply both the motor shield and the Arduino. That said, 16.1V also should not have damaged the Arduino Mega since these can typically handle a supply voltage of up to 20V.
i dont have the 13 slot on my board so where can i put it
Can you please share tinkercard link of project and bottom part?
Hi Michael, I understand this project is 3 years old however do you believe with some adjustments to the code an analog servo motor can be used instead?
Like and analog RC servo motor or one that requires a different driver?
Where are these parts available?
Would this concept work on a larger scale car/kart?
Yes, you'd just need to use larger motors and motor drivers.
Can I make it 2 wheeled ???
How to change the code to adjust the speed of motors?
How many pins of Arduino are remains usable after connecting L293D shield means which are those pins which are not connected to shield
Pins 2, 13 and A0-A5
Hello
I am new to Arduino
And servo motor and ultrasonic sensor are working good
But when it's time to move motors their
Speed is very low and sometimes not even moving
If it is the matter of battery pls suggest
Which to use
Or some different problem.
Hi Kapil,
You can adjust the motor speed in the code by increasing the motorSpeed variable. If that doesn't help then your batteries are probably underpowered, I usually use lithium-ion or lithium-polymer batteries for these projects.
what software did you use for the making of the model in 3D?
TinkerCAD
How long does your car keep moving if u don't disconnect the power at all ?
Around 5-10 minutes depending on how fast it is driving and how many turns it is making.
Could you help me out here! I am using a 9v battery as power supply, though it is powering up the arduino board and motor driver it is not helping to drive the motors and servo motor, but when i connect to my laptop to upload the code it is poweringup enough to drive the motors and servo.
A 9V battery isn't able to provide enough current to drive four motors. It works when powered by USB as well as it is supplementing the shortfall. You need to use a better battery pack.
hey please anyone tell this work..? please🙏
Hi Michael Kelements,
Can we use a 9volts battery in this
9V block batteries aren't able to supply enough current to drive 4 motors.
hey could we plug the power supply into the Arduino Uno instead of the driver shield?
The motor driver pulls too much current to power it through the Arduino, you should power the driver and allow the driver to power the Arduino.
Is there any batery
Hey man where to put the battery
where is the servo library link
where can I find the wiring diagram?
Because I want to put the photos of it
Profesor otra cosita el robot usa una batería o 2 baterías siempre uso 2 pero ahora no esta claro como usar o 1 bat o 2 bat. por favor quería una respuesta gracias.
Good luck.
Hello Micheal, Great video! I did want to ask what voltage are you using to supply the car? I am using 6V. Is that fine?
I use either a 2cell or 3 cell lipo, so 7.6V or 11.4V. It's not so much the voltage that is the issue, you need a battery pack than can provide enough current for four motors to run. 6V would probably be fine if the pack can supply each motor an amp or so on startup.
@@MichaelKlements Can 4AA rehargable batteries supply an amp to each motor? Thank you for the reply!
Probably not unless they're really good quality ones. I'd suggest using a lithium ion battery pack or a holder for two or three 18650 cells.
@@MichaelKlements Thank you so much! That's probably the reason why my car is not working!
@@MichaelKlements Hello Michael! I am using a 12V adapter currently to power my car but I want it to be wireless. Could you please recommend a LIPO battery? Either send a link or just tell me here? That would be great help thank you!!!!
How to customise how near can the distance of the robot be with the obstacle before turning away. I want my robot to be about 10cm distance from the obstacle
Just change the parameter stopDist in the code to 10
please help me master...
i want to install a buzzer to on the smart car, so that it sounds when sensor reads an object, please help me make the coding.
Thank you in advance
Hi sir can you share Arduino circuit please....
Hello brother, I am unable to understand how you connected the female header pin to pin 13. Can you please explain?
I had to solder additional header pins onto my shield in order to plug it in - alternately you could just solder the wire directly onto the shield.
Please couldn you provide circuit diagram
What type of battery and it's power you used in this
I used a 3 cell, 850mAh LiPo
The servo and the ultra sonic sensor work perfectly. but only 1 motor is working and the others are not !! is it because am using 9v battery ?
and i have attach headers pin on A0 - A1 for the echo and trig instead the pins you are using , what changes i can do in order to use your code but with my current pins ?
Thanks alot Mr Micheal
It might be related to the 9V battery, these generally aren't able to provide enough current for four motors.
bro. will it work if we change header pin to A0 and A1
So I'm a little confused. In the description, you list header pins as a part, but I am unable to find where they are actually used. Could you describe where they are used and also why they are needed.
You need the header pins to solder to the motor driver shield so that you can plug the ultrasonic sensor into it. These pins aren't installed on the board when you buy it. You'll also need female pins to make up the cable to the sensor.
@@MichaelKlements do you have a link from which I could buy header pins?
Could you modify the program for me?, I'm a beginner in robotics and I don't know how to program, I have the same project but I don't have a servo motor, could you modify?
Mate what batteries do you use to power this thing ? I thing that's the most important aspect of this project (you skipped the part where you install the batteries) since many of us who're trying to get this to run use 9V batteries and that simply isn't the optimal power source
Either use 4 x AA batteries in a pack or use a 2 or 3 cell LiPo battery (that's what I've used).
@@MichaelKlements Yeah well I bought a 4 pack and a 6 pack AA holder. The 4 pack doesn't have enough voltage (1.5 x 4) as the L293D driver has a voltage drop of around 1.8V so the motors spin reaaaallly slowly. Nevermind turning left/right.
The 6 pack is also meh to be honest. I think I need to buy a high voltage high capacity LiPo battery like you mentioned to run this at its full potential.
Or maybe 2x 18650 Li Ion battery
You can make a video on how to make sensor lights using Arduino Uno and ultrasonic sensor.
Thanks for the suggestion, I'll have a look at this.
@@MichaelKlements Can you give me the website on which you created the 3d model
@@artigupta7852 it was drawn in Tinkercad
can i use hw battries
Where can we get the 3D print file for chesse
Thanks for the video, why didn't you just solder the wire to the board directly on pin 13 instead of using a pinhead?
Only so that it can be removed if required
@@MichaelKlements oh, ok thanks!
We can do the coting in mobile
Greetings Michael,
I have a question regarding the rover. From halt it propagates forward and then at specific stopdistance(which i believe is set to be in cm), and then stops. THe servo moves from 0 to 90 to 180. Then the rover goes backwards till specific distance. But it never turn around. It always goes forwards and backwards. I have used your ocde and modified the tie daelys for some lines but it doesnt seem to turn at all. And yes I have tested the rover in spaces whereleft is more than space on the right etc.. What can I do ? I would really appreciate the help. All the rover turn setting are as such. If Turn left... right motors turn FORWARD, Left motors turn backward...vice versa for Turn Right. I do not know what to do. Please help me.
There is not steering mechanism on the car, so to turn left the right wheels run forward and the left wheels run backwards, if the motor speeds are set correctly then the car will rotate on the spot (it shouldn't move forwards or backwards while turning). It sounds like your motor speeds have been adjusted incorrectly, so one side is probably overpowering the other side.
@@MichaelKlements hi michael could u reply to my query pls
I also make a car but it is not working can you help me to make it
Can I use Arduino UNO R3 SMD Atmega328P Board - Clone Compatible Model
Yes you can use an Uno clone board, as long as it has the same pinout as the original Uno it should work with the motor driver shield.
Hello Bro Can You Please Say Me How To Decrease the speed of motors and if reduced the turning speed also decreases
Just adjust the motor speed variables at the begining of the code, the turning speed is scaled from these so will also reduce
bro 1 small dout in this program some error so plese clear my dout
exit status 1
'stopMove' was not declared in this scope
this is the error in my computer
so please clear the problem for me
Can you please share circuit diagram
Can you provide a link for buying robot chassis ???
The chassis is just 3D printed, the parts are downloadable through the link in the video description
how to code the sumobot not avoiding the object by attacking how to code using the components of obstacle avoiding robot
will it stop at the stairs or will it drive down until it flips?
This doesn't detect edges, only obstacles in front of the car.
Bro, Is there a way where i can see the other side of the motor driver shield? i want to see how it was soldered on the other side because as i am lacking of pins to connect lots of sensor given that this ln293d occupies the whole arduino pins... Your video has brought me some hope.
There is some more information in my blog post linked in the video description. I haven't done anything on the bottom of the shield, I only added pins to the top.
I will take a look right now. So, only 2 and 13 can be soldered? It’s a pity that this board takes all the pins of arduino. I’ve got lots of sensors to connect but sadly the board takes them all. I have another question, is there a way we can connect the l293d and the board sensor shield v5.0? So I can have more pinouts for sensors, leds, buzzers and the like. Thank you 😊
The two drivers unfortunately require that many pins to control them. If the driver is using the pins then you won't be able to connect an IO expansion board at the same time. You'd be best off finding an I2C motor driver then and that'll free up all of the digital pins for your sensors.
Thank you for you kindly answer. I’m a beginner at this and I have to use mblock which is more code friendly, that being said, I have no idea how can I connect two arduinos together so I can use one for the ln293d and control the motors and the other arduino with the sensor shield v5 and have a wide range of digital pin outs. I would kindly be grateful if you have any idea how 🥹
Hi, so I don't quiet understand what did you do to the 12v battery, do you just put it in the middle section and wire it to the board or to the motors?
It is connected to the motor shield's power input, the shield then powers the Arduino
@@MichaelKlements Do you suggest any batterypacks that workf or this rc car or no?
Hi, I would like to know how did the wheels turn left and right if you did not use servo motor on the wheels?
The wheels don't physically steer left or right. The difference in motor speed between the left and right side turns the car.
@@MichaelKlements thank you so much!
I have a problem. My Arduino car doesn’t want ti drive perfectly straight. Pls help
i have done everything shown in the vid but when i upload the code it doesn't move at all can anyone help plzzz
man do u have any ppt for this
I am in fifth and I have make this project today very easily It's too easy
Hey, how can i find codes for it?
Where is the switch and battery? And how is it wired in relation to all the components. Sorry I am new to circuits.
There is a blog post linked in the video description that has some more detail on the wiring and components used.
Hi. I want to ask. Did you used 3 cells of 18650 battery? If i use 2 cells is it enough? Thanks..
I used a 3 cell LiPo battery, not 18650 cells. Two 18650 cells would probably be sufficient.
@@MichaelKlements ah i misunderstood. I will try this project soon. Thanks for your amazing tutorial!
did you use a switch to turn it on?
I just plug or unplug the battery
Heyy thanks a lot for this tutorial now i can finally start making this myself, although one doubt.. while executing your code it shows 'servoLook' was not declared in this scope as the error message... could you help me pls
Are you sure you have the library?
@@divyadeenu1686 kyu bana raha hea line 5 or 6 mea jaha bytes declare kiya hea vaha pe dekho servo servolock likha hea ki mit gaya. Tumhara sevo ka object nahi bana hea. Servo library. Nahi hone pe vo #include pe error deta.
Can any body help, from where to download the code?
Is there any other cheaper option other than the arduino uno
Not that's compatable with the motor shield, you can get clone Arduinos for a few dollars on Aliexpress
I have a question about the yellow-capped component labeled "PW" on the motor shield. Additionally, I've developed a car using the same procedure and utilizing two 3.7V batteries each. However, I've encountered two problems:
1- When I unplug the USB, the car stops working.
2- The batteries seem unable to power all four motors to move the car.
Initially, the setup worked fine during testing, but these issues arose later on. Could you please provide assistance on how to address these problems?
and what specific Batteries and how many of them I need and what volatge.Thanks In adavnce
I assume you're talking about the jumper labelled "PWR" - mine is black not yellow. This is jumper that either allows the shield to supply power to the Arduino or disables this feature if the voltage is outside of the Arduino's range. If you're supplying power to the shield only then you need to have a jumper on here to power the Arduino as well.
Using 3.7V batteries, you would need them to be connected in series and ensure that they can supply enough current to drive the motors.
@@MichaelKlements
Thank you for your response. Yeah Man , you got me correctly. I was referring to the yellow PWR in my case 😂. From your comment, I gather that I need two batteries, providing approximately 7.2V and 1200mA. In this scenario, I simply keep the PWR turned off as it's. COZ I'm afraid of messing things up
You need a supply voltage of at least 4.5V, so either one 7.4V battery or two 3.7V batteries in series would work. If the jumper isn't on then you need to provide the Arduino with it's own power source as well.
Plz give me a The program code it's not working I can't download it
Great video! But how did you upload your code to the robot?
yep same question
By connecting the cable to the uno. After that copy paste the code or open the .zip file he left for us to download. Then simply click upload. You must do this in the Arduino IDE software. The latest version is 2.0.3