By speakjava on Jun 28, 2013
One of the nice things about the Raspberry Pi is the simplicity of it's power supply. All we need is 5V at about 700mA, which in a car is as simple as using a USB cigarette lighter adapter (which is handily rated at 1A). My car has two cigarette lighter sockets (despite being specified with the non-smoking package and therefore no actual cigarette lighter): one in the centre console and one in the rear load area. This was convenient as my idea is to mount the Raspberry Pi in the back to minimise the disruption to the very clean design of the Audi interior.
The first task was to get the Raspberry Pi to communicate using Wi-Fi with the ELM 327. Initially I tried a cheap Wi-Fi dongle from Amazon, but I could not get this working with my home Wi-Fi network since it just would not handle the WPA security no matter what I did. I upgraded to a Wi Pi from Farnell and this works very well.
The ELM327 uses Ad-Hoc networking, which is point to point communication. Rather than using a wireless router each connecting device has its own assigned IP address (which needs to be on the same subnet) and uses the same ESSID. The settings of the ELM327 are fixed to an IP address of 192.168.0.10 and useing the ESSID, "Wifi327". To configure Raspbian Linux to use these settings we need to modify the /etc/network/interfaces file. After some searching of the web and a few false starts here's the settings I came up with:
auto lo eth0 wlan0
iface lo inet loopback
iface eth0 inet static
iface wlan0 inet static
After rebooting, iwconfig wlan0 reported that the Wi-Fi settings were correct. However, ifconfig showed no assigned IP address. If I configured the IP address manually using ifconfig wlan0 192.168.0.1 netmask 255.255.255.0 then everything was fine and I was able to happily ping the IP address of the ELM327. I tried numerous variations on the interfaces file, but nothing I did would get me an IP address on wlan0 when the machine booted. Eventually I decided that this was a pointless thing to spend more time on and so I put a script in /etc/init.d and registered it with update-rc.d. All the script does (currently) is execute the ifconfig line and now, having installed the telnet package I am able to telnet to the ELM327 via the Raspberry Pi. Not nice, but it works.
Here's a picture of the Raspberry Pi in the car for testing
In the next part we'll look at running the Java code on the Raspberry Pi to collect data from the car systems.