- Materials utilitzats
- Mòdul GPS NEO6M
- Pantalla OLED I2C de 1,3 polzades
- Esquema de connexions
- Programació d'Arduino per a velocímetre OLED Arduino
Els velocímetres s’utilitzen per mesurar la velocitat de desplaçament d’un vehicle. Prèviament, hem utilitzat el sensor IR i el sensor hall per construir velocímetre analògic i velocímetre digital respectivament. Avui utilitzarem el GPS per mesurar la velocitat d’un vehicle en moviment. Els velocímetres GPS són més precisos que els velocímetres estàndard, ja que poden localitzar el vehicle contínuament i poden calcular-ne la velocitat. La tecnologia GPS s’utilitza àmpliament en telèfons intel·ligents i vehicles per a alertes de navegació i trànsit.
En aquest projecte, construirem un velocímetre Arduino GPS mitjançant un mòdul GPS NEO6M amb pantalla OLED.
Materials utilitzats
- Arduino Nano
- Mòdul GPS NEO6M
- Pantalla OLED I2C de 1,3 polzades
- Taula de pa
- Connectant Jumpers
Mòdul GPS NEO6M
Aquí estem utilitzant el mòdul GPS NEO6M. El mòdul GPS NEO-6M és un popular receptor GPS amb una antena de ceràmica integrada, que proporciona una gran capacitat de cerca per satèl·lit. Aquest receptor té la capacitat de detectar ubicacions i rastrejar fins a 22 satèl·lits i identifica ubicacions a qualsevol part del món. Amb l’indicador de senyal integrat, podem controlar l’estat de la xarxa del mòdul. Té una bateria de còpia de seguretat de dades perquè el mòdul pugui guardar les dades quan es tanca l'alimentació principal accidentalment.
![]()
El nucli central del mòdul receptor GPS és el xip GPS NEO-6M d’u-blox. Pot rastrejar fins a 22 satèl·lits en 50 canals i tenir un nivell de sensibilitat molt impressionant que és de -161 dBm. Aquest motor de posicionament u-blox 6 de 50 canals compta amb un Time-To-First-Fix (TTFF) inferior a 1 segon. Aquest mòdul admet la velocitat de transmissió de 4800-230400 bps i té el predeterminat de 9600.
Característiques:
- Voltatge de funcionament: (2,7-3,6) V CC
- Corrent de funcionament: 67 mA
- Velocitat en transmissions: 4800-230400 bps (9600 per defecte)
- Protocol de comunicació: NEMA
- Interfície: UART
- Antena externa i EEPROM incorporada.
Pinout del mòdul GPS:
![]()
- VCC: pin de tensió d'entrada del mòdul
- GND: passador de terra
- RX, TX: pins de comunicació UART amb microcontrolador
Prèviament, hem relacionat el GPS amb Arduino i hem construït molts projectes mitjançant mòduls GPS, inclòs el seguiment de vehicles.
Pantalla OLED I2C de 1,3 polzades
El terme OLED significa " díode emissor de llum orgànica", utilitza la mateixa tecnologia que s'utilitza a la majoria dels nostres televisors, però té menys píxels en comparació amb ells. És molt divertit tenir aquests mòduls de visualització d’aspecte interessant per a la interfície amb l’Arduino, ja que farà que els nostres projectes siguin genials. Aquí hem tractat un article complet sobre pantalles OLED i els seus tipus. Aquí estem fent servir una pantalla OLED monocrom de 4 pins SH1106 OLED 1,28 ”. Aquesta pantalla només pot funcionar amb el mode I2C.

Especificacions tècniques:
- IC del controlador: SH1106
- Voltatge d'entrada: 3.3V-5V DC
- Resolució: 128x64
- Interfície: I2C
- Consum actual: 8 mA
- Color de píxels: blau
- Angle de visió:> 160 graus
Descripció del pin:
VCC: font d'alimentació d'entrada de 3,3-5 V CC
GND: passador de referència de terra
SCL: pin de rellotge de la interfície I2C
SDA: pin de dades de sèrie de la interfície I2C
La comunitat Arduino ja ens ha donat moltes biblioteques que es poden utilitzar directament per fer-ho molt més senzill. Vaig provar algunes biblioteques i vaig trobar que la biblioteca Adafruit_SH1106.h era molt fàcil d'utilitzar i tenia un grapat d'opcions gràfiques, de manera que farem servir el mateix en aquest tutorial.
OLED té un aspecte genial i es pot connectar fàcilment amb altres microcontroladors per construir alguns projectes interessants:
- Interfície de la pantalla OLED SSD1306 amb Raspberry Pi
- Interfície de la pantalla OLED SSD1306 amb Arduino
- Rellotge d'Internet mitjançant ESP32 i pantalla OLED
- Controlador automàtic de temperatura de CA mitjançant Arduino, DHT11 i IR Blaster
Esquema de connexions
A continuació es mostra el diagrama de circuits d’aquest velocímetre GPS Arduino mitjançant OLED.

La configuració completa serà la següent:

Programació d'Arduino per a velocímetre OLED Arduino
El codi complet del projecte es dóna a la part inferior del tutorial. Aquí expliquem el codi complet línia per línia.
Primer de tot, incloure totes les biblioteques. Aquí s’utilitza la biblioteca TinyGPS ++. H per obtenir les coordenades GPS mitjançant el mòdul receptor GPS i Adafruit_SH1106.h s’utilitza per OLED.
#incloure
A continuació, es defineix l'adreça OLED I2C, que pot ser OX3C o OX3D, aquí és OX3C en el meu cas. A més, cal definir el pin de reinici de la pantalla. En el meu cas, es defineix com a -1, ja que la pantalla comparteix el pin de restabliment d’Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
A continuació, els objectes per a la classe TinyGPSPlus i Softwareserial es defineixen com es mostra a continuació. La classe de programari de sèrie necessita el pin núm. Arduino. per a la comunicació en sèrie, que aquí es defineix com a 2 i 3.
int RX = 2, TX = 3; Gps TinyGPSPlus; SoftwareSerial gpssoft (RX, TX);
A l’interior setup () , la inicialització es fa per a la comunicació sèrie i l’OLED. La velocitat de transmissió per defecte per a la comunicació en sèrie del programari es defineix com 9600. Aquí SH1106_SWITCHCAPVCC s’utilitza per generar voltatge de visualització a partir de 3,3 V internament i s’utilitza la funció display.begin per inicialitzar la pantalla.
configuració nul·la () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
A l'interior, mentre que el bucle és veritable, les dades de sèrie rebudes es validen, si es reben senyals GPS vàlids, es crida displaypeed () per mostrar el valor de la velocitat a l'OLED.
mentre (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displayspeed ();
Dins de la funció displayspeed () , les dades de velocitat del mòdul GPS es comproven mitjançant la funció gps.speed.isValid () i, si torna un valor real, el valor de velocitat es mostra a la pantalla OLED. Aquí es defineix la mida del text en OLED mitjançant la funció display.setTextSize i la posició del cursor es defineix mitjançant la funció display.setCursor . Les dades de velocitat del mòdul GPS es descodifiquen mitjançant la funció gps.speed.kmph () i, finalment, es mostren mitjançant display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Finalment, pengeu el codi a Arduino Uno i poseu el sistema en vehicle en moviment, i podreu veure la velocitat a la pantalla OLED tal com es mostra a la imatge següent.

A continuació es mostra el codi complet amb un vídeo de demostració.
