Raspberry Pi Work
Ever since the Raspberry Pi became easily accessible for the public,
I had been interested and tinkering with them. I have used my
Raspberry Pi for a wide range of projects. From running a little
web server, to my latest project, creating a car data logging system.
I think the Raspberry Pi has really peaked my interest because it is
something that I can work with hands on, and apply my software
development experience to. Another reason why it had peaked my
interest (and for many others as well), was because it was cheap
and affordable for a college student like me.
Alright, enough about why I like Raspberry Pi's, onto my projects!
Raspberry Pi Car Data Logger
Alright, This project is probably my biggest project undertaken
with a Raspberry Pi, and I am working to develop a data logger for
my car. The project is still in progress, and is not done yet, so I
am going to put what I have done so far here.
Plan
My idea was to use a Raspberry Pi to read engine data from my car,
and store it in a time series data format. I could then use my
experience with R and Shiny to create a web application on a server
to plot and display that data. This would allow me to see trends in my
vehicle's temps, transmission, fuel efficiency, speed, and
overall health.
I decided to use OBD to read those sensors from the engine. When most
people think of OBD, they think Check Engine Light. That is the most
common use of OBD, what it was intended to do, diagnose problems.
However, all cars can also provide some engine sensor data over the OBD
interface as well. Each car varies in what they can provide of course.
My hopes are that I can at the very least get the following from my car:
- Engine RPM
- Engine Temp
- Engine Load
- Speed
- Fuel Status
That's not a lot, is it? I don't think so, but it will give me a good
amount of insight into how my car is performing if I look at the data
in the right ways.
My Hardware
Thankfully, buying electronics as components are not that expensive, so
I think I will get by without spending more than $50 on the project.
So far, this is the list of parts that I have gotten for the project:
- Raspberry Pi (I used a model B rev 2.0)
- 16 GB SD Card
- USB Bluetooth 2.1 Adapter (Asus Model USB-BT211)
- USB Wireless N Adapter (Trendnet Model TEW-648UBM)
- FreedomPop Wireless 4G Hotspot
- Bluetooth OBD Car Adapter (
Model I Got
)
- DS3231 RTC Module (
Model I Got
)
- 3A Car Switch (
Model I Got
)
The reason that I am using an RTC module is because the Pi
will have an unreliable connection to the internet most of the time.
Since I am effectively gathering time series data, the time is going to
be pretty important, and the Pi does not have an internal RTC.
Installing the RTC module will allow me to have reliable clock data.
The 3A car switch is a contraption that I wire to a few of my car's wires
so then the switch can power on the Pi when I turn my car on. Also, when
I turn my car off, the switch stores some extra power in it to allow
the Pi to shutdown properly after the car has been turned off.
This is to find a solution to turn the Pi on and off with my car and
also handle the software safely.
The FreedomPop Wireless hotspot allows my pi to connect to the
internet and then sync the data with a server at home when my Pi shuts
down. Not to advertise, but the reason why I am using FreedomPop is
because I am able to get a free 500MB of wireless data each month. 500MB
is more than enough to send a text file to a server.
Here is a pic of my Rapsberry Pi with all of its components attached to it:
My Progress
I am slightly following the setup of a similar project, which can be
found here.
Before I say anything more, if you have any questions about what I did to
get things working, please send me an email with your questions. I will be
glad to help you out!
I have gotten the Raspbian distribution loaded onto my Pi and installed the
python code from the project that I just mentioned. I then proceeded
to configure the wireless card for the FreedomPop, and got the bluetooth
drivers installed and got all the needed linux packages installed.
Over the last couple weeks, I have been having difficulty with his code working.
I initially thought that his code was not designed for my setup. However,
after quite a bit of investigation, I found that there was additional setup
needed to communicate over bluetooth with the OBD adapter. So, I finally
was able to start to get data out of my car!
Next up, I had written startup and shutdown scripts to startup and
run the scripts automatically, and to shutdown safely. I have also
taken the car switch that I purchased and wired that into my car using
the fuse box just under my dash, and I stashed it into a little
side panel by my feet. I have wired that up to power the wireless
hotspot and the raspberry pi. I have gotten the pi to consistently log
data each time I power the car on, connect to the wifi hotspot, and then
when the car is turned off, it uploads the data to my server.
So the raspberry pi is starting to log lots of data, and now I am at the point
where I need to start analyzing it. However, with school and all going on, the
project has started to move at a much slower pace. Nonetheless, I have started to
write the R web application. You can find its Github
here.
The web app is up and running, but doesnt have much functionality yet..
However, you can find it
here.
That's all the updates that I have for now, check out the list of things below for what's coming next!
What's Next
So things that need to be done next (in order of importance) is:
- Design the Data Filtering/Analyzing System
- Create the Shiny App and R Code