Introduction: Opel DPF Indicator & Monitor
Having a latest model of Opel car (Vauxhall in UK) with diesel engine can give you a little bit of headache.
I found myself in a situation I didn't know when my DPF (Diesel particulate filter) was being burned, and got filled completely. The only remedy then is chemical cleaning or DPF replacement (if it's too late).
You can find few examples of dealing with the fact on web, none of them I liked. Either you need to pay attention at your fuel burn rate while not driving or cut wires & solder to mount 12V LED which is lit while rear windows heating starts.
I thought why not to use OBD/ELM237 bluetooth reader that was already in place?
Thanks to great Elmduino library and support from it's creator - PowerBroker2 I finally achieved my goal.
The minimum cost of this setup is 15 USD (5 for cheapest OBD reader + 10 USD for wemos lolin32), although you can go as low as 10 USD if you need just a blinking LED (simplest ESP32) while DPF is burnt
The board is tested on my Opel Zafira C with engine code B20DTH (2.0/170HP), but I tested same PIDs work also with B16DTH (Zafira C tourer 1.6/136HP) using Torque app. As far as I know It should work with same engines in Opel Insignia.
PIDs were taken from this forum
Step 1: Get All the Parts You Need
1. ESP32 with built-in OLED display (I used Wemos Lolin32 board)
2. Arduino IDE
3. USB cable (mini port)
4. Fuse tap guide (optional)
5. 12V to 5V converter (optional)
Step 2: Prepare the Environment
I used very useful guide to get WEMOS Lolin32 working posted in this instructable :
ESP32 with integrated OLED
With above guide you should finish with Arduino IDE & SSD1306 libraries (for OLED) installed
You just need to install ELMduino library by PowerBroker2 from Arduino Tools/Manage Libraries section
Step 3: Configure the Board
Load the attached sketch
Modify the sketch to reflect your OBD reader name (mine is V-LINK)
Don't forget to put images.h library in project's folder if you want a fancy Opel logo at startup :)
The sketch can be easily modified to run on pure ESP32 module (without OLED screen) and just blink blue LED when DPF burns
Attachments
Step 4: Mount the Board
This is only suggestion, as I prefer to have everything clean and without visible wires.
I used fuse tap + 12V to 5V converter with 2 USB outputs everything located near car fuses and hid the usb cable under the panel
Step 5: 04.04.2020 Update
Sharing another sketch for TTGO 1.14 Inch ESP32 (you can get it for 7USD), another very nice 135x240 pix display (65k colors). Tweak to your preference ;)
23 Comments
Question 3 years ago on Step 5
Hi, any idea about how to modify the sketch to run with an ST7789 display ?
Thank you in advance!
Reply 2 years ago
no idea, you have to find yourself examples of ST7789 displays used.
I'm no programmer, did everything by trail & error
Reply 10 months ago
Do you have any updated source from where i can buy the exact needed hardware for this project ?
1 year ago
Hi,
When I compile the code in Arduino IDE i get an error:
Reply 1 year ago
Try replacing .status with .nb_rx_state
Source: https://github.com/PowerBroker2/ELMduino/blob/master/src/ELMduino.h#L293
1 year ago
Hello. Thank You Very much. Works great on Insignia B20DTH. Does anybody maybe have PID for Oil temp as well? :)
Reply 1 year ago
PID: 0x221154
Formula: A-40
Reply 1 year ago
Hi. how can i find the specific PID's that i want?
thanks in advance
Reply 1 year ago
I used Google and some forums.
Question 3 years ago on Step 5
hi do you have the latest ino for the ttgo, im compiling script and its coming up with an error
on this line
if if (burn > 0 && burn <11) {
its saying expecting ( before f
edit ok removed one of the it and sketch installs, only other problem is is doesnt connect to my vgate
Answer 1 year ago
Delete one "if".
Answer 2 years ago
Did you solvate the problem with connention?
Reply 1 year ago
nope
Question 3 years ago on Step 3
Hey. How to enter pairing request with pin "1234" for OBD / ELM237 bluetooth? Because now it probably connects only on an open connection, and my ELM237 connects only with the pin.
Answer 1 year ago
// MAC: 00:1d:a5:22:c1:38
uint8_t address[6] = {0x00, 0x1D, 0xA5, 0x22, 0xC1, 0x38};
.........
if (!ELM_PORT.connect(address))
Answer 3 years ago
have you tried using with your OBD ? Mine requests PIN as well, but works with ELMduino. If that still does not work - please raise the question on Elmduino thread
Reply 3 years ago
Hi
I solved the communication problem but I have a question. How to rotate the image 180 degrees.
Reply 2 years ago
Hello, how did you solvate the problem with password... "1234"....thanks
Reply 3 years ago
Try display.flipScreenVertically()
Otherwise look for function in OLEDDisplay.cpp
Reply 3 years ago
OK. It worked. Thanks