##project Automobile Machine Version 2
Main purpose is to integrate Android device deep in a vehicle (any car with CAN (CAN-like bus)). It consists of two important parts:
- Arduino
- Android app.
What it does:
- Transmit important (control) messages from the vehicle's CAN bus to Android (control messages - messages which are generated by user's input to the car)
- Allow user to control vehicle from Android. Android app generates CAN packets, that emulate different user input or behavior (like buttons pressed or track now playing) and sends them into the vehicle's bus via Arduino
- Android app also provides a service, which allows interaction via intents with different apps (like powerAmp via powerAmp API)
####Used techs:
- Google protocol buffers (https://developers.google.com/protocol-buffers/)
- Arduino CAN bus shield (http://wiki.seeed.cc/CAN-BUS_Shield_V1.2/)
####Arduino
- reads and writes CAN bus
- provide Android-to-car and car-to-Android communication
- AINET bus support is in alpha stage. now it's possible to catch AINET packets on Arduino. It is also possible to write in the bus and sent confirmation frames, but different Alpine processors have different init sequances, so all they are now under construction (because of lack of Alpine hardware :) )
###Android
- brings up a service to interact between different apps via intents (like audio-players)
- listens to car inputs via Arduino and behave accordingly
##IMPORTANT Now there are only some Peugeot/PSA CAN commands hardcoded, but ToDo is to create simple Command interface that allows users set up their individual vehicles. Difficult is in finding control messages in a vehicle's bus. it includes:
- dumping the bus
- parsing it
- manually searching for interesting events
##Dependencies:
-
Fast digital I/O for Arduino (https://www.codeproject.com/Articles/732646/Fast-digital-I-O-for-Arduino) You can find dio2.zip in dependencies folder. Unzip it, read readme and use carefully.
-
CAN BUS Shield (https://github.com/Seeed-Studio/CAN_BUS_Shield )
I will work on some docs and will improve comments in the code during development.