Greenpower HUD

Greenpower HUD - Bluetooth Viewer. 

The Greenpower HUD android app by Jack Joynson was designed to act as a Heads-Up-Display and telemetry data storing app for Greenpower cars. The app uses Bluetooth to communicate with a microcontroller and GPS to track and monitor your car so you can compare different parameters about it.

The app communicates with an Arduino (or similar) via Bluetooth - it processes the data and displays the key information to the driver. The app also communicates with GPS to display the current, average and max speed to the driver. The app processes the data, and uses the data input at the start of a race, to display the information the driver needs to finish the race in the most efficient way possible. All the data - including all the telemetry data from the Arduino; the GPS time, lat, lon and current speed; and a lap by lap breakdown are saved automatically at the end of the race. These text files can be exported via a file explorer or via the built in email function within the app for post race processing. This combined with the lap graphing application I have written allows direct comparison of variables related to the car - including battery performance, motor performance and drivers lines and gear changes.
The app also performs calculations on the data so that the driver knows whether they are using too much or too little power to finish the race and whether they are driving too fast or too slow based on the targets which were entered - along with the display the app also physically speaks to the driver so the driver doesn't even have to take their eyes off the road. The app also has the ability to calculate amphours if the ability is not present on the Arduino.

Basic instructions [OUT OF DATE, WILL BE UPDATED SOON]:
  1. Once the application is open multiple popup windows will show. Fill out the information in the race dialog boxes. Only an integer in the race length but the other boxes accept doubles. Click ok and the dialog will close. Select the relevant button for the track you are at, this dialog will now close. The application will start when the car first moves after the start button has been pressed. I.E. when on the line ready to go. The track lat and lon should be preset however the app has a built in function to automatically set the values. You may have had popups asking to enable bluetooth and GPS. Enable all of these. If you have location set by GPS then use the adjust button to force the app to override the OS state, better to not be set before app launch.
  2. Click start when stationary and waiting on the line.
  3. The app will display the incoming data onscreen. 
  4. When the Bluetooth device is disconnected the data will be saved automatically.

Parameters - App sents: "RA/n" to connected device as ascii string every 100ms after first connection.
Recommend microcontroller sends: [Current]+","+[Voltage]+","+[Amphours]+","+[RPM]+","+[Temp]+"/n"
App screen will update on receiving "/n" - newline character- so ensure to use Serial.print for all data up to [Temp] - send the final part as Serial.println to append the "/n". You could of course append all the strings first then send as one println - However this is less efficient. 

Usage guide:
How to use the app.