Difference between revisions of "F14: Team3-Self Driving Car"

From Embedded Systems Learning Academy
Jump to: navigation, search
(Schedule)
(Controller Communication Table)
 
(64 intermediate revisions by 2 users not shown)
Line 58: Line 58:
 
|-
 
|-
 
! scope="row"| 3
 
! scope="row"| 3
| 10/06/2014
+
| 9/30/2014
| 11/15/2014
+
| 11/25/2014
| Sensor Team task  
+
| Master Controller Team task  
 
| Ongoing
 
| Ongoing
 
|
 
|
 
|-
 
|-
 
! scope="row"| 4
 
! scope="row"| 4
|  
+
| 10/06/2014
|  
+
| 11/15/2014
| Motor Controller Team task  
+
| Sensor Team task  
| Ongoing
+
|Completed
 
|
 
|
 
|-
 
|-
Line 74: Line 74:
 
|  
 
|  
 
|  
 
|  
| I/O Team task  
+
| Motor Controller Team task  
 
| Ongoing
 
| Ongoing
 
|
 
|
Line 81: Line 81:
 
|  
 
|  
 
|  
 
|  
| Communication Bridge + Android Team task  
+
| Geographical Controller Team task  
 
| Ongoing
 
| Ongoing
 
|
 
|
Line 88: Line 88:
 
|  
 
|  
 
|  
 
|  
| Geographical Controller Team task  
+
| I/O Team task  
 
| Ongoing
 
| Ongoing
 
|
 
|
Line 95: Line 95:
 
|  
 
|  
 
|  
 
|  
| Master Controller Team task  
+
| Communication Bridge + Android Team task  
 
| Ongoing
 
| Ongoing
 
|
 
|
Line 120: Line 120:
 
|
 
|
 
|}
 
|}
 +
 +
 +
 +
'''Master Controller Team Schedule'''
 +
 +
{| class="wikitable"
 +
|-
 +
! scope="col"| Week No.
 +
! scope="col"| Start Date
 +
! scope="col"| Planned End Date
 +
! scope="col"| Task
 +
! scope="col"| Status
 +
! scope="col"| Actual End Date
 +
|-
 +
! scope="row"| 1
 +
| 9/30/2014
 +
| 10/7/2014
 +
|
 +
* Implement Basic CAN Hardware to communicate between 2 Controllers
 +
|
 +
* Completed
 +
: We are able to send a message from Tx over CAN and perform a specific operation at the Rx.
 +
| 10/7/2014
 +
|-
 +
! scope="row"| 2
 +
| 10/7/2014
 +
| 10/14/2014
 +
|
 +
* Design CAN Acceptance Filter among different Controllers
 +
* Define and Implement CAN Frame structure for proper communication
 +
  establishment
 +
|
 +
* Completed
 +
: Only messages with in range of acceptance filter are received, Decided on CAN frame structure using 11-bit frame.
 +
| 10/11/2014
 +
|-
 +
! scope="row"| 3
 +
| 10/14/2014
 +
| 10/21/2014
 +
|
 +
* Develop Inter-Controller Communication over CAN
 +
* Test point-to-point and Broadcast message transmission
 +
* Implement a Counter to count and display number of messages
 +
|
 +
* Completed
 +
: CAN Communication among multiple boards achieved, Point-to-Point & Broadcast modes are working, Able to display the count on 7-Seg Display on SJOne board.
 +
| 10/19/2014
 +
|-
 +
! scope="row"| 4
 +
| 10/21/2014
 +
| 10/28/2014
 +
|
 +
* Layout blueprint for Controller and Module positioning
 +
* Assemble the RC Car with all the controllers and Modules
 +
* Define the Message List by working with other teams
 +
* Start working on CAN Periodic message structure
 +
|
 +
* Completed
 +
: RC car design and module assembly is completed. Need some fine tuning for connections. Message list is generated and periodic message implementation started.
 +
| 10/28/2014
 +
|-
 +
! scope="row"| 5
 +
| 10/28/2014
 +
| 11/04/2014
 +
|
 +
* Complete CAN Periodic message structure to transmit Broadcast
 +
  messages over CAN and establish controlled communication among
 +
  different controllers
 +
* Implement Start condition detection and Fetch boot status from
 +
  all controllers and display the status of each controller
 +
|
 +
* Completed
 +
: Periodic Message Setup done. Able to receive boot status. Need to work on display of status.
 +
| 11/03/2014
 +
|-
 +
! scope="row"| 6
 +
| 11/04/2014
 +
| 11/11/2014
 +
|
 +
* Design 'Kill Switch' in co-ordination with Motor Controller team
 +
  and Bridge Controller team
 +
* Develop a 'CAN Bus Crash' detection and reset CAN Bus methodology
 +
* Design Automatic Head Light turn ON/OFF functionality by
 +
  working with Sensors Controller team
 +
|
 +
* Completed
 +
: Kill Switch implemented through Bridge controller. Head Lights implemented. LCD display of Status achieved.
 +
| 11/11/2014
 +
|-
 +
! scope="row"| 7
 +
| 11/11/2014
 +
| 11/18/2014
 +
|
 +
* Implement File Log saving to SD Card at periodic intervals
 +
* Work on Restoring to last known Status if the system crashes while running
 +
* Develop Detection technique if controllers are reaching 'Error State'
 +
|
 +
* Completed
 +
: File Log implemented. Error State is partially implemented. Obstacle detection achieved. Needed refinement in Direction control logic. Need to implement reverse logic.
 +
| 11/18/2014
 +
|-
 +
! scope="row"| 8
 +
| 11/18/2014
 +
| 11/25/2014
 +
|
 +
* Project Integration and testing Basic Self_Drive Capability of the Car
 +
* Check the Functionality and behavior of all controllers in all the known
 +
  contexts
 +
* Perform modifications (if any) to eliminate any bugs to make the car work
 +
  seamlessly
 +
* Final Integration of car and testing there after
 +
 
 +
|
 +
* Completed
 +
: Integration Started. Faced difficulty in synchronization.
 +
| 11/26/2014
 +
|-
 +
! scope="row"| 9
 +
| 11/25/2014
 +
| 12/02/2014
 +
|
 +
* Final Integration and testing Self_Drive Capability of the Car 
 +
|
 +
* Ongoing
 +
| --/--/----
 +
|}
 +
  
 
'''Sensor Team Schedule'''
 
'''Sensor Team Schedule'''
Line 223: Line 350:
 
|}
 
|}
  
'''Geographical Team Schedule'''
+
 
 +
'''Motor Controller Team Schedule'''
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! scope="col"| Sl.No
+
! scope="col"| Week No.
 
! scope="col"| Start Date
 
! scope="col"| Start Date
! scope="col"| End Date
+
! scope="col"| Planned End Date
 
! scope="col"| Task
 
! scope="col"| Task
 
! scope="col"| Status
 
! scope="col"| Status
! scope="col"| Actual Completion Date
+
! scope="col"| Actual End Date
 
|-
 
|-
 
! scope="row"| 1
 
! scope="row"| 1
| 10/4/2014
+
| 9/30/2014
| 10/13/2014
+
| 10/7/2014
| Research and Order GPS module
+
|  
| Received GPS module
+
* Study SJOne board's motor controller concepts and PWM
 +
|  
 +
* Completed
 +
: Very simple code. Just two lines. Set the frequency. Set the duty cycle.
 
| 10/7/2014
 
| 10/7/2014
 
|-
 
|-
 
! scope="row"| 2
 
! scope="row"| 2
 
| 10/7/2014
 
| 10/7/2014
| 10/18/2014
 
| Interface GPS module with LPC1758
 
| Finished 10/17/14
 
|
 
|-
 
! scope="row"| 3
 
| 10/18/2014
 
| 10/25/2014
 
| Parse GPS data and setup constructs to send appropriate data
 
| Ongoing
 
|
 
|-
 
! scope="row"| 4
 
 
| 10/14/2014
 
| 10/14/2014
| 10/18/2014
 
| Receive Compass module from Preet and interface
 
| Received Compass from Preet and tested code to get compass heading information
 
| 10/16/2014
 
|-
 
! scope="row"| 5
 
| 10/25/2014
 
| 11/9/2014
 
| Testing and Mapping of GPS coordinates
 
| Ongoing
 
|
 
|-
 
! scope="row"| 6
 
| 11/9/2014
 
| 11/18/2014
 
| Integrating and finish testing
 
 
|  
 
|  
|
+
* Open up RC Car's motor and servo connections
|-
+
* Study the Electronic Speed Control's functions
! scope="row"| 7
 
| 11/18/2014
 
| 11/25/2014
 
| Testing
 
 
|  
 
|  
|
+
* Completed
|}
+
: Motor and Servo operate on the same frequency
 
+
: ESC needs calibration each time it is switched on. Need to find a solution for this.
'''IO Team Schedule'''
+
| 10/11/2014
 
 
{| class="wikitable"
 
 
|-
 
|-
! scope="col"| Sl.No
+
! scope="row"| 3
! scope="col"| Start Date
 
! scope="col"| End Date
 
! scope="col"| Task
 
! scope="col"| Status
 
! scope="col"| Actual Completion Date
 
|-
 
! scope="row"| 1
 
| 10/7/2014
 
| 10/13/2014
 
| Research and Order LCD Display
 
| Ordered LCD Display
 
| 10/13/2014
 
|-
 
! scope="row"| 2
 
 
| 10/14/2014
 
| 10/14/2014
 
| 10/21/2014
 
| 10/21/2014
| Interfacing LCD Display with LPC1758
 
| Ongoing
 
 
|
 
|
 +
* Define the duty cycles for proper motor and servo signals
 +
|
 +
* Completed
 +
: Using trial and run, figured out the duty cycle for constant speed and turns
 +
| 10/19/2014
 
|-
 
|-
! scope="row"| 3
+
! scope="row"| 4
 
| 10/21/2014
 
| 10/21/2014
| 11/28/2014
+
| 10/28/2014
| Set-Up dedicated buttons for Start, Stop etc...
+
|
 +
* Add CAN frame structure to the motor functions
 +
* Test for communication between motors and sensors for prototype demo
 +
* Define the Message List by working with other teams
 
|  
 
|  
|
+
* Ongoing
 +
| --/--/----
 
|-
 
|-
! scope="row"| 4
+
! scope="row"| 5
 
| 10/28/2014
 
| 10/28/2014
 
| 11/04/2014
 
| 11/04/2014
| Communication with other controllers and displaying appropriate messages
+
|
 +
* Start working on CAN Periodic message structure
 +
* Start looking for speed sensors
 
|  
 
|  
|
+
* Scheduled
 +
| --/--/----
 
|-
 
|-
! scope="row"| 5
+
! scope="row"| 6
 
| 11/04/2014
 
| 11/04/2014
 
| 11/11/2014
 
| 11/11/2014
| Testing
 
 
|  
 
|  
|
+
* Attach speed sensors to the motor
 +
* Test CAN communication between motor controller and other controllers
 +
|  
 +
* Scheduled
 +
| --/--/----
 
|-
 
|-
! scope="row"| 6
+
! scope="row"| 7
 
| 11/11/2014
 
| 11/11/2014
 
| 11/18/2014
 
| 11/18/2014
| Testing
 
 
|  
 
|  
|
+
* Work on speed sensors. Figure out the way to send sensor data to master controller.
 +
* Test for proper and accurate CAN communication
 +
|  
 +
* Scheduled
 +
| --/--/----
 
|-
 
|-
! scope="row"| 7
+
! scope="row"| 8
 
| 11/18/2014
 
| 11/18/2014
 
| 11/25/2014
 
| 11/25/2014
| Testing
 
 
|  
 
|  
|
+
* Project Integration and testing basic self drive capability of the car
 +
* Check the functionality and behavior of the motor controller in all the known
 +
  contexts
 +
* Perform modifications (if any) to eliminate any bugs to make the motor work
 +
  seamlessly
 +
* Final Integration of car and testing there after
 +
 
 +
|  
 +
* Scheduled
 +
| --/--/----
 +
 
 
|}
 
|}
  
'''Motor Team Schedule'''
+
 
 +
'''Geographical Team Schedule'''
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! scope="col"| Week No.
+
! scope="col"| Sl.No
 
! scope="col"| Start Date
 
! scope="col"| Start Date
! scope="col"| Planned End Date
+
! scope="col"| End Date
 
! scope="col"| Task
 
! scope="col"| Task
 
! scope="col"| Status
 
! scope="col"| Status
! scope="col"| Actual End Date
+
! scope="col"| Actual Completion Date
 
|-
 
|-
 
! scope="row"| 1
 
! scope="row"| 1
| 9/30/2014
+
| 10/4/2014
| 10/7/2014
+
| 10/13/2014
| Study the motor controller concepts
+
| Research and Order GPS module
| Done
+
| Received GPS module
 
| 10/7/2014
 
| 10/7/2014
 
|-
 
|-
 
! scope="row"| 2
 
! scope="row"| 2
 
| 10/7/2014
 
| 10/7/2014
| 10/14/2014
+
| 10/18/2014
| Set up the CAN transceiver
+
| Interface GPS module with LPC1758
| Done
+
| Finished
| 10/14/2014
+
| 10/17/14
 
|-
 
|-
 
! scope="row"| 3
 
! scope="row"| 3
 
| 10/14/2014
 
| 10/14/2014
| 10/21/2014
+
| 10/18/2014
| Interface the SJOne-board PWM with SERVO motor
+
| Receive Compass module from Preet
| On going
+
| Received
| TBD
+
| 10/9/2014
 
|-
 
|-
 
! scope="row"| 4
 
! scope="row"| 4
| 10/21/2014
+
| 10/18/2014
| 10/28/2014
+
| 11/4/2014
| Set up communication with other controllers
+
| Parse GPS data and setup constructs to send appropriate data
| On going
+
| Ongoing
| TBD
+
| |
 
|-
 
|-
 
! scope="row"| 5
 
! scope="row"| 5
| 10/28/2014
+
| 10/14/2014
 +
| 10/18/2014
 +
| Interface the Compass Module
 +
| Finished
 +
| 10/16/2014
 +
|-
 +
! scope="row"| 6
 +
| 10/25/2014
 
| 11/4/2014
 
| 11/4/2014
| Testing
+
| Calibration of Compass
| Scheduled
+
| Code completed. Need to test using the car
| TBD
+
| --/--/----
 
|-
 
|-
! scope="row"| 6
+
! scope="row"| 7
 
| 11/4/2014
 
| 11/4/2014
 
| 11/11/2014
 
| 11/11/2014
| Testing
+
| Integrate GPS and Compass data
| Scheduled
+
| Ongoing
| TBD
+
|
 +
|-
 +
! scope="row"| 8
 +
| 10/25/2014
 +
| 11/09/2014
 +
| Testing and mapping of GPS co-ordinates
 +
| Ongoing
 +
|
 +
|-
 +
! scope="row"| 9
 +
| 11/18/2014
 +
| 11/25/2014
 +
| Final integration and testing
 +
|  
 +
|  
 
|}
 
|}
  
 
+
'''IO Team Schedule'''
'''Master Controller Team Schedule'''
 
  
 
{| class="wikitable"
 
{| class="wikitable"
 
|-
 
|-
! scope="col"| Week No.
+
! scope="col"| Sl.No
 
! scope="col"| Start Date
 
! scope="col"| Start Date
! scope="col"| Planned End Date
+
! scope="col"| End Date
 
! scope="col"| Task
 
! scope="col"| Task
 
! scope="col"| Status
 
! scope="col"| Status
! scope="col"| Actual End Date
+
! scope="col"| Actual Completion Date
 
|-
 
|-
 
! scope="row"| 1
 
! scope="row"| 1
| 9/30/2014
 
| 10/7/2014
 
|
 
* Implement Basic CAN Hardware to communicate between 2 controllers
 
|
 
* Done
 
: We are able to send a message from Tx over CAN and perform a specific operation at the Rx.
 
 
| 10/7/2014
 
| 10/7/2014
 +
| 10/13/2014
 +
| Research and Order LCD Display
 +
| Ordered LCD Display
 +
| 10/13/2014
 
|-
 
|-
 
! scope="row"| 2
 
! scope="row"| 2
| 10/7/2014
 
 
| 10/14/2014
 
| 10/14/2014
|  
+
| 10/21/2014
* Design Acceptance Filter among different controllers
+
| Interfacing LCD Display with LPC1758
* Define and Implement CAN Frame structure
+
| Completed
|  
+
| 10/21/2014
* Done
 
: Only messages with in range of acceptance filter are received, Decided on CAN frame structure using 11-bit frame.
 
| 10/11/2014
 
 
|-
 
|-
 
! scope="row"| 3
 
! scope="row"| 3
| 10/14/2014
 
 
| 10/21/2014
 
| 10/21/2014
|  
+
| 10/28/2014
* Develop Inter-Controller Communication over CAN
+
| Implementing CAN structure with LCD tasks.
* Test point-to-point and Broadcast message transmission
+
| Completed
* Implement counter to count number of messages
+
| 11/30/2014
|  
 
* Done
 
: CAN Communication among multiple boards achieved, Point-to-Point & Broadcast modes are working, Able to display the count on 7-Seg Display.
 
| 10/18/2014
 
 
|-
 
|-
 
! scope="row"| 4
 
! scope="row"| 4
| 10/21/2014
 
 
| 10/28/2014
 
| 10/28/2014
|  
+
| 11/04/2014
* Layout blueprint for Controller and Module positioning
+
| Subscribe data from motor, sensor and GPS controller,display it on LCD.
* Assemble the RC Car with all the controllers and Modules
+
| Ongoing
* Define the Message List by working with other teams
+
|
* Start working on CAN Periodic message Structure
 
|  
 
* Ongoing
 
| --/--/----
 
 
|-
 
|-
 
! scope="row"| 5
 
! scope="row"| 5
| 10/28/2014
 
 
| 11/04/2014
 
| 11/04/2014
 +
| 11/11/2014
 +
| Setup hardware and write code for START, STOP and Headlight buttons.
 +
| TBD
 
|
 
|
* Complete CAN Periodic message structure to transmit Broadcast
 
  messages over CAN and establish controlled communication among
 
  different controllers
 
* Implement Start condition Detection and Fetch boot status from
 
  all other controllers
 
|
 
* Scheduled
 
| --/--/----
 
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
| 11/04/2014
 
 
| 11/11/2014
 
| 11/11/2014
|  
+
| 11/18/2014
* Design 'Kill Switch' in co-ordination with Motor Controller team
+
| Testing and mounting hardware on car.
  and Bridge Controller team
+
| TBD
* Develop a 'CAN Bus Crash' detection and reset CAN Bus methology
+
|
* Design Automatic Head Light turn ON/OFF functionality by
 
  working with Sensors Controller team
 
|  
 
* Scheduled
 
| --/--/----
 
 
|-
 
|-
 
! scope="row"| 7
 
! scope="row"| 7
| 11/11/2014
 
| 11/18/2014
 
|
 
* Implement File Log saving to SD Card at periodic intervals
 
* Work on Restoring to last known Status if there system crashes
 
* Develop Detection technique if controllers are reaching Error State
 
|
 
* Scheduled
 
| --/--/----
 
|-
 
! scope="row"| 8
 
 
| 11/18/2014
 
| 11/18/2014
 
| 11/25/2014
 
| 11/25/2014
|  
+
| Final Testing
* Project Integration and testing Basic Self_Drive Capability of the Car
+
| TBD
* Check the Functionality and behavior of all controllers in all the known
+
|
  contexts
+
|}
* Perform modifications (if any) to eliminate any bugs the makes the car
 
  to malfunction.
 
* Final Integration of car and testing there after
 
 
 
|  
 
* Scheduled
 
| --/--/----
 
  
|}
 
  
 
'''Communication Bridge & Android Team Schedule'''
 
'''Communication Bridge & Android Team Schedule'''
Line 553: Line 633:
 
| 11/21/2014
 
| 11/21/2014
 
| Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface
 
| Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface
| On going
+
| Done
| TBD
+
| 11/24/2014
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
 +
| 10/14/2014
 +
| 11/21/2014
 +
| Ajax & Websocket server remote structure
 +
| Done
 +
| 11/01/2014
 +
|-
 +
! scope="row"| 7
 
| 10/14/2014
 
| 10/14/2014
 
| 11/21/2014
 
| 11/21/2014
 
| Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus
 
| Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus
| On going
+
| Done
| TBD
+
| 11/24/2014
 
|-
 
|-
! scope="row"| 7
+
! scope="row"| 8
 
| 10/21/2014
 
| 10/21/2014
 
| 11/24/2014
 
| 11/24/2014
| Android App and webpage GUI enhancements (Google Maps)
+
| Android App and webpage GUI enhancements (Google Maps, Google Drive)
| Scheduled
+
| Done
 +
| 11/24/2014
 +
|-
 +
! scope="row"| 9
 +
| 10/21/2014
 +
| 11/30/2014
 +
| Data visualization (status, compass, speed, location,....)
 +
| On going
 
| TBD
 
| TBD
 
|}
 
|}
Line 586: Line 680:
 
| Traxxas 37076 Rustler VXL
 
| Traxxas 37076 Rustler VXL
 
| 1
 
| 1
| $$$.$$
+
| $380.57
 
|-
 
|-
 
! scope="row"| 2
 
! scope="row"| 2
 
| CAN Transceiver
 
| CAN Transceiver
| MSC
+
| Anchor & HSC
| ----
+
|  
 
| 15
 
| 15
| $$.$$
+
| $75.00
 
|-
 
|-
 
! scope="row"| 3
 
! scope="row"| 3
| Sonar sensor
+
| Assembly Components
| Given by Preet
+
| Amazon & Anchor
| LV-MaxSonar-EZ1 MB1010
+
| PCBs, Mechnical & Electical Components
 +
| NA
 +
| $90.13
 +
|-
 +
! scope="row"| 4
 +
| Power Supply
 +
| Pololu
 +
| 6V Battery, 5V Regulator
 
| 1
 
| 1
| Free
+
| $34.85
 
|-
 
|-
! scope="row"| 4
+
! scope="row"| 5
 
| LCD Display
 
| LCD Display
 
| New Haven
 
| New Haven
Line 608: Line 709:
 
| 1
 
| 1
 
| $$$.$$
 
| $$$.$$
|-
 
! scope="row"| 5
 
| IR sensor
 
| Given by Preet
 
| Sharp-GP2Y0A21YK
 
| 1
 
| Free
 
 
|-
 
|-
 
! scope="row"| 6
 
! scope="row"| 6
Line 624: Line 718:
 
|-
 
|-
 
! scope="row"| 7
 
! scope="row"| 7
 +
| Sonar sensor
 +
| Given by Preet
 +
| LV-MaxSonar-EZ1 MB1010
 +
| 1
 +
| Free
 +
|-
 +
! scope="row"| 8
 +
| IR sensor
 +
| Given by Preet
 +
| Sharp-GP2Y0A21YK
 +
| 1
 +
| Free
 +
|-
 +
! scope="row"| 9
 
| Compass Module
 
| Compass Module
| HoneyWell
+
| Given by Preet
| HMC 6352
+
| HoneyWell: HMC 6352
 
| 1
 
| 1
| $00.00
+
| Free
 
|-
 
|-
 
! scope="row"|  
 
! scope="row"|  
Line 652: Line 760:
 
|-
 
|-
 
| 0x02
 
| 0x02
| Geographical Controller
+
| Motor Controller
 
|-
 
|-
 
| 0x03
 
| 0x03
| Motor Controller
+
| Sensor Controller
 
|-
 
|-
 
| 0x04
 
| 0x04
| Sensor Controller
+
| Geographical Controller
 
|-
 
|-
 
| 0x05
 
| 0x05
Line 673: Line 781:
 
| Purpose / Data layout
 
| Purpose / Data layout
 
|-
 
|-
| TBD
+
| 0x101
 
| Get version and boot info
 
| Get version and boot info
 
|-
 
|-
| TBD
+
| 0x102
 
| Get general info  
 
| Get general info  
 
|-
 
|-
| TBD
+
| 0x103
 
| Synchronize (set) time:
 
| Synchronize (set) time:
 
  byte [0-3] : System time
 
  byte [0-3] : System time
 
|-
 
|-
| TBD
+
| 0x201
 
|  
 
|  
 
  byte [0-3] : Version Info
 
  byte [0-3] : Version Info
 
  byte [4-7] : boot timestamp
 
  byte [4-7] : boot timestamp
 
|-
 
|-
| TBD
+
| 0x202
 
|  
 
|  
 
  byte [0-3] : Current time
 
  byte [0-3] : Current time
Line 720: Line 828:
 
| Any other value
 
| Any other value
 
| Invalid date rate
 
| Invalid date rate
 +
|}
 +
 +
 +
{| class="wikitable"
 +
|+ Master Controller Communication Table
 +
|-
 +
| Message Number
 +
| Purpose
 +
| Data Byte Pattern
 +
|-
 +
| 0x101
 +
| Request each Controller Boot Status
 +
|
 +
Byte[0]: Request command for Boot Info.
 +
|
 +
|-
 +
| 0x102
 +
| Request each Controller version info.
 +
|
 +
Byte[0]: Request command for Version Info.
 +
|
 +
|-
 +
| 0x103
 +
| Request GPS Controller for Satellite Time
 +
|
 +
Byte[0]: Request command for Time
 +
|
 +
|-
 +
| 0x104
 +
| Set Time on each Controller received from Satellite
 +
|
 +
Byte[0-3]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x201
 +
| Receives Boot status from each Controller
 +
|
 +
Byte[0]: Boot Status Info.
 +
|
 +
|-
 +
| 0x202
 +
| Receives Version info. from each Controller
 +
|
 +
Byte[0-3]: Controller Version Info.
 +
|
 +
|-
 +
| 0x203
 +
| Receives the Time from GPS Controller
 +
|
 +
Byte[0-3]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x301
 +
| Request destination co-ordinates from Communication_Bridge
 +
|
 +
Byte[0-7]: Displays "Waiting for Destination Location Input"
 +
|
 +
|-
 +
| 0x302
 +
| Set the destination GPS co-ordinates to GPS_Controller
 +
|
 +
Byte[0-3]: Latitude Co-ordinate
 +
Byte[4-7]: Longitude Co-ordinate
 +
|
 +
|-
 +
| 0x500
 +
| Display Boot Status on LCD
 +
|
 +
Byte[0]: Boot Status Response
 +
|
 +
|-
 +
| 0x501
 +
| Display Version Info. on LCD
 +
|
 +
Byte[0]: Version Info.
 +
|
 +
|-
 +
| 0x502
 +
| Display Controller Time on LCD
 +
|
 +
Byte[0-2]: Time in HH:MM:SS
 +
|
 +
|-
 +
| 0x503
 +
| Direction n Speed Control
 +
|
 +
Byte[0]: START/STOP/RIGHT/LEFT command
 +
|
 +
|-
 +
| 0x504
 +
| Display Motor speed on LCD
 +
|
 +
Byte[0]: Speed Value
 +
|
 +
|-
 +
| 0x505
 +
| Display Dist. to Destination and Heading Direction on LCD
 +
|
 +
Byte[0]: Distance to Destination
 +
Byte[1]: Heading Direction
 +
|
 +
|-
 +
|0x506
 +
|Display Sensor Values on LCD
 +
|
 +
Byte [0]: Front sensor value in inches
 +
Byte [1]: Front Left sensor value in inches
 +
Byte [2]: Front Right sensor value in inches
 +
Byte [3]: Back sensor value in inches
 +
|
 +
|-
 +
|0x507
 +
|Display Battery Status & Light Sensor Value on LCD
 +
|
 +
Byte[0]: Battery Status Value
 +
Byte[1]: Light Sensor Value
 +
|
 +
|-
 +
|}
 +
 +
{| class="wikitable"
 +
|+ Motor Controller Communication Table
 +
|-
 +
| Message Number
 +
| Purpose
 +
| Data layout
 +
|-
 +
| 0x508
 +
| Speed Sensor Data
 +
|
 +
byte [0] : Speed sensor value in rpm
 +
|-
 +
| 0x509
 +
| Vehicle Direction/Movement Data
 +
|
 +
byte [0] : Movement Control
 +
      0x1 : Forward
 +
      0x2 : Reverse
 +
      0x3 : Stop
 +
byte [1] : Steering Control
 +
      0x1 : Left
 +
      0x2 : Right
 +
      0x3 : Straight
 +
|-
 
|}
 
|}
  
Line 729: Line 981:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x510
 
| Front/Back Range Sensor Data
 
| Front/Back Range Sensor Data
 
|
 
|
Line 736: Line 988:
 
  byte [2] : Front Right sensor value in inches
 
  byte [2] : Front Right sensor value in inches
 
  byte [3] : Back sensor value in inches
 
  byte [3] : Back sensor value in inches
byte [4] : Back Left sensor value in inches
 
byte [5] : Back Right sensor value in inches
 
 
|-  
 
|-  
| 0x01
+
| 0x511
| Accelerometer Sensor Data
+
| Light, Accelerometer and Battery Sensor Data
|
 
byte [0] : X axis Value
 
byte [1] : Y axis Value
 
byte [2] : Z axis Value
 
|-
 
| 0x02
 
| Light Sensor Data
 
 
|
 
|
 
  byte [0] : Light sensor value
 
  byte [0] : Light sensor value
|-
+
byte [1] : X axis Value
| 0x03
+
byte [2] : Y axis Value
| Battery Status Data
+
byte [3] : Z axis Value
|
+
  byte [4] : Battery status value
  byte [0] : Battery status value
+
|-
 
|}
 
|}
  
Line 764: Line 1,007:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x518
| Subscribe to GPS data
+
| Set GPS Location
| byte [0] : Subscription rate in Hz (5, 10 acceptable)
+
 +
  byte [0 - 3] : Latitude - Float
 +
  byte [3 - 7] : Longitude - Float
 +
|-
 +
|}
 +
 
 +
{| class="wikitable"
 +
|+ IO Communication Table
 +
|-
 +
| Message Number
 +
| Purpose
 +
| Data layout
 +
|-
 +
| 0x520
 +
| Subscribe to Sensor data
 +
| bytes [0-5] : Sensor Value in Inches
 +
|-
 +
| 0x521
 +
| Subscribe to Motor data
 +
| bytes [0-2] : Vehicle Direction
 +
|-
 +
| 0x522
 +
| Subscribe to Compass Data
 +
| bytes [0] : Compass Data in degrees
 +
|-
 +
| 0x523
 +
| Subscribe to Battery Status
 +
| bytes [0] : Battery Status Value
 
|-
 
|-
| 0x01
 
| Subscribe to Compass data
 
| byte [0] : Subscription rate in Hz (5, 10, 20 acceptable)
 
 
|}
 
|}
  
Line 780: Line 1,047:
 
| Data layout
 
| Data layout
 
|-
 
|-
| 0x00
+
| 0x528
| Response Destination GPS location
+
| Set Car Speed (Kill Switch) - temporary allow for other non-zero value for demo
|bytes [0-3] : latitude (float)
+
| byte[0] - speed value
 +
|-
 +
| 0x529
 +
| Destination GPS location
 +
|
 +
bytes [0-3] : latitude (float)
 
bytes [4-7] : longitude (float)
 
bytes [4-7] : longitude (float)
 
|-
 
|-
| 0x01
+
| 0x52A
| Request Destination GPS location
+
| Turn to degree
| N/A
+
|
 +
bytes [0-3] : degree(float)
 +
|-
 +
| 0x52B
 +
| Way points longitude
 +
|
 +
bytes [0-1] :total waypoints count
 +
bytes [2-3] :waypoint index
 +
bytes [4-7] : longitude(float)
 +
|-
 +
| 0x52C
 +
| Way points latitude
 +
|
 +
bytes [0-1] :total waypoints count
 +
bytes [2-3] :waypoint index
 +
bytes [4-7] : latitude(float)
 +
|-
 +
| 0x52D
 +
| remote status (ie. Android connection status)
 +
|
 +
bytes [0]=>
 +
0:disconnected(passive send)
 +
1:on disconnect(active)
 +
2:connected(passive)
 +
3:on connect(active)
 +
0xFF:error(active/passive)
 
|-
 
|-
 
|}
 
|}

Latest revision as of 12:35, 2 December 2014

Grading Criteria

  • How well is Software & Hardware Design described?
  • How well can this report be used to reproduce this project?
  • Code Quality
  • Overall Report Quality:
    • Software Block Diagrams
    • Hardware Block Diagrams
      Schematic Quality
    • Quality of technical challenges and solutions adopted.

Self Driving Car

Abstract

Objectives & Introduction

Team Members & Responsibilities

  • Sensor Controller
    • Team 1: Deepak Yadav & Vinod Pangul
  • Motor Controller
    • Team 2: Naghma Anwar & Shiva Moballegh
  • I/O Unit
    • Team 3: Shreeram Gopalakrishnan & Sreeharsha Paturu Gangadhara
  • Communication Bridge & Android
    • Team 4: Johnny Yam, Kevin Beadle & Chia Pin Tseng
  • Geographical Controller
    • Team 5: Bhushan Gopala Reddy, Ryan Marlin & Rishikesh Nagare
  • Master Controller
    • Team 6: Shashank Tupkar, Bhargava Leepeng Chandra & Preeti Benake

Schedule

Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 Order RC Car Completed on time
2 Order Other parts(Sensor/LCD/Motor Controller...) Completed
3 9/30/2014 11/25/2014 Master Controller Team task Ongoing
4 10/06/2014 11/15/2014 Sensor Team task Completed
5 Motor Controller Team task Ongoing
6 Geographical Controller Team task Ongoing
7 I/O Team task Ongoing
8 Communication Bridge + Android Team task Ongoing
9 Complete project integration  ???
10 Testing-1  ???
11 Testing-2  ???


Master Controller Team Schedule

Week No. Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 10/7/2014
* Implement Basic CAN Hardware to communicate between 2 Controllers
  • Completed
We are able to send a message from Tx over CAN and perform a specific operation at the Rx.
10/7/2014
2 10/7/2014 10/14/2014
* Design CAN Acceptance Filter among different Controllers
* Define and Implement CAN Frame structure for proper communication
  establishment
  • Completed
Only messages with in range of acceptance filter are received, Decided on CAN frame structure using 11-bit frame.
10/11/2014
3 10/14/2014 10/21/2014
* Develop Inter-Controller Communication over CAN
* Test point-to-point and Broadcast message transmission
* Implement a Counter to count and display number of messages 
  • Completed
CAN Communication among multiple boards achieved, Point-to-Point & Broadcast modes are working, Able to display the count on 7-Seg Display on SJOne board.
10/19/2014
4 10/21/2014 10/28/2014
* Layout blueprint for Controller and Module positioning 
* Assemble the RC Car with all the controllers and Modules
* Define the Message List by working with other teams
* Start working on CAN Periodic message structure
  • Completed
RC car design and module assembly is completed. Need some fine tuning for connections. Message list is generated and periodic message implementation started.
10/28/2014
5 10/28/2014 11/04/2014
* Complete CAN Periodic message structure to transmit Broadcast
  messages over CAN and establish controlled communication among
  different controllers 
* Implement Start condition detection and Fetch boot status from
  all controllers and display the status of each controller
  • Completed
Periodic Message Setup done. Able to receive boot status. Need to work on display of status.
11/03/2014
6 11/04/2014 11/11/2014
* Design 'Kill Switch' in co-ordination with Motor Controller team
  and Bridge Controller team
* Develop a 'CAN Bus Crash' detection and reset CAN Bus methodology
* Design Automatic Head Light turn ON/OFF functionality by
  working with Sensors Controller team
  • Completed
Kill Switch implemented through Bridge controller. Head Lights implemented. LCD display of Status achieved.
11/11/2014
7 11/11/2014 11/18/2014
* Implement File Log saving to SD Card at periodic intervals
* Work on Restoring to last known Status if the system crashes while running
* Develop Detection technique if controllers are reaching 'Error State' 
  • Completed
File Log implemented. Error State is partially implemented. Obstacle detection achieved. Needed refinement in Direction control logic. Need to implement reverse logic.
11/18/2014
8 11/18/2014 11/25/2014
* Project Integration and testing Basic Self_Drive Capability of the Car
* Check the Functionality and behavior of all controllers in all the known 
  contexts
* Perform modifications (if any) to eliminate any bugs to make the car work
  seamlessly
* Final Integration of car and testing there after
  
  • Completed
Integration Started. Faced difficulty in synchronization.
11/26/2014
9 11/25/2014 12/02/2014
* Final Integration and testing Self_Drive Capability of the Car   
  • Ongoing
--/--/----


Sensor Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/6/2014 10/18/2014 Order Ultra Sonic Sensors Completed [Got two sensors (front and back), 2 more (front right & left) to order ->Completed.] 10/19/2014
2 10/9/2014 10/9/2014 Sensor Data Sheet review with the team Completed 10/9/2014
3 10/9/2014 10/16/2104 Sensor code development Completed (Implementing filter (HW/SW) to get more accurate data ->(Done). Add logic to get the rest of the three sensor(front right/left and back data)->(Done) (Note: Delayed due to the implementation of CAN structure and calibration of IR sensor) 10/21/2014
4 10/22/2014 10/25/2014 Sensor software testing Ongoing
5 10/25/2014 10/28/2014 Sensor real time testing Ongoing
6 10/13/2014 10/15/2014 Light sensor code Development Completed 10/14/2014
7 10/13/2014 10/15/2014 Accelerometer sensor code Development to detect tilt Completed 10/14/2014
8 10/15/2014 10/15/2014 Light Sensor and Accelerometer Testing Completed 10/15/2014
9 10/29/2014 10/31/2014 Battery status controller circuit Design Ongoing
10 11/01/2014 11/02/2014 Battery status-circuit Testing
11 11/03/2014 11/04/2014 Common Communication SW code implementation and testing
11 11/04/2014 11/09/2014 Complete Hardware testing-1
12 11/10/2014 11/15/2014 Complete Hardware testing-2


Motor Controller Team Schedule

Week No. Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 10/7/2014
* Study SJOne board's motor controller concepts and PWM
  • Completed
Very simple code. Just two lines. Set the frequency. Set the duty cycle.
10/7/2014
2 10/7/2014 10/14/2014
* Open up RC Car's motor and servo connections 
* Study the Electronic Speed Control's functions
  • Completed
Motor and Servo operate on the same frequency
ESC needs calibration each time it is switched on. Need to find a solution for this.
10/11/2014
3 10/14/2014 10/21/2014
* Define the duty cycles for proper motor and servo signals 
  • Completed
Using trial and run, figured out the duty cycle for constant speed and turns
10/19/2014
4 10/21/2014 10/28/2014
* Add CAN frame structure to the motor functions 
* Test for communication between motors and sensors for prototype demo 
* Define the Message List by working with other teams
  • Ongoing
--/--/----
5 10/28/2014 11/04/2014
* Start working on CAN Periodic message structure
* Start looking for speed sensors
  • Scheduled
--/--/----
6 11/04/2014 11/11/2014
* Attach speed sensors to the motor
* Test CAN communication between motor controller and other controllers
  • Scheduled
--/--/----
7 11/11/2014 11/18/2014
* Work on speed sensors. Figure out the way to send sensor data to master controller. 
* Test for proper and accurate CAN communication 
  • Scheduled
--/--/----
8 11/18/2014 11/25/2014
* Project Integration and testing basic self drive capability of the car
* Check the functionality and behavior of the motor controller in all the known 
  contexts
* Perform modifications (if any) to eliminate any bugs to make the motor work
  seamlessly
* Final Integration of car and testing there after
  
  • Scheduled
--/--/----


Geographical Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/4/2014 10/13/2014 Research and Order GPS module Received GPS module 10/7/2014
2 10/7/2014 10/18/2014 Interface GPS module with LPC1758 Finished 10/17/14
3 10/14/2014 10/18/2014 Receive Compass module from Preet Received 10/9/2014
4 10/18/2014 11/4/2014 Parse GPS data and setup constructs to send appropriate data Ongoing
5 10/14/2014 10/18/2014 Interface the Compass Module Finished 10/16/2014
6 10/25/2014 11/4/2014 Calibration of Compass Code completed. Need to test using the car --/--/----
7 11/4/2014 11/11/2014 Integrate GPS and Compass data Ongoing
8 10/25/2014 11/09/2014 Testing and mapping of GPS co-ordinates Ongoing
9 11/18/2014 11/25/2014 Final integration and testing

IO Team Schedule

Sl.No Start Date End Date Task Status Actual Completion Date
1 10/7/2014 10/13/2014 Research and Order LCD Display Ordered LCD Display 10/13/2014
2 10/14/2014 10/21/2014 Interfacing LCD Display with LPC1758 Completed 10/21/2014
3 10/21/2014 10/28/2014 Implementing CAN structure with LCD tasks. Completed 11/30/2014
4 10/28/2014 11/04/2014 Subscribe data from motor, sensor and GPS controller,display it on LCD. Ongoing
5 11/04/2014 11/11/2014 Setup hardware and write code for START, STOP and Headlight buttons. TBD
6 11/11/2014 11/18/2014 Testing and mounting hardware on car. TBD
7 11/18/2014 11/25/2014 Final Testing TBD


Communication Bridge & Android Team Schedule

Sl.No Start Date Planned End Date Task Status Actual End Date
1 9/30/2014 9/30/2014 Obtain Bluetooth Module (already had one) Done 9/30/2014
2 9/30/2014 10/14/2014 Develop Basic Android App with Bluetooth Sensor Communication Done 10/7/2014
3 10/11/2014 10/14/2014 Interface Bluetooth Module with SJSU Dev Board Done 10/11/2014
4 10/12/2014 10/19/2014 Be able to send bi-directional arbitrary messages between Android App and Dev Board via Bluetooth Done 10/14/2014
5 10/14/2014 11/21/2014 Subscribe to all CAN messages and dump all of them via Bluetooth to Android App or web interface Done 11/24/2014
6 10/14/2014 11/21/2014 Ajax & Websocket server remote structure Done 11/01/2014
7 10/14/2014 11/21/2014 Be able to input GPS coordinates through either (or both) Android App and web interface and send through Bluetooth then CAN bus Done 11/24/2014
8 10/21/2014 11/24/2014 Android App and webpage GUI enhancements (Google Maps, Google Drive) Done 11/24/2014
9 10/21/2014 11/30/2014 Data visualization (status, compass, speed, location,....) On going TBD

Parts List & Cost

Item# Part Desciption Vendor Part Number Qty Cost
1 RC Car Amazon.com Traxxas 37076 Rustler VXL 1 $380.57
2 CAN Transceiver Anchor & HSC 15 $75.00
3 Assembly Components Amazon & Anchor PCBs, Mechnical & Electical Components NA $90.13
4 Power Supply Pololu 6V Battery, 5V Regulator 1 $34.85
5 LCD Display New Haven NHD-0216B3Z-FL-GBW-V3-ND 1 $$$.$$
6 Sonar sensor Maxbotix LV-MaxSonar-EZ1 MB1010 2 $66.55
7 Sonar sensor Given by Preet LV-MaxSonar-EZ1 MB1010 1 Free
8 IR sensor Given by Preet Sharp-GP2Y0A21YK 1 Free
9 Compass Module Given by Preet HoneyWell: HMC 6352 1 Free
Total Cost $$$.$$

Design & Implementation

Controller Communication Table

Controllers
Controller ID Controller Type
0x01 Master Controller
0x02 Motor Controller
0x03 Sensor Controller
0x04 Geographical Controller
0x05 IO Controller
0x06 Bridge Controller
Common Communication Table
Message Number Purpose / Data layout
0x101 Get version and boot info
0x102 Get general info
0x103 Synchronize (set) time:
byte [0-3] : System time
0x201
byte [0-3] : Version Info
byte [4-7] : boot timestamp
0x202
byte [0-3] : Current time
byte [4]   : CPU usage %
Subscription Rate Info
Byte 0 Effect
0 Off
1 1Hz
5 5Hz
10 10Hz
20 20Hz
50 50Hz
Any other value Invalid date rate


Master Controller Communication Table
Message Number Purpose Data Byte Pattern
0x101 Request each Controller Boot Status
Byte[0]: Request command for Boot Info.
0x102 Request each Controller version info.
Byte[0]: Request command for Version Info.
0x103 Request GPS Controller for Satellite Time
Byte[0]: Request command for Time
0x104 Set Time on each Controller received from Satellite
Byte[0-3]: Time in HH:MM:SS
0x201 Receives Boot status from each Controller
Byte[0]: Boot Status Info.
0x202 Receives Version info. from each Controller
Byte[0-3]: Controller Version Info.
0x203 Receives the Time from GPS Controller
Byte[0-3]: Time in HH:MM:SS
0x301 Request destination co-ordinates from Communication_Bridge
Byte[0-7]: Displays "Waiting for Destination Location Input"
0x302 Set the destination GPS co-ordinates to GPS_Controller
Byte[0-3]: Latitude Co-ordinate
Byte[4-7]: Longitude Co-ordinate
0x500 Display Boot Status on LCD
Byte[0]: Boot Status Response
0x501 Display Version Info. on LCD
Byte[0]: Version Info.
0x502 Display Controller Time on LCD
Byte[0-2]: Time in HH:MM:SS
0x503 Direction n Speed Control
Byte[0]: START/STOP/RIGHT/LEFT command
0x504 Display Motor speed on LCD
Byte[0]: Speed Value
0x505 Display Dist. to Destination and Heading Direction on LCD
Byte[0]: Distance to Destination
Byte[1]: Heading Direction
0x506 Display Sensor Values on LCD
Byte [0]: Front sensor value in inches
Byte [1]: Front Left sensor value in inches
Byte [2]: Front Right sensor value in inches
Byte [3]: Back sensor value in inches
0x507 Display Battery Status & Light Sensor Value on LCD
Byte[0]: Battery Status Value
Byte[1]: Light Sensor Value
Motor Controller Communication Table
Message Number Purpose Data layout
0x508 Speed Sensor Data
byte [0] : Speed sensor value in rpm
0x509 Vehicle Direction/Movement Data
byte [0] : Movement Control
     0x1 : Forward
     0x2 : Reverse
     0x3 : Stop
byte [1] : Steering Control
     0x1 : Left
     0x2 : Right
     0x3 : Straight
Sensor Controller Communication Table
Message Number Purpose Data layout
0x510 Front/Back Range Sensor Data
byte [0] : Front sensor value in inches
byte [1] : Front Left sensor value in inches
byte [2] : Front Right sensor value in inches
byte [3] : Back sensor value in inches
0x511 Light, Accelerometer and Battery Sensor Data
byte [0] : Light sensor value
byte [1] : X axis Value
byte [2] : Y axis Value
byte [3] : Z axis Value 
byte [4] : Battery status value
GPS Controller Communication Table
Message Number Purpose Data layout
0x518 Set GPS Location
 byte [0 - 3] : Latitude - Float
 byte [3 - 7] : Longitude - Float
IO Communication Table
Message Number Purpose Data layout
0x520 Subscribe to Sensor data bytes [0-5] : Sensor Value in Inches
0x521 Subscribe to Motor data bytes [0-2] : Vehicle Direction
0x522 Subscribe to Compass Data bytes [0] : Compass Data in degrees
0x523 Subscribe to Battery Status bytes [0] : Battery Status Value
Communication Bridge Communication Table
Message Number Purpose Data layout
0x528 Set Car Speed (Kill Switch) - temporary allow for other non-zero value for demo byte[0] - speed value
0x529 Destination GPS location

bytes [0-3] : latitude (float) bytes [4-7] : longitude (float)

0x52A Turn to degree

bytes [0-3] : degree(float)

0x52B Way points longitude
bytes [0-1] :total waypoints count
bytes [2-3] :waypoint index
bytes [4-7] : longitude(float)
0x52C Way points latitude
bytes [0-1] :total waypoints count
bytes [2-3] :waypoint index
bytes [4-7] : latitude(float)
0x52D remote status (ie. Android connection status)
bytes [0]=>
0:disconnected(passive send)
1:on disconnect(active)
2:connected(passive)
3:on connect(active)
0xFF:error(active/passive)

Hardware Design

Hardware Interface

Software Design

Implementation

Testing & Technical Challenges

Conclusion

Project Video

Project Source Code

References

Acknowledgement

References Used

http://www.socialledge.com/sjsu/index.php?title=Self-driving_Car

http://www.nxp.com/documents/user_manual/UM10360.pdf

http://www.socialledge.com/sjsu/images/d/de/2012SJOneBoardSchematic.pdf

http://www.maxbotix.com/documents/MB1010_Datasheet.pdf

http://www.sharpsma.com/webfm_send/1208

https://www.sparkfun.com/datasheets/Components/HMC6352.pdf

Appendix