Raspbian Setup
First, make sure your package lists are up-to-date:
sudo apt-get update
Confirm that Python is installed (should be included by default in your Raspbian installation):
python --version
Install Python setuptools to get PIP (the Python package manager):
sudo apt-get -y install python-pip
Install the python-OBD library via PIP:
sudo pip install obd
Install the RPi-GPIO library via PIP:
sudo pip install RPi.GPIO
Install the pyserial library:
sudo apt-get install python-serial
Next, enable auto-login to the 'pi' user (or whichever user you choose to run the scripts under):
sudo nano /etc/systemd/system/getty.target.wants/getty@tty1.service
Change the ExecStart
line to:
ExecStart=-/sbin/agetty -a pi %I $TERM
Daemon Setup
NOTE: This tutorial assumes you are using the latest release of Raspbian Jessie. Information on daemon configuration in Jessie can be found here.
To have the obdPi scripts start on boot, you'll need to setup a daemon to execute the Python script for you.
First, create a new service script for the daemon:
sudo nano /lib/systemd/system/obdpi.service
For OLED applications, enter the following content in your new script:
[Unit]
Description=obdPi Service (OLED)
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python /path/to/scripts/main_oled.py
[Install]
WantedBy=multi-user.target
Or for non-OLED applications:
[Unit]
Description=obdPi Service (Print)
After=multi-user.target
[Service]
Type=idle
ExecStart=/usr/bin/python /path/to/scripts/main_print.py
[Install]
WantedBy=multi-user.target
Enable the daemon script:
sudo chmod 644 /lib/systemd/system/obdpi.service
sudo systemctl daemon-reload
sudo systemctl enable obdpi.service
Then reboot:
sudo reboot
After rebooting, confirm that the service is running:
sudo systemctl status obdpi.service
To stop the service:
sudo systemctl stop obdpi.service
And to disable the service (prevent it from starting at boot):
sudo systemctl disable obdpi.service
Bluetooth Setup
To setup the Bluetooth connection between your Raspberry Pi and the OBD-II interface, first ensure the Bluetooth USB adapter is plugged into your Pi and the Bluetooth OBD-II adapter is installed in the vehicle's OBD-II port (and that both are within range of each other).
Next, install the basic Bluetooth utilities for Raspbian:
sudo apt-get install --no-install-recommends bluetooth
When the install is complete, make sure the Bluetooth service is running:
sudo service bluetooth status
Next, to configure the Bluetooth connection:
sudo bluetoothctl
agent on
default-agent
pairable on
scan on
The identifier for your Bluetooth OBD-II adapter should appear - be sure to take note of it. (AA:BB:CC:11:22:33 will be used as an example below).
scan off
pair AA:BB:CC:11:22:33
At this point, you may be prompted to enter an authentication pin. Most adapters use, 0000, 1234 or require no pin (just press 'Enter'). Other adapters may require a specific pin, which would have been included on a slip with the adapter.
connect AA:BB:CC:11:22;33
quit
The Bluetooth connection should now be ready for use!
Serial Connection
Once the Bluetooth connection has been configured, you'll need to bind it to a serial port. Doing so allows you to communicate with the Bluetooth OBD-II adapter in Python.
One time configuration of the serial connection can be done with the following:
sudo rfcomm release all
sudo rfcomm bind 0 AA:BB:CC:11:22:33
To configure the serial connection at each boot (recommeded), simply add the aforementioned code before the end of the /etc/rc.local
:
sudo nano /etc/rc.local
Display Wiring
Utilization of the main_oled.py
script requires a 16x2 character OLED display, as well as the assembly of a custom 40-pin to 16-pin cable. A step-by-step guide for creating this cable can be found here.