Project Introduction and Guidelines


Various different controllers are used and each should have limited and exclusive responsibilities. Use this article as a reference to derive your project schedule and individual team member tasks.




Example of how GPS coordinates are sent from Mobile phone:

  1. Mobile phone sends data as ASCII text to the Bridge
  2. Bridge controller receives information over UART
  3. Bridge controller sends data using DBC/CAN to the Geological
  4. No other controller should need to know the destination coordinates because the Geological controller will guide the Driver controller with its compass heading, and tell it to stop when necessary


1: Bridge and Sensor Controller


  • Shall be interfaced to all of the distance sensors
    • Note that your board only has 3 ADC channels if you choose to use this interface
    • Note that ultrasonic sensors can collide in their sound waves and interfere with each other. It may be better to use different frequency based sensors (maybe different vendor or models) to minimize the interference.
  • Shall output all sensor information with minimum refresh rate of 20Hz

  • Shall provide the interface (such as bluetooth serial) to a mobile application running on a phone
    • Typical interface to a Bluetooth or Wifi is UART
    • Bluetooth requires pairing, and is usually stable after that
    • Wifi would require your wifi to act as an access point for your mobile phone to
    • Both interfaces should work, and you can pick one based on past semesters' reports
    • Recommendation is that Mobile phone sends a line of command terminated by a newline, and then the Bridge controller can parse the information (such as using scanf)
  • Required but low priority:
    • Provide battery voltage reading to Mobile Application and possibly to DRIVER to output on LCD


2: Motor Controller


  • Shall be interfaced with speed sensors or wheel encoders to provide speed information
    • This should be transmitted on the CAN bus as either kph or mph; usually the units will be small and you could use DBC scale of 0.001 or 0.01
  • Shall be interfaced to motor controllers (or servo controller) to control steering and speed
    • Recommend hobby grade RC car (such as Traxxas), and not a $20 RC car from Amazon
  • Provide self-test capability button
    • Self-Test pressed, so Driver controller should be commanded to a 5 seconds wheel test mode
    • This should include forward, backward motion, and steering test
  • Shall process the speed command, and compensate for the grade of the ground (uphill or downhill)
    • For example, the DRIVER may command 0.5 kph, and the motor controller should process the wheel encoder and use a simple PID control loop to match the command regardless of the grade or battery power


3: Geological Controller


  • Shall be interfaced to a magnetometer
  • Shall be interfaced to a GPS
  • Shall provide raw GPS and compass readings
  • Shall have the ability to "set destination" and then provide heading degree towards destination
    • Driver controller should not need to get involved in GPS data. It should simply receive a compass destination heading, and actual compass heading. When there is no obstacle, it should simply try to take its current heading towards the destination heading (which is just a compass degree)
  • Shall have the waypoints algorithm


4: Driver and LCD Controller


  • Shall be interfaced to an LCD display to output meaningful and diagnostic information
    • Sensor values, commanded motor values etc.
    • Recommendation is to use a simple UART or I2C based LCD
    • Something like this
  • Shall receive all relevant sensor messages and process them for obstacle avoidance
  • Shall receive compass actual degree, and heading degree (towards destination)
  • Shall have the obstacle avoidance algorithm
    • In absence of any obstacles, it shall use compass to follow the GPS destination
  • Shall send output drive commands for the Motor Controller


5: Mobile Application


  • Minimize the buttons (and hence the code)
    • If there is no Bluetooth connection, automatically display list of bluetooth devices
    • Once connected, automatically show the Google Maps page
  • Shall have Google Maps or similar for a user to pick the destination
  • Shall transmit the destination to the Bridge Controller as necessary
  • Optional requirement to display car data, such as speed, compass, and anything else useful to you during debugging. Definitely some extra credit opportunity here based on how well you accomplish your Mobile Application


Revision #6
Created 1 year ago by Preet Kang
Updated 5 months ago by Preet Kang