The focus of the dashboard should be to give the driver of a vehicle what they need to drive the vehicle safely and to alert them to any issues that may need addressing. To achieve this, the UI should have Primary driver data (awareness must be immediate, data is seen regularly and easily), Secondary driver data (enhances the driving experience over the longer term, viewed easily, but less frequently) and finally Technical system data (viewed infrequently by the end user, but useful for analysis of vehicle performance and to investigate faults).
2012-09-18: SolarNode Connectivity Demo Added!
The image shows a screenshot of version 0.65 (taken from emulator). New features included updated graphics and a new 'Charge Node' screen.
How it works: If the app is near to a suitable charging station (e.g. a SolarNode), a public WiFi network will be available. Connect to this network, and the app will show electricity price details. The page provides some UI to connect to the charge station and turn on the charger, then show details such as charge rate.
Currently, it connects via the internet using GPRS, but a future version will also support connection via local WiFi if that is available.
The latest source code is available in the Tumanako projects SVN repository.
Version 0.65 (which is a bit old now) can be downloaded here (Android APK File).
Primary driver data:
- Main contactor on (i.e. Inverter On!) (indicator light)
- Fault indicator (Warning symbol light)
- Main Battery kWh remaining (fuel gauge dial)
- Accessory battery DC voltage (dial)
- Motor Rpm (dial)
- Main Battery Temperature (Bar)
- Motor Temperature (Bar)
- Controller Temperature (Bar)
Secondary driver data:
- Drive time (Main battery time remaining to a minimum discharge point)
- Drive range (estimated range given current fuel and efficiency figures)
Technical system data:
- pre-charge indicator Note: What does this show? (Indicator lamp? Numeric value?)
- Main Battery Voltage
- Main Battery Amp hour
- Fault log
The Dashboard app can be divided into four main parts:
- Data Input
- Logging / Storage
Possible UI Types:
- Data Visualisations
- Done: Text Box w/ Label
- Done: Lamp – E.g. Warning / Status light (On / Off / Colour / Bitmap swap)
- Done: Dial – E.g. Speedo, RPM
- Done: Bar W/ Scale –E.g. Battery Remaining
- Done: Scroll Chart – Lots of possibilities!
- Done: Text Fields, Drop lists, Checkbox/Radio Buttons, Buttons (Built with standard Android UI elements).
- Flexible – Scale for different device sizes and screen orientations
- Done: Layout is specified in Android XML layout files making it easy to reconfigure.
- Done: Bluetooth Serial Device (prototype)
- To Do: Currently uses hard-coded device address. Need UI to search for / pick Bluetooth device.
- USB (via RS232->USB Adaptor)
- Note: Not all Android devices support USB Host mode. OS drivers for USB devices may vary.
We need to define data input specs.
- Can we use a generic model? (e.g. Send Request, Get Data; or Wait for data from device)
- Define data decoding library (similar to current NMEA decoder) - knows how to convert serial data stream into meaningful numbers for Dashboard display.
- Version 1 bluetooth comms spec completed: TumanakoDash Serial Protocol
Logging / Storage
- Done: Log data to flashcard, database, etc.
- Needs Error Log
- Upload to internet server with HTTP POST or similar.
We may want to collect sensor data for performance analysis, etc. Lower priority!
- Done: Device Accelerometer
- Done: Device GPS
- Done: Device Magnetic Field Sensor
- Already have code to get data from these sensors.
Note: Problem with using device sensors for acceleration and magnetic field: Data must be calibrated and corrected for device orientation relative to vehicle, and device must be firmly located.
- Use external accelerometer and/or gyro (i.e. mounted to car)
- More data to send via Bluetooth!