Une horloge bon marché et précise basée sur le GPS
Composants et fournitures
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 | ||||
| × | 1 |
Applications et services en ligne
|
À propos de ce projet
Jusqu'à présent, j'ai utilisé diverses horloges RTC pour des projets d'horloge ou obtenu l'heure des serveurs NTP. Dans ce projet, je vous présente une autre source :l'analyse à partir de la chaîne NMEA des satellites GPS du monde entier.
J'ai été surpris de voir à quel point un récepteur GPS est bon marché aujourd'hui :obtenez-en un (dans mon cas, le GY-GPS6Mv2 est utilisé).
a.) un premier test - facultatif - sur un PC Windows :installez « u-center » en téléchargement depuis U-Blox.
À l'aide d'un adaptateur FTDI, le breakout GPS trouve son chemin vers le port COM de votre PC et montre la fixation (la connexion) à l'orbite après environ 1 minute. A cet effet, un voyant de contrôle rouge sur le breakout clignote.
Les graphiques générés automatiquement vous donnent envie d'expérimenter davantage avec le GPS. Avec F8 - Text Console dans le menu Affichage, vous obtenez les différentes chaînes NMEA livrées.
b.) Vous pouvez effectuer un test de décodage sur les services en ligne gratuits :https://rl.se/gprmc
Maintenant qu'il est assuré que vous disposez d'un récepteur GPS fonctionnel - assurez-vous qu'il y a une vue du ciel - nous pouvons extraire les informations souhaitées de la chaîne selon vos propres souhaits.
Nous utilisons une bibliothèque Adafruit "Adafruit GPS Library" - si vous l'avez installée dans l'IDE Arduino, vous pouvez essayer un peu avec les exemples.
c.) Circuit
Arduino A4> Affichage SDA Arduino A5> Affichage SCL
#include
> utiliser un écran qui traîne, peut-être un 16x2 ?
#include
Connectez la broche d'alimentation GPS à 5VConnectez la broche GPS Ground à la terreConnectez la broche GPS TX (transmission) à Digital 8Connectez la broche GPS RX (réception) à Digital 7 // vous pouvez modifier les numéros de broche pour qu'ils correspondent à votre câblage :SoftwareSerial mySerial (8 , 7);Adafruit_GPS GPS(&mySerial);
> le récepteur GPS est tolérant à 3,3 / 5V.
d.) Notre montre doit donner l'heure, la date, une indication de la vitesse du vent et disons l'altitude. Nous n'avons pas besoin de localisation car ma montre s'arrêtera à la fenêtre.
Une chaîne NMEA fournit l'heure au standard UTC. Une conversion dans le fuseau horaire local est à nous. Tant que personne ne fait une meilleure proposition, j'ajoute +1 pour mon fuseau horaire (Europe Berlin).
int timezone =+1 ; // Europe/Berlin (UTC +0100)> NMEA est orienté UTC
Ajustez le fuseau horaire à votre convenance. L'heure variable est ensuite utilisée dans le code pour la sortie sur l'écran LCD au lieu de GPS.hour - la valeur UTC.
// sortie sur écran LCD
lcd.setCursor(5,0); // ,0 =première ligne
int heure =(GPS.heure) + fuseau horaire ; // formater GPS.hour UTC à votre fuseau horaire individuel
if (heure <10) { lcd.print('0'); }
lcd.print(heure, DEC); lcd.print(':');
En Europe, nous utilisons "km/h" au lieu de nœuds pour la vitesse du vent. J'ai donc d'abord converti la valeur de nœuds en km/h à l'aide d'une constante, puis je l'ai regroupée.> 1 nœud =1,852 kilomètre par heure
vitesse flottante =(GPS.speed) * 1,852 ; // Passer de Vitesse/Knoten> Vitesse/km/h
Évaluation selon Wikipédia :
if (vitesse <=1) {lcd.print(" Windstille");}
else if ((vitesse> 1) &&(vitesse <=9)) {lcd.print(" leiser Zug");}
else if ((vitesse> 9) &&(vitesse <=46)) {lcd.print(" Brise");}
else if ((vitesse> 46) &&(vitesse <=56)) {lcd.print(" Starker Wind");}
else if ((speed> 56) &&(speed <=74)) {lcd.print(" stuerm. Wind");}
else if ((vitesse> 74) &&(vitesse <=83)) {lcd.print(" Sturm");}
else if ((vitesse> 83) &&(vitesse <=102)) {lcd.print(" schwerer Sturm");}
else if (vitesse> 102) {lcd.print(" Orkan");}
else {lcd.print(" ohne Bewertung ");}
Le résultat est affiché à l'écran comme suit et peut bien sûr être adapté à vos propres souhaits :
J'ai laissé la fréquence de mise à jour à 2 secondes dans la boucle. J'ai même tendance à renoncer aux secondes et aux hauteurs au profit d'un affichage 16x2.
Amusez-vous à explorer les diverses options GPS !
En Europe, nous avons également l'évaluation d'un signal radio DCF77 disponible. Cependant, celui-ci est nettement plus cher et sa prise en main serait très sensible.
Code
- GPS_SoftwareSerial_Parsing_ilo
GPS_SoftwareSerial_Parsing_iloC/C++
Exemple Adafruits ajusté un peuProcessus de fabrication
- contrôleur de gants et voiture à hélice bricolage bon marché
- Capteur DHT11 avec LED et haut-parleur piézo
- Enregistreur de données GPS, analyse spatiale et Azure IoT Hub.
- Enregistreur de données de température et d'humidité
- Arduino Temp. Moniteur et horloge en temps réel avec affichage 3.2
- Horloge POV LED de style analogique
- Joyeux anniversaire :lumières et sons
- Automates cellulaires basés sur Arduino et OLED
- Pédale de vitesse et pédale pour guitare !