Introduction: GPS Speedometer
My company car that I normally drive tends to have a "small" problems from time to time, the speedometer fall to 0 Km/h when driving (after some time it resumes again).
Normally this is not a big issue since if you know how to drive a car, you are not, I hope, always looking to the speedometer. You now more or less the speed that you are driving. The problem present it self when you need to decrease speed to the road limit that you are entering and you notice that "the speedometer is down".
This presented like a good opportunity to build a new project, "The GPS Speedometer". Of course the ideal solution would be, really repair the car or use a normal GPS or use an app with this function but what would be the fun in this :)
Step 1: Components
Microcontroller
I selected theDFRobot Dreamer Nano V4.1 because it has a usb plug that I can use for power and a compatible breadboard pinout.
Check DFRobot wiki page for more info regarding this microcontroller
GPS
I'm using the UBX-G7020-KT, that comes with an integrated antenna and allows to change the refresh rate until 10Hz(for this project this featuring can came in hand).
On the DFRobot wiki page you will find more info regarding it.
Display
I wanted to have a good display without "blowing" the budget, my choose was the OLED 2828 Display Module. Check again the wiki page for some more info.
Power
The power for the system will be provided by the car cigarette lighter socket.
Casing
This time I when for designing a casing and 3D printing it.
Step 2: Connect the Components
The design with the LED's was not my first choice. So initially I designed the schematic without LED's
But in the end I added 10 LED's (7 Green and 3 Red's).
I forgot to take some pictures of the assembly process, so what I can say is that everything is assembled in the prefboard, in one side is the oled display and in the other the microcontroller and connections. In order to make this easy leave the oled display for last since some of the connections will be done on its back.
Step 3: Code
In order to run the code you will need to have installed the following library 's in your Arduino Library Folder.
U8glib - For the oled display.
TinyGps++ - For the GPS.
The code is "printing" the speed, course, number of satellites, latitude and longitude.
But it is possible to display much more information, ex.: time, date, distance to point...
Check the full example of the TinyGPS++ library to see all available options that you can have regarding the information retrieved by the GPS.
The other featuring is the LED's bar. I've set it up for a max. of 190Km/h. I live in Germany and some of the highways do not have limits, if not, I would place +/- the maximum road limit available. Simply change the limit in the "map" function to the one that fits your needs.
Attachments
Step 4: Conclusion
I still relatively new in the 3D printing word, so it is natural that my prints do not come perfect :)
In general I can not complain but I still have a lot to improve on this area. The back plate currently is not fixing go good as in the beginning, so some more design updates will be needed.
Also I left out the GPS antenna in the back plate, thing that I will not do in the next design. The course display also did not work so well, but this was only to a little detail. In the future I'm planning to replace with something more useful, ex.: time of arrival to a point (size the majority of my trips are going back and forward).
Fell free to comment or send me a message if you found any mistake or if you have any suggestion/improvement or questions.
"Do not get bored, do something".
P.S.: If you like this project, do not forget to leave your vote for the contests I'm running.

Participated in the
GIFs Challenge 2017

Participated in the
Plastics Contest
33 Comments
7 months ago
Hey just wanted to say great project! However, how would I try to use a bigger screen for this setup? Does the screen just need to have the same pinout and support I2C or SPI?
1 year ago
Здравствуйте я с ардуино столкнулся второй раз в жизни. Но очень хочется сделать такой спидометр. Панель спидометра будет выглядеть так. По середине дисплей, а на каждом десятке скоростей будет светодиод 10 км.ч,20км.ч и так далее. До 130.кто может помочь со схемой и скетчем?
Question 3 years ago on Step 4
Hi,
I want to Make a GPS Speedometer and i saw your article.
But i have a few questions, i want to make mine a bit cheaper than yours. So i have found Some other components/ modules.
My question: Will they work fine? Also at 5/10 Hz
Arduino Nano 3.0
UAV GPS dual modus
My second question:
How to change the refresh rate of a gps module?
Greetings from the netherlands
Arjan
4 years ago
Hi l love your work
1 question
just wondering if you could assist by modification of code to allow the data to be provided as serial input from a third party device serial output and therefore do away with the gps module related coding and hardware all together.
looking forward to your reply, i am contactable via email raiola@ozemail.com.au
Question 4 years ago
Hey great work with this project.
My question is how do you change the LED's to light up at a specific speed? That is 1 LED comes on at say 30 km/h, the other at 40 km/h and so on. looking forward to your response.
4 years ago
Hello my friend.
Thank you for sharing with us.
I would like to ask you:
Would it be a problem to you, if i modify your source to fit my needs with a Nokia 5110 lcd?
Sincerely: Lazlo
5 years ago
nic
nice project, how do you change the timezone, i'm in quebec
5 years ago on Step 4
Awesome!
5 years ago
How can I set it for a smaller OLED Display 128X64 ?
Reply 5 years ago
You need to define new positions in the u8g.setPrintPos(x, y); functions in the code.
Also the size of fonts and the satellite symbol.
Question 5 years ago on Step 2
My Screen keeps black, did exactly the same as your tutorial told me.
Any ideas..?
Answer 5 years ago
Recheck the connections and test one of the examples of the display library to see if you can see anything.
5 years ago
I made the GPS. It works very well. My car is a Lotus Elite (All fiberglass, no metal chassis.)
This is the only electronic device i have made that works in the car because of the interference.
I would like to speed up it's response. I have all the codes to do it but am unsure how to send them to the module. Could you give me a sample line of code to speed it up to say 38400 baud.
Thanks Ron Hunter
5 years ago
I love the GPS satellite icon :)
5 years ago
Nice, Ive been using an old cell phone for this, would be nice to do this and place it in a gauge pod for a more permanent solution. getting the original one working is not an option.
5 years ago
are the oled screen visibile under direct sunlight? probarly making one for my bike
Reply 5 years ago
I already tested and some times is complicated to see. But if you give a small tilt in the screen and a small sun shade I believe that the problem is fixed.
Reply 5 years ago
I guess I will need to design a new case for my use :), thanks for the feedback!
5 years ago
looks good,
I used a Nano and a GM stepper motor make an electronic speedometer to relace my old classic car's cable driven speedometer.
Its got a reproduction face to look like the original and it uses a hall effect sensor in the gearbox and the Nano to control the lot.
I thought about building a GPS one, but I wasn't sure of the accuracy.
I heard they the can vary of a few kilometres each way.
If this your experience?
is it 100% accurate?
Reply 5 years ago
100% accurate I can not say, only comparing with the police radar gun :) Not looking for this.
Normaly I have 5-10 km/h difeence from the car speedometer.