- Materiali usati
- Modulo GPS NEO6M
- Display OLED I2C da 1,3 pollici
- Schema elettrico
- Programmazione Arduino per tachimetro OLED Arduino
I tachimetri vengono utilizzati per misurare la velocità di marcia di un veicolo. In precedenza abbiamo utilizzato il sensore IR e il sensore hall per costruire rispettivamente tachimetro analogico e tachimetro digitale. Oggi useremo il GPS per misurare la velocità di un veicolo in movimento. I tachimetri GPS sono più precisi dei tachimetri standard perché possono localizzare continuamente il veicolo e calcolare la velocità. La tecnologia GPS è ampiamente utilizzata negli smartphone e nei veicoli per la navigazione e gli avvisi sul traffico.
In questo progetto, costruiremo un tachimetro GPS Arduino utilizzando un modulo GPS NEO6M con display OLED.
Materiali usati
- Arduino Nano
- Modulo GPS NEO6M
- Display OLED I2C da 1,3 pollici
- Breadboard
- Collegamento dei ponticelli
Modulo GPS NEO6M
Qui stiamo usando il modulo GPS NEO6M. Il modulo GPS NEO-6M è un popolare ricevitore GPS con un'antenna in ceramica incorporata, che fornisce una forte capacità di ricerca satellitare. Questo ricevitore ha la capacità di rilevare le posizioni e tracciare fino a 22 satelliti e identifica le posizioni in qualsiasi parte del mondo. Con l'indicatore di segnale a bordo, possiamo monitorare lo stato della rete del modulo. Ha una batteria di backup dei dati in modo che il modulo possa salvare i dati quando l'alimentazione principale viene interrotta accidentalmente.
Il cuore centrale del modulo ricevitore GPS è il chip GPS NEO-6M di u-blox. Può tracciare fino a 22 satelliti su 50 canali e ha un livello di sensibilità molto impressionante che è -161 dBm. Questo motore di posizionamento u-blox 6 a 50 canali vanta un Time-To-First-Fix (TTFF) inferiore a 1 secondo. Questo modulo supporta la velocità di trasmissione da 4800-230400 bps e ha la velocità di trasmissione predefinita di 9600.
Caratteristiche:
- Tensione di esercizio: (2,7-3,6) V CC
- Corrente di funzionamento: 67 mA
- Velocità in baud: 4800-230400 bps (9600 predefinito)
- Protocollo di comunicazione: NEMA
- Interfaccia: UART
- Antenna esterna e EEPROM incorporata.
Pinout del modulo GPS:
- VCC: pin della tensione di ingresso del modulo
- GND: pin di massa
- RX, TX: pin di comunicazione UART con microcontrollore
In precedenza abbiamo interfacciato il GPS con Arduino e realizzato molti progetti utilizzando moduli GPS, incluso il monitoraggio dei veicoli.
Display OLED I2C da 1,3 pollici
Il termine OLED sta per " diodo organico a emissione di luce", utilizza la stessa tecnologia che viene utilizzata nella maggior parte dei nostri televisori ma ha meno pixel rispetto ad essi. È davvero divertente avere questi moduli di visualizzazione dall'aspetto accattivante da interfacciare con Arduino poiché renderà interessanti i nostri progetti. Abbiamo coperto un articolo completo sui display OLED e sui suoi tipi qui. In questo caso, stiamo utilizzando un display OLED SH1106 OLED da 1,28 pollici a 4 pin monocromatico. Questo display può funzionare solo con la modalità I2C.
Specifiche tecniche:
- Driver IC: SH1106
- Tensione di ingresso: 3,3 V-5 V CC
- Risoluzione: 128x64
- Interfaccia: I2C
- Consumo di corrente: 8 mA
- Colore pixel: blu
- Angolo di visione:> 160 gradi
Descrizione pin:
VCC: alimentazione in ingresso 3,3-5 V CC
GND: Pin di riferimento a massa
SCL: Pin dell'orologio dell'interfaccia I2C
SDA: pin Serial Data dell'interfaccia I2C
La comunità di Arduino ci ha già fornito molte librerie che possono essere utilizzate direttamente per rendere tutto più semplice. Ho provato alcune librerie e ho scoperto che la libreria Adafruit_SH1106.h era molto facile da usare e aveva una manciata di opzioni grafiche, quindi useremo la stessa in questo tutorial.
OLED sembra molto bello e può essere facilmente interfacciato con altri microcontrollori per costruire alcuni progetti interessanti:
- Interfacciamento del display OLED SSD1306 con Raspberry Pi
- Interfacciamento del display OLED SSD1306 con Arduino
- Orologio Internet tramite ESP32 e display OLED
- Regolatore di temperatura CA automatico utilizzando Arduino, DHT11 e IR Blaster
Schema elettrico
Di seguito è riportato lo schema del circuito per questo tachimetro GPS Arduino che utilizza OLED.
La configurazione completa apparirà come di seguito:
Programmazione Arduino per tachimetro OLED Arduino
Il codice completo del progetto è fornito in fondo al tutorial. Qui stiamo spiegando il codice completo riga per riga.
Prima di tutto, includi tutte le librerie. Qui la libreria TinyGPS ++. H viene utilizzata per ottenere le coordinate GPS utilizzando il modulo ricevitore GPS e Adafruit_SH1106.h viene utilizzato per OLED.
#includere
Quindi, viene definito l'indirizzo I2C OLED, che può essere OX3C o OX3D, qui è OX3C nel mio caso. Inoltre, è necessario definire il pin Reset del display. Nel mio caso, è definito come -1, poiché il display condivide il pin di ripristino di Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Adafruit_SH1106 display (OLED_RESET);
Successivamente, gli oggetti per TinyGPSPlus e la classe Softwareserial sono definiti come mostrato di seguito. La classe seriale del software richiede il pin di Arduino n. per la comunicazione seriale, che qui è definita come 2 e 3.
int RX = 2, TX = 3; TinyGPSPlus gps; SoftwareSerial gpssoft (RX, TX);
All'interno di setup () , l'inizializzazione viene eseguita per la comunicazione seriale e OLED. La velocità di trasmissione predefinita per la comunicazione seriale del software è definita come 9600. Qui SH1106_SWITCHCAPVCC viene utilizzato per generare la tensione del display da 3,3 V internamente e la funzione display.begin viene utilizzata per inizializzare il display.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
All'interno di while true loop, i dati seriali ricevuti vengono convalidati, se vengono ricevuti segnali GPS validi, viene chiamato displayspeed () per mostrare il valore della velocità su OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) displaypeed ();
All'interno displayspeed () la funzione, i dati di velocità dal modulo GPS viene controllato utilizzando la funzione gps.speed.isValid () e se si restituisce un valore vero, allora il valore di velocità viene visualizzato sul display OLED. Qui la dimensione del testo su OLED viene definita utilizzando la funzione display.setTextSize e la posizione del cursore viene definita utilizzando la funzione display.setCursor . I dati di velocità dal modulo GPS vengono decodificati utilizzando la funzione gps.speed.kmph () e infine vengono visualizzati utilizzando display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Infine, carica il codice in Arduino Uno e metti il sistema nel veicolo in movimento, e puoi vedere la velocità sul display OLED come mostrato nell'immagine sotto.
Di seguito viene fornito il codice completo con un video dimostrativo.