Scooterputer Image

I spend a fair amount of time zipping around town on my scooter, and thought it would be cool to add a voltage monitor to warn when the battery might need recharging. Waiting until the electric starter no longer works is somehow lacking. So after an evening with an Arduino Duemilanove, I had a simple programmable voltage divider with 3 LEDs indicating battery low, good, and charging. Done.

That's when I saw Liquidware's very cool TouchShield Slide OLED display with touch screen. It was telling me it wanted to be on my scooter. It's a bit overkill for just battery status, so I added temperature and time/date readouts. I went to Sparkfun.com and found a DS18B20 temperature sensor and a DS1307 RTC chip. Perfect. Oh wait, what's this...an accelerometer? Sweet! Hey, a GPS chip...

So a few weeks later, here's what my battery voltage indicator is looking like:

Scooterputer Display

You can see in the first photo that the TouchShield display is separated from the Duemilanove / Cell Module / Sensor shields. These are installed "under the hood" of my scooter and provide power and signals to the display module via a standard 8-wire ethernet cable. This keeps the sensors (accelerometer, GPS, cell module, etc.) with the scooter making it functional even without the removable external display, as we'll see later. (NOTE: this photo was taken before the display was fully mounted inside the enclosure, and is shown without the protective rubber boot.)


  • Battery voltage indicator
  • Time and date
  • Temperature
  • Lean gauge with resettable max L-R indicators
  • Current speed
  • Resettable max speed indicator
  • Odometer
  • 2 resettable trip meters
  • Latitude and longitude readouts
  • Compass heading readout
  • GSM/GPRS quad-band cellular module


Visual Schematic

Sensor Shield

The sensors are mounted on a Proto Shield PCB from Ladyada's Adafruit Industries (which is also where I get my Duemilanoves). Most of the wiring was done using 30 gauge Kynar solid wire, with heavier gauge used for some power and ground connections. Good mechanical connections are important considering the shock and vibrations this will be subjected to.

Sensor Shield - Top
Sensor Shield - Top

Sensor Shield - Bottom
Sensor Shield - Bottom

I went with breakout boards for the surface mount chips. They take up a bit more real estate on the PCB but are very easy to solder and save a lot of construction time. Note the DS1307 RTC on the underside...the profile is still low enough to allow the parts to fit nicely in the open space between boards when stacked. I soldered a right-angle pin header directly to the pads of the GPS breakout board, and straight pin headers on the others.

GPS/RTC Breakout
GPS/RTC Breakout

You might be wondering why I even included the RTC chip since time-of-day and date can be gotten from the GPS data. The DS1307 RTC chip also has 56 bytes of non-volatile RAM. I'm using these registers for storing the trip meter and odometer values so they can be restored between power cycles.

The GPS uses pins 0 and 1 for its TxD and RxD signals to communicate to the Duemilanove. The TouchShield Slide also uses these pins for downloading sketches. The "Program Switch" is used to disconnect the TouchShield Slide from these pins when not downloading so they're free for use by the GPS. Fortunately the TouchShield Slide uses pins 2 and 3 during normal operation, which I'm driving with digital I/O pins 4 and 5 on the Duemilanove.

Three devices require serial communications (GPS, TouchShield Slide, and Cell Module), and it was a real challenge getting the Duemilanove to support these at data rates needed for the desired performance. Having the GPS, running at 9600 baud, use the hardware serial port (pins 0 and 1) proved to be the best approach. The TouchShield Slide (19200 baud) and Cell Module (4800 baud) use digital I/O pins, and Mikal Hart's NewSoftSerial library for 'software' interrupt driven serial communications was invaluable in getting these to play nicely together.

The GPS chip is powered by the 3.3v regulator. The 10k resistor and 1N914 diode circuit on the serial RxD line of the chip are used to dampen the 5v signal from the Arduino hardware TxD line used to send data to the chip. When that line is high, the diode doesn't conduct allowing the 10k pull up resistor to apply a 3.3v high to the GPS RxD input. When it's low, the diode conducts and the line sinks through the TxD driver pulling the line down. The .7 volt drop across the diode is still sufficient for a low to be recognized by the GPS RxD input. A schottky diode with a .2v drop might be an improvement here, but the 1N914 seems to work fine. The GPS is rarely receiving data anyways - data is usually sent only one time to initialize the NMEA sentences to be sent, the baud rate, and the update cycle rate.


The TouchShield Slide is mounted on another Proto Shield PCB. The CAT-5 connector is wired to the PCB using solid telephone wire to provide power and ground, and to connect the RxD and TxD signals from the Duemilanove to the display. Another line is brought up to drive the beeper.

Display Shield
/DisplayShield 2

/DisplayShield 3

The display assembly is mounted in an enclosure I found at boxenclosures.com, part #40-12-NO-R-BL. It's a perfect size for the TouchShield Slide, once the inside bosses were removed with a Dremel tool. I cut out an opening for the display/touchscreen using a plastic cutter tool, and added a 1/16" gasket I cut from a sheet of neoprene to seal it.

Box Enclosures also has a nice protective rubber boot for the enclosure, which is shown in the scooter photos below.

Display Enclosure With Gasket
/DisplayShield 5

Cell Module

The SM5100B GSM/GPRS Cell Module just needs a SIM card and antenna. The antenna can be obtained from Sparkfun.com and attaches to the wire with the red cap covering the connector.

Cell Module
Cell Module

The Cell Module shield and Sensor shield plug in to the Duemilanove, stacked one on the other. The Duemilanove is programmed to reply to text messages made to the cell with a return text message containing latitude/longitude data, heading, speed, and a time stamp. The GPS latitude and longitude coordinates can be entered online to see the location on a map, such as using touchmap.com. I can also use this to capture my precise location when riding in an unfamiliar area. One of the spare buttons on the display could be used to tell the Scooterputer to text a cell phone with this information.

The Duemilanove is also programmed to send the text message to my cell phone when it initializes. This serves as kind of a scooter "LoJack". If the scooter is ever borrowed without permission, it will notify me each time it starts, and as long as it is running it can be texted to obtain its present location. Recovery and bad-guy-in-jail are just a text message away. Of course now my wife can text my scooter any time she wants to find out what I'm up to (note to self: add a pass phrase to the incoming message).

I also have it programmed to forward any incoming calls to my personal cell.

The display is not needed for any of these features. Also note that the Cell Module is optional. The Sensor shield can be plugged directly into the Duemilanove if the telecommunication features are not desired.



Very little is needed for calibration. Check out the source code to see how simple it is. Debug #defines are included to selectively send the sensor values to the Arduino serial monitor during operation. The scaling and mapping can then be tweaked as needed while observing the output.

The ranges for the accelerometer readings are easily obtained by analyzing the analog input data. I found full range to be 453 to 580 for both the X and Y axis, which is 127 units with a center around 516. I arbitrarily took 20 off each end and mapped these to -90 to +90 for the Lean Gauge values.

The Lean Gauge display is designed to show the current real time values in bright green, and the max L-R readings are maintained on the background in dark green. These can be reset by pressing the Lean button on the display.

The Battery Voltage Indicator ranges were set by varying the voltage applied from a bench power supply. The top of the indicator is calibrated to 14.0v and the bottom 10.0v, again by mapping the values coming in the analog input to the 0 - 100 range expected by the Battery Voltage Indicator. With a strong battery, at idle the indicator floats within the green zone and at speed it just gets into the orange. When the battery is weak and the indicator falls into the red zone, the red area flashes at a 500 msec rate from bright red to dark red.

Calibrating The Battery Voltage Indicator
Calibrating BVM

The Haversine formula is used to calculate the distance traveled for the odometer and trip meters, using lat/lon data returned from the GPS. This seems to track the odometer on the scooter fairly close as long as I'm not riding in tight circles or zigzags. Since I don't ride while intoxicated, this should work fine for the trip meters but I have my doubts about the long term accuracy for use as an odometer. Time will tell, and I expect I'll be tweaking the algorithm to calibrate for improved accuracy.

As an alternative, I experimented some with a hall-effect sensor triggered by a magnet attached to the wheel. I'm confident this would be very effective as a speedometer and odometer, but have decided to go strictly with the GPS for now. If you're interested, let me know and I can post the hall-effect sensor circuit and sketch. (Update 08/25/2010: added link below to circuit diagram and test sketch)

Source Code and Antipasto IDE

Scooterputer.zip - sketches for Arduino Duemilanove and TouchShield Slide

Liquidware Antipasto - Antipasto Arduino IDE (supports Arduino Duemilanove and TouchShield Slide)

HallEffectSensorTest.zip - circuit and test sketch for Hall Effect sensor


Scooterputer Mounted Under The Hood
Scooter Under Hood 1

Scooterputer Mounted Under The Hood
Scooter Under Hood 2

Scooterputer Display with RAM Mount
Scooter Display RAM Mount

Scooterputer Display
Scooter Display

Scooter Walkaround


www.arduino.cc - start here
www.adafruit.com/ - get lots of great Arduino stuff here. Ladyada rocks!
www.liquidware.com - TouchShield Slide
www.liquidware.com/antipasto_arduino_ide - Antipasto Arduino IDE
www.sparkfun.com - components: accelerometer chip, GPS chip, RTC chip, temperature sensor, cell module, and much more
www.boxenclosures.com/index.html - nice project cases
arduiniana.org - NewSoftSerial and TinyGPS libraries. Mikal rocks too.
itouchmap.com/latlong.html - mapping GPS coordinates
www.hhhh.org/wiml/proj/nmeaxor.html - NMEA sentence checksum calculator
www.movable-type.co.uk/scripts/latlong.html - useful latitude/longitude formulas
www.ram-mount.com - mounting systems for cars, motorcycles, scooters, ATVs, etc.
www.genuinescooters.com - awesome scooters!

Now you can have your own...

Scooterputer & GLCD


Scooter. Motorcycle. Snowmobile. ATV. Boat. E-Bike. Pop this sensor packed shield onto an Arduino microcontroller for a powerful, high tech dash for your ride. Visit the Tech Firma web site to learn more about our Scooterputer Sensor Shield, sunlight readable graphic LCD displays, mobile apps, and more. Open source hardware and software - make it your own!

Scooterputer is a trademark of Tech Firma, LLC

free b2evolution skin


Comment from: sucotronic [Visitor] Email · http://blog.wikifotos.org
Really an amazing project!! This if from far one of the mos complete Arduino projects I've ever seen. If you plan to free the code of your creation I will be interested to see it an learn some useful info for my own projects :D
06/28/10 @ 09:31
Comment from: kschulz [Member]
Thanks for the feedback sucotronic. I have a link to the source code (zip file) in the post, just above the scooter pics.
06/28/10 @ 09:45
Comment from: Monk [Visitor] · http://www.monksvoice.com
Outstanding! Now if I can get my head around that and get my motorcycle speedometer to function.

Well done sir.
06/28/10 @ 16:23
Comment from: kschulz [Member]

Thank you. My scooter is a Buddy International from Genuine Scooters: http://www.genuinescooters.com/
06/28/10 @ 18:06
Comment from: Arutan [Visitor]
It's great !
How graphics is made ?
Are you using an OS ?
Thanks !
06/28/10 @ 19:30
Comment from: John Boxall [Visitor] · http://tronixstuff.wordpress.com
Holy cow, that is amazing. It just goes to show how people can use technology for their own purposes. Amazing! I hope you never need to text your scooter to find it :)
06/28/10 @ 20:10
Comment from: kschulz [Member]
Thanks. The TouchShield Slide supports something called the SubProcessing Graphics API which has primitives for drawing lines, circles, text, etc. I used this API to draw the display.

@John Boxall
Thanks for the comments. And I sure hope I don't either. More likely that I'll find the display gone one day :(. Not that it would do anyone any good. Unless they have an Arduino....
06/28/10 @ 20:59
Comment from: Daniel Hepper [Visitor] Email · http://daniel.hepper.net
Awesome project!

I'm especially interested in the lean gauge, but I wonder if a lean gauge based on an accelerometer gives you correct values. If my understanding of physics is correct, the center of gravity of a two-wheeled vehicle must always be between the weels, otherwise you fall over. After all, that is why you lean in a turn.

In my theory the resulting force should always point more or less in the direction of the wheels. Only if you "hang-off" you like a racer would get a positive lean value and if you "push" the scooter you should even get a negative lean value (to the outside of the turn). I think you would need a gyroscope to get the exact angle of the scooter relative to the road. What are your observations?

I'm asking because I planned to build something similar, but dropped the idea because of this consideration.
06/29/10 @ 04:28
Comment from: Gyzmau [Visitor]
Impressive work!!!
06/29/10 @ 04:59
Comment from: QuantumRift [Visitor]
What was the total cost and time involved in making this project?
06/29/10 @ 09:32
Comment from: Steve [Visitor] Email · http://www.thescooterscoop.com
Dude... I want to buy you a beer... or a coffee, or rootbeer, or something. That is just flat-out phenomenal!

Oh and nice scooter, by the way. ;)
06/29/10 @ 10:10
Comment from: kschulz [Member]
@Daniel Hepper
The Lean Gauge is pretty bouncy right now, and seems overly sensitive. I'll be making software changes to dampen it some. It does register in the turns, but not what I expected and I hope I can make it work better after some tweaking. Ultimately you may be right in that the accelerometer is not the best solution. To be honest my true objective was to get some hands-on with the accelerometer, and not so much to make the perfect Lean Gauge as it's really not so useful.

@Gyzmau - thanks!

I haven't added up the parts cost, but should be easy to do with a run through Adafruit, Liquidware, and Sparkfun web sites where I got most of the components. Putting together the hardware was about 10% of the time - writing the code by far took the most amount of time. Lots of evenings.

Thanks, um, a beer please. Lager or IPA. :-) I checked out thescooterscoop.com - very cool site! Thanks for linking and the write up - I owe you a beer.
06/29/10 @ 16:23
Comment from: Tim [Visitor]
Seriously,I bet you could market these.Patent that now!
06/29/10 @ 16:41
Comment from: kschulz [Member]
Author: jaybuff
Awesome! I can't wait to build one for my vespa.

I had to compute the distance between two points a while back and used the below code. With my GPS it was accurate to about 5 meters and worked in both hemispheres.

#define EARTH_RADIUS 6371.01f
#define DEG_TO_RAD 0.0174532925f

float dist = gcd( flat * DEG_TO_RAD, flon * DEG_TO_RAD, targetLat * DEG_TO_RAD, targetLon * DEG_TO_RAD );

float gcd(float lat_a, float lon_a, float lat_b, float lon_b) {

// haversine formula

// see http://en.wikipedia.org/wiki/Great-circle_distance

float d = 2*asin( sqrt( sq( sin( ( fabs( lat_a - lat_b ) ) / 2 ) ) + cos( lat_a ) * cos( lat_b ) * sq( sin( ( fabs( lon_a - lon_b ) ) / 2 ) ) ) );

return fabs( EARTH_RADIUS * d );

I think your original comment was a casualty of the anti-spam filters - so sorry for that. I've copied the content back here. Your haversine formula is very much like mine. I just need to optimize how often to aggregate position samples to get the most accuracy. Thanks for your comments!
06/29/10 @ 21:36
Comment from: jimmy [Visitor]
man i have a hundred q's for you but does this unit have some type of memory?
06/30/10 @ 18:08
Comment from: kschulz [Member]
@Jose Cora
Good to know I'm on the right track. Thanks.

The DS1307 RTC chip has 56 bytes of non-volatile memory. I'm using some of this to store the odometer and trip meter values. See the specs for the Arduino Duemilanove ATmega328 for on-board FLASH, SRAM, and EEPROM.
06/30/10 @ 18:15
Comment from: hi [Visitor]
visually, it looks pretty nice. congrats.

do you travel with the hood open or not? it may prevent the signal and rain can destroy the circuits.
06/30/10 @ 22:39
Comment from: kschulz [Member]
The hood is always on when I ride, and it keeps everything dry and happy.
06/30/10 @ 22:54
Comment from: Greg Kail [Visitor]
VERY NICE - clean build - nice documentation -- now I want to buy a scooter :-)
07/01/10 @ 11:24
Comment from: axilus [Member] Email
Dude... YOU... ARE... AWESOME. Nuff said.
07/01/10 @ 11:52
Comment from: Nate [Visitor] Email · http://www.badwetherbikers.com
This thing is amazing, do you have a rough estimate of how much it cost to build and how much time you have in it, i wouldn't mind something like this for my motorcycle!

keep up the good work, and ride safe.
07/01/10 @ 20:32
Comment from: kschulz [Member]
@Greg Kail
Thanks! Go get a Genuine Scooter! You won't be disappointed.

Thanks man!

Thank you sir. See my reply to QuantumRift above on the cost and time. Of course you can download my source code as a starting point, so that should save a LOT of time.
07/01/10 @ 22:12
Comment from: lee [Visitor]
any chance of getting it as a kit? send me all the parts and a schematic, i'll build it myself???

good job!!!
07/01/10 @ 22:44
Comment from: Eduardo [Visitor] Email · http://casagimeno.com
Great project!!! I have read some of the code and it is amazing. Just one question. I don't know how you communicate to the LCD. I see you have 2 arduino sketches. How do they combine?
I don't see any import from one to another. You use the TS to send all data to the LCD but when are the graphic libraries used?

Best regards!
07/02/10 @ 04:21
Comment from: kschulz [Member]
All of the parts can be found using the links provided in my post. Adafruit and Sparkfun are where most of the electronic components came from, and you can get the TouchShield Slide display from Liquidware. I've had many requests for a parts list - I will try to post one soon. Thanks for the comment!

One of the cool things about the TouchShield Slide is that it has its own processor dedicated to driving the display. It runs the SubProcessor Graphics API which supports a library of graphic primitives (lines, circles, text....) you can use for drawing, It also supports two serial interfaces - one for downloading sketches and the other for exchanging data with the Arduino.

The Scooterputer_TouchShield sketch I wrote runs on that processor. The Scooterputer_Arduino sketch running on the Duemilanove periodically sends a list of all the sensor data values to the TouchShield Slide using the TS serial interface. The sketch running on the display receives that data and uses the graphics API to translate it to the display.

The Antipasto IDE from Liquidware is needed to develop sketches for both the Arduino and the TouchShield Slide.
07/02/10 @ 07:22
Comment from: Helgi [Visitor]
This is really nice project you've got here. I have an arduino, now I want to buy a scooter. :)
07/03/10 @ 14:08
Comment from: Helgi [Visitor]
I think you could use Gyro made for Radio Control models to measure lean accurately. You'd use the Arduino to give them the 1.5 mS. control signal they need and then measure the length of the output signal, it should vary from 1 to 2 mS. depending on the lean. Here are examples of Gyros.
In USA - http://www3.towerhobbies.com/cgi-bin/wti0001p?&I=LXHHS2&P=ML
In UK - http://www.cmldistribution.co.uk/cml_product.php?productId=0000004625
07/05/10 @ 07:30
Comment from: Helge [Visitor]
I agree with Daniel. You cannot directly measure lean angle using accelerometers, because the centripetal acceleration will accurately cancel the acceleration induced by leaning. You can still test your code by leaning the scooter over while stationary. You could estimate lean angle by measuring vertical (relative to the scooter) acceleration. It will be larger than 1G when going through a corner, but it will be distorted by riding over crests or through dips. You still won't be able to get lean direction, though. Lateral acceleration does occur while the lean angle changes, so with some really clever programming, it might be possible to detect direction by sensing these short bursts of acceleration.
07/05/10 @ 14:12
Comment from: kschulz [Member]
@Helgi @Helge @Daniel
I have to agree with you regarding the problems of using an accelerometer for the lean gauge application. To date I haven't been successful getting the desired results and will be experimenting with a gyro. Thanks for all your input on this - much appreciated.
07/05/10 @ 19:49
Comment from: Honda Express Moped Owner [Visitor] · http://www.HondaExpressMoped.com

Please shoot me e-mail if you are making and selling these. You could make a mean profit.

07/07/10 @ 11:18
That's a really interesting project, which captures a number of things useful on ebikes as well as your scooter. The direct wheel-rotation sensor monitor would be nice to have, though.

Some modifications to the project would make it just about perfect for many ebikes, potentially as a replacement for the Cycle Analyst's display portion, if the Scooterputer could read the CA's logging output and then track/display that data in easy-to-read-on-the-go GUI format.

Most of the data the CA is designed to track is power usage of the bike's traction battery pack, and that would be handy to have some of in a GUI format rather than a text-only display (which is all the CA has).

If reading the CA's data, no external sensor is needed for wheel RPM, as the CA already has that, too.

The CA is made by Grin Technologies, at http://ebikes.ca if you want to take a look at it. Justin there is it's creator, and is very helpful if you had any questions, should you decide to pursue the idea I suggest above.

If you don't pursue it, there are likely a few members of Endless Sphere ebike forum at http://endless-sphere.com/forums/ that would be interested in doing so. That's where I found your project, linked from this thread:
07/09/10 @ 03:10
Comment from: kschulz [Member]
@Honda Express
Adding to 'will buy' list. Thanks for stopping by!

@Michael "Amberwolf" Elliot
Thanks for the info on the eBikes. I read the links and took a look at the CA - all very interesting. With a few modifications I agree the Scooterputer could be a very useful option. I'll definitely be keeping this in mind as I work on the next version. Just waiting on parts to arrive...
07/10/10 @ 09:20
Comment from: rajesh [Visitor] Email
can i know the cost of it?
07/11/10 @ 09:23
Comment from: kschulz [Member]
You can get an idea of the cost by going to Sparkfun, Liquidware, and Adafruit and adding up the prices of the components shown on the schematic. I plan on posting a BOM with $ once I'm satisfied with the final design (is there ever a 'final' design?).

The source has been updated. Fixed: scaling problem with Heading value; improved response of Trip Meter reset button presses; tweaks to accumulated ODO and Trip Meter values. NOTE TO LIQUIDWARE - request enhancement to the touchscreen API. Need function to return touch state (touch / no touch).
07/11/10 @ 11:05
Comment from: Vincent [Visitor]
What'd you use to make that shiny-looking schematic?
07/15/10 @ 10:31
Comment from: kschulz [Member]
I created the schematic using PaintShop Pro, with extensive use of its layer features.
07/15/10 @ 21:46
Comment from: Aaron [Visitor] Email
Excellent project. I'm planning on doing something very similar to this and was looking at pricing. What did you pay for your SIM card? And how much do you pay monthly to keep it working? All I can find are SIM cards that require $15/month minumum usage to maintain service. I won't be using the telecommunication feature this much, but is essential.

Answers appreciated.
07/20/10 @ 13:14
Comment from: kschulz [Member]
The best deals I've seen for pre-paid SIM cards are on Amazon or eBay for ~$25/90 days, no minimum usage. Try searching for something like "pre-paid AT&T SIM card GPS trackers". Hope this helps, and thanks for the feedback.
07/20/10 @ 20:12
Comment from: Sasha [Visitor] · http://www.flickr.com/photos/fibra
Hi Kurt. Very nice project that looks great too!
I really like protected display enclosure and the idea to separate display from the rest of electronics that keeps working without it.
What is the current draw in standby mode, without display?
I would also protect the electronics from the moisture too. Very important if you catch some rain from time to time.
What are your future plans for this project?
07/29/10 @ 04:26
Comment from: Stan [Visitor]

I got very excited when I saw your project. I am a scooter enthusiast (Yamaha Zuma) and I am currently doing some performance upgrades on my scoot. I am going to add tachometer and a cylinder temperature gauge. When I saw your project, I thought it might be possible to replace my dashboard entirely.

You seem to have a good knowledge of both scooters and electronics, so I would like to ask you if you considered using the speedometer and odometer of your scooter, which I believe are mechanical, instead of using GPS?
07/29/10 @ 11:39
Comment from: kschulz [Member]
Thanks for the comments. Currently I'm refining this prototype design, adding features based on feedback I've received and steering it towards a more economical and manufacturable offering. I'll post more on this later, including more detailed specifications (such as power requirements).

Thanks for the great feedback. The problem with mechanical speedos on scooters (and I understand the same is true with motorcycles) is that they're notoriously inaccurate. The indicated speed is always higher than actual, sometimes by as much as 15%. I've read (but not confirmed) that this is done intentionally - reportedly some studies have shown it reduces accident rates. Don't actually know if any of this is true, but nonetheless I'd like to know what my true speed is. BTW, the new design will have inputs for a hall effect sensor to use for Speed, ODO, and Trips as an alternative to the GPS. Also adding a tach.
07/29/10 @ 14:26
Comment from: Stan [Visitor]
Hi Kurt,
Thanks for the reply.
Tach and Speedo will be great!
As for the accuracy of speed, you are right; the manufacturers are required to be in the 10% tolerance and everyone bumps up their gauges. My scooter's (Yamaha Zuma) speedo, curiously, was almost 100% in sync with a GPS speedo I used to compare the reported speed.
I think as an alternative to Hall Effect sensor you might use a magnet sensor; TrailTech has some (http://trailtech.net/vapor_vector_speed_sensors.html) -- I will be installing one soon.

Your project is truly great, and I am tempted to try to build the scooterputer (catchy name, too!) myself, even I have only used the soldering gun to patch wires.
07/30/10 @ 23:23
Comment from: kschulz [Member]
I've heard of another reason speedos indicate high, which I believe makes some sense - apparently the DOT imposes heavy fines on imports whose indicated speed reads below actual, but they allow a certain percentage over. So 2-wheel manufacturers intentionally design their speedos to be optimistic (high) to reduce the risk of getting hit with penalty fees.

Regarding the magnet sensor, you're absolutely right. The hall effect sensor IS essentially a magnet sensor - it varies its output voltage in response to changes in magnetic field (i.e. a magnet mounted someplace on the wheel passing by it). It's what TrailTech and Acewell use. Time to get that soldering iron heated up! ;-)
07/31/10 @ 00:48
Comment from: Stan [Visitor]
Do you know how tachometer works? Does the sensor's output voltage increase with the RPMs, or there is a high-speed counter that counts the impulses in given interval?
08/02/10 @ 16:16
Comment from: kschulz [Member]
Both methods are used, depending on the sensor interface. One method involves detecting ignition pulses - either inductively coupled into a sensor wire or by tapping into the low voltage side of the ignition coil (or CDI). The pulses are then conditioned and fed into a digital input and counted within a known time period. Another approach feeds the ignition pulses into a freq-to-voltage converter, such as an LM2907, whose output can be monitored via an analog input. Of course there are even more techniques, such as using Hall Effect sensors or reed switches to count rotations, etc, but I believe these are the most common.
08/02/10 @ 18:05
Comment from: Stan [Visitor]
How do you plan to implement yours?
08/06/10 @ 16:15
Comment from: kschulz [Member]
I'm experimenting with a circuit that picks up ignition pulses from the 12v power main. It seems to be working well with my scoot, but needs to be tested on a lot more from different manufacturers - especially 2-cycle and multi-cylinder engines. I'm hoping this method proves to be reliable, since it avoids having to run a separate sensor wire.
08/07/10 @ 14:01
Comment from: Stan [Visitor]
I installed the tach sensor from Trail Tech. It is a wire that you loop several times over the spark plug cable, after the ignition coil. The computer has an input for rotations per pulse, with values of 0.5 (single 4t), 1 (single 2t or dual 4t), or 2 (4x4t).
08/13/10 @ 01:43
Comment from: Stone_Nomad [Visitor]
I'm new to Arduinos and am Curious about how you have the DS1307 attached. Your schematic has it attached to Analog In 4 and 5 though I though you would need to have serial digital communication with this chip.
08/14/10 @ 12:58
Comment from: kschulz [Member]
The analog pins can be configured as digital I/O. Arduino has a library called Wire that implements the I2C protocol used to talk to the DS1307. Wire uses analog pin 4 for the Serial Data (SDA) connection and analog pin 5 for the Serial Clock (SCL) connection: http://www.arduino.cc/en/Reference/Wire
08/14/10 @ 23:29
Comment from: Stone_Nomad [Visitor]
Very good to know. Thanks for clearing that up for me.
08/15/10 @ 06:48
Comment from: GeirA [Visitor]
Very professinal looking project!!

I have a question about the gps receiver. Do you get a good reception from the antenna inside the "body" of the vehicle, or do you have an external antenna as well?
08/17/10 @ 08:41
Comment from: kschulz [Member]
Actually I've been amazed at how well this GPS receiver works, and how quickly it acquires, using only the built-in antenna. I've had no problems using it indoors or under the hood of my scooter. I tried a smaller unit (SUP500F) and found it does not perform nearly as well as the Locosys LS20031.
08/17/10 @ 08:53
Comment from: elia [Visitor]
Hi Kurt,

Great project!
you mention you can post the sketch and circuit for your hall sensor odometer/speedometer, can I have a copy please?

08/19/10 @ 09:19
Comment from: gclaudiu [Visitor] Email
Great job!!!!

I love the the display part. I'm workig on something similar but using 4D Systems (uLCD 32 PT) which is much cheaper solution. Anyway, my display is "connecting" through a wireless serial conn (xBee) to a 4WD robotic platform and should do almost the same things with yours + control the direction and sending back various commands for navigation, etc. I'm also using almost the same stuff like you did (accel, gps, etc)but entire project is custom made: shields, microcontroller, etc.

Anyway, great job! Very nice and well presented tutorial! Your project is really a great source of inspiration for me ^_^
08/20/10 @ 03:05
Comment from: kschulz [Member]
Thank you. I'm going out of town now for the weekend - a scooter rally :-) - but I'll send you the Hall Effect sensor info when I get back.

Thanks for the comments! Sounds like a great project you've got going, very cool. Good luck with it!
08/20/10 @ 08:51
Comment from: Desso B Suryo [Visitor]
Please sign me on your "will buy" list.
Great project.

Send me email desso@bintoro.net or dessobs@gmail.com

08/22/10 @ 12:08
Comment from: Ashok Kumar [Visitor] · http://www.zebrosindia.com
Extremely Superb concept...

Zebros India

08/23/10 @ 08:02
Comment from: kschulz [Member]
@Desso B Suryo
Thanks man. I'll definitely notify you when the new design is complete.

@Ashok Kumar
Thanks for the feedback!
08/24/10 @ 13:33
Comment from: kschulz [Member]
Added link to the Hall Effect sensor circuit and test sketch under the Source Code And Antipasto IDE section. The sensor is connected to digital pin 3 which supports interrupts. I'm using an Electrosport Industries Acewell Universal Speed Sensor Cable.
08/25/10 @ 13:09
Comment from: elia [Visitor]

Thank you for sharing you work and for the hall effect post!

09/07/10 @ 16:29
Comment from: Gianluca [Visitor] Email

Reading your source I was able to understand most of what I did in my solitary experiments. You are my hero!

I'm starting now (Arduino & TouchSlide).
I would like let me ask you a question while I understand that the level is too advanced for me: how can I disable the event handler of a button?

I want to get an "multi pages" interface.
In a barbaric manner i can move buttons "out of the screen" but I'd like to understand how to use only what I need on every screen.

I realize that I'm trying to learn starting from the wrong side, I trust in your mercy:-D
For me is useful a basic indication too.

I will estimate you anyway!!!

P.S. excuse my English :-D :-D
09/09/10 @ 18:11
Comment from: kschulz [Member]
Thank you, my friend! If I understand your question, one thing you could do is change the button handler depending on which screen the user is viewing. Buttons are instantiated in the "Screen Objects" section of the code. The event handler could be temporarily disabled by changing the ButtonObj *MouseHandler( ) member to point to a null or empty function, and reset it back to the valid handler based on the current screen. Or possibly leave the existing handlers in place but check which screen is being viewed at the beginning of each handler and return immediately if no action is desired. These assume of course that you add some way to keep track of the screen being viewed, and you'll probably want something like separate DrawScreenABC( ) and DrawScreenXYZ( ) functions. Thanks again and good luck with your project!
09/10/10 @ 17:52
Comment from: ian [Visitor]
Hello i just want to ask if you are using the gps to get the mph?

and what if i want to the mph to get the readings from the speed sensor that built in the scooter and to add tachometer function to it?
09/15/10 @ 12:07
Comment from: kschulz [Member]
Yes, I'm getting the MPH from the GPS data. I haven't looked at how to interface to the speed sensor built in to the scooter. I would imagine that varies across various models of scooters. As noted in earlier posts, I've added a hall effect sensor that detects a magnet attached to the wheel, counting pulses to calculate MPH and miles traveled, which is a very common method. I've also added an ignition pulse detection circuit to get RPMs. I'll be posting on this new version soon - just waiting on PC boards.
09/15/10 @ 20:45
Comment from: kschulz [Member]
I actually like the paint job on your Vespa. I hope you get the engine running again soon. Good luck with it!
09/15/10 @ 20:51
Comment from: ian [Visitor]
Thanks.... Bro..
09/17/10 @ 20:51
Comment from: Neoxy [Visitor]
This is the best project I have ever seen anywhere around. Andd I saw allot of them :) Great JOB
09/28/10 @ 07:14
Comment from: kschulz [Member]
09/28/10 @ 13:05
Comment from: Jemmicat [Visitor]
What cell service did you use for the cell module? I've got Verizon cirrently so no SIM card and am doing something very similar but for full on Motorcycle use incorporating a gyro, LVT for suspension, AF meter, etc. I am going to use a cell module similar to how you did but I am looking for a pay as you go type plan just for texts and not really finding a lot of plans just for that
09/30/10 @ 06:59
Comment from: kschulz [Member]
Right now I'm using a SIM card from a phone I had through my cell provider. This was part of a famiily plan I still have which keeps the SIM active. The best deals I've seen for pre-paid SIM cards are on Amazon or eBay for ~$25/90 days, no minimum usage. Try searching for something like "pre-paid AT&T SIM card GPS trackers". Hope this helps, and thanks for the feedback.
09/30/10 @ 08:22
Comment from: quantumrift [Member] Email
Is this something you could incorporate into the design?


I'm really interested in displaying lean angle as well....and I have a Burgman AN650.

01/06/11 @ 15:04
Comment from: kschulz [Member]
Interesting gyro - I like the idea of two sensitivities for faster and slower motions. Not exactly sure how to get an accurate instantaneous lean angle from a motion rate value...might have to get one of these to play with.
01/07/11 @ 15:13
Comment from: visual micro [Member] Email
Really great project thanks. Would it be possible to have the TimedAction.h? It isn't in the zips

02/12/11 @ 15:18
Comment from: visual micro [Member] Email
Oh! Pls ignore my request for TimedAction. I didn't realise it was a std lib. Thanks again.
02/12/11 @ 15:43
Comment from: Nick [Member] Email · http://blog.dotnick.org
Congratulations! This looks really cool.
09/08/11 @ 12:39
Comment from: rany [Member] Email
Great IDEA Superb project ... Many thanks for sharing this information with us...

07/27/12 @ 07:16
Comment from: giliep [Member] Email

It's a great project to see. And it looks like your a very skillful person. I have a question about the sm5100b module. Did it get stuck when you cranked your scooter? if it did how did you fix it? Right now my module is connected to the radio power which disconnect when i start the car. And the the sm5100b just don't react. Even if I reset the arduino and sm5100b then i don't get any response. Only before i start the car it is working properly. I would appreciate your help very much.
08/27/13 @ 06:32
Comment from: dadanos [Member] Email
First of all, Gongratulations for your amazing project.
I won't lie i want to copy your design. So there is any change to make a simple list with the models (modules only) you have been using?
09/23/13 @ 05:19
Comment from: dj_garfield [Member] Email
Hy Kurtz , first of All : Great respect for this kind of innovation :) I see that the beginning of this project is pretty old , but I would like to know if there is some update about lean gauge and odo accuracy ?
I have some other question , regarding the choice of the TFT touch shield used in this project .
I really like to do the same for my Old van : Renault Trafic from 1986 to give it a "new Tech Life" , because the tachymeter and RPM indicator are out of service , I have some knowledges about Arduino ( Freeduino , Duemilanove ), I found many project that are nice but your project is the most accurate I found on the net , so I would like to "copy" it If I have the right to :)

First Question : ( I can't find anywhere The TFT touch shield used here => product discontinued :( ) ) can I use some other TFT display to swap with the one you put on your project ? ( 'cause I see some others but with a number of pin used witch is not compliant with the circuit you bought ) ?
Second question : could you please show me the variant of the Odo measurement with Hall effect capture ? ( I would like to use the old dashboard speedometer cable with encoded disc with 4 magnet 45° separated If you see what It should mean :) , I think 4 informations for a complete wheel rotation is accurate enough let me know if I'm right or not :) )

I would like to include motor RPM indicator on the display , and add a number for speedometer and max speed indicator ( a van can drive over 99km/h :) ), is it easy to include these informations in the code / Display of your project ?

At this time I am in stand by with your project bacause I don't know if I can use another TFT Display . So I'm waiting for your answer , you can also send me all informations by mail .

I thank you very much , and big up for your project , even I cannot do the same , I better see how I can draw my project after reading all of your pages :)
12/04/13 @ 20:17
Comment from: kschulz [Member]
@dj_garfield - thank you for the great comments. The Liquidware web site is still showing the TouchShield Slide display. It looks as if perhaps they ran out of stock, but they are taking pre-orders: www.liquidware.com/shop/show/TSL/TouchShield+Slide+

I found that TFT and OLED color displays are not very readable in bright light, so I designed my own display using a sunlight readable monochrome LCD. I really like the transflective LCD display for outdoor use, such as on my scooter. It does not use a touchscreen like the TouchShield Slide; instead it uses 2 large silicon buttons for screen navigation and selections.

I sent you an email with datasheets for Scooterputer, the GLCD displays, and an optional Bluetooth Module. The datasheets have information on using a Hall Effect sensor for speed and distance, as well as an ignition-pulse-detection circuit for obtaining RPM. Good luck!
12/04/13 @ 21:45
Comment from: dj_garfield [Member] Email
Great ! And Thank you very much , I'll take a look at Liquidware for preorder for this kind of LCD display . As I wrote , I will use your project for my car dashboard like you make your project , because my programation skill is not the best we can find , this is the reason why I'm trying to find exactly the same shields or component you put on this project .
I really don't know if I'll include the 3 axis accelerometer , the idea is to have perhaps an Azimut indication to know if my van can climb , or a height indicator under the middle of the van to know if I can take a "stony" way or not depending of the height of any stone on the way , if you can undestand what I mean :) ( my english is pretty poor , sorry :) ).
So if I have correctly read your post , you have replace the color display by a monochrome one , it's sure that a scooter ( or a bike ), dashboard is under the sunlight , and (like a smartphone is same case) not readable at all , but I think the color display will be readable into the van because I will put this project directly into the old dashboard enclosure , with some other parts ( LED , another LCD display for other engine informations ), and perhaps there will be 2 Atmega 328 into this dashboard ( I design my own PCB @ home ), I have more space to include such project into a car dashboard .I allready made a transistor-based Ignition command and in case of I have include an external connector from the ruptor information to capture ignition-pulse informations :)

Be sure that I will not Forget to give you the link where I'll put some webpages about this project :)
I stay tuned with you :) and again thank you for the TONE of information you give to me :) I'm not a scooter Rider but a bike rider ( a 1989 Kawasaki 750 ZXR Stinger ).
12/05/13 @ 12:09
Comment from: dj_garfield [Member] Email
OMG , $174 for the display ... I think I will try with another one , for above $180 I found a dashboard Ready-to-use ... I like colors but a t this price the yellow should tinted with gold dust ! I think I'll try with 2 ATMEGA and 2 Color display cheaper and a little bit smaller , never mind I'll find the right "compromis" bitween price and design :)
12/05/13 @ 12:41
Comment from: dj_garfield [Member] Email
I find a little trick that should be usefull for update your project : Linking the Sheilds and the display without cables ... If you never though about this solution this might be helpfull :
From SparkFun on a french hobbyist website


Datasheets from sparkfun .

12/05/13 @ 12:53
Comment from: denissato [Member] Email
Great job, man! I am a veterinarian from Brazil working with sensors arduino based to use in farms. I will try assembly this project. Thank you very much for sharing!
11/12/14 @ 16:55
this is excellent work! I think you would benefit from creating a PCB for this. Try using Eagle and creating one. Arduino shields are great but at one point, a PCB is more elegant.

Good luck!
12/24/14 @ 21:33
Comment from: kschulz [Member]
Thanks Jason! I have a Scooterputer PCB available now at www.techfirma.com. Also have sunlight-readable graphic displays. Both created using Eagle CAD.
12/24/14 @ 23:00
Comment from: luisfrances [Member] Email
Hi Jason! Need help from anyone! I have an Arduino Uno and want to build a simple lean angle sensor for lighting fog lights when i lean the bike while traveling, and in situations like roundabouts at night. Please help. Thank you very much. I will buy 9DOF platform. Missing the rest. Regards!
07/20/15 @ 12:17
Comment from: smilem [Member] Email
Best arduino article with pictures and all.
I'm looking for battery voltage, capacity monitor.

Author has contact webform disabled.
Perhaps he can do tutorial on this?

There are 2 ways to solve this:

1.With constant load like this:

2.With shunt like this:

A nice article would really be appreciated guys !
12/06/15 @ 11:33
Comment from: lalitntaparia [Member] Email · http://phoneholder.co
Too Good. Use of a car mount is awesome here. There are many car mounts like phone holder for car vent, Steering phone holder and windshiekd phone holder are available. Which one to use here.
04/25/16 @ 08:21
Comment from: sformal [Member] Email
Techfirma should make a simplified version with only the RPM and voltage sensors.

All other stuff are included in an Android phone if there is no need for tracking...

Do you have the diagram of just the RPM sensor?

05/03/16 @ 00:50
Comment from: kschulz [Member]
@sformal Thanks for the suggestion. The schematic can be downloaded from our web site on the Downloads page. The RPM sensor section is identified on the schematic.
05/03/16 @ 21:37

Comments are not allowed from anonymous visitors.