While not exactly what I'm looking for, that is helpful! Thanks! Now I know what should be possible to get out of the car.
The crucial piece of information missing from that site is the hex addresses of the PIDs (or did I miss it?). Sadly, the ECU doesn't allow you to request parameters in a textual format. You have to send a series of hex values, then the ECU responds with hex values. The problem is I don't know what hex values to send for all the various parameters. So if anyone knows the hex values for PIDs specific to Ford vehicles (odometer, fuel level, etc...), please let me know!
Due to popular demand (gofastralph), here is how you request info from OBD-II.
First, you need a chip that is able to communicate with the car's ECU over the OBD-II port. As far as I can tell, the two most popular chips for this are the ELM327 (about $35) and the STN1110 (about $10), with the STN1110 being generally regarded as faster and more stable. You build a circuit for this chip (circuit diagrams are on the datasheets for each chip) and plug it in to both the OBD-II port and either 1) a computer or 2) a microcontroller such as an Arduino. Then you send simple commands to the chip in hex format, it sends it to the ECU and gets the response, and the chip outputs hex values for the results you asked for. You can check out the wiki page I linked to in the first post for a list of general PIDs (many of which won't work). The list does not have the ford specific stuff, so in reality if you knew all the PIDs unique to ford you could get info about what gear you were in, whether or not your seatbelt was unbuckled, if the door was shut or not, and like Rabid Stang said you can do math using a combination of different values to calculate stuff such as MPG and instantaneous fuel comsumption. Noteworthy is the fact you could store all the different error codes and descriptions on a microcontroller, so when the check engine light went off you could throw the error code up onto an LCD along with the full description of what the problem is. There is so much that could be done, the only limit is your imagination.
Anyway, as an example, to request the speed of the vehicle you would send:
01 is the mode, and 0D is the parameter you want for that particular mode. Again, see the wiki page for more examples of modes and parameters you can request. An example of the resulting output would be something like:
41 0D 78
41 is the ECU saying it is responding to a request, 0D is letting you know exactly what value it is responding to, and 78 is the actual value you wanted (in hex). 78 in hex = 120 in decimal, and the vehicle speed PID happens to be in km/h. You just convert 120 km/h to mph (unless youre weird and like metric
) to get your value!
To do a full set of digital gauges, you just request a PID, convert the results into a useable format, throw it up on an LCD screen, and repeat over and over for each parameter.