Close Menu
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
Facebook X (Twitter) Instagram
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us
Facebook X (Twitter) Instagram Pinterest YouTube LinkedIn
How To Electronics
  • Articles
    • Learn Electronics
    • Product Review
    • Tech Articles
  • Electronics Circuits
    • 555 Timer Projects
    • Op-Amp Circuits
    • Power Electronics
  • Microcontrollers
    • Arduino Projects
    • STM32 Projects
    • AMB82-Mini IoT AI Camera
    • BLE Projects
  • IoT Projects
    • ESP8266 Projects
    • ESP32 Projects
    • ESP32 MicroPython
    • ESP32-CAM Projects
    • LoRa/LoRaWAN Projects
  • Raspberry Pi
    • Raspberry Pi Projects
    • Raspberry Pi Pico Projects
    • Raspberry Pi Pico W Projects
  • Electronics Calculator
How To Electronics
Home » DIY Speedometer using GPS Module Arduino & OLED
Arduino Projects

DIY Speedometer using GPS Module Arduino & OLED

Mamtaz AlamBy Mamtaz AlamUpdated:May 28, 20239 Comments6 Mins Read
Share Facebook Twitter LinkedIn Telegram Reddit WhatsApp
GPS Speedometer Arduino
Share
Facebook Twitter LinkedIn Pinterest Email Reddit Telegram WhatsApp

Overview

In this project, we will make Speedometer using GPS Module, Arduino & OLED Display. A speedometer or a speed meter is a gauge that measures and displays the instantaneous speed of a vehicle. Many speedometers use a rotating flexible cable driven by gearing linked to the vehicle’s transmission. But many modern speedometers are electronic.

In order to build a GPS Speedometer, we need a GPS Receiver. The most popular GPS Receiver is ublox NEO-6M GPS Module. But we will use Quectel L86 GPS Module as it is tiny with a very small antenna. By interfacing L86 GPS Module with Arduino and 0.96″ OLED Display, the speed related parameters can be displayed on OLED Screen.


Bill of Materials

To make Arduino GPS Speedometer, we need following components. You can purchase all the components online from Amazon.

S.N.ComponentsQuantityPurchase Links
1Arduino Nano Board1Amazon | AliExpress
2L80/L86 GPS 1Amazon | AliExpress
30.96" I2C OLED Display1Amazon | AliExpress
4Jumper Wires20Amazon | AliExpress
5Breadboard1Amazon | AliExpress




How GPS measures Speed?

GPS devices can measure speeds in two ways:

1. Method 1: The first and simpler method is based on how far the receiver has moved since the last measurement. Such speed calculations are not subject to the same sources of error as the vehicle’s speedometer (wheel size, transmission/drive ratios). Instead, the GPS’s positional accuracy, and therefore the accuracy of its calculated speed, is dependent on the satellite signal quality at the time. Speed calculations will be more accurate at higher speeds when the ratio of positional error to positional change is lower. The GPS software may also use a moving average calculation to reduce error. Some GPS devices do not take into account the vertical position of the car so will under-report the speed by the road’s gradient.

2. Method 2: Alternatively, the GPS may take advantage of the Doppler effect to estimate its velocity. In ideal conditions, the accuracy for commercial devices is within 0.2–0.5 km/h, but it may worsen if the signal quality degrades.


Quectel L86/L80 GPS Module

Quectel L86 GPS Module

The L86 Module is an ideal solution for wearable fitness devices due to its ultra-compact design and low power demands. Its Low Power feature enables GPS connectivity at around half the power consumption of normal mode while in static receiving mode. Combined with its precision and high sensitivity, this makes the L86 suitable also for a broad range of IoT applications such as portable devices, automotive, personal tracking, security, and industrial PDAs.

Quectel L80 GPS Module Size

The L86 has a patch antenna on top measuring 16.0mm × 16.0mm × 6.45mm, with 66 acquisition channels and 22 tracking channels. It acquires and tracks satellites in the shortest time even at the indoor signal level. The module operates at 2.8V~4.3V with a typical power consumption of 20mA and in Standby mode power consumption is around 1.0mA. To learn more about the L86 GPS module, you can check the L86 Datasheet.

The Quectel L86/L80 GPS Module has 12 pins as shown in the image below.

L86 Pinout

The L86 is a tiny SMD-type Module that doesn’t have any male/female header pins for testing. So you can use the male header pin with 2.54 spacing and solder them on the L86 PCB from the bottom.

Once, you solder all the 12 Pins on the L86 Module, the Module becomes breadboard friendly. You can now insert the module on the breadboard easily.



Arduino GPS Speedometer Circuit Diagram

Now let us see the circuit diagram of Arduino GPS Speedometer. The connection diagram is fairly simple as shown in image below.

Arduino GPS Speedometer

The Quectel L86 GPS module has 12 pins but we will only use 5 pins for our project. Connect the VCC & GND pin of L86 to the 3.3V & GND pin of Arduino. Connect the V_BCKP pin of L86 to 3.3V, if this pin remains unconnected the module won’t work. The Rx & Tx pin of L86 goes to Arduino digital pin 2 & 3 respectively.

The OLED Display is an I2C Module. Connect the VCC & GND Pin of OLED to Arduino 3.3V & GND Pin. Similarly, connect the SDA & SCL pin to Arduino A4 & A5 pin respectively.


Project PCB Gerber File & PCB Ordering Online

If you don’t want to assemble the circuit on a breadboard and you want PCB for the project, then here is the PCB for you. The PCB Board for GPS Speedometer is designed using EasyEDA online Circuit Schematics & PCB designing tool. First the schematic is designed and then the schematic is converted into PCB.

The Gerber File for the PCB is given below. You can simply download the Gerber File and order the PCB from ALLPCB at 1$ only.

Download Gerber File: Arduino GPS Speedometer

You can use this Gerber file to order high quality PCB for this project. To do that visit the ALLPCB official website by clicking here: https://www.allpcb.com/.

You can now upload the Gerber File by choosing the Quote Now option. From these options, you can choose the Material Type, Dimensions, Quantity, Thickness, Solder Mask Color and other required parameters.

After filling all details, select your country and shipping method. Finally you can place the order.


Source Code/Program

The best part about the L80 GPS Module is, it supports Tiny GPS++ Library. Download the library and add it to the Arduino library folder. Apart from Tiny GPS++ Library, the code also requires SSD1306 Library called as Adafruit SSD1306 library.

Here is the complete code. You can copy the code and upload it to the Arduino Nano Board.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#include <SoftwareSerial.h>
#include <Wire.h>
#include <Adafruit_SSD1306.h>
#include <TinyGPS++.h>
 
#define rxPin 2
#define txPin 3
SoftwareSerial mygps(rxPin, txPin);
 
#define SCREEN_WIDTH 128       // OLED display width, in pixels
#define SCREEN_HEIGHT 64       // OLED display height, in pixels
#define OLED_RESET -1          //Reset pin # (or -1 if sharing Arduino reset pin)
#define SCREEN_ADDRESS 0x3C    //See datasheet for Address
Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
 
TinyGPSPlus gps;
 
 
void setup()
{
  Serial.begin(115200);
  mygps.begin(9600);
 
  if (!display.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS))
  {
    Serial.println(F("SSD1306 allocation failed"));
    for (;;); // Don't proceed, loop forever
  }
  display.clearDisplay();
  display.display();
  delay(2000);
}
 
void loop()
{
  boolean newData = false;
  for (unsigned long start = millis(); millis() - start < 1000;)
  {
    while (mygps.available())
    {
      if (gps.encode(mygps.read()))
      {
        newData = true;
      }
    }
  }
 
  //If newData is true
  if (newData == true)
  {
    newData = false;
    display.setTextColor(SSD1306_WHITE);
 
    if (gps.location.isValid() == 1)
    {
      //String gps_speed = String(gps.speed.kmph());
      display.setCursor(0, 0);
      display.setTextSize(3);
      display.print(gps.speed.kmph());
 
      display.setCursor(75, 20);
      display.setTextSize(2);
      display.print("km/h");
 
      display.setTextSize(1);
      display.setCursor(0, 50);
      display.print("SAT:");
      display.setCursor(25, 50);
      display.print(gps.satellites.value());
 
      display.setTextSize(1);
      display.setCursor(70, 50);
      display.print("ALT:");
      display.setCursor(95, 50);
      display.print(gps.altitude.meters(), 0);
 
      display.display();
      delay(1500);
      display.clearDisplay();
    }
  }
 
  else
  {
    display.setTextColor(SSD1306_WHITE);
    display.setCursor(0, 0);
    display.setTextSize(3);
    display.print("No Data");
    display.display();
    delay(1500);
    display.clearDisplay();
  }
}



Testing the Arduino GPS Speedometer

Upload the above code to the Arduino Nano Board. Initially the OLED Display will show no data. This is because the L86 GPS receiver is not synchronized with satellite system.

After waiting for a while, the GPS starts receiving the signal from the nearest satellite system. The receiving of signal and synchronization with satellite depends upon the indoor-outdoor conditions. After proper synchronization with the satellite, the OLED screen shows the speed in kilometers per hour (kmph). It may show zero speed when it is kept at rest.

While the GPS Speedometer is placed in a moving vehicle it starts showing the speed in kmph. It also shows the total satellite connected to the system as well as the altitude in meters.

GPS Based Speedometer using Arduino


Video Tutorial & Guide

DIY Speedometer using GPS Module & Arduino with OLED Display
Watch this video on YouTube.

This is how we can build an Arduino Speedometer using GPS Module and Arduino. There are so many applications of Speedometers. It can be used to measure the speed of cars, bicycles, walks, races, or even boats, buses, trains, bicycles, and planes.

Share. Facebook Twitter Pinterest LinkedIn Tumblr Email Reddit Telegram WhatsApp
Previous ArticleMake GPS Clock using Arduino, GPS Module & LCD Display
Next Article Getting Started with Seeed XIAO BLE nRF52840 Sense

Related Posts

DC Energy Meter using Arduino

Build a DC Energy Meter using Arduino – 32V/5A

Updated:August 26, 20252K
Interfacing ADXL375 Accelerometer with Arduino

Interfacing ADXL375 Accelerometer with Arduino (±200g)

Updated:June 28, 2025
PZEM-004T Arduino Energy Meter

DIY AC Energy Meter using PZEM-004T & Arduino

Updated:March 6, 20258K
Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Interfacing BMI160 Accelerometer & Gyroscope with Arduino

Updated:February 2, 20259K
Password Based Door Lock Security System Using Arduino & Keypad

Password Based Door Lock Security System Using Arduino & Keypad

Updated:February 2, 20252436K
Earthquake Detector Alarm with with Accelerometer & Arduino

Earthquake Detector Alarm with Accelerometer & Arduino

Updated:February 2, 2025661K
View 9 Comments

9 Comments

  1. remo waelti on February 1, 2023 8:20 AM

    hi, in the gerber pcb you added 3 condensers, what are the values for them?

    Reply
    • Admin on February 1, 2023 1:48 PM

      C1=C3=0.1uF, C2=10uF

      Reply
  2. Kameron Smith on February 7, 2023 8:13 PM

    I see in the pictures you posted you had an L80-r and L80-m39 and a L86 GPS module. which one did you end up using. Also will all of them work?

    Reply
    • Admin on February 7, 2023 8:14 PM

      All of them are similar with the same pins. Any of them will work.

      Reply
  3. Bacic Pino on February 19, 2023 1:19 AM

    how to change the code to show speed in knots ?

    Reply
  4. Tahir Maqsood on April 16, 2023 12:40 AM

    Can I use a larger screen for a larger display?

    Reply
  5. Paul F Vovk on May 24, 2023 6:06 PM

    Not sure how you got this to work. I was working on a similar project and just couldn’t get the SoftwareSerial to work with the I2C of the OLED. I read that the interrupts in SoftwareSerial mess with the I2C. I uploaded your code and I get the same issue with this:
    Serial.println(F(“SSD1306 allocation failed”));
    for (;;); // Don’t proceed, loop forever

    Reply
  6. Harinarayanan on February 26, 2024 4:45 AM

    hi is it possible to logg the speed information for every seconds in excel

    Reply
  7. Matt on April 12, 2024 10:44 PM

    Im having trouble making this work. Ive bought all the exact hardware listed, connected it correctly, copy and pasted the code, but it never seems to get GPS location. NO DATA is displayed constantly. Im pretty sure ive soldered the GPS pins correctly. Any ideas?

    Reply

CommentsCancel reply

Latest Posts
IoT Based PM & Air Quality Monitoring System using ESP32

IoT Based PM & Air Quality Monitoring System using ESP32

May 31, 2026
DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

DIY ESP32 MLX90640 IR Thermal Camera with Live Web Display

May 10, 2026
IoT Activity Tracker with ESP32 & Accelerometer Gyroscope

IoT Activity Tracker with ESP32 & Accelerometer/Gyroscope

May 2, 2026
A Guide to Sourcing Obsolete ICs for Vintage Projects

Beyond AliExpress: A Guide to Sourcing Obsolete ICs for Vintage Projects

April 21, 2026

ESP32 IoT Vehicle Motion Analyzer with MPU6050 & LIS3MDL

April 27, 2026
Building a Smart Sensor Node with a BLE Microcontroller

Building a Smart Sensor Node with a BLE Microcontroller

February 26, 2026
High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

High-Accuracy Pitch, Roll, Yaw with ESP32 & BNO08x IMU

April 27, 2026
DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

DIY Colorimeter using AS7265x Spectroscopy Sensor & ESP32

February 1, 2026
Top Posts & Pages
  • IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
    IoT AC Energy Meter with PZEM-004T & ESP32 WebServer
  • 12V DC to 220V AC Inverter Circuit & PCB
    12V DC to 220V AC Inverter Circuit & PCB
  • Buck Converter: Basics, Working, Design & Application
    Buck Converter: Basics, Working, Design & Application
  • How to use INA219 DC Current Sensor Module with Arduino
    How to use INA219 DC Current Sensor Module with Arduino
  • ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
    ECG Graph Monitoring with AD8232 ECG Sensor & Arduino
  • Designing of MPPT Solar Charge Controller using Arduino
    Designing of MPPT Solar Charge Controller using Arduino
  • How to use INA226 DC Current Sensor with Arduino
    How to use INA226 DC Current Sensor with Arduino
  • IoT Based Drinking Water Quality Monitoring with ESP32
    IoT Based Drinking Water Quality Monitoring with ESP32
Categories
  • Arduino Projects (197)
  • Articles (60)
    • Learn Electronics (19)
    • Product Review (15)
    • Tech Articles (28)
  • Electronics Circuits (46)
    • 555 Timer Projects (21)
    • Op-Amp Circuits (7)
    • Power Electronics (13)
  • IoT Projects (204)
    • ESP32 MicroPython (7)
    • ESP32 Projects (81)
    • ESP32-CAM Projects (15)
    • ESP8266 Projects (76)
    • LoRa/LoRaWAN Projects (22)
  • Microcontrollers (38)
    • AMB82-Mini IoT AI Camera (4)
    • BLE Projects (18)
    • STM32 Projects (19)
  • Raspberry Pi (93)
    • Raspberry Pi Pico Projects (57)
    • Raspberry Pi Pico W Projects (12)
    • Raspberry Pi Projects (24)
Follow Us
  • Facebook
  • Twitter
  • Pinterest
  • Instagram
  • YouTube
About Us

“‘How to Electronics’ is a vibrant community for electronics enthusiasts and professionals. We deliver latest insights in areas such as Embedded Systems, Power Electronics, AI, IoT, and Robotics. Our goal is to stimulate innovation and provide practical solutions for students, organizations, and industries. Join us to transform learning into a joyful journey of discovery and innovation.

Copyright © How To Electronics. All rights reserved.
  • About Us
  • Disclaimer
  • Privacy Policy
  • Contact Us
  • Advertise With Us

Type above and press Enter to search. Press Esc to cancel.

Ad Blocker Enabled!
Ad Blocker Enabled!
Looks like you're using an ad blocker. Please allow ads on our site. We rely on advertising to help fund our site.