S24: Team Gran Turismo
Contents
Project Title
Gran Turismo
Abstract
"The Gran Turismo" is an autonomous RC car designed to navigate to a specified destination using GPS coordinates, communicated via a mobile application. The car integrates four microcontrollers (Driver, Sensor/Bridge, Geo, and Motor nodes) which communicate over a Controller Area Network (CAN) bus. It utilizes FreeRTOS to manage periodic tasks for data gathering, processing, and decision-making, ensuring effective obstacle detection and avoidance while maintaining the intended path.
Introduction
The project was divided into 5 modules:
- Sensor/Bridge node
- Motor node
- Geo node
- Driver node
- Android App
Team Members & Responsibilities
<Team Picture>
Team Members:
Daniel Zhao Yeung
Suryanto Phienanda
Kaijian Wu
Lianshi Gan
Gitlab Project Link - C243_GT
Team Members | Task Responsibility |
---|---|
|
|
| |
|
|
|
|
|
|
Schedule
Week# | Start Date | End Date | Task | Status |
---|---|---|---|---|
1 | 03/04/2024 | 03/10/2024 |
|
Completed |
2 | 03/11/2024 | 03/17/2024 |
|
Completed |
3 | 03/18/2024 | 03/24/2024 |
|
Completed |
4 | 03/25/2024 | 03/31/2024 |
|
Completed |
5 | 04/01/2024 | 04/07/2024 |
|
Completed |
6 | 04/08/2024 | 04/14/2024 |
|
Completed |
7 | 04/15/2024 | 04/21/2024 |
|
Completed |
8 | 04/22/2024 | 04/28/2024 |
|
Completed |
9 | 04/29/2024 | 05/05/2024 |
|
Completed |
10 | 05/06/2024 | 05/12/2024 |
|
Completed |
11 | 05/13/2024 | 05/19/2024 |
|
Incomplete |
Parts List & Cost
Item# | Part Desciption | Vendor | Qty | Cost |
---|---|---|---|---|
1 | RC Car | Traxxas | 1 | $250.00 |
2 | CAN Transceivers MCP2551-I/P | Microchip [1] | 8 | Free Samples |
3 | Ultrasonic Sensor URM09 from DFRobots | dfrobot [2] | 4 | $8 * 4 |
4 | DSD TECH HM-10 Bluetooth 4.0 BLE | Amazon [3] | 1 | $12.00 |
Printed Circuit Board
<Picture and information, including links to your PCB>
CAN Communication
<Talk about your message IDs or communication strategy, such as periodic transmission, MIA management etc.>
Hardware Design
<Show your CAN bus hardware design>
DBC File
<Gitlab link to your DBC file> <You can optionally use an inline image>
Sensor and Bridge ECU
<Picture and link to Gitlab>
Hardware Design
Ultrasonic Sensor
Selecting the appropriate distance sensor is crucial for the success of the project. Our team chose the Ultrasonic Sensor URM09 from DFRobots due to its ease of use and cost-effectiveness. The URM09 offers multiple communication protocols, and we opted for the I2C package to simplify the configuration and reading process, allowing us to focus on the overall system integration.
- Ultra-Sonic Sensor URM09 (I2C Protocol)
- Supply Voltage: 3.3~5.5V DC
- Operating Current: 20mA
- Operating Temperature Range: -10℃~+70℃
- Measurement Range: 2cm~500cm (can be set)
- Resolution: 1cm
- Accuracy: 1%
- Frequency: 50Hz Max
- Dimension: 47mm × 22 mm/1.85” × 0.87”
Bluetooth Module
For the communication between the Mobile app and the RC car. We use the DSD TECH HM-10 Bluetooth 4.0 BLE module. This module communicate with the SJ2 board by using UART. It transmits raw data between mobile app and bridge. It is lightweight and has small size.
Software Design
<List the code modules that are being called periodically.>
Bluetooth Module
The Bluetooth module is used for transmitting command and GPS data between the app the Bridge.
Technical Challenges
Bluetooth Module
- Challenge: : Due to its design, it can read/send a string up to 20 characters at a time. Any string more than 20 characters will be break into 2 lines automatically and process. The datasheet provides limited information when developing the Bluetooth module.
- Solution: On SJ2 board side, we break out data into serval strings and pad '0' into some data string to ensure it is send in exact 20 characters.
Configure 4 ADC channels
We load the distance sensor data by ADC channel. There are only 3 channels ready to use on SJ2 board. Need to modify P0_26 as below to unlock ADC:
static void distance__configure_all_adc_pins(void) { LPC_IOCON->P0_25 &= ~(3 << 3); LPC_IOCON->P0_25 &= ~(1 << 7); LPC_IOCON->P0_26 &= ~(3 << 3); LPC_IOCON->P0_26 &= ~(1 << 16); LPC_IOCON->P0_26 &= ~(1 << 7); LPC_IOCON->P1_30 &= ~(3 << 3); LPC_IOCON->P1_30 &= ~(1 << 7); LPC_IOCON->P1_31 &= ~(3 << 3); LPC_IOCON->P1_31 &= ~(1 << 7); }
Motor ECU
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
Geographical Controller
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
Communication Bridge Controller & LCD
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
Driver Module
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
< List of problems and their detailed resolutions>
Mobile Application
<Picture and link to Gitlab>
Hardware Design
Software Design
<List the code modules that are being called periodically.> The app is responsible for receiving the current GPS location of the RC car, as well as the sensor data from the SJ2 board for debug purpose. The app also send command with the destination data to the the Bridge to tell the RC car where to go. The command data sent from the app is either "GO!!" or "STOP". In the "GO!!" case, the app also render the destination data that the user mark on the app to the Bridge. Example of data sent will be "GO!!","LAT:37.720681","LONG: -122.422832","STOP".
Technical Challenges
< List of problems and their detailed resolutions>
Conclusion
<Organized summary of the project>
<What did you learn?>
Project Video
Project Source Code
Advise for Future Students
<Bullet points and discussion>
Acknowledgement
=== References ===