Term Project Report Final
Term Project Report Final
Final Project
“Autonomous Car”
1) Problem Description
Recall that in the Interim submission, you had already used 1 Motor Controller, Joystick and
4 LEDs. In this last phase of the Final project, you will continue using them. In addition, you will
also use ESP8266 WiFi module, 2 LDRs, 1 Trimpot, 1 Push Button and 1 Ultrasonic Sensor to
the car.
According to Trimpot resistance value, your speed will change in [0 - 100] duty cycle range.
● For the ultrasonic sensor case, the robot should not hit any obstacle while going forwards.
Therefore, you should check the distance value and if you detect an obstacle which 15 cm
away, the robot should go backwards until it detect obstacle which is more than 30 cm
away. This value should be in your Parameter.h file (OBSTACLE_DISTANCE and
OBSTACLE_ESCAPE_DISTANCE).
● The robot will have two modes which are autonomous and manual mode. The switch
between autonomous and manual mode will be done via (WiFi or UART) and Push
Button. You can implement either WiFi or UART. In other words, if you implement
WiFi, you do not need to implement UART and if you implement UART, you do not
need to implement WiFi).
The character for the switching to manual mode will be ‘*’ and for autonomous mode ‘#’.
These characters will be send by the user. Whenever the robot changes the mode, the
robot should send ‘MANUEL’ or ‘AUTO’ via UART or WiFi.
For Wifi case: WiFi SSID = HWLAB and Password = 12345678
The data will be available at:
http://192.168.0.100:8080/HWLAB_IoT/GetInformation?ID= (If your group ID is 1 the
url will be http://192.168.0.100:8080/HWLAB_IoT/GetInformation?ID=1)
The data will be send to:
http://192.168.0.100:8080/HWLAB_IoT/SendInformation?ID=.&DATA= (If your group
ID is 1 and the data ‘MANUEL’ the url will be
http://192.168.0.100:8080/HWLAB_IoT/SendInformation?ID=1&DATA=MANUEL)
The start mode for the robot can be changable, in Parameter.h file you will add a parameter
for starting mode (START_MODE)
➢ The robot will be at the stop phase when robot enters manual mode.
➢ When Joystick Left button is pressed, your robot should start to rotate counter-clockwise
direction (Point Turn is not necessary).
➢ When Joystick Up button is pressed, your robot should start to travel in forward direction.
➢ When Joystick Down button is pressed, your robot should start to travel in backward
direction.
➢ When Joystick Center button is pressed, your robot should stop.
➢ When Joystick Right button is pressed, your robot should rotate clockwise direction
(Point Turn is not necessary).
➢ While robot is going in forward direction, if Ultrasonic sensor detects an obstacle which
is 15 cm away from the robot, robot should drive in backward direction until ultrasonic
sensor reads at least 30 cm. Then, drive in forward direction.
➢ The robot speed can be changable via Trimpot.
➢ While robot is going in forward direction, if robot detects an light source from the left or
right side, the robot should escape from the light source. If light source is in the left side,
robot should go to the right side and if light source is in the right side, robot should go to
the left side.
➢ The robot will be at the stop phase when you enter autonomous mode.
➢ The autonomous execution will start with two different way: When you press the push
button which is on the QuickStart Board or when you send ‘66’ via UART or WiFi, your
robot will execute the order and start moving according to LDR sensor values.
➢ The robot speed can be changable via Trimpot.
➢ While robot is going in forward direction, if Ultrasonic sensor detects an obstacle which
is 15 cm away from the robot, robot should drive in backward direction until ultrasonic
sensor reads at least 30 cm. Then, drive in forward direction.
➢ The robot should go along the road.
Your robot car has 4 LEDs which are located to the Front-Left, Front-Right, Back-Left and
Back-Right The state of the LED is changed according the action which robot performs:
2) Road Demo
In order to enter the road demo (20 / 100 points), you should complete manual mode and
implement autonomous mode. In the race, we will put two LED strips on the left and right of the
robot.
The robot should follow the road and always be at the center of the road. Also, there can be
more than one robot on the road. Therefore, the robot should not hit the car which is in front of
the car.
3) Race
In order to enter the race, you should complete the road demo.
The bonus points will be given according to code and race performance (these bonuses will
be added to total grade of the course):
1 2 3 4
Basic 2 1.5 1
4) Group Report
Your report has to be genuine. It should include all necessary details such as Block
Diagram(s), System-Level Functional Diagram, Sequence Diagram(s), Connection Table(s) and
Circuit Schematic(s), Expense List. In addition, you should write the pseudocodes for each
function in your code.
● The total cost of the components that you buy for this experiment should not exceed the
100 TL. If the total cost exceeds this budget, your group will not be eligible for the bonus
scenario. In addition, we will reduce points. The amount of reduction will be proportional
to the excess amount.
● For this phase, we allow groups to bring their own batteries. In the lab, we use Samsung
ICR18650-26JM. Therefore if you bring your battery for the demo, this battery should be
an 18650 type battery and the max allowable capacity for this battery is 2600mAh.
(Warning: Some of the Chinese batteries even if they say they have 6800mAh capacity,
the actual capacity of these batteries is around 250mAh). The given batteries for the
demo section will have at least 3.8V and while the demo section, we will not change your
batteries. In other words, your code quality will determine the durability of your car in
the race.