J
JustChilling
Enthusiast
I was doing some research on how mobile phone apps can connect to your vehicle's computer and read (possibly write) data. Apparently it's much simpler than you would imagine to communicate with a vehicle's computer.
I personally am doing this because I have a Chevy Silverado 2012 with a 7 inch lift and increased the rims from 18 to 22 inches. As you can imagine, the speedometer was 15+ MPH off in some cases. I made an app that would get the speed, and auto-correct it, displaying the real one. You can use this though to do so many more things with your vehicle. Mechanics make money just by connecting to the vehicle and reading the data, seeing what kind of errors are present in the computer.
If you think this is useless, then just look away. But I thought this was a really neat project that could yield further knowledge of how vehicle computers work, which as a programmer you should know how all computers work at the core.
Anyways, here goes with a basic layout of the info:
A vehicle's computer can be connected to via a 16-pin port underneath the steering column. This is used to read Real Time data to find errors, as well as writing data (when you chip your vehicle for torque/performance/eco). You can get a nub to plugin to the 16-pin port and re-assemble the steering column. The nub will listen via Bluetooth and pass any command sent from the connected device to the computer, returning the response back over Bluetooth.
You can program an app (Android is mucj easier) that can connect to this device and read / write data when you need to. The port is known as an OBD port (On Board Debugger).
The OBD basically just accesses values from the vehicle computer's memory, so you would ask what's at location 0xC and get a 1-byte value back which is the vehicle's current speed. Manufacturers setup their computers and OBD's differently, so you would have some PID's unique to your vehicle.
Now, your vehicles computer knows much much more than just the speed you are going. Depending on the model, it can know some things like fuel pressure, engine coolant temp, oil pressure, power steering fluid, % of ethanol in gasoline, intake air temp, and more. As you can tell, these should be values anybody can view on a dime to see how their vehicle is doing behind the fancy dash lights and under the hood.
Now some of you may think this is useless or somehow doesn't relate to programming, but it is not useless to be able to read a vehicle's computer to determine problems on the dime and with extreme accuracy. On top of that, the programming behind such an application is very simple for even beginners. Here is a link to where I got much of my info on OBD's and connecting to them via Bluetooth:
Info on OBD's and what they do:
http://en.m.wikipedia.org/wiki/OBD-II_PIDs
Actually a support topic on how to connect via Bluetooth application to your vehicle and send commands:
http://stackoverflow.com/questions/...etooth-using-android-fails-with-software-caus
If you read this thread and those links and it sparked some interest for you, I encourage you to learn more on the subject. Learning to communicate with a vehicle's computer is very useful, and will only become more useful in the future. A fun, easy, and useful project for any programmer. And it should be noted that since a vehicle's computer knows almost everything about how a car is running, you could use this to determine a problem with you or someone else's vehicle and possibly make some money. Definitely a win-win in every way I can see it.
I personally am doing this because I have a Chevy Silverado 2012 with a 7 inch lift and increased the rims from 18 to 22 inches. As you can imagine, the speedometer was 15+ MPH off in some cases. I made an app that would get the speed, and auto-correct it, displaying the real one. You can use this though to do so many more things with your vehicle. Mechanics make money just by connecting to the vehicle and reading the data, seeing what kind of errors are present in the computer.
If you think this is useless, then just look away. But I thought this was a really neat project that could yield further knowledge of how vehicle computers work, which as a programmer you should know how all computers work at the core.
Anyways, here goes with a basic layout of the info:
A vehicle's computer can be connected to via a 16-pin port underneath the steering column. This is used to read Real Time data to find errors, as well as writing data (when you chip your vehicle for torque/performance/eco). You can get a nub to plugin to the 16-pin port and re-assemble the steering column. The nub will listen via Bluetooth and pass any command sent from the connected device to the computer, returning the response back over Bluetooth.
You can program an app (Android is mucj easier) that can connect to this device and read / write data when you need to. The port is known as an OBD port (On Board Debugger).
The OBD basically just accesses values from the vehicle computer's memory, so you would ask what's at location 0xC and get a 1-byte value back which is the vehicle's current speed. Manufacturers setup their computers and OBD's differently, so you would have some PID's unique to your vehicle.
Now, your vehicles computer knows much much more than just the speed you are going. Depending on the model, it can know some things like fuel pressure, engine coolant temp, oil pressure, power steering fluid, % of ethanol in gasoline, intake air temp, and more. As you can tell, these should be values anybody can view on a dime to see how their vehicle is doing behind the fancy dash lights and under the hood.
Now some of you may think this is useless or somehow doesn't relate to programming, but it is not useless to be able to read a vehicle's computer to determine problems on the dime and with extreme accuracy. On top of that, the programming behind such an application is very simple for even beginners. Here is a link to where I got much of my info on OBD's and connecting to them via Bluetooth:
Info on OBD's and what they do:
http://en.m.wikipedia.org/wiki/OBD-II_PIDs
Actually a support topic on how to connect via Bluetooth application to your vehicle and send commands:
http://stackoverflow.com/questions/...etooth-using-android-fails-with-software-caus
If you read this thread and those links and it sparked some interest for you, I encourage you to learn more on the subject. Learning to communicate with a vehicle's computer is very useful, and will only become more useful in the future. A fun, easy, and useful project for any programmer. And it should be noted that since a vehicle's computer knows almost everything about how a car is running, you could use this to determine a problem with you or someone else's vehicle and possibly make some money. Definitely a win-win in every way I can see it.