Topic: Lemony Cheap DIY Arduino Remote Telemetry

Not sure who's tried to integrated the cheapest of microcontrollers into the cheapest of race series, but here's my project as it's unfolding. Hope to have it ready for Bowling Green.

Arduino Vehicle Telemetry System
Most remote telemetry systems are in the hundreds of dollars and would seem so out of place on a 24 Hours of Lemons racer. But with advances in modern technology, there is no reason we can’t use an Arduino to do what we want.
Objectives:
•    Monitor vehicle information
•    Signal alarms to driver when alarm thresholds are crossed
•    Transmit vehicle information trackside for monitoring
I intend to separate the monitoring/alarming hardware from the transmission hardware just to prevent a communications lockup from protecting the vehicle.
Most importantly- this system DOES NOT HAVE CONTROL. It is simply supervising indications that the driver already has at his disposal (coolant temp, oil pressure, RPM) but also can monitor signals from the ECU such as timing advance, throttle position, and lambda/ fuel-air exhaust mix.
Ultimately, I’d like to have a system that looks like this:

http://i.imgur.com/quXsHzk.png

Step 1: Setting Up Data Transmission
I started the data transmission build first simply because parts were available. I have some signal conditioning required in order to get the vehicle signals within the 0-5V Arduino analog input range. So I’ll cover that later when my parts arrive.
Equipment
•    2x Arduino Uno
•    2x HC-12 Serial RF Module (https://www.elecrow.com/433mhz-serial-r … p-874.html)
•    Computer with Arduino IDE
•    Mini-PCI to SMA Adapter (optional)
•    433Mhz Amplifier (optional)
•    SMA Antenna (optional)
I got my parts directly from China, so all told I think this cost something like $20.

The key component here is the HC-12 Serial over RF module. This is module has the protocols embedded, so you can send it serial commands like you would any other device and it will transmit those values to any other HC-12 within range.

http://i.imgur.com/iHRSeYh.png
 
There are five connections to this board:
SET: Pull to GND in order to access configuration, discussed below
TX: Transmit
RX: Receive
GND: Return for the +5VDC
VCC: +5VDC
The manual for the HC-12 tells you the default settings, it is important to keep in mind it will default to 9600 baud rate. That will be useful for connecting to the board.
Basically, both circuits should look something like this:

http://i.imgur.com/YnH9WBD.png

NOTE: The Rx pin from the HC-12 should be connected to the pin you choose as the Tx in your Arduino SoftwareSerial code. Likewise, the Tx pin from the HC-12 should be connected to the pin you choose as the Rx in your Arduino code.
I highly recommend checking out Tom Helyen’s videos for more instructions and helpful activities: https://www.youtube.com/watch?v=DGRPqeacJns

Theoretically you can use the code I’ve attached (PROGRAMMER_MODE.ino) with the SET pin connected to Pin 2 on the Arduino and it will be driven LOW and allow you to access the configuration on the HC-12. I never got this to work and ended up powering off the Arduino, connecting SET to GND, powering on, and then configuring. I wasted a lot of time trying to get the pulldown feature to work.
 
You can use the commands in the HC-12 manual (https://www.elecrow.com/download/HC-12.pdf) to configure or use the HC-12 configuration utility attached.
My first attempt at this will be at 9600 baud without data integrity, gain turned all the way up. For testing I’m using the little spring antenna that came with the board. For the final design, I’ll make sure to use an external 5VDC power source and capacitor across the input to ensure maximum signal strength per the tech manual.

Step 2: Sending USEFUL Data
My original plan was to acquire the data from the serial port on my laptop and display it in Excel. I just didn’t know how well it would work to use Excel to display realtime data. I decided to revisit C# and make a Windows application to display information.
Along the way I found that GenLogic (http://www.genlogic.com) has a free-for-personal-use kit that has an easy connection to C# applications. There is a lot of documentation on their website and the editing program is pretty easy to use:

http://i.imgur.com/064Hq63.png

I realized there are only two important things:
1)    Your “canvas” (black background in my case) needs to be named “$Widget” and then you use the set focus tool (white square with arrow going into it on the left hand side) to choose the canvas and add your elements to that. That ensures when you load it that everything is drawn.
2)    Choose a unique name for each of the elements and keep good accounting of this. If you choose to use my code, you’ll need to be able to decode these.

I modified the code that comes with the HMI editor because it is designed for demonstrating the functionality. I have attached my Visual Studio project including the HMI display.
 
I decided so the serial messages could be as concise as possible that I would make each message in the form: #XX$ZZZZ, where XX is the “device number” and ZZZZ is the value. I made a spreadsheet of each of the values I wanted to transmit and assigned them a unique “device” number. The values vary based upon decimal requirements. If I need a decimal, I will just be sure to decode that on my laptop. Since I don’t have any field inputs, I made up some values so my gauges would appear on-scale and used my DC power supply to provide a 0-5V input for the tachometer. Just load BASIC_RECEIVER on the Arduino connected to your computer and load TELEMETRY_TRANSMITTER to the Arduino that will be in your car. I’m still playing around with delays and speeds to balance range with data transfer speeds.

For the time being I think I have a pretty fault-tolerant system and it’s pretty plug and play now. I’ve basically told the program to ignore bad data and catch an update the next time around, and I haven’t had it break for a while.
So I think it’s time to get my data gathering circuits put together!


Attached folders are linked here: https://www.dropbox.com/sh/msih0l8qou8j … 0F_1a?dl=0


Stay tuned to Part 3/4: Signal Conditioning and Data Acquisition

Giubo Grabbers #190 - 91 Mercedes 190E 2.6 Auto for silky smooth racing
2016 CMP Fall South "Heroic Fix" Winner

2 (edited by gunn 2017-04-16 08:27 AM)

Re: Lemony Cheap DIY Arduino Remote Telemetry

Some thoughts:
Q: On the sensor reading portion, is your car OBD1 or OBD2?
- I'm curious to understand how you plan on reading timing advance, etc.
- If your car is OBD2, have you seen this board? Macchina M2 combines Arduino w/ the necessary OBD plug plus 12V tolerant I/O + protocol libraries which are in development now
https://www.macchina.cc/guide/firmware/library-status

On the comm side:
Q: Have you done any real world testing with the comm modules before going down this rabbit/rat hole further? While this chinese stuff might be magical, I'm guessing that real world open air will net 500M range and once you mount the transmitter inside a car and setup the receiver in a less than optimal position you might only see 250M of transmit range... which is probably useless at any track. At Sears Point, the closest position to the cars where someone would want to camp is on the grandstands or in the garages. The grandstands have no shade so you will be exposed all day and the garages (which have to be rented) are one big faraday cage. Neither position gets you a full view of the track. Maybe your track is different but I suspect that the achilles heel of your system will be the transmitter.

Q: Do you have a way to cache the data before transmission or will this strictly be a realtime system?

Other Sensors
- If you do have the ability to cache the data for later review in the pits , you might also want to add an accelerometer/gyro so you can compare G forces vs. oil pressure.
- This is simple enough with an off the shelf gyro or even a Wii nunchuk mounted in the car. From my expirments with both options, you can easily read the impulse data but translating it to a "real" Gforce calculation is tough.
- You might also want to bring in WBO2 data for tuning (if you have a WBO2 sensor).

-----
Here's why I ask:
- I setup a similar setup in 2011 before my first race to monitor the gauges b/c I didnt trust my fellow drivers. The autometer oil pressure and temp sensors were one-wire resistence based and could be read by comparing the voltage differential between VREF and the voltage at the sensor wire and then calibrating the result. Too low and a car horn would be triggered. Worked splendidly.
- That setup served us well for a few years but I have since moved to an AuberINS gauge b/c i found it was easier to glance at a digital temp gauge than try and read a small round half/sweep analog gauge. The horn alarm is still in place via the AuberINS gauge but the senders are MUCH more problematic (some multiwire PT100 resistence temp detector senders).
- Over my last several races, I added a Quarterhorse module that allows me to read all the internal variables like throttle position, timing advance, RPMs, Closed loop/open loop, etc directly from my Ford OBD1 ECU. The challenge is that this is only through a windows based app (Binary Editor) which can also draw pretty gauges. This setup also enables datalogging and realtime capture of the WBO2 data as well.
- My solution was to install a small intel compute stick (<$75 now) a friend gave me. If I want remote monitoring, I can now remote control that PC (my favorite is Chrome Remote Desktop). I have a <$100 touch screen to install in the car before our next race but if I want remote access at the track, all I need to do is install a personal cellular hotspot (mifi router). Over the past 7 years, we've tweaked our oil system and I've begun to trust my fellow drivers a little more so I'm not sure that's necessary. The only sensor I couldn't read remotely with this existing setup would be the oil pressure but we've done extensive tweaking/monitoring of the oil pressure setup that I'm not sure we need constant remote monitoring. After all, if oil pressure goes to shit, we can't do anything from the pits to fix that.

Myopic Motorsport's #888 Bosozoku Texino Thunderbird (1995 tbird w/ 93 V8 swap + shopping cart rear wing)

Re: Lemony Cheap DIY Arduino Remote Telemetry

Very nice. 

I would also take a look at the Race Capture solution.  They use cellular for communication, but host all the data on the cloud so anyone with web access can view any data you have wired up to the race capture.  Google podium.live for samples of the ui.  The benefit of this is that you leverage all their work to make a nice UI for the data, and they cache the data, and they make it available for anyone.

I do use arduinos in my car, but for other important tasks, like playing the music.

Re: Lemony Cheap DIY Arduino Remote Telemetry

OOOOOO GLG looks like it will have a much better interface than the QT creator i've been working on.

Good find!

Mistake By The Lake Racing (MBTL) https://www.facebook.com/groups/MBTLracing/
88 Thunderbird "What's the word? Thunderbird!", "What's the Price? Thirty Twice!"
A&D: 2014 Sebrings at Sebring (NSF), 2014 NJMP2 Jurassic Park (SpeedyCop), 2012 Summit Point J30 (PiNuts)

Re: Lemony Cheap DIY Arduino Remote Telemetry

ppressle wrote:

Very nice. 

I would also take a look at the Race Capture solution.  They use cellular for communication, but host all the data on the cloud so anyone with web access can view any data you have wired up to the race capture.  Google podium.live for samples of the ui.  The benefit of this is that you leverage all their work to make a nice UI for the data, and they cache the data, and they make it available for anyone.

I do use arduinos in my car, but for other important tasks, like playing the music.

That's a brilliant idea. I should have my car play "wah wah wah" when the oil pressure disappears.
https://www.youtube.com/watch?v=HP8sofAN4xc

Myopic Motorsport's #888 Bosozoku Texino Thunderbird (1995 tbird w/ 93 V8 swap + shopping cart rear wing)

Re: Lemony Cheap DIY Arduino Remote Telemetry

Which screws do I take off my carburetor to get to this "ECU" you speak of?

Re: Lemony Cheap DIY Arduino Remote Telemetry

When you hear a *ping!* the part that you can never find again, that's the ECU.

Mistake By The Lake Racing (MBTL) https://www.facebook.com/groups/MBTLracing/
88 Thunderbird "What's the word? Thunderbird!", "What's the Price? Thirty Twice!"
A&D: 2014 Sebrings at Sebring (NSF), 2014 NJMP2 Jurassic Park (SpeedyCop), 2012 Summit Point J30 (PiNuts)

8 (edited by CarburetorIHardlyKnowHer 2017-04-21 07:17 AM)

Re: Lemony Cheap DIY Arduino Remote Telemetry

gunn wrote:

Q: On the sensor reading portion, is your car OBD1 or OBD2?

Neither. It's too old for that. I can get most of what I need from the X11 test point under the hood: http://www.landiss.com/mixture.htm
The are a few connections there, namely: TDC, RPM, Lambda, and ignition coil timing.

We have a spare coolant temp sensor (RTD) that was used by the climate control and I'll just tap off the oil pressure sensor connection that is terminated on the back of the instrument cluster.

gunn wrote:

On the comm side:
Q: Have you done any real world testing with the comm modules before going down this rabbit/rat hole further? While this chinese stuff might be magical, I'm guessing that real world open air will net 500M range and once you mount the transmitter inside a car and setup the receiver in a less than optimal position you might only see 250M of transmit range... which is probably useless at any track. At Sears Point, the closest position to the cars where someone would want to camp is on the grandstands or in the garages. The grandstands have no shade so you will be exposed all day and the garages (which have to be rented) are one big faraday cage. Neither position gets you a full view of the track. Maybe your track is different but I suspect that the achilles heel of your system will be the transmitter.

This is the unknown for sure. I've ordered an amplifier and better antenna to get a roof mount for the car and a better base station trackside. Previously we rotated someone into a spot trackside to man the radio, so presumably they could also observe this. It'll take some experimenting, but since I am also using the arduino and some brightly colored LEDs to handle some VERY obvious alarms for the driver, this is truly a backup to the backup and gives us some trending ability.

gunn wrote:

Q: Do you have a way to cache the data before transmission or will this strictly be a realtime system?

Not yet. I was thinking about storing the data on an SD card for later review, but at this point it's strictly realtime. Data is broadcast and the receiver updates when it gets data. At this point, the arduino handling the alarms is the important part, it'll be connected via I2C to the transmitting arduino (just to avoid having too many functions in one board). We already have the instrument cluster mounted offset, so coolant temp and oil pressure are dead center in front of the driver. And the coolant low level switch is connected to sound the horn when level is low. That said, the driver should be minimally involved in making sure the car is working and maximally involved in operation.

Giubo Grabbers #190 - 91 Mercedes 190E 2.6 Auto for silky smooth racing
2016 CMP Fall South "Heroic Fix" Winner

Re: Lemony Cheap DIY Arduino Remote Telemetry

ppressle wrote:

Very nice. 

I would also take a look at the Race Capture solution.  They use cellular for communication, but host all the data on the cloud so anyone with web access can view any data you have wired up to the race capture.

I'm going for much cheaper than that. Maybe one day, but our team would buy a transponder and a toy hauler before a professional telemetry system. The arduino is my own side project just for learning's sake.

Giubo Grabbers #190 - 91 Mercedes 190E 2.6 Auto for silky smooth racing
2016 CMP Fall South "Heroic Fix" Winner

Re: Lemony Cheap DIY Arduino Remote Telemetry

In lieu of having a lot of buffered data to send you can capture a snapshot of values in variables based on an alarm trigger and send them when the car is in range of the setup in the pits. The setup in the pits sends back an ACK bit which resets the variables in the car.

That can give you some idea what is going on without having to maintain real time comms and doesn't overwhelm the link with data that is less critical.

Put in a 3 axis accelerometer and you'll also be able to capture what the car was doing when the alarm happens.

Do it as an array and sending the values can be very simple.

Re: Lemony Cheap DIY Arduino Remote Telemetry

TrackGeeks_Chris wrote:

In lieu of having a lot of buffered data to send you can capture a snapshot of values in variables based on an alarm trigger and send them when the car is in range of the setup in the pits. The setup in the pits sends back an ACK bit which resets the variables in the car.

That's a great idea! Just keep a few seconds before and after the event and send that as the event log, then you get a better understanding for the sequence of events leading up to your demise. And very easy to add to our existing code.

Giubo Grabbers #190 - 91 Mercedes 190E 2.6 Auto for silky smooth racing
2016 CMP Fall South "Heroic Fix" Winner

Re: Lemony Cheap DIY Arduino Remote Telemetry

gunn wrote:

- I setup a similar setup in 2011 before my first race to monitor the gauges b/c I didnt trust my fellow drivers.

was your setup local or with remote data transmit?

looking to learn about cheap but working remote serial data transmit options

Re: Lemony Cheap DIY Arduino Remote Telemetry

CarburetorIHardlyKnowHer wrote:
ppressle wrote:

Very nice. 

I would also take a look at the Race Capture solution.  They use cellular for communication, but host all the data on the cloud so anyone with web access can view any data you have wired up to the race capture.

I'm going for much cheaper than that. Maybe one day, but our team would buy a transponder and a toy hauler before a professional telemetry system. The arduino is my own side project just for learning's sake.

Agreed.  That was where I started as well with the arduinos.  But, if you look into
the aggregate cost of the components you will be using,
the value of your time,
the benefits of having a system that has been already debugged so you are not debugging at the race track,
the ability to drive a tablet in the car where you get predictive lap times and instrumentation and warnings
the $400 or so cost of the race capture is very very reasonable.

If you make it to a California race, I'd gladly give you a tour of my system.

Pete

Re: Lemony Cheap DIY Arduino Remote Telemetry

ppressle wrote:

the value of your time,
the benefits of having a system that has been already debugged so you are not debugging at the race track,
the ability to drive a tablet in the car where you get predictive lap times and instrumentation and warnings
the $400 or so cost of the race capture is very very reasonable.

Fair enough, if my team was strongly demanding this I'd consider going pro. At this point, we're happy with some warning lights to supplement our current instrumentation. The remote monitoring is a fun project at this point, but as we continue to race then I could see value in ensuring some reliability. I'll definitely let you know if we're headed west for any races.

Giubo Grabbers #190 - 91 Mercedes 190E 2.6 Auto for silky smooth racing
2016 CMP Fall South "Heroic Fix" Winner

Re: Lemony Cheap DIY Arduino Remote Telemetry

I did the Arduino-based gauge monitor. The Arduino monitors the gauges and voltage (necessary because varying voltage alters gauge sensor voltages). I set high and low safe levels and the driver sees a big red shift light if there is a problem.

It was a lot of work and fun, but Race Monitor might have been a better deal, especially with all the other features they offer.

My next Arduino project - fuel flow monitor. Fuel gauges are nearly useless during a race, so we'll just monitor the actual flow and use that to tell the driver when to pit.

After that, accelerometer inputs, outputs move the rear wing.

Re: Lemony Cheap DIY Arduino Remote Telemetry

Take it from someone who tried to do it "cheap"    You'll likely spend more money trying various things, than you would just buying the race capture pro.

I agree it's better to be self-contained, and not have to rely on somebody else's (cell) data network, but if you want to try it, the biggest problem you will have to overcome is actual data transmission, reliably.    All of the things i tried buying online for serial data options and amplifiers are massively exaggerated as far as usable distance.      i FINALLY got it working, only when i was able to pick up a pair of high-power professional data radios cheap.

When service is available at the track, the cell data method is (probably) way easier.    Get your data transmission system of choice set up and working reliably around the track before you bother with the rest of the system.

Ironic story, the same day i was finally able to get the data transmission working, was the very same day that my module for digitizing and formatting the data for serial transmission crapped out.    I have barely bothered tinkering with it since. although, one of these days.....

good luck!

The Defeat Device - Mid-engine 1979 Chevette - Class C Winner - GP Du Lac Chargoggagoggmanchauggagoggchaubunagungamaugg
New England Long Winter Build Award - 2015
IOE Winner, Loudon Annoying 2011, Judges Choice - Loudon Annoying 2012
Class C & Least Horrible Yank Tank winner - Boston Tow Party & Overhead Cam Bake 2011

Re: Lemony Cheap DIY Arduino Remote Telemetry

eBay seems to be full of dirt cheap Motorola VRM 650 Data MobileRadio - what are these things? Do they have anything to do with what we are talking about here?

Re: Lemony Cheap DIY Arduino Remote Telemetry

m610 wrote:

After that, accelerometer inputs, outputs move the rear wing.

After seeing this clip - https://www.youtube.com/watch?v=-mzk-PnC1DI

I build a lemony ver of this system for my first race using a tilt sensor (accelerometers were expensive in 2011) and an arduino.
The control system worked well but my mechanical system was two Miata headlamp motors TEO gave me actuating pulleys
The pulleys got bound up and things would get out of sync -- eventually binding into high attack/air brake mode.

This is what happens when you have an EE try and build mechanical stuff.
The tbird trunk also weighed 40+ LBs so we pulled the whole mess off the car by noon of that first race..

Myopic Motorsport's #888 Bosozoku Texino Thunderbird (1995 tbird w/ 93 V8 swap + shopping cart rear wing)

19 (edited by gunn 2017-04-24 08:41 AM)

Re: Lemony Cheap DIY Arduino Remote Telemetry

russian wrote:

eBay seems to be full of dirt cheap Motorola VRM 650 Data MobileRadio - what are these things? Do they have anything to do with what we are talking about here?

My 5min of googling leads me to believe these modules are used in cop cars for their limited data networks and and police forces upgrade these networks or pull the systems from dead cars, someone is trying to make a few bucks.

In order to set the frequencies for the radio part of the modem, you need a separate box and to find some software on torrent b/c it's only commercially available from Motorola (no opensource/shareware equivalent)

https://forums.radioreference.com/motor … 650-a.html

RLN4008 - radio interface
https://www.amazon.com/Programming-RIB- … B006JEGGW2


My thoughts:
- Even if you assembled the extra HW/SW, I would want a real radio nerd (not a car nerd who is dabbling in radios) to help me set this stuff up. For example, what frequency would you target?

- It seems like every Sears Point race we go to some dick team steps on a safety/emergency frequency they THOUGHT was available.

- Now the chances of being detected might be lighter since I assume multiple transmitters/receivers can exist on the same frequency, the potential for interference might also be higher if your transmitters interfere with actual cops getting their data. I don't know enough here except that I don't want to find out. If someone tries to make an example of you and finds out that you "hacked" the ebay modem using SW you downloaded from bittorrent (which I wouldn't call hacking but I'm not a cop or a DA), I can only imagine the fallout.

- If you want to do data, go full nerd, get a HAM license, and build out something with a Baofeng radio, an interface cable, and modulation software on your car-based host device to make encode/decode data bits into an audio stream that the baofeng transmits.

http://forum.expeditionportal.com/threa … R-and-APRS

Cable
https://www.amazon.com/APRS-K2-Connecto … B01LMIBAZW

Arduino software
https://github.com/romanz/amodem

Seems to be a gateway to internet connectivity (so the pitcrew base can use your existing smartphone or laptop connected to a WIFI hotspot -- I'm guessing something you already pay for today or know how to setup your phone to act as)
https://www.winlink.org/APRSLink

Myopic Motorsport's #888 Bosozoku Texino Thunderbird (1995 tbird w/ 93 V8 swap + shopping cart rear wing)

Re: Lemony Cheap DIY Arduino Remote Telemetry

ppressle wrote:

the value of your time,

Pfffffff my time is worthless.

Mistake By The Lake Racing (MBTL) https://www.facebook.com/groups/MBTLracing/
88 Thunderbird "What's the word? Thunderbird!", "What's the Price? Thirty Twice!"
A&D: 2014 Sebrings at Sebring (NSF), 2014 NJMP2 Jurassic Park (SpeedyCop), 2012 Summit Point J30 (PiNuts)

21 (edited by Mulry 2017-04-25 08:46 AM)

Re: Lemony Cheap DIY Arduino Remote Telemetry

We've dicked around with this several times. Ultimately, the RaceCapture Pro is the solution we landed on after trying a lot of DIY options. The killer piece is the telemetry connection. If you built a cellular connection to your Arduino and your base station and did the programming to connect and the data to stream, and an interface on the laptop (or tablet, or whatever) to display the data, that could do the trick, but anything else requires a _lot_ of radio work, including potentially a wireless mesh network all the way around the track (which is apparently how they do it for F1 now). I really wanted to get the DIY solution working, but too many of us have day jobs and families to have the dozens-to-hundreds of spare hours required to get this to a reliable solution. IMHO, YMMV, etc., standard disclaimers and text messaging fees may apply.

Pat Mulry, TARP Racing #67
https://youtu.be/qmf9JkedPR8

Mandatory disclaimer: all opinions expressed are mine alone & not those of 24HOL, its mgmt, sponsors, etc.

22 (edited by russian 2017-04-25 02:03 PM)

Re: Lemony Cheap DIY Arduino Remote Telemetry

What about Aerocomm  CL4790? For ~$200 you get you radio serial port (that includes both sides)

Re: Lemony Cheap DIY Arduino Remote Telemetry

I've had a bunch of these on my kitchen counter for over two years: http://modtronix.com/inair4.html
I think LoRa will be the way to go if I can just get a bit of time to hook them up.