The Raspberry Pi JavaFX In-Car System (Part 3)
- by speakjava
Ras Pi car pt3
Having established communication between a laptop and the ELM327 it's
now time to bring in the Raspberry Pi.
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
address 10.0.0.13
gateway 10.0.0.254
netmask 255.255.255.0
iface wlan0 inet static
address 192.168.0.1
netmask 255.255.255.0
wireless-essid Wifi327
wireless-mode ad-ho0
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.