Project - Line Tracing RC Car
Last updated
Last updated
Date: 2024-09-26
Author/Partner:
Github: repository link
Demo Video: Youtube link
PDF version:
Design a simple RC car that tracks the racing lines that meets the following conditions:
The car should automatically start at the given signal
It must trace on the track line
When it sees an obstacle on the driving path, it should temporarily stop until the obstacle is out of the path
It has AUTO and MANUAL control mode
There can be more missions to complete.
Hardware
MCU
NUCLEO-F411RE
Actuator/Sensor/Others: Minimum
Bluetooth Module(HC-06)
DC motor x2, DC motor driver(L9110s)
IR Reflective Sensor (TCRT 5000) x2
HC-SR04
additional sensor/actuators are acceptable
Software
Keil uVision, CMSIS, EC_HAL library
Complete the following tutorials: TU: Custom initialization
Use ecSTM32F411v2.h
and void MCU_init(void)
in your project code.
You should review previous labs for help
LAB: ADC IR Sensor
LAB: USART Bluetooth
LAB: Timer & PWM
Design your RC car that has the following functions:
Line tracing on the given racing track
has 2 control modes: Manual Mode to AUTO Mode
stops temporally when it detects an object nearby on the driving path
On the PC, connected to MCU via bluetooth
Print the car status every 1 sec such as “ ( “ MOD: A DIR: F STR: 00 VEL: 00 ”)
Mode Change( MOD):
When 'M' or 'm' is pressed, it should enter Manual Mode
LD2 should be ON in the Manual Mode
Speed (VEL):
Increase or decrease speed each time you push the arrow key “UP” or “DOWN”, respectively.
You can choose the speed keys
Choose the speed level: V0 ~ V3
Steer (STR):
Steering control with keyboard keys
Increase or decrease the steering angles each time you press the arrow key “RIGHT” or “LEFT”, respectively.
Steer angles with 3 levels for both sides
example: Lelvel -3, -2, -1, 0, 1, 2, 3 // '-' angle is turning to left
Driving Direction (DIR)
Forward or backward by pressing the key “F” or “B”, respectively.
You can choose other DIR keyboard keys
Emergency Stop
RC car must stop running when key “S” is pressed.
This must be the highest priority
Mode Change:
When 'A' or 'a' is pressed, it should enter AUTO Mode
LD2 should blink at 2 second rate in AUTO Mode
It should drive on the racing track continuously
Stops temporally when it detects an object nearby on the driving path
LD2 should blink at 0.5 second rate at this situation
If the obstacle is removed, it should drive continuously
Discuss with the teammate how to design an algorithm for this problem
In the report, you need to explain concisely how your system works with state tables/diagram or flow-chart.
● Listing all necessary states (states, input, output etc) to implement this design problem.
● Listing all necessary conditional FLAGS for programming.
● Showing the logic flow from the initialization
and more
Select appropriate configurations for the design problem. Fill in the table.
Functions | Register | PORT_PIN | Configuration |
System Clock | RCC | PLL 84MHz | |
delay_ms | SysTick | ||
Motor DIR | Digital Out | ||
…. | |||
TIMER | TIMER1 | ||
TIMER2 | |||
Timer Interrupt | ... | 10msec | |
ADC | ADC | ||
…. | |||
DC Motor Speed | PWM2 | ||
ADC sampling trigger | PWM3 | ||
RS-232 USB cable(ST-LINK) | USART2 | No Parity, 8-bit Data, 1-bit Stop bit 38400 baud-rate | |
Bluetooth | USART1 | TXD: PA9 RXD: PA10 | No Parity, 8-bit Data, 1-bit Stop bit 9600 baud-rate |
Create a new project under the directory \repos\EC\PROJECT\PROJECT_RCcar
The project name is “PROJECT_RCcar”
You can share the same code with your teammate. But need to write the report individually
You need to include the circuit diagram
Your code goes here: ADD Code LINK such as github
Experiment images and results
Show experiment images /results
Add demo video link
Complete list of all references used (github, blog, paper, etc)
(Option) You can write Troubleshooting section