- Les matériaux utilisés
- Module GPS NEO6M
- Écran OLED I2C 1,3 pouces
- Schéma
- Programmation Arduino pour compteur de vitesse OLED Arduino
Les compteurs de vitesse sont utilisés pour mesurer la vitesse de déplacement d'un véhicule. Nous avons précédemment utilisé le capteur IR et le capteur Hall pour construire respectivement un compteur de vitesse analogique et un compteur de vitesse numérique. Aujourd'hui, nous utiliserons le GPS pour mesurer la vitesse d'un véhicule en mouvement. Les compteurs de vitesse GPS sont plus précis que les compteurs de vitesse standard car ils peuvent localiser en permanence le véhicule et calculer la vitesse. La technologie GPS est largement utilisée dans les smartphones et les véhicules pour la navigation et les alertes routières.
Dans ce projet, nous allons construire un compteur de vitesse GPS Arduino en utilisant un module GPS NEO6M avec un écran OLED.
Les matériaux utilisés
- Arduino Nano
- Module GPS NEO6M
- Écran OLED I2C 1,3 pouces
- Planche à pain
- Connexion des cavaliers
Module GPS NEO6M
Ici, nous utilisons le module GPS NEO6M. Le module GPS NEO-6M est un récepteur GPS populaire avec une antenne en céramique intégrée, qui offre une forte capacité de recherche par satellite. Ce récepteur a la capacité de détecter des emplacements et de suivre jusqu'à 22 satellites et d'identifier des emplacements partout dans le monde. Avec l'indicateur de signal intégré, nous pouvons surveiller l'état du réseau du module. Il dispose d'une batterie de sauvegarde de données afin que le module puisse enregistrer les données lorsque l'alimentation principale est coupée accidentellement.
Le cœur du module récepteur GPS est la puce GPS NEO-6M d'u-blox. Il peut suivre jusqu'à 22 satellites sur 50 canaux et possède un niveau de sensibilité très impressionnant qui est de -161 dBm. Ce moteur de positionnement u-blox 6 à 50 canaux bénéficie d'un Time-To-First-Fix (TTFF) de moins de 1 seconde. Ce module prend en charge la vitesse de transmission de 4800-230400 bps et a la vitesse de transmission par défaut de 9600.
Traits:
- Tension de fonctionnement: (2,7-3,6) V CC
- Courant de fonctionnement: 67 mA
- Débit en bauds: 4800-230400 bps (9600 par défaut)
- Protocole de communication: NEMA
- Interface: UART
- Antenne externe et EEPROM intégrée.
Brochage du module GPS:
- VCC: broche de tension d'entrée du module
- GND: broche de masse
- RX, TX: broches de communication UART avec microcontrôleur
Nous avons précédemment interfacé le GPS avec Arduino et construit de nombreux projets à l'aide de modules GPS, notamment le suivi des véhicules.
Écran OLED I2C 1,3 pouces
Le terme OLED signifie « diode électroluminescente organique», il utilise la même technologie que celle utilisée dans la plupart de nos téléviseurs, mais a moins de pixels que ceux-ci. C'est vraiment amusant d'avoir ces modules d'affichage sympas à interfacer avec l'Arduino car cela donnera à nos projets un aspect cool. Nous avons couvert un article complet sur les écrans OLED et ses types ici. Ici, nous utilisons un écran OLED Monochrome 4 broches SH1106 OLED 1,28 ”. Cet écran ne peut fonctionner qu'avec le mode I2C.
Spécifications techniques:
- Pilote IC: SH1106
- Tension d'entrée: 3.3V-5V DC
- Résolution: 128x64
- Interface: I2C
- Consommation de courant: 8 mA
- Couleur du pixel: bleu
- Angle de vision:> 160 degrés
Description de la broche:
VCC: alimentation d'entrée 3.3-5V DC
GND: broche de référence de masse
SCL: broche d'horloge de l'interface I2C
SDA: broche de données série de l'interface I2C
La communauté Arduino nous a déjà fourni de nombreuses bibliothèques qui peuvent être directement utilisées pour rendre cela beaucoup plus simple. J'ai essayé quelques bibliothèques et j'ai trouvé que la bibliothèque Adafruit_SH1106.h était très facile à utiliser et avait une poignée d'options graphiques, nous utiliserons donc la même chose dans ce tutoriel.
OLED a l'air très cool et peut être facilement interfacé avec d'autres microcontrôleurs pour construire des projets intéressants:
- Interfaçage de l'écran OLED SSD1306 avec Raspberry Pi
- Interfaçage de l'écran OLED SSD1306 avec Arduino
- Horloge Internet utilisant ESP32 et écran OLED
- Contrôleur de température CA automatique utilisant Arduino, DHT11 et IR Blaster
Schéma
Le schéma de circuit de ce compteur de vitesse GPS Arduino utilisant OLED est donné ci-dessous.
La configuration complète ressemblera à ci-dessous:
Programmation Arduino pour compteur de vitesse OLED Arduino
Le code complet du projet est donné en bas du tutoriel. Ici, nous expliquons le code complet ligne par ligne.
Tout d'abord, incluez toutes les bibliothèques. Ici, la bibliothèque TinyGPS ++. H est utilisée pour obtenir les coordonnées GPS à l'aide du module récepteur GPS et Adafruit_SH1106.h est utilisé pour OLED.
#comprendre
Ensuite, l'adresse OLED I2C est définie, qui peut être OX3C ou OX3D, ici c'est OX3C dans mon cas. De plus, la broche de réinitialisation de l'écran doit être définie. Dans mon cas, il est défini comme -1, car l'écran partage la broche de réinitialisation d'Arduino.
#define OLED_ADDRESS 0x3C #define OLED_RESET -1 Affichage Adafruit_SH1106 (OLED_RESET);
Ensuite, les objets pour TinyGPSPlus et la classe Softwareserial sont définis comme indiqué ci-dessous. La classe série logicielle a besoin de la broche Arduino no. pour la communication série, qui est définie ici par 2 et 3.
int RX = 2, TX = 3; GPS TinyGPSPlus; LogicielGpssoft série (RX, TX);
Dans setup () , l'initialisation est effectuée pour la communication série et OLED. La vitesse de transmission par défaut pour la communication série logicielle est définie sur 9600. Ici, SH1106_SWITCHCAPVCC est utilisé pour générer une tension d'affichage à partir de 3,3 V en interne et la fonction display.begin est utilisée pour initialiser l'affichage.
void setup () { Serial.begin (9600); gpssoft.begin (9600); display.begin (SH1106_SWITCHCAPVCC, OLED_ADDRESS); display.clearDisplay (); }
A l' intérieur tout en véritable boucle, les données série reçues sont validées, si les signaux GPS valides sont reçus, puis displayspeed () est appelée à montrer la valeur de la vitesse sur OLED.
while (gpssoft.available ()> 0) if (gps.encode (gpssoft.read ())) affiche la vitesse ();
À l'intérieur de la fonction displayspeed () , les données de vitesse du module GPS sont vérifiées à l'aide de la fonction gps.speed.isValid () et si elle renvoie une valeur vraie, alors la valeur de vitesse est affichée sur l'écran OLED. Ici, la taille du texte sur OLED est définie à l'aide de la fonction display.setTextSize et la position du curseur est définie à l'aide de la fonction display.setCursor . Les données de vitesse du module GPS sont décodées à l'aide de la fonction gps.speed.kmph () et enfin affichées à l'aide de display.display () .
if (gps.speed.isValid ()) { display.setTextSize (2); display.setCursor (40, 40); display.print (gps.speed.kmph ()); display.display (); }
Enfin, téléchargez le code dans Arduino Uno et placez le système dans un véhicule en mouvement, et vous pouvez voir la vitesse sur l'écran OLED comme indiqué dans l'image ci-dessous.
Le code complet avec une vidéo de démonstration est donné ci-dessous.