Difference between revisions of "S20: Tesla Model RC"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Hardware Design)
(Hardware Design)
Line 516: Line 516:
 
[[File:Bridge_sensor_node.jpg|900px|middle|center|Bridge Sensor Node]]
 
[[File:Bridge_sensor_node.jpg|900px|middle|center|Bridge Sensor Node]]
  
{| class="wikitable" width="auto" style="text-align: center"
+
{| class="wikitable" width="auto" style="text-align: center" align="center"
 
|+Table #. Bridge-Sensor Node Pinout
 
|+Table #. Bridge-Sensor Node Pinout
 
|-
 
|-

Revision as of 18:50, 21 May 2020

Model RC

Tesla Model RC



Abstract

Tesla Model RC is an electric, battery-powered, self-navigating RC car. The aim is to navigate to the destination set on the Android application by utilizing GPS navigation. The car combines the data received from multiple sensors to perceive its surroundings to avoid obstacles in its path.

Introduction

The project was divided into 5 modules:

  • Bridge and Sensor Controller
  • Motor Controller
  • Geographical Controller
  • Driver and LCD controller
  • Android Application

Team Members & Responsibilities

<Team Picture>

Bridge Sensor Node
Danny Nuch





Schedule

Week# Start Date End Date Task Status
1
  • 03/08/2020
  • 03/15/2020
  • Read previous projects, gather information and discuss among the group members.
  • Distribute modules to each team member.
  • Completed
2
  • 03/16/2020
  • 03/16/2020
  • 03/18/2020
  • 03/17/2020
  • 03/22/2020
  • 03/22/2020
  • Acquire parts: RC Car, Wheel encoders, Ultrasonic Sensors, GPS, Compass, Spare Battery, ESP8266, LCD
  • Define CAN DBC
  • Create a mobile application and define protocol between Network node
  • Completed
  • Completed
  • Completed
3
  • 03/23/2020
  • 03/23/2020
  • 03/23/2020
  • 03/23/2020
  • 03/23/2020
  • 03/23/2020
  • 03/29/2020
  • 03/29/2020
  • 03/29/2020
  • 03/29/2020
  • 03/29/2020
  • 03/29/2020
  • Motor alignment on wheels from finding min/max throttle and steering threshold of Motor node
  • Integrate WiFi driver into Bridge and Sensor node by setting up access points.
  • Integrate GPS and compass into Geographical node and compare functionality to a real GPS module.
  • Integrate ultrasonic drivers into the Sensor node and define maximum distance..
  • Create a WiFi-connected Android App base project and upload it to the git repo.
  • 3D print shell of RC car.
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
4
  • 03/30/2020
  • 03/30/2020
  • 03/30/2020
  • 03/30/2020
  • 03/30/2020
  • 03/31/2020
  • 04/05/2020
  • 04/05/2020
  • 04/05/2020
  • 04/05/2020
  • Work on the Electronic speed controller of the RC car to control the motor and servos.
  • Create circuit boards schematics.
  • Integrate Google Maps API into Android App
  • Establish CoAP server and client
  • Establish connection between the LCD and the Driver node
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
5
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/06/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • 04/12/2020
  • Order circuit boards components
  • Assemble components to circuit boards
  • Extensively test circuit boards in two rounds
  • Driver node CAN synchronize, logging, and PCAN dongle test of Sensor node
  • Create RC car base and extra accessories
  • Driver node CAN synchronize, logging, and PCAN dongle test of PID output of the motor node
  • Strip down RC car and mount 3D prints
  • Finish testing and validation of the LCD.
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
6
  • 04/13/2020
  • 04/13/2020
  • 04/13/2020
  • 04/13/2020
  • 04/19/2020
  • 04/19/2020
  • 04/19/2020
  • 04/19/2020
  • Integrate circuit boards and check proper connections to the components and the microcontrollers.
  • Parse client data(Compass/GPS/Sensor) and display on Android App
  • Driver node test obstacle avoidance algorithm
  • Improve Android application User Interface
  • Completed
  • Completed
  • Completed
  • Completed
7
  • 04/20/2020
  • 04/20/2020
  • 04/20/2020
  • 04/26/2020
  • 04/26/2020
  • 04/26/2020
  • Integrate Driver, Geo, Bridge sensor, and Motor nodes.
  • Check for the corner cases of navigation under various conditions.
  • Check the PCAN dongle reading to test CAN communication between all boards.
  • Completed
  • Completed
  • Completed
8
  • 04/27/2020
  • 04/27/2020
  • 04/27/2020
  • 04/27/2020
  • 05/03/2020
  • 05/03/2020
  • 05/03/2020
  • 05/03/2020
  • Test for the proper outdoor drive.
  • Test for the proper LCD display of information during the outdoor drive.
  • Test for the proper state information communication to the driver.
  • Update the wiki page.
  • Completed
  • Completed
  • Completed
  • Completed
9
  • 05/04/2020
  • 05/04/2020
  • 05/10/2020
  • 05/10/2020
  • Test outdoor drive with corner conditions.
  • Make relevant changes to all the nodes and based on testing results.
  • Completed
  • Completed
10
  • 04/11/2020
  • 05/17/2020
  • Test outdoor drive with corner conditions.
  • Final update of all the nodes and its testing
  • Completed
  • Completed
11
  • 05/18/2020
  • 05/18/2020
  • 05/18/2020
  • 05/18/2020
  • 05/24/2020
  • 05/24/2020
  • 05/24/2020
  • 05/24/2020
  • Final Demo
  • Update Gitlab repo with final code.
  • Update test video.
  • Update the wiki page.
  • Completed
  • In progress
  • In progress
  • In progress


Parts List & Cost

Item# Part Desciption Vendor Qty Cost
1 RC Car 1/10 Scale Redcat Racing [1] 1 $99.99 + Tax
2 CAN Transceivers TJA1050 LIVISN [2] 5 $6.39 + Tax
3 GPS Module Built-in Compass Readytosky [3] 1 $28.89 + Tax
4 HC-SR04 Ultrasonic Module ELEGOO [4] 5 $9.98 + Tax
5 HC-020K Wheel Encoder Module Hilitchi [5] 1 $9.99 + Tax
6 ESP8266 WiFi Module DIYmall [6] 1 $6.55 + Tax
7 Extra 7.2V 5000mAh NiMH battery Melasta [7] 1 $29.99 + Tax
8 Micro-USB to USB cable Walmart [8] 4 $4.00 + Tax
9 EL-CP-004 120pcs Multicolored Dupont Wire ELEGOO [9] 1 pack $6.98 + Tax
10 SJTwo Microcontroller SCE at SJSU [10] 4 $40
11 Black PLA Filament Hatchbox [11] 1 $22.99 + Tax
12 120 Ω Resistor Excess Solutions 2 $0.30
13 1 MΩ Resistor Excess Solutions 1 $0.15
13 100 kΩ Resistor Excess Solutions 1 $0.15
14 DB9 Female Connector Right Angle Mount Excess Solutions 1 $0.30
15 2.54 Male Header Strip 36 Pin Excess Solutions [12] 1 $0.36
16 5x7cm Prototype Board uxcell [13] 3 $7.09 + Tax
17 2.54mm JST-XHP 2 Pin Housing with 2.54mm JST XH Female Connector QLOUNI [14] 8
18 12mm Waterproof Push Button Momentary On Off Switch PP-NEST [15] 1
19 #22 Gauge Wire Elenco [16] As needed
20 LM2596 Buck Converter DC to DC D-PLANET [17] 1 $5.95 + Tax
21 11 in. x 14 in. x .093 in. Acrylic Sheet The Home Depot [18] 1 $6.67 + Tax
22 20x4 LCD Display Module [19] 1 $
23 6-32 Brass Motherboard Standoffs Hantof [20] 36 $14.58 + Tax
24 Metallic Aluminium Spray Paint Walmart [21] 1 $3.96 + Tax
25 Metallic Dark Metal Spray Paint Walmart [22] 1 $4.96 + Tax
26 Plastidip Black Spray Paint Walmart [23] 1 $5.82 + Tax


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> High Level Hardware Diagram

HighLevelCanBusDiagram.jpg

DBC File

https://gitlab.com/tesla-model-rc/sjtwo-c/-/blob/dev/dbc/tesla_model_rc.dbc



Bridge Sensor ECU

https://gitlab.com/tesla-model-rc/sjtwo-c/-/tree/dev/projects/sensor

Hardware Design

Bridge Sensor Node
Table #. Bridge-Sensor Node Pinout
SJTwo Board Module Description Protocol/Bus
P4.28 (TX3) RX (ESP8266) ESP8266 Rx data line UART 3
P4.29 (RX3) TX (ESP8266) ESP8266 Tx data line UART 3
P0.6 Trigger (Ultrasonic) Front sensor
P2.0 Echo (Ultrasonic) Front sensor
P0.7 Trigger (Ultrasonic) Rear sensor
P2.1 Echo (Ultrasonic) Rear sensor
P0.8 Trigger (Ultrasonic) Left sensor
P2.2 Echo (Ultrasonic) Left sensor
P0.9 Trigger (Ultrasonic) Right sensor
P2.4 Echo (Ultrasonic) Right sensor
P0.25 (ADC2) Voltage reading (S) Output of voltage divider
P0.1 (SCL1) CAN transceiver (Tx) CAN transmit CAN
P0.0 (SDA1) CAN transceiver (Rx) CAN receive CAN
5V (Ultrasonics) Vcc
GND GND Ground

Ultrasonics on pin #, #, #, #

ESP8266 on UART #

Software Design

Sensor Node

Sensor Node and CAN module
wifi module
battery tracking module
ultrasonics and GPIO Interrupts module
average buffer module (low pass filter for zeros)

ESP8266

Bridging between ESP8266 and mobile application is done through the creation of an access point on the ESP8266. Furthermore, the ESP8266 opens a server socket through CoAP allowing other CoAP clients to transmit or receive data from a created resource (/topics). The mobile application serves as the CoAP client and currently performs:

(GET) /heartbeat will receive string: "tmrc:heartbeat"
(GET) /getRadars will receive string: "aa,bb,cc,dd" where a is front radar, b is left radar, c is right radar, and d is back radar
(PUT) /setStatus will send string - either "$stop\n" or "$start\n"
(PUT) /setCoordinates will send coordinates as string - i.e. "#Sxxx.xxxxxx,Syyy.yyyyyy\n" where S is the sign and x is latitude and y is longitude

/getRadars resource will update through UART from a microcontroller. The string must follow the format: "^%02,%02,%02,%02" where '^' is the identifier for setting this resource. This length is also fixed where each radar data must have a width of no more than 2.
/setStatus resource has an identifier of '$', while /setCoordinates resource has an identifier of '#'. Both resources require appending a new line character at the end of string. This is essential for parsing strings on microcontroller side as the ESP8266 echoes received data over UART.

Project Setup
This project is built with ESP8266 RTOS SDK for programming the ESP8266. FreeRTOS, UART, Wifi with CoAP libraries are fully utilized in this project.
See the Getting Started Guide for full steps to configure and use ESP-IDF to build projects.

softAP - Wifi Access Point
ESP8266 opens an access point for other wireless devices to connect too. This access point follows adaptation of one of this example:
https://github.com/espressif/ESP8266_RTOS_SDK/tree/master/examples/wifi/getting_started/softAP.

UART Configuration
UART is simply transmitted over UART0 TX/RX pins. This example is integrated.

CoAP Server
CoAP server would startup a daemon task, create resources and receive data from CoAP clients and transmit data to CoAP clients. This server follows adaptation of a couple examples:

https://github.com/espressif/ESP8266_RTOS_SDK/tree/master/examples/protocols/coap_server
https://github.com/obgm/libcoap-minimal/blob/master/server.cc
https://github.com/obgm/libcoap/blob/develop/examples/coap-server.c

The Constrained Application Protocol (CoAP) is a specialized web transfer protocol for use with constrained nodes and constrained networks in the Internet of Things.
The protocol is designed for machine-to-machine (M2M) applications such as smart energy and building automation.
Please refer to RFC7252 for more details.

Technical Challenges

ultrasonic sensors smoothing/filtering



Motor ECU

https://gitlab.com/tesla-model-rc/sjtwo-c/-/tree/dev/projects/motor_node

Hardware Design

Motor node.jpg
Table #. Motor Node Pinout
SJTwo Board Module Description Protocol/Bus
P2.0 (PWM1) Motor (S) Control signal for motor speed
P2.4 (PWM5) Servo (S) Control signal for servo steering
P0.22 (PWM1) Wheel encoder (Out) Output signal of wheel encoder
P0.1 (SCL1) CAN transceiver (Tx) CAN transmit CAN
P0.0 (SDA1) CAN transceiver (Rx) CAN receive CAN
6V Motor and Servo Vcc
5V Wheel encoder Vcc
GND GND Ground

Software Design

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

Technical Challenges

< List of problems and their detailed resolutions>



Geographical ECU

https://gitlab.com/tesla-model-rc/sjtwo-c/-/tree/dev/projects/geo_node

Hardware Design

Geo node.jpg
Table #. Geographical Node Pinout
SJTwo Board GPS/Compass Module Description Protocol/Bus
P4.28 (TX3) RX (Yellow Wire) Ublox M8N Rx data line UART 3
P4.29 (RX3) TX (Green Wire) Ublox M8N Tx data line UART 3
P0.10 (SDA2) SDA (White wire) HCM5883L SDA I2C 2
P0.10 (SCL2) SCL (Orange wire) HCM5883L SCL I2C 2
P0.1 (SCL1) CAN transceiver (Tx) CAN transmit CAN
P0.0 (SDA1) CAN transceiver (Rx) CAN receive CAN
Vcc 3.3V Vcc (Red wire) Vcc
GND GND (Black wire) Ground

Software Design

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

Technical Challenges

GPS (Ublox M8N)

  • The enabled 2-stop bits in uart.c were causing communication problems between the SJTwo MCU and the Ublox M8N GPS module.
    • Solution:To solve the 2 stop bits configuration was disabled in uart.c in the uart__init() function as shown in figure # and issue was solved.
2-stop-bits.png
  • GPS module did not retain configurations and were lost after being powered off for many hours going back back to default settings. This problem was crucial since it was causing the SJ2 to parse the latitude and longitude incorrectly from other messages other than NMEA GNGGA.
    • Solution: To solve this configuration problem u-center which is an interface for the GPS Ublox module was used to read which strings the program sends over UART to configure the GPS module. This solution was implemented in the gps.c module creating a function called gps__private_configure_for_nmea_gngga() in which holds a char array with the hex representation of the configurations needed to disable all of the NMEA messages except GNGGA. This function then sends this configuration values back to the GPS module over UART and the GPS module responds back with an ACK message (8μ.......) from every configuration message meaning that the configurations were successfully applied as shown in figure #.
Nmea config.png




Driver Controller & LCD

https://gitlab.com/tesla-model-rc/sjtwo-c/-/tree/dev/projects/driver_controller_node

Hardware Design

Driver node.jpg
Table #. Driver Node Pinout
SJTwo Board LCD Module Description Protocol/Bus
P4.28 (TX3) RX LCD Rx data line UART 3
P4.29 (RX3) TX LCD Tx data line UART 3
P0.1 (SCL1) CAN transceiver (Tx) CAN transmit CAN
P0.0 (SDA1) CAN transceiver (Rx) CAN receive CAN
Vcc 3.3V Vcc (Red wire) Vcc
GND GND (Black wire) Ground

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