- Feb 6, 2013: Featured on GeoAwesomeness http://geoawesomeness.com/?p=3388
- Nov 24, 2012: Featured on Hackaday http://goo.gl/XX9oy
- Nov 21, 2012: Featured by John Boxall @ Freetronics http://goo.gl/OvnNC
- Nov 20, 2012: Featured on Dangerous Prototypes http://goo.gl/ve6Eu
INTRODUCTION
I thought it would be educational to build a prototype that I can take on the road to log, geo-tag, and time-stamp sensor data to be analyzed later with mapping and/or data analysis applications. So I figured why not start with a gadget that can log road conditions. This prototype, the Bump-O-Meter, measures road conditions by using an Arduino, a GPS receiver, an SD card, and an accelerometer sensor.
This prototype is a generic sensor logging/geo-tagging gadget which means the accelerometer can be replaced with any other sensor(s) to log and map anything anywhere.
As a matter or fact my next adventure with this logger is to replace the accelerometer with a pollution sensor to visualize levels of air quality around town.
PROJECT SECTIONS
This guide is divided into the following sections:
- Overview & Background
- Hardware & Software Components
- Wiring the Prototype
- Logging data to the LC STUDIO SD Card
- Geo-Tagging & Time-Stamping With the LS20031 GPS Receiver
- Measuring Road Condition with an ADXL335 Accelerometer
- PROGRAM: The Arduino Program That Pulls It All Together
- PROGRAM: A Plain GPS Logger To Interface With Google Earth
- Scrubbing & Formatting Data with a Spreadsheet
- Plotting and Color-coding Road Condition Data with GPSvisualizer.com
- Formatting GPS Date/time Output For Stamping Data
- Speed vs. Logging Accuracy
PROJECT OVERVIEW
The Bump-O-Meter uses an Arduino to capture the X,Y,Z motion data generated by the ADXL335 accelerometer. In this case, we are measuring road "shakiness" as a result of road condition. Poor road conditions and uneven road surfaces generate lots of sudden acceleration in the car body up and down (z-axis). But before this data is saved to the SD card, it's tagged with location information from the LS20031 GPS receiver and also date/time stamped in real-time using the GPS satellites' atomic clock. More on this later.
We want to capture and analyze the z-axis acceleration information visually to determine which road stretches are poorer and need attention. We can repeat this and compare our data over time. The possibilities are endless. Not just for road condition scanning, but for any sort of environmental geo data logging.
HOW TO USE
We can use this gadget by placing it in a car and driving over a given road stretch to assess its condition. We can even attach this prototype to a bike or skateboard to identify irregular and rough stretches of tracks.
We can substitute the ADXL335 accelerometer sensor with any other sensor(s) such as temperature or pollution sensors with simple code modification.
The data on the SD card can then be imported it into a spreadsheet for scrubbing, sub-setting, reformatting, analysis, and visualizing.
We will also make use of a wonderful website GPSvisualizer.com to plot our data over a map using intelligent markers that change shape and color according to magnitude of road shakiness so we can visually detect road conditions in need of further inspection.
I have published a guide titled "Connect your LS20031 GPS receiver to Google Earth via PC" explaining how to configure the LS20031 GPS receiver. You can refer to it for more details on how to use the LS20031 GPS receiver.
HARDWARE & SOFTWARE COMPONENTS
HARDWARE
- Arduino Uno or Leonardo*: $25 (Arduino.cc, Seeedstudio.com)
- LS20031 GPS receiver: $50 (Ebay, Pololu, Adafruit, Sparkfun)
- ADXL335 or ADXL345 Accelerometer (or any other sensor): $7 (Ebay.com)
- SN74AHC125 as level shifter from 5V to 3.3V**: $1 (Mouser.com, Futurlec.com)
- SD reader socket. The LC STUDIO: $2.50 (Ebay.com)
- SD memory card. $5 for 4GB.
- LED: $0.1
- Resistor 1K Ohm: $0.1
- Breadboard: $5
- Jumper wires: $2
- Male headers 2.45mm (0.1") - straight and right angle: $1 (Ebay.com)
- Any battery or power source that can provide 7-12V and a minimum of 500mA.
* I have not tried this prototype with the Arduino Leonardo because of some known issues with the SD library . But according to the release notes of the Arduino IDE 1.02 software these issues have been addressed.
** In the future, I am phasing out the SN74AHC125 level-shifter (5V to 3.3V converter) in favor of the CD4050BE HEX Non-Inverting Buffer/Converter simply because it's more readily and cheaply available on Ebay.com. I purchased 10 ICs for $4.0. That's $0.4 per IC. The CD4050 is not pin compatible with the SN74AHC125 but there are plenty of examples on the net.
SOFTWARE
- Arduino IDE 1.02
- MiniGPS 1.4: This is a nifty utility to configure the LS20031 GPS receiver.
- GPSvisualizer.com: This amazing website will help us plot logged sensor data along with the GPS coordinates using color schemes to indicate road conditions.
- MS Excel or comparable spreadsheet: We will use a spreadsheet to scrub the logged data, to remove any garbage, to make sub-selections of our logged, and to format it in a manner that can be read by other applications and websites such as GPSvisualizer.com and Google Earth.
- SD Arduino library (bundled with Arduino IDE)
VIDEO OF IMPORTING/REFORMATTING LOG FILE
DISCLAIMER
This is a prototype and prototypes by definition are drafts of products not finished yet. Your feedback is appreciated.
CONTACT
Hazim Bitar (techbitar)
techbitar at gmail dot com
Remove these ads by
Signing UpStep 1: Wiring the Geo-logger
GND GND rail of the breadboard (usually the blue row)
5V To 5V VIN of the SD card
3.3V To the positive rail (red-lined row) of the breadboard
PIN13 PIN5 (2A) of the SN74AHC125 IC
PIN12 SD MISO PIN
PIN11 PIN2 (1A) of the SN74AHC125 IC
PIN8 LED POSITIVE
PIN4 PIN12 (4A) of the SN74AHC125 IC
PIN1(TX) PIN9 (3A) of the SN74AHC125 IC
PIN0(RX) PIN TX of the LS20031 GPS Receiver
ANALOG0 PIN X of the ADXL335 (or any analog sensor output)
ANALOG1 PIN Y of the ADXL335 (or any analog sensor output)
ANALOG2 PIN Z of the ADXL335 (or any analog sensor output)
GND (bottom) GND rail bottom of the breadboard
WIRING THE SN74AHC125 IC
PIN1 (10E) GND rail of breadboard
PIN2 (1A) Arduino PIN11
PIN3 (1Y) SD MOSI PIN
PIN4 (20E) GND rail of breadboard
PIN5 (2A) Arduino PIN13
PIN6 (2Y) SD SCK PIN
PIN7 GND GND rail of breadboard
PIN9 (3A) Arduino TX PIN1
PIN8 (3Y) GPS RX PIN
PIN10 (30E) GND rail of breadboard
PIN12 (4A) Arduino PIN4
PIN11 (4Y) SD CS PIN
PIN13 (40E) GND rail of breadboard
PIN14 (VCC) Arduino 3.3V pin
WIRING THE SD CARD SOCKET
GND GND rail of breadboard
3.3V No connection
5V Arduino 5V pin
CS PIN11 (4Y) of the SN74AHC125 IC
MOSI PIN3 (1Y) of the SN74AHC125 IC
SCK PIN6 (2Y) of the SN74AHC125 IC
MISO Arduino PIN12
GND GND rail of breadboard
WIRING THE LS20031 GPS RECEIVER
GND GND rail of breadboard
GND GND rail of breadboard
TX Arduino PIN0 (RX)
RX PIN8 (3Y) of the SN74AHC125 IC
VCC 3.3V rail of the breadboard
WIRING THE ADXL335 ACCELEROMETER
GND GND rail of breadboard
Z Arduino ANALOG2
Y Arduino ANALOG1
X Arduino ANALOG0
3.3V 3.3V rail of breadboard
ST No connection.













































Visit Our Store »
Go Pro Today »




Can I power the SD card via a 3.3V output of the SN74AHC125? I just have the SD socket and have got all components except the LM1117 to build a circuit like the LC STUDIO.
Also ask why? If the arduino's 5V socket can hold 500mA shouldn't I be able to connect this socket to the shield's 5V socket directly?
Can any one help me !!!
SN74AHCT1G32DCKR 2 input OR Gate tsop-5 <--- is this IC are allowed to use? i find it hard to find the IC SN74AHC125 as level shifter from 5V to 3.3V
or do you have any alternatives?
I just ordered all the hardware for this project, and I should be beginning it some time next week. I just had a question. Obviously all of these components would need to be powered up whilst in car data collecting while driving, so would one of these do the job: http://www.radioshack.com/product/index.jsp?productId=3802146 . Also, I got this for the 'in-home' programming and construction of the actual project: https://www.sparkfun.com/products/9442? ..... Do you think that'll be good as well? I would assume so.
Input Voltage (recommended) 7-12V
Input Voltage (limits) 6-20V
As for current, I have tested my Bump-O-Meter with a USB connection which provides 5V and up to 0.5A. I did not run into any issues but I did not perform any exhaustive tests.
While driving around in my car, I powered the Arduino Uno via the DC plug using a battery brick made of 6 X 1.2V (NiMh) = 7.2V @ 2A. That voltage is close to the minimum recommended voltage. It worked but of course the moment the battery dropped to 6V and below I am sure I would have ran into all sorts of issues.
If I go production with this, I would use a 3S LiPo for a cool 11.1 Volts and 1.5A or 2A current for safety margin in case I need to add additional power hungry gizmos to the bump-o-meter.
Check you choices of power supplies against the min/max voltage specs and add a comfortable margin to the current with an eye on your future plans. then decide what fits your requirements best.
GOD bless thank you :)
1. am i away from the garage?
2. if so, am i moving?
3. if moving, who is driving me?
And the rest can be worked out offline. Any ideas?
Nice, useful instructible. I'm going to find this very useful for mapping potholes here in Mumbai, India.
Anool
PS: check for a mail from me in your Inbox regarding this project.
http://faz-voce-mesmo.blogspot.pt/2012/11/solidoodle-mindsets-e-muito-mais.html