2. 1
1) Executive Summary
It’s an RC car, which can detect collision and avoids it by itself. Some major contributions of
our project that come to mind are that the collision detection function in the ARCduino™ can increase
the safety and lifetime of children’s toys. Furthermore, these ideas, technologies, and concepts can
extend to automated driving systems of automobiles in more practical applications. As far as
innovation in this project, we went from using just the ultrasonic sensor, by itself, to using it with some
additional calculation. In other words, using just the sonar sensor sometimes would yet incorrect or
inaccurate results. What we realized is that we can take the distance thrice (very close together), and
we can average them together to correct inaccurate or unintended results.
We are undertaking this project, because we wanted to try something relatively simple, but
powerful using Arduino. We also wanted something to do that reminded us of childhood, and wanted
something to be adapted for a more mature market. As far as advantages go, this project could help
bring some awareness to toy companies, and hopefully can change their approach to making toys, by
making them more durable, interactive, open, and fun. As mentioned previously, this
application/project will be targeted towards young children (preferably those at twelve years of age or
less), and so will help them, too . They will be the users of the system.
On the implementation, my partner and I bought a $100 Arduino starting kit on their website,
which included the Arduino Uno microcontoller, the RC components, the breadboard, and various other
connectors.
2) Project Objectives
ARCduino must meet the following objectives:
Stop and back up before it hits the wall, under a strict time bound
Stop the entire unit if it has to rotate 8 times consecutively in a short period of time
The ARCduino must use a combination of the ultrasonic sensor and the error-correcting average
calculation
3) Project Approach
We designed our prototype to contain basic functions for detecting obstacles in front of it and
avoiding it. The software prototype should be easily accessible by individuals so that the users can add
whatever functions they want, and to tweak sensitivity thresholds (if needed). One of the points for our
project is that we used a simple algorithm for distance sensor. Since the ultrasonic distance sensor
sometimes detected something even though there was nothing in front of it, we had to find a solution
for this kind of error. Therefore, we made an array of distances which is detected by the sensor and
made an average of recent 3 distances. Then, if the average was under certain point, such as 10cm, it
definitely meant there was something in front of it. Therefore, by this, we were able to reduce the errors
caused only by the distance sensor.
3. 2
4 and 5) Project Flow Diagram and Design Details
Figure A (Block diagram)
Figure B (Flow diagram)
4. 3
6) User’s Manual
To those wanting to use this car, the only thing necessary is a power supply via a USB cable.
Afterwards, if there’s any place the user wants to test the ARCduino car, just place it on the floor, and
see how it detects obstacles and acts accordingly. This works better on smooth surfaces.
7) Programmer’s Manual
For programmers, as we can see, there are 5 different functions.
• loop() : after the whole kit is set up, it runs repeatedly until the RC car detects obstacles
8 times. In this function, it calculates distances using the ultrasonic distance sensor, and
based on the average of distances, it calls the run() function.
• run() : According to the distance, if there is an obstacle 20cm away, it calls
goBackward() and turnLeft(). If not, it just calls goForward()
• goBackward(), goForward() : by setting the speed of motors respectively, it can move
backward or forward.
• turnLeft() : by setting the sign of the speed of left motor and right motor opposite, it
will turn left. By changing the values and signs, it can turn right or the angle of turning
can vary.
8) References/Additional Resources
- https://www.sparkfun.com/tutorials/348
- http://duino4projects.com/projects/car-projects/
- https://www.youtube.com/watch?v=t_Za7G38YFU
- http://www.instructables.com/id/Simple-RC-car-for-beginners-Android-control-over-/
- https://blog.miguelgrinberg.com/post/building-an-arduino-robot-part-i-hardware-components