Difference between revisions of "S20: Bucephalus"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Schedule)
(Schedule)
Line 168: Line 168:
 
* <font color="black">Order GPS antenna
 
* <font color="black">Order GPS antenna
 
* <font color="black">Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file  
 
* <font color="black">Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file  
 +
* <font color="orange">Start learning Android app development
 
* <font color="CDCC1C">Begin researching filtering algorithms for ultrasonic sensors
 
* <font color="CDCC1C">Begin researching filtering algorithms for ultrasonic sensors
* <font color="orange">Start learning Android app development
 
* <font color="fuchsia">Driver node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
 
 
* <font color="CDCC1C">Ultrasonic sensor values are converted to centimeters and transmit to driver node
 
* <font color="CDCC1C">Ultrasonic sensor values are converted to centimeters and transmit to driver node
 
* <font color="CDCC1C">Research ultrasonic sensor mounts
 
* <font color="CDCC1C">Research ultrasonic sensor mounts
 
* <font color="CDCC1C">Transmit CAN messages from sensor to driver node, <font color="fuchsia">and from driver to motor node
 
* <font color="CDCC1C">Transmit CAN messages from sensor to driver node, <font color="fuchsia">and from driver to motor node
 +
* <font color="fuchsia">Driver node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
 
* <font color="fuchsia">Decide movement and steering directions based on all possible sensor obstacle detection scenarios
 
* <font color="fuchsia">Decide movement and steering directions based on all possible sensor obstacle detection scenarios
 
* <font color="4CA821">Begin research on PID implementation to control speed of RC car
 
* <font color="4CA821">Begin research on PID implementation to control speed of RC car
 
  
 
|
 
|
Line 203: Line 202:
 
* <font color="black">Decide on tap plastic acrylic sheet dimensions and PCB dimensions
 
* <font color="black">Decide on tap plastic acrylic sheet dimensions and PCB dimensions
 
* <font color="orange">Start implementing a  basic Android app without Google maps API and create a separate GitLab repo for app
 
* <font color="orange">Start implementing a  basic Android app without Google maps API and create a separate GitLab repo for app
* <font color="33BAFF">Geological node is able to transmit a heading message to the driver node
 
 
* <font color="CDCC1C">Bridge sensor node is able to transmit a destination latitude and longitude coordinates message to geological node
 
* <font color="CDCC1C">Bridge sensor node is able to transmit a destination latitude and longitude coordinates message to geological node
 
* <font color="CDCC1C">Decide on ultrasonic sensor mounts and order extra if needed
 
* <font color="CDCC1C">Decide on ultrasonic sensor mounts and order extra if needed
 +
* <font color="33BAFF">Geological node is able to transmit a heading message to the driver node
 +
* <font color="fuchsia">Integrate driver board diagnostic testing with LEDs <font color="CDCC1C">and ultrasonic sensors (car goes left, left LEDs light up, etc.)
 
* <font color="4CA821">Continue research on PID controller design and begin basic implementation
 
* <font color="4CA821">Continue research on PID controller design and begin basic implementation
* <font color="fuchsia">Integrate driver board diagnostic testing with LEDs <font color="CDCC1C">and ultrasonic sensors (car goes left, left LEDs light up, etc.)
 
  
 
|
 
|
Line 230: Line 229:
 
* <font color="black">Complete rough draft of DBC file messages and signals
 
* <font color="black">Complete rough draft of DBC file messages and signals
 
* <font color="black">Purchase tap plastic acrylic sheet
 
* <font color="black">Purchase tap plastic acrylic sheet
 +
* <font color="orange">Learn how to integrate Google maps API into Android app
 
* <font color="CDCC1C">Finish a basic implementation of filtering ultrasonic sensor's ADC data
 
* <font color="CDCC1C">Finish a basic implementation of filtering ultrasonic sensor's ADC data
* <font color="33BAFF">Geological node is able to compute the destination heading (0-360 degrees) and send to driver node
+
* <font color="CDCC1C">Design a block diagram for optimal ultrasonic sensor placement
* <font color="4CA821">Add PWM functionality to motor board code and test on DC and servo motors
 
* <font color="4CA821">Complete a basic implementation of encoder code on motor board
 
 
* <font color="CDCC1C">Bluetooth Module driver is finished, can connect to Android phone, and can receive "Hello World" data from phone
 
* <font color="CDCC1C">Bluetooth Module driver is finished, can connect to Android phone, and can receive "Hello World" data from phone
* <font color="orange">Learn how to integrate Google maps API into Android app
 
 
* <font color="33BAFF">Geological node is able to parse the GPS NMEA string to extract latitude and longitude coordinates
 
* <font color="33BAFF">Geological node is able to parse the GPS NMEA string to extract latitude and longitude coordinates
 
* <font color="33BAFF">Geological node is able to receive a current heading (0-360 degrees) from the compass module
 
* <font color="33BAFF">Geological node is able to receive a current heading (0-360 degrees) from the compass module
 
* <font color="33BAFF">Geological node is able to receive an NMEA string from the GPS
 
* <font color="33BAFF">Geological node is able to receive an NMEA string from the GPS
* <font color="CDCC1C">Design a block diagram for optimal ultrasonic sensor placement
+
* <font color="33BAFF">Geological node is able to compute the destination heading (0-360 degrees) and send to driver node
 
+
* <font color="4CA821">Add PWM functionality to motor board code and test on DC and servo motors
 +
* <font color="4CA821">Complete a basic implementation of encoder code on motor board
  
 
|
 
|
Line 262: Line 260:
 
| 04/11/2020
 
| 04/11/2020
 
|
 
|
 +
* <font color="orange">Google maps API is fully integrated into Android App
 
* <font color="CDCC1C">Finish ultrasonic filtering algorithm for ultrasonic sensor's ADC data
 
* <font color="CDCC1C">Finish ultrasonic filtering algorithm for ultrasonic sensor's ADC data
* <font color="orange">Google maps API is fully integrated into Android App
+
* <font color="CDCC1C">Design ultrasonic sensor shields to minimize sensor interference with each other
 
* <font color="CDCC1C">Bluetooth Module is able to receive data from Android app
 
* <font color="CDCC1C">Bluetooth Module is able to receive data from Android app
 
* <font color="fuchsia">Test obstacle avoidance algorithm (indoor)
 
* <font color="fuchsia">Test obstacle avoidance algorithm (indoor)
* <font color="CDCC1C">Design ultrasonic sensor shields to minimize sensor interference with each other
 
 
* <font color="4CA821">Complete motor board code controlling RC car's DC motor and servo motor
 
* <font color="4CA821">Complete motor board code controlling RC car's DC motor and servo motor
 +
* <font color="4CA821">Complete "push button" motor test (servo turns wheels left and right, and DC motor spins wheel forwards and backwards)
 
* <font color="red">Begin car chassis wiring on a breadboard
 
* <font color="red">Begin car chassis wiring on a breadboard
 
* <font color="red">Finalize and review PCB schematic
 
* <font color="red">Finalize and review PCB schematic
 
* <font color="red">Complete a rough draft car chassis block diagram for the placement of all boards and modules
 
* <font color="red">Complete a rough draft car chassis block diagram for the placement of all boards and modules
* <font color="4CA821">Complete "push button" motor test (servo turns wheels left and right, and DC motor spins wheel forwards and backwards)
 
  
 
|
 
|
Line 291: Line 289:
 
|
 
|
 
* <font color="black">Discuss checkpoint algorithm
 
* <font color="black">Discuss checkpoint algorithm
 +
* <font color="orange">Display sensor and motor data on Android app
 +
* <font color="CDCC1C">Bluetooth module is able to receive "dummy" destination latitude and longitude coordinates from Android app
 +
* <font color="33BAFF">Finish GPS module integration with geographical controller
 
* <font color="fuchsia">Test obstacle avoidance algorithm (outdoor)
 
* <font color="fuchsia">Test obstacle avoidance algorithm (outdoor)
 +
* <font color="4CA821">Test existing motor board code on RC car's motors
 +
* <font color="4CA821">Begin wheel encoder implementation and unit testing
 
* <font color="red">Complete car chassis wiring on a breadboard
 
* <font color="red">Complete car chassis wiring on a breadboard
 
* <font color="red">Establish and test CAN communication between all boards
 
* <font color="red">Establish and test CAN communication between all boards
* <font color="orange">Display sensor and motor data on Android app
 
* <font color="33BAFF">Finish GPS module integration with geographical controller
 
 
* <font color="red">Design and solder a prototype PCB board in case PCB isn't delivered in time
 
* <font color="red">Design and solder a prototype PCB board in case PCB isn't delivered in time
* <font color="4CA821">Test existing motor board code on RC car's motors
 
 
* <font color="red">Mount sensors, motors, LCD, and all four sjtwo boards onto car chassis
 
* <font color="red">Mount sensors, motors, LCD, and all four sjtwo boards onto car chassis
* <font color="CDCC1C">Bluetooth module is able to receive "dummy" destination latitude and longitude coordinates from Android app
 
* <font color="4CA821">Begin wheel encoder implementation and unit testing
 
 
* <font color="red">Finish routing PCB and review to verify the circuitry
 
* <font color="red">Finish routing PCB and review to verify the circuitry
  
Line 322: Line 320:
 
| 04/25/2020
 
| 04/25/2020
 
|
 
|
 +
* <font color="orange">Android app is able to send start and stop commands to the car
 +
* <font color="orange">Android app is able to display car data (speed, sensor values, destination coordinates, source coordinates)
 +
* <font color="CDCC1C">Bluetooth module is able to receive actual destination latitude and longitude coordinates from Android app
 +
* <font color="fuchsia">Test drive outdoors to check obstacle avoidance algorithm
 
* <font color="4CA821">Complete motor control code with optimal speed and PWM values without PID control
 
* <font color="4CA821">Complete motor control code with optimal speed and PWM values without PID control
* <font color="fuchsia">Test drive outdoors to check obstacle avoidance algorithm
 
 
* <font color="4CA821">Begin unit testing the PID control algorithm
 
* <font color="4CA821">Begin unit testing the PID control algorithm
 
* <font color="4CA821">Finish wheel encoder implementation and unit testing
 
* <font color="4CA821">Finish wheel encoder implementation and unit testing
 
* <font color="red">Make final changes to PCB and place order
 
* <font color="red">Make final changes to PCB and place order
* <font color="orange">Android app is able to send start and stop commands to the car
 
* <font color="CDCC1C">Bluetooth module is able to receive actual destination latitude and longitude coordinates from Android app
 
* <font color="orange">Android app is able to display car data (speed, sensor values, destination coordinates, source coordinates)
 
 
* <font color="red">Test drive the soldered PCB board to ensure everything is working properly
 
* <font color="red">Test drive the soldered PCB board to ensure everything is working properly
  
Line 349: Line 347:
 
|
 
|
 
* <font color="black">Test drive from start to destination (outdoor)
 
* <font color="black">Test drive from start to destination (outdoor)
* <font color="red">Mount GPS and compass modules onto car chassis
+
* <font color="33BAFF">GEO controller can compute the heading from Android app's actual destination coordinates, and send to driver board
 
* <font color="fuchsia">Finalize obstacle avoidance algorithm
 
* <font color="fuchsia">Finalize obstacle avoidance algorithm
 +
* <font color="fuchsia">LCD display is able to display car's speed, PWM values, destination coordinates, and sensor values
 
* <font color="4CA821">Complete a basic PID algorithm and begin uphill and downhill testing
 
* <font color="4CA821">Complete a basic PID algorithm and begin uphill and downhill testing
* <font color="fuchsia">LCD display is able to display car's speed, PWM values, destination coordinates, and sensor values
 
 
* <font color="4CA821">Fully integrate wheel encoder onto car chassis
 
* <font color="4CA821">Fully integrate wheel encoder onto car chassis
 
* <font color="4CA821">Finish basic implementation of PID control and test on car
 
* <font color="4CA821">Finish basic implementation of PID control and test on car
* <font color="33BAFF">GEO controller can compute the heading from Android app's actual destination coordinates, and send to driver board
 
 
* <font color="red">Solder and integrate PCB onto car and test drive to make sure everything is working properly
 
* <font color="red">Solder and integrate PCB onto car and test drive to make sure everything is working properly
 +
* <font color="red">Mount GPS and compass modules onto car chassis
  
 
|
 
|
Line 376: Line 374:
 
* <font color="black">Test drive from start to destination with obstacles and making U-turns (outdoor)
 
* <font color="black">Test drive from start to destination with obstacles and making U-turns (outdoor)
 
* <font color="black">Finalize DBC file
 
* <font color="black">Finalize DBC file
 +
* <font color="orange">Complete Android app's basic features (start, stop, connect, google maps, displaying car data)
 +
* <font color="orange">Begin implementing additional Android app features (extra screen to display car data, checkpoint selection capability) and improving the look of the UI
 +
* <font color="CDCC1C">Finalize sensor shields and mounting heights/positions
 +
* <font color="CDCC1C">Design and 3D print front sensor stand
 
* <font color="33BAFF">Complete basic implementation and unit testing of checkpoint algorithm
 
* <font color="33BAFF">Complete basic implementation and unit testing of checkpoint algorithm
 
* <font color="33BAFF">Test checkpoint algorithm on car (outdoor)
 
* <font color="33BAFF">Test checkpoint algorithm on car (outdoor)
 
* <font color="4CA821">Finalize PID control implementation and test on car (outdoor)
 
* <font color="4CA821">Finalize PID control implementation and test on car (outdoor)
* <font color="orange">Complete Android app's basic features (start, stop, connect, google maps, displaying car data)
 
* <font color="orange">Begin implementing additional Android app features (extra screen to display car data, checkpoint selection capability) and improving the look of the UI
 
 
* <font color="red">Integrate GPS antenna onto car chassis
 
* <font color="red">Integrate GPS antenna onto car chassis
 
* <font color="red">Drill acrylic sheet and mount circuity with screws instead of glue
 
* <font color="red">Drill acrylic sheet and mount circuity with screws instead of glue
* <font color="CDCC1C">Design and 3D print front sensor stand
 
* <font color="CDCC1C">Finalize sensor shields and mounting heights/positions
 
  
 
|
 
|
 +
* Completed
 
* Completed
 
* Completed
 
* Completed
 
* Completed
Line 392: Line 391:
 
*  
 
*  
 
*  
 
*  
* Completed
 
 
*  
 
*  
 
*  
 
*  
Line 406: Line 404:
 
* <font color="black">Upload rough draft of report to Wiki page
 
* <font color="black">Upload rough draft of report to Wiki page
 
* <font color="black">Test drive from start to destination on 10th Street garage and determine checkpoints
 
* <font color="black">Test drive from start to destination on 10th Street garage and determine checkpoints
 +
* <font color="orange">Finalize Android app's checkpoint selection capability, display car data screen, and UI improvements
 +
* <font color="33BAFF">Finalize checkpoint algorithm based on feedback from test drives
 +
* <font color="fuchsia">Tweak obstacle avoidance algorithm based on feedback from test drives
 
* <font color="4CA821">Tweak PID control implementation based on feedback from test drives
 
* <font color="4CA821">Tweak PID control implementation based on feedback from test drives
* <font color="fuchsia">Tweak obstacle avoidance algorithm based on feedback from test drives
 
* <font color="33BAFF">Finalize checkpoint algorithm based on feedback from test drives
 
* <font color="orange">Finalize Android app's checkpoint selection capability, display car data screen, and UI improvements
 
  
 
|
 
|

Revision as of 23:15, 7 May 2020

Bucephalus Logo

ABSTRACT

Bucephalus is a Self Driving RC car using CAN communication based on FreeRTOS(Hard RTOS). The RC car takes real time inputs and covert it into the data that can be processed to monitor and control to meet the desired requirements. In this project, we aim to design and develop a self-driving car that autonomously navigates from the current location to the destination (using Waypoint Algorithm )which is selected through an Android application and at the same time avoiding all the obstacles in the path using Obstacle avoidance algorithm . It also Increases or Decreases speed on Uphill and downhill (using PID Algorithm)as well as applies breaks at required places. The car comprises of 4 control units communicating with each other over the CAN Bus using CAN communication protocol, each having a specific functionality that helps the car to navigate to its destination successfully.

INTRODUCTION

Objectives of the RC Car:-

1) Driver Controller:- Detection and avoidance of the obstacles coming in the path of the RC car by following Obstacle detection avoidance.
2) Geographical Controller:- Getting the GPS coordinates from the Android Application and traveling to that point using Waypoint Algorithm
3) System hardware communication using PCB Design.
4) Bridge and Sensor Controller:- Communication between the Driver Board and Android Mobile Application using wireless bluetooth commmunication.
5) Motor Controller:- Control the Servo Motor for Direction and DC motor for speed. Implementation of PID Algorithm on normal road uphill and down hill to maintain speed

The project is divided into six main modules:

CORE MODULES OF RC CAR

  • Android Mobile Application
  • Bridge and Sensor Controller
  • Geographic Controller
  • Driver and LCD Controller
  • Motor Controller
  • Hardware Integration and PCB Designing

Team Members & Responsibilities

<Team Picture>

Bucephalous GitLab - [1]

  • Mohit Ingale GitLab LinkedIn
    • Driver and LCD Controller
    • Hardware Integration (PCB Designing)
    • Testing Team / Code Reviewers
  • Shreya Patankar GitLab LinkedIn
    • Geographical Controller
    • Hardware Integration (PCB Designing)
    • Testing Team / Code Reviewers
    • Wiki Page
  • Nicholas Kaiser GitLab LinkedIn
    • Bridge and Sensor Controller
    • Wiki Page
    • Hardware Integration (PCB Designing)
  • Hari Haran Kura GitLab LinkedIn
    • Motor Controller
    • Testing Team / Code Reviewers
    • Hardware Integration (PCB Designing)
  • Basangouda Patil GitLab LinkedIn
    • Android Mobile Application
    • Testing Team / Code Reviewers
  • Abhinandan Burli GitLab LinkedIn
    • Driver and LCD Controller
    • Testing Team / Code Reviewers
    • Hardware Integration (PCB Designing)


Schedule

Week# Start Date End Date Task Status
1 02/16/2020 02/22/2020
  • Setup a team Google Docs folder
  • Brainstorm RC car design options
  • Research past semester RC car projects for ideas and parts needed
  • Put together a rough draft parts list
  • Setup a team GitLab repository
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
2 02/23/2020 02/29/2020
  • Decide on and order chassis
  • Discuss possible GPS modules
  • Discuss schedule for meeting dates and work days (Tuesdays are for code review and syncing, Saturdays are work days)
  • Discuss bluetooth communication approach (1 phone on car, 1 phone in controller's hands)
  • Discuss vehicle's driving checkpoints (checkpoints calculated after point B is specified)
  • Discuss wiring on RC car (1 battery to power motors and 1 power bank for everything else)
  • Discuss GitLab workflow (mirror our repo with Preet's, 3 approvals to merge to "working master" branch, resolve conflicts on "working master" branch, then can merge to master branch)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
3 03/01/2020 03/07/2020
  • Decide on sensors (4 ultrasonic sensors: 3 in front, 1 in back)
  • Decide on a GPS module (Adafruit ADA746)
  • Research GPS antennas
  • Decide on CAN transceivers (SN65HVD230 IC's)
  • Request 15 CAN transceiver samples from ti.com
  • Discuss tasks of all 4 board nodes (geographical, driver, motors, bridge controller/sensors)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
4 03/08/2020 03/14/2020
  • Assemble car chassis and plan general layout
  • Delegate tasks for each 2 person teams
  • Create branches for all nodes and add motor and sensor messages to DBC file
  • Discuss and research possible GPS antennas
  • Design block diagrams for motor node, bridge controller/sensor node, and full car
  • Solve GitLab branches vs folders issue (1 branch per node, or 1 folder per node)
  • Order 4 + 1 extra ultrasonic sensors (MaxBotix MB1003-000 HRLV-MaxSonar-EZ0)
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
5 03/15/2020 03/21/2020
  • Decide what to include on PCB board
  • Read previous student's reports to decide on a compass module (CMPS14)
  • Order GPS antenna
  • Add GPS node messages (longitude, latitude, heading) and bridge sensor node messages (destination latitude and longitude) to DBC file
  • Start learning Android app development
  • Begin researching filtering algorithms for ultrasonic sensors
  • Ultrasonic sensor values are converted to centimeters and transmit to driver node
  • Research ultrasonic sensor mounts
  • Transmit CAN messages from sensor to driver node, and from driver to motor node
  • Driver node is able to respond correctly based on sensor obstacle detection scenarios (correct LED's light up)
  • Decide movement and steering directions based on all possible sensor obstacle detection scenarios
  • Begin research on PID implementation to control speed of RC car
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
6 03/22/2020 03/28/2020
  • Draw block diagrams with pin information for each board and begin PCB design based on these diagrams
  • Order a new compass module (CMPS14)
  • Finish designing team logo and upload to Wiki page
  • Finalize parts list and place orders for remaining unordered items
  • Decide on tap plastic acrylic sheet dimensions and PCB dimensions
  • Start implementing a basic Android app without Google maps API and create a separate GitLab repo for app
  • Bridge sensor node is able to transmit a destination latitude and longitude coordinates message to geological node
  • Decide on ultrasonic sensor mounts and order extra if needed
  • Geological node is able to transmit a heading message to the driver node
  • Integrate driver board diagnostic testing with LEDs and ultrasonic sensors (car goes left, left LEDs light up, etc.)
  • Continue research on PID controller design and begin basic implementation
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
7 03/29/2020 04/04/2020
  • Complete rough draft of schedule and upload to Wiki page
  • Complete rough draft of DBC file messages and signals
  • Purchase tap plastic acrylic sheet
  • Learn how to integrate Google maps API into Android app
  • Finish a basic implementation of filtering ultrasonic sensor's ADC data
  • Design a block diagram for optimal ultrasonic sensor placement
  • Bluetooth Module driver is finished, can connect to Android phone, and can receive "Hello World" data from phone
  • Geological node is able to parse the GPS NMEA string to extract latitude and longitude coordinates
  • Geological node is able to receive a current heading (0-360 degrees) from the compass module
  • Geological node is able to receive an NMEA string from the GPS
  • Geological node is able to compute the destination heading (0-360 degrees) and send to driver node
  • Add PWM functionality to motor board code and test on DC and servo motors
  • Complete a basic implementation of encoder code on motor board
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
8 04/05/2020 04/11/2020
  • Google maps API is fully integrated into Android App
  • Finish ultrasonic filtering algorithm for ultrasonic sensor's ADC data
  • Design ultrasonic sensor shields to minimize sensor interference with each other
  • Bluetooth Module is able to receive data from Android app
  • Test obstacle avoidance algorithm (indoor)
  • Complete motor board code controlling RC car's DC motor and servo motor
  • Complete "push button" motor test (servo turns wheels left and right, and DC motor spins wheel forwards and backwards)
  • Begin car chassis wiring on a breadboard
  • Finalize and review PCB schematic
  • Complete a rough draft car chassis block diagram for the placement of all boards and modules
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
9 04/12/2020 04/18/2020
  • Discuss checkpoint algorithm
  • Display sensor and motor data on Android app
  • Bluetooth module is able to receive "dummy" destination latitude and longitude coordinates from Android app
  • Finish GPS module integration with geographical controller
  • Test obstacle avoidance algorithm (outdoor)
  • Test existing motor board code on RC car's motors
  • Begin wheel encoder implementation and unit testing
  • Complete car chassis wiring on a breadboard
  • Establish and test CAN communication between all boards
  • Design and solder a prototype PCB board in case PCB isn't delivered in time
  • Mount sensors, motors, LCD, and all four sjtwo boards onto car chassis
  • Finish routing PCB and review to verify the circuitry
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
10 04/19/2020 04/25/2020
  • Android app is able to send start and stop commands to the car
  • Android app is able to display car data (speed, sensor values, destination coordinates, source coordinates)
  • Bluetooth module is able to receive actual destination latitude and longitude coordinates from Android app
  • Test drive outdoors to check obstacle avoidance algorithm
  • Complete motor control code with optimal speed and PWM values without PID control
  • Begin unit testing the PID control algorithm
  • Finish wheel encoder implementation and unit testing
  • Make final changes to PCB and place order
  • Test drive the soldered PCB board to ensure everything is working properly
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
11 04/26/2020 05/02/2020
  • Test drive from start to destination (outdoor)
  • GEO controller can compute the heading from Android app's actual destination coordinates, and send to driver board
  • Finalize obstacle avoidance algorithm
  • LCD display is able to display car's speed, PWM values, destination coordinates, and sensor values
  • Complete a basic PID algorithm and begin uphill and downhill testing
  • Fully integrate wheel encoder onto car chassis
  • Finish basic implementation of PID control and test on car
  • Solder and integrate PCB onto car and test drive to make sure everything is working properly
  • Mount GPS and compass modules onto car chassis
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
  • Completed
12 05/03/2020 05/09/2020
  • Test drive from start to destination with obstacles and making U-turns (outdoor)
  • Finalize DBC file
  • Complete Android app's basic features (start, stop, connect, google maps, displaying car data)
  • Begin implementing additional Android app features (extra screen to display car data, checkpoint selection capability) and improving the look of the UI
  • Finalize sensor shields and mounting heights/positions
  • Design and 3D print front sensor stand
  • Complete basic implementation and unit testing of checkpoint algorithm
  • Test checkpoint algorithm on car (outdoor)
  • Finalize PID control implementation and test on car (outdoor)
  • Integrate GPS antenna onto car chassis
  • Drill acrylic sheet and mount circuity with screws instead of glue
  • Completed
  • Completed
  • Completed
13 05/10/2020 05/16/2020
  • Upload rough draft of report to Wiki page
  • Test drive from start to destination on 10th Street garage and determine checkpoints
  • Finalize Android app's checkpoint selection capability, display car data screen, and UI improvements
  • Finalize checkpoint algorithm based on feedback from test drives
  • Tweak obstacle avoidance algorithm based on feedback from test drives
  • Tweak PID control implementation based on feedback from test drives
14 05/17/2020 05/23/2020
  • Test drive from start to destination on 10th Street garage
  • Demo
  • Push final code to GitLab
  • Submit individual contributions feedback for all team members
  • Make final updates to Wiki report


Parts List & Cost

Item# Part Desciption Vendor Qty Cost
1 RC Car Chassis Traxxas 1 $250.00
2 Lithium-Ion Battery 1
3 Battery Charger 1
4 Tap Plastics Acrylic Sheet 1
5 Ultrasonic Sensors Amazon [2] 4
6 GPS Module 1
7 GPS Antenna 1
8 Compass Module 1
9 UART LCD Display 1
10 Bluetooth Module 1
11 CAN Transceivers SN65HVD230DR 15 Free Samples
12 Sjtwo Board Preet 4 $50.00
13 12" Pipe 1
14 Android Mobile Phone 1
15 Sensor Mounts 4


Hardware Integration:- Printed Circuit Board


We Initially started with a very basic design of mounting all the hardware on a cardboard sheet for our first round of Integrated hardware testing.
Challenges:- The wires were an entire mess and the car could not navigate properly due to the wiring issues as all the wires were entangling and few had connectivity issues. Hence we decided to go for a basic dot matrix Design before finalizing our final PCB Design as a Prototype board for testing if anything goes haywire.

Initial Mounting on Cardboard Sheet


The Prototype Board just before the actual PCB board was created on a dot matrix PCB along with all the hardware components for the Intermediate Integrated testing phase is as follows:

Prototype board 1
Prototype board 2
Prototype board 3


1) To avoid all the above challenges We designed the custom PCB using EasyEDA in which we implemented connections for all the controller modules(SJTwo Board LPC4078) all communicating/sending data via CAN bus. The data is sent by individual sensors to the respective controllers. GPS and Compass are connected to Geographical Controller. RPM sensor, DC and Servo Motors are connected to Motor Controller.
2) Ultrasonic are connected to Bridge and Sensor Controller. LCD is connected to Driver Controller. Bluetooth is connected to Bridge and Sensor Controller. CAN Bus is implemented using CAN Transceivers SN65HVD230 terminated by 120 Ohms; with PCAN for monitoring CAN Debug Messages and Data. Some Components need 5V while some sensors worked on 3.3V power supply. Also it was difficult to use separate USB's to power up all boards.Hence we used CorpCo breadboard power supply 3.3V/5V.
3) PCB was sent to fabrication to JLCPCB China which provided PCB with MOQ of 5 with the lead time of 1 week. We implemented 2 layers of PCB with most of the parts in top layer GPS sensor and Compass sensor. We implemented rectangular header connector for SJTwo boards, RPM sensor, DC & Servo Motor on the bottom layer. There were 2 iterations of this board.
4) Challenges :-We also need to change the header for LCD since it was having different pitch.


DESIGNING:-

Top Layer development
Bottom Layer development

AFTER DELIVERY:-

Top Layer development
Bottom Layer development






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

DBC File




Bridge and Sensor 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>



Motor 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>



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>



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 ===