Goal: To create a unified, open source method for installing computer control related equipment into a vehicle. We want the parts used to be widely available and provide detailed instructions so that anyone with the desire can integrate a computer into their car.
Determine:
Software Platforms
- Front End: HTML5/JavaScript
- Backend: c/c++ linux daemons
Hardware Platforms
- Front End: Multiple devices supported based off of HTML5 being the chosen programming language for the interface
- Backend: x86, ARM (Raspberry Pi)
Communications protocols
- Frontend => Backend: Websockets for Control/Status, HTTP for binary data (images/media files)
- Interface methods
Things to Control
- Door locks
- Windows
- Sunroof/Moonroof
- Trunk/Hatch
- Automatic Doors (minivan sliding doors)
- Interior Lights
- Dash Lights
- Headlamps/Running Lights/ Fourways
- Climate Control
- Entertainment
- Seat Controls
Interface
- Music
- Video
- Navigation
- Control of above mentioned systems
Communications
- 3G/4G Internet Connection
- Bluetooth Phone Connection
- In-Car Wifi
- Wireless Bridge to Home Network
- HomeLink
Sensors
- Indoor/Outdoor Temperature
- Ambient Light
- Water
- Seat weight sensor
Misc
- Automatic Media Sync from home computer to car computer when wireless connection is made at home
- Proximity functions such as unlock, start
- System wake up when driver is present in seat
- Start car by depressing the brake pedal
- Remote Start over internet
- share media from backend to frontend (http)
- bluetooth audio sink (play media from frontend through backend-node audio hardware)
Obviously there are some components here that are more difficult to overcome than others, but in my experience where there is a will, there is a way.
The heart of this system is actually three separate components:
The Brain will a low power consumption device that can run for many days off of battery that will be the middleman for all components involved in the system. Exact hardware and software that will run on this device is yet to be determined. The Raspberry Pi is a candidate. The Brain will interface with the modules and the head unit over various networks.
Part of what will lead to the success of this project is creating nodes that anyone with a little skill and knowhow can build themselves. Everything from Relay Clusters, to Sensor Interfaces, CANBUS, etc will all connect to the brain through a chosen network. An Arduino type device would be ideal for the nodes. The goal of the nodes is to allow the builder to have as much or as little functionality as they want.
In the perfect scenario the Frontend will be BYOD since it will not have to interface with the modules directly, instead it will communicate to the server software on the Brain. The ideal candidate for the brain will be an Android tablet since they are cheap and widely available. This will also allow you to use build and third party media and navigation software without having to integrate it into the brain.