Difference between revisions of "S21: exFAT"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Hardware Design)
(Schedule)
Line 50: Line 50:
 
<BR/>
 
<BR/>
  
=== Schedule ===
+
{| class="wikitable" style="vertical-align:middle;"
 
+
|- style="font-weight:bold; text-align:center;"
{| class="wikitable"  
 
|-
 
 
! Week
 
! Week
 
! Start Date
 
! Start Date
Line 64: Line 62:
 
| Feb 27, 2021
 
| Feb 27, 2021
 
| March 5, 2021
 
| March 5, 2021
| First team meetup to discuss the direction of the project, reviewed past projects and report our findings/concerns  
+
| First team meetup to discuss the direction of the project, reviewed past projects and report our findings/concerns
 
| All
 
| All
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 2
 
| 2
Line 73: Line 71:
 
| Divide the tasks & responsibilities among the team
 
| Divide the tasks & responsibilities among the team
 
| All
 
| All
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 80: Line 78:
 
| Finalize / Buy Parts
 
| Finalize / Buy Parts
 
| All
 
| All
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 87: Line 85:
 
| Delegate Tasks
 
| Delegate Tasks
 
| All
 
| All
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 94: Line 92:
 
| Get Data from Ultrasonic Sensor
 
| Get Data from Ultrasonic Sensor
 
| Eishan, David
 
| Eishan, David
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 101: Line 99:
 
| Get Data from Infrared Sensor
 
| Get Data from Infrared Sensor
 
| Eishan, David
 
| Eishan, David
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 108: Line 106:
 
| Initial Draft for common DBC file for sensor readings
 
| Initial Draft for common DBC file for sensor readings
 
| Eishan, David
 
| Eishan, David
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 115: Line 113:
 
| Get Data from GPS & CMPS14
 
| Get Data from GPS & CMPS14
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 3
 
| 3
Line 122: Line 120:
 
| Develop Bluetooth Driver (UART + customized line buffer)
 
| Develop Bluetooth Driver (UART + customized line buffer)
 
| Tyler
 
| Tyler
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 4
 
| 4
Line 129: Line 127:
 
| Initial UI Setup for Mobile App
 
| Initial UI Setup for Mobile App
 
| Tyler
 
| Tyler
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 4
 
| 4
Line 136: Line 134:
 
| Bluetooth "Hello World"
 
| Bluetooth "Hello World"
 
| Tyler
 
| Tyler
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 4
 
| 4
Line 143: Line 141:
 
| Build Driver Controller To Control Motor
 
| Build Driver Controller To Control Motor
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 4
 
| 4
Line 150: Line 148:
 
| Disassembly RC Car and Evaluation of Components
 
| Disassembly RC Car and Evaluation of Components
 
| Manas
 
| Manas
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 4
 
| 4
Line 157: Line 155:
 
| Complete Motor Drive Development with basic PID control.
 
| Complete Motor Drive Development with basic PID control.
 
| Manas
 
| Manas
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 5
 
| 5
Line 164: Line 162:
 
| Implement Bluetooth on Motor for wireless debugging
 
| Implement Bluetooth on Motor for wireless debugging
 
| Manas
 
| Manas
| style="background-color:#00fe00;" | Complete
+
| style="background-color:#00FE00;" | Complete
 
|-
 
|-
 
| 5
 
| 5
Line 171: Line 169:
 
| Master Controller Integration
 
| Master Controller Integration
 
| All
 
| All
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 5
 
| 5
Line 178: Line 176:
 
| Send Heading / Bearing / Distance info over CANBus to the Driver Node
 
| Send Heading / Bearing / Distance info over CANBus to the Driver Node
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 5
 
| 5
Line 185: Line 183:
 
| Display Compass, GPS, Steering angle, and Acceleration info on the LCD screen.
 
| Display Compass, GPS, Steering angle, and Acceleration info on the LCD screen.
 
| Manas, Suryanto
 
| Manas, Suryanto
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 5
 
| 5
Line 192: Line 190:
 
| Research and implement power solution for powering SJ2 boards w/ peripherals
 
| Research and implement power solution for powering SJ2 boards w/ peripherals
 
| Eishan, Tyler
 
| Eishan, Tyler
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete<br />
 
|-
 
|-
 
| 5
 
| 5
Line 199: Line 197:
 
| Design and Order PCB.
 
| Design and Order PCB.
 
| Eishan, Ka, Suryanto
 
| Eishan, Ka, Suryanto
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 6
 
| 6
Line 206: Line 204:
 
| Map PWM Duty Cycles to real speed (KmPH) readings.
 
| Map PWM Duty Cycles to real speed (KmPH) readings.
 
| Manas
 
| Manas
| style="background-color:#f8ff00;" | Delayed
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 6
 
| 6
Line 213: Line 211:
 
| Design, 3D print, and assemble LED ring.
 
| Design, 3D print, and assemble LED ring.
 
| Tyler
 
| Tyler
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 6
 
| 6
Line 234: Line 232:
 
| MIA handling for GPS module
 
| MIA handling for GPS module
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 6
 
| 6
Line 241: Line 239:
 
| Test LED ring which shows the compass info
 
| Test LED ring which shows the compass info
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 7
 
| 7
Line 248: Line 246:
 
| Create Collision Avoidance Algorithm Module
 
| Create Collision Avoidance Algorithm Module
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#00ff00;" | Complete
+
| style="background-color:#0F0;" | Complete
 
|-
 
|-
 
| 7
 
| 7
Line 255: Line 253:
 
| Create Pathing from GPS Data
 
| Create Pathing from GPS Data
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#f8ff00;" | Delayed
 
|-
 
|-
 
| 7
 
| 7
Line 262: Line 260:
 
| Hardware Integration Test and First Field Test
 
| Hardware Integration Test and First Field Test
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 7
 
| 7
Line 269: Line 267:
 
| Optimize Obstacle Detection Based On First Field Test Result (if needed)
 
| Optimize Obstacle Detection Based On First Field Test Result (if needed)
 
| Suryanto, Ka
 
| Suryanto, Ka
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 8
 
| 8
Line 275: Line 273:
 
| April 25, 2021
 
| April 25, 2021
 
| Design and Print Mounting Components
 
| Design and Print Mounting Components
| TBD
+
| Tyler
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 9
 
| 9
Line 283: Line 281:
 
| PCAN / BusMaster Configuration on car.
 
| PCAN / BusMaster Configuration on car.
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 10
 
| 10
Line 290: Line 288:
 
| CANBus Integration
 
| CANBus Integration
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 11
 
| 11
Line 297: Line 295:
 
| MIA Integration
 
| MIA Integration
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#34ff34;" | Complete
 
|-
 
|-
 
| 12
 
| 12
Line 304: Line 302:
 
| Big Integration and Live Field Test (Split into 2)
 
| Big Integration and Live Field Test (Split into 2)
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#FE0000;" | In Progress
 
|-
 
|-
 
| 12
 
| 12
Line 311: Line 309:
 
| System Debug & fine tuning
 
| System Debug & fine tuning
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#FE0000;" | In Progress
 
|-
 
|-
 
| 13
 
| 13
Line 318: Line 316:
 
| Demo Prep
 
| Demo Prep
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#FE0000;" | In Progress
 
|-
 
|-
 
| 13
 
| 13
Line 325: Line 323:
 
| Wiki Report
 
| Wiki Report
 
| All
 
| All
| style="background-color:#fe0000;" | In Progress
+
| style="background-color:#FE0000;" | In Progress
 
|}
 
|}
  

Revision as of 15:54, 17 May 2021

Project Title

exFAT project title here.



Abstract

Add a few sentence abstract here.

Introduction

The project was divided into 5 modules:

  • Sensor
  • Motor
  • Geo Controller
  • Driver/LCD Controller
  • Web application

Team Members & Responsibilities

<Team Picture>

Gitlab Project Link - [1]

  • Driver/Master Controller & LCD
    • All of us


Week Start Date End Date Task Person in Charge (PIC) Status
1 Feb 27, 2021 March 5, 2021 First team meetup to discuss the direction of the project, reviewed past projects and report our findings/concerns All Complete
2 March 6, 2021 March 13, 2021 Divide the tasks & responsibilities among the team All Complete
3 March 14, 2021 March 21, 2021 Finalize / Buy Parts All Complete
3 March 14, 2021 March 21, 2021 Delegate Tasks All Complete
3 March 14, 2021 March 21, 2021 Get Data from Ultrasonic Sensor Eishan, David Complete
3 March 14, 2021 March 21, 2021 Get Data from Infrared Sensor Eishan, David Complete
3 March 14, 2021 March 21, 2021 Initial Draft for common DBC file for sensor readings Eishan, David Complete
3 March 14, 2021 March 21, 2021 Get Data from GPS & CMPS14 Suryanto, Ka Complete
3 March 14, 2021 March 21, 2021 Develop Bluetooth Driver (UART + customized line buffer) Tyler Complete
4 March 21, 2021 March 28, 2021 Initial UI Setup for Mobile App Tyler Complete
4 March 21, 2021 March 28, 2021 Bluetooth "Hello World" Tyler Complete
4 March 21, 2021 March 28, 2021 Build Driver Controller To Control Motor Suryanto, Ka Complete
4 March 21, 2021 March 28, 2021 Disassembly RC Car and Evaluation of Components Manas Complete
4 March 21, 2021 March 28, 2021 Complete Motor Drive Development with basic PID control. Manas Complete
5 March 21, 2021 March 28, 2021 Implement Bluetooth on Motor for wireless debugging Manas Complete
5 March 28, 2021 April 04, 2021 Master Controller Integration All Complete
5 March 28, 2021 April 04, 2021 Send Heading / Bearing / Distance info over CANBus to the Driver Node Suryanto, Ka Complete
5 March 28, 2021 April 04, 2021 Display Compass, GPS, Steering angle, and Acceleration info on the LCD screen. Manas, Suryanto Complete
5 March 28, 2021 April 04, 2021 Research and implement power solution for powering SJ2 boards w/ peripherals Eishan, Tyler Complete
5 March 28, 2021 April 04, 2021 Design and Order PCB. Eishan, Ka, Suryanto Complete
6 April 04, 2021 April 11, 2021 Map PWM Duty Cycles to real speed (KmPH) readings. Manas Complete
6 April 04, 2021 April 11, 2021 Design, 3D print, and assemble LED ring. Tyler Complete
6 April 04, 2021 April 11, 2021 Complete required elements of mobile application Tyler Complete
6 April 04, 2021 April 11, 2021 Deploy webpage to web server Tyler Complete
6 April 04, 2021 April 11, 2021 MIA handling for GPS module Suryanto, Ka Complete
6 April 04, 2021 April 11, 2021 Test LED ring which shows the compass info Suryanto, Ka Complete
7 April 11, 2021 April 18, 2021 Create Collision Avoidance Algorithm Module Suryanto, Ka Complete
7 April 11, 2021 April 18, 2021 Create Pathing from GPS Data Suryanto, Ka Delayed
7 April 11, 2021 April 18, 2021 Hardware Integration Test and First Field Test All Complete
7 April 11, 2021 April 18, 2021 Optimize Obstacle Detection Based On First Field Test Result (if needed) Suryanto, Ka Complete
8 April 18, 2021 April 25, 2021 Design and Print Mounting Components Tyler Complete
9 April 25, 2021 May 02, 2021 PCAN / BusMaster Configuration on car. All Complete
10 May 02, 2021 May 09, 2021 CANBus Integration All Complete
11 May 09, 2021 May 16, 2021 MIA Integration All Complete
12 May 16, 2021 May 23, 2021 Big Integration and Live Field Test (Split into 2) All In Progress
12 May 16, 2021 May 23, 2021 System Debug & fine tuning All In Progress
13 May 23, 2021 May 28, 2021 Demo Prep All In Progress
13 May 23, 2021 May 28, 2021 Wiki Report All In Progress

Parts List & Cost

Item # Part Description Vendor Quantity Total Cost
1 GPS Breakout board Adafruit 1 $39.75
2 GPS Antenna Amazon 1 $8.43
3 CMPS14 RobotShop 1 $35.31
4 HC05 Amazon 1 $13.59
5 CAN Transceiver Waveshare 5 $21.45
6 Infrared sensor(s) Amazon 1 $10.89
7 Ultrasonic sensor(s) Amazon 3 $81.78
8 SJTwo Evaluation Board Amazon 6 $330
9 Traxxas Rustler Traxxas 1 $169.99
10 Traxxas Battery + Charger Traxxas 1 $59.99
11 RPM sensor Traxxas 1 $12.00
12 LED ring 8 LEDs (Cat shape) DIY 1 N/A


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

In our DBC file, we have 6 nodes, DRIVER, SENSOR, BRIDGE, GEO CONTROLLER, COMPASS, and MOTOR. Each of them represents a message sends from one node to another via the CAN bus.


1. The DRIVER sends the throttle and wheel angle command to the MOTOR so it knows when to speed up, speed down and turn.
2. The SENSOR sends the information about how far away is each of the Ultrasonic sensors away from the obstacles
3. The BRIDGE sends the GPS destination to the GEO Controller
4. The GEO CONTROLLER sends the current location of the car back to the BRIDGE
5. The GEO CONTROLLER sends the heading, bearing, and the distance from the destination to the DRIVER
6. The MOTOR sends the PWM and current speed information to the DEBUG node.


Gitlab link to the dbc file

VERSION "1.0.0"

BU_: DRIVER SENSOR BRIDGE GEO_CONTROLLER COMPASS MOTOR

BO_ 100 DRIVER: 3 DRIVER
SG_ DRIVER_throttle : 0|16@1- (0.1,-11) [-11.1|11.1] "kph" MOTOR
SG_ DRIVER_wheel_angle: 16|8@1- (1,-4) [-4|4] "degree" MOTOR

BO_ 200 SENSOR: 5 SENSOR
 SG_ SENSOR_sonar_front_left : 0|10@1+ (1,0) [0|0] "cm" DRIVER
 SG_ SENSOR_sonar_front_mid : 10|10@1+ (1,0) [0|0] "cm" DRIVER
 SG_ SENSOR_sonar_front_right : 20|10@1+ (1,0) [0|0] "cm" DRIVER
 SG_ SENSOR_infrared_back_mid : 30|10@1+ (1,0) [0|0] "cm" DRIVER

BO_ 205 GPS_DESTINATION: 7 BRIDGE
 SG_ LATITUDE_DEGREE : 0|8@1- (1, -90) [-90|90] "degree" GEO_CONTROLLER
 SG_ LONGITUDE_DEGREE : 8|9@1- (1, -180) [-180|180] "degree" GEO_CONTROLLER
 SG_ LATITUDE_MINUTE : 17|6@1+ (1, 0) [0|60] "minute" GEO_CONTROLLER
 SG_ LONGITUDE_MINUTE : 23|6@1+ (1, 0) [0|60] "minute" GEO_CONTROLLER
 SG_ LATITUDE_SECOND : 29|13@1+ (0.01, 0) [0|60] "second" GEO_CONTROLLER
 SG_ LONGITUDE_SECOND : 42|13@1+ (0.01, 0) [0|60] "second" GEO_CONTROLLER

BO_ 206 GPS_CURRENT_LOCATION: 7 GEO_CONTROLLER
 SG_ LATITUDE_DEGREE : 0|8@1- (1, -90) [-90|90] "degree" BRIDGE
 SG_ LONGITUDE_DEGREE : 8|9@1- (1, -180) [-180|180] "degree" BRIDGE
 SG_ LATITUDE_MINUTE : 17|6@1+ (1, 0) [0|60] "minute" BRIDGE
 SG_ LONGITUDE_MINUTE : 23|6@1+ (1, 0) [0|60] "minute" BRIDGE
 SG_ LATITUDE_SECOND : 29|13@1+ (0.01, 0) [0|60] "second" BRIDGE
 SG_ LONGITUDE_SECOND : 42|13@1+ (0.01, 0) [0|60] "second" BRIDGE

BO_ 210 COMPASS_HEADING_DISTANCE: 8 COMPASS
 SG_ HEADING : 0|12@1+ (0.1, 0) [0|359.9] "degrees" DRIVER
 SG_ BEARING : 12|12@1+ (0.1, 0) [0|359.9] "degrees" DRIVER
 SG_ DISTANCE : 24|12@1+ (0.01, 0) [0|0] "meters" DRIVER

BO_ 220 MOTOR_DEBUG: 8 MOTOR
 SG_ MOTOR_PWM : 0|32@1+ (0.01, 0) [10|20] "duty cycle" DEBUG
 SG_ CURRENT_SPEED : 32|32@1- (0.1,-11) [-11.1|11.1] "kph" DEBUG




Sensor ECU

<Picture and link to Gitlab>

Hardware Design

LV-EZ4-Ultrasonic.jpg
mid

Software Design

<List the code modules that are being called periodically.>

Technical Challenges

< List of problems and their detailed resolutions>



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

Link To Gitlab

Hardware Design

We used the Ultimate GPS Breakout v3 and an antenna to better receive the GPS signal.

For the GPS module, it sends several NMEA sentences but we only look for the $GPGGA ones. Therefore, we had to change the settings of the modules using a USB to UART bridge to send the command to the GPS module.


Ultmate gps breakout.jpg
mid
mid

Software Design

<List the code modules that are being called periodically.>


void periodic_callbacks__10Hz(uint32_t callback_count) {

  // receive desintation coordinates from the web app (sensor/bridge controller)
  gps__receive_message(can1); 

  gps__run_once();

  // transmit current gps coordinates to the web app (sensor/bridge controller)
  gps__transmit_msg_to_bridge(can1); 

  // transmit compass heading, bearing, distance to the driver (driver controller)
  cmps14__transmit_message(can1);  

  led_ring_turn_on_led_north();

  count = gps_fix_led_logic(gpio_input_p2_0, gpio_output_p1_18, count);
}

Technical Challenges

< List of problems and their detailed resolutions>

/*** TEMPORARY NOTES ***/

1. Encountered issues with getting fixed coordinates. Fixed it by obtaining external antenna and plugging in CR1220 as a backup battery.



2. The dbc format can support up to only 6 decimal point, which is not accurate when it is being used to store the GPS coordinates. Fix by using the Degrees Minutes Seconds format.

/***********************/





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>



Master 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

Our source code is on Gitlab.


Advise for Future Students

<Bullet points and discussion>

Acknowledgement

References