Difference between revisions of "S24: Team Gran Turismo"
(→Schedule) |
(→Master Module) |
||
(26 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
== Project Title == | == Project Title == | ||
<b>Gran Turismo</b> | <b>Gran Turismo</b> | ||
+ | <HR> | ||
== Abstract == | == 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 === | === Introduction === | ||
− | The project was divided into | + | The project was divided into 5 modules: |
− | * Sensor | + | * Sensor/Bridge node |
− | * Motor | + | * Motor node |
− | * | + | * Geo node |
− | * Android | + | * Driver node |
+ | * Android App | ||
=== Team Members & Responsibilities === | === Team Members & Responsibilities === | ||
<Team Picture> | <Team Picture> | ||
− | + | Team Members: | |
<BR/> | <BR/> | ||
− | < | + | Daniel Zhao Yeung <BR/> |
− | < | + | Suryanto Phienanda <BR/> |
+ | Kaijian Wu <BR/> | ||
+ | Lianshi Gan <BR/> | ||
− | |||
− | |||
− | |||
− | + | Gitlab Project Link - [https://gitlab.com/lianshi.gan/sjtwo-c-team-gran-turismo C243_GT] | |
− | + | <BR/> | |
− | |||
− | * | + | {| class="wikitable" |
− | ** | + | |- |
− | ** | + | ! scope="col"| Team Members |
+ | ! scope="col"| Task Responsibility | ||
+ | |- | ||
+ | ! scope="row" style="text-align: left;"| | ||
+ | * Daniel Zhao Yeung | ||
+ | | | ||
+ | * Geo Node | ||
+ | |- | ||
+ | ! scope="row" style="text-align: left;"| | ||
+ | * [https://www.linkedin.com/in/lianshi-gan-967494116/ Lianshi Gan] | ||
+ | | | ||
+ | * Sensor Node | ||
+ | |- | ||
+ | ! scope="row" style="text-align: left;"| | ||
+ | * Suryanto Phienanda | ||
+ | | | ||
+ | * Motor Node | ||
+ | |- | ||
+ | ! scope="row" style="text-align: left;"| | ||
+ | * Suryanto Phienanda | ||
+ | | | ||
+ | * Driver Node | ||
+ | |- | ||
+ | ! scope="row" style="text-align: left;"| | ||
+ | * Kaijian Wu | ||
+ | | | ||
+ | * Mobile App | ||
+ | |- | ||
− | + | |} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Schedule == | == Schedule == | ||
Line 59: | Line 77: | ||
! scope="col"| Task | ! scope="col"| Task | ||
! scope="col"| Status | ! scope="col"| Status | ||
+ | |||
|- | |- | ||
! scope="row"| 1 | ! scope="row"| 1 | ||
Line 64: | Line 83: | ||
| 03/10/2024 | | 03/10/2024 | ||
| | | | ||
− | * | + | * Learn about the Busmaster and dbc. |
− | * | + | * Connect db9 to Busmaster. |
+ | * Assign tasks to each team member. | ||
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
! scope="row"| 2 | ! scope="row"| 2 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| 03/11/2024 | | 03/11/2024 | ||
| 03/17/2024 | | 03/17/2024 | ||
| | | | ||
− | * | + | * Finish up RC Car Infrastructure. |
− | * | + | * Get all the sensors and parts. |
+ | * Play with sensors and SJ2 boards. | ||
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 3 |
| 03/18/2024 | | 03/18/2024 | ||
| 03/24/2024 | | 03/24/2024 | ||
| | | | ||
− | * | + | * Start working on dbc and mobile app. |
− | * | + | * Integrate sensors with SJ2 boards. |
− | * Get | + | * Get Data from different modules(GPS, Sensors). |
− | * | + | * Starting to check on motor. |
− | + | | <font color = "green">Completed | |
− | |||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 4 |
| 03/25/2024 | | 03/25/2024 | ||
| 03/31/2024 | | 03/31/2024 | ||
| | | | ||
− | * | + | * Develop LCD module. |
− | + | * Start working on driver module. | |
− | * | + | * Build libraries for all modules (Bluetooth/WIFI, GPS, Sensor....). |
− | * | + | * Continue work on mobile app. |
− | * | + | | <font color = "green">Completed |
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 5 |
| 04/01/2024 | | 04/01/2024 | ||
| 04/07/2024 | | 04/07/2024 | ||
| | | | ||
− | PROTOTYPE 1 | + | * PROTOTYPE 1 |
− | * | + | * Build the car with all the modules. |
− | * | + | * Create unit/integration tests. |
− | * | + | * Continue work on mobile app. |
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"|6 |
| 04/08/2024 | | 04/08/2024 | ||
| 04/14/2024 | | 04/14/2024 | ||
| | | | ||
− | * | + | * Get the speed measuring sensor. |
− | * Motors with PID control | + | * Motors with PID control. |
− | * | + | * Continue work on mobile app. |
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 7 |
| 04/15/2024 | | 04/15/2024 | ||
| 04/21/2024 | | 04/21/2024 | ||
| | | | ||
− | PROTOTYPE 2 | + | * PROTOTYPE 2 |
* Integrate bluetooth module | * Integrate bluetooth module | ||
− | * | + | * Continue with mobile app |
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 8 |
| 04/22/2024 | | 04/22/2024 | ||
| 04/28/2024 | | 04/28/2024 | ||
| | | | ||
− | * | + | * Finalize/Connect mobile app with RC car. |
+ | * Obstacle avoidance. | ||
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 9 |
| 04/29/2024 | | 04/29/2024 | ||
| 05/05/2024 | | 05/05/2024 | ||
| | | | ||
− | PROTOTYPE 3 | + | * PROTOTYPE 3 |
* Prepare for outdoor tests. | * Prepare for outdoor tests. | ||
+ | | <font color = "green">Completed | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 10 |
| 05/06/2024 | | 05/06/2024 | ||
| 05/12/2024 | | 05/12/2024 | ||
| | | | ||
− | PROTOTYPE 4 | + | * PROTOTYPE 4 |
* Perform outdoors tests and recalibrate. | * Perform outdoors tests and recalibrate. | ||
+ | | <font color = "red">Incomplete | ||
− | |||
|- | |- | ||
− | ! scope="row"| | + | ! scope="row"| 11 |
| 05/13/2024 | | 05/13/2024 | ||
| 05/19/2024 | | 05/19/2024 | ||
| | | | ||
* Final Demo | * Final Demo | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| <font color = "red">Incomplete | | <font color = "red">Incomplete | ||
Line 211: | Line 211: | ||
| 8 | | 8 | ||
| Free Samples | | Free Samples | ||
+ | |- | ||
+ | ! scope="row"| 3 | ||
+ | | Ultrasonic Sensor URM09 from DFRobots | ||
+ | | dfrobot [https://www.dfrobot.com/product-1862.html] | ||
+ | | 4 | ||
+ | | $8 * 4 | ||
|- | |- | ||
|} | |} | ||
Line 216: | Line 222: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Printed Circuit Board == | == Printed Circuit Board == | ||
<Picture and information, including links to your PCB> | <Picture and information, including links to your PCB> | ||
Line 239: | Line 246: | ||
=== Hardware Design === | === Hardware Design === | ||
+ | |||
+ | |||
+ | ==== Ultrasonic Sensor ==== | ||
+ | |||
+ | [[File:MFG SEN0388.jpeg]] | ||
+ | |||
+ | 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” | ||
=== Software Design === | === Software Design === | ||
Line 245: | Line 269: | ||
=== Technical Challenges === | === Technical Challenges === | ||
− | < | + | ==== 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: | ||
+ | |||
+ | <pre> | ||
+ | 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); | ||
+ | } | ||
+ | </pre> | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Motor ECU == | == Motor ECU == | ||
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
Line 295: | Line 340: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
− | == | + | == Driver Module == |
<Picture and link to Gitlab> | <Picture and link to Gitlab> | ||
Line 310: | Line 355: | ||
<HR> | <HR> | ||
<BR/> | <BR/> | ||
+ | |||
== Mobile Application == | == Mobile Application == | ||
<Picture and link to Gitlab> | <Picture and link to Gitlab> |
Latest revision as of 15:40, 17 May 2024
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 |
|
Incomplete |
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 |
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 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”
Software Design
<List the code modules that are being called periodically.>
Technical Challenges
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.>
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 ===