Table des matières:
- Étape 3: JAWS: Logiciel
- Étape 4: Plus de logiciels…
- Étape 5: Quelques captures d'écran…
- Étape 6: Terminé ?
Vidéo: JAWS : Juste une autre station météo : 6 étapes
2024 Auteur: John Day | [email protected]. Dernière modifié: 2024-01-30 09:07
C'est assez simple de faire un tel JAWS.
Vous récupérez vos capteurs, vous les assemblez sur des cartes et vous commencez à utiliser les bibliothèques fournies avec les capteurs.
Commençons par la configuration du programme.
Comme je suis néerlandophone (locuteur natif), toutes les données et la plupart des variables que j'utilise sont en néerlandais. Alors maintenant, vous avez la chance d'apprendre une autre langue…
Qu'attendons-nous de JAWS ?
Facile: on veut regarder un écran qui nous montre l'heure réelle, la date, les éphémérides (le lever, le coucher du soleil, la durée du jour et le midi astronomique).
À côté de cela, il serait agréable de voir la température intérieure et extérieure, l'humidité relative et le point de rosée, ainsi que la pression atmosphérique.
Pour faciliter les choses, j'utilise des degrés centigrades pour la température et hPa (=mBar) pour la pression. Donc, personne n'a à calculer à partir de Fahrenheit ou de livres par stade carré…
Pour le moment, seules ces données sont disponibles…
À l'avenir, j'ajouterai la vitesse de l'air, la direction du vent et les précipitations.
L'idée est que j'aurai une cabane météo extérieure et que toutes les données seront envoyées sur 2,4 GHz à l'unité intérieure.
Étape 3: JAWS: Logiciel
Pour accéder à nos logiciels, la plupart peuvent être trouvés avec les bibliothèques existantes.
Dans JAWS, j'utilise les suivants:
- SPI.h: La bibliothèque originale d'Arduino pour le protocole 4 fils. Elle est utilisée pour le bouclier TFT
- Adafruit_GFX.h et MCUfriend_kbv.h: tous deux utilisés pour les graphiques et l'écran. Ceux-ci facilitent l'écriture de texte, le tracé de lignes et de cadres sur l'écran TFT.
- dht.h: pour nos DHT: cette bibliothèque peut être utilisée pour DHT11 (la bleue) et DHT22.
- Wire.h: la bibliothèque Arduino pour faciliter la communication série. Il est utilisé pour l'horloge et la carte SD.
- SD.h: Encore une fois un original Arduino, pour écrire et lire à partir de la carte SD.
- TimeLord.h: celui-ci que j'utilise pour garder l'heure, calculer le coucher ou le lever du soleil à partir de n'importe quelle position géographique. Il règle également l'horloge pour l'heure d'été (heure d'été ou d'hiver).
Commençons par l'horloge.
Lors de la lecture d'une horloge, vous avez besoin des variables que vous obtenez des différents registres à l'intérieur du module d'horloge. Lorsque nous en faisons plus que des nombres, nous pouvons utiliser les lignes suivantes:
const int DS1307 = 0x68;const char* jours = {"Zo.", "Ma.", "Di.", "Wo.", "Do.", "Vr.", "Za."};
const char* mois = {"01", "02", "03", "04", "05", "06", "07", "08", "09", "10", "11 ", "12"};
m
Avec TimeLord, nous obtenons ceci sous forme de données, pour ma place: (Lokeren, Belgique)
Seigneur du temps Lokeren; la configuration de Lokeren. Position (51.096, 3.99); longitude et latitude
Lokeren. TimeZone(+1*60); GMT +1 = +1 x 60 minutes
Lokeren. DstRules(3, 4, 10, 4, 60); DST du 3ème mois, 4ème semaine au 10ème mois, 4ème semaine, +60minutes
int jaar= année +2000;
octet sunRise= {0, 0, 12, jour du mois, mois, année}; commencer à calculer tous les jours à partir de 00 heures
octet sunSet={0, 0, 12, jour du mois, mois, année}; comme ci-dessus
octet maan={0, 0, 12, jour du mois, mois, année}; comme ci-dessus
phase flottante;
A partir de là, les calculs sont faits.
phase = Lokeren. MoonPhase(maan);
Lokeren. SunRise(sunRise);
Lokeren. SunSet(sunSet);
Lokeren. DST(sunRise);
Lokeren. DST(sunSet);
int ZonOpUur=sunRise[tl_hour];
int ZonOpMin = sunRise[tl_minute];
int ZonOnUur = sunSet[tl_hour];
int ZonOnMin = sunSet[tl_minute];
C'est l'exemple de la façon dont les choses sont calculées dans TimeLord. Avec cette bibliothèque, vous obtenez des heures (assez) précises de coucher et de lever de soleil.
À la fin, je mettrai tout le programme avec ce Instructable. C'est assez simple.
Étape 4: Plus de logiciels…
En savoir plus sur le logiciel…
Nous avons trois grandes parties dans le logiciel.
1) Nous obtenons des données brutes de nos différents capteurs: de notre horloge, des DHT et du BMP180. C'est notre contribution.
2) Nous devons traduire les données en (1 et 0) en quelque chose de sensé. Pour cela, nous utilisons nos bibliothèques et variables.
3) Nous voulons lire et stocker nos données. C'est notre sortie. Pour une utilisation immédiate, nous avons notre LCD-TFT, pour une utilisation ultérieure, nous avons nos données enregistrées sur notre carte SD.
Dans notre boucle(), nous obtenons beaucoup de "GOTO's": nous sautons dans les différentes bibliothèques. Nous obtenons nos données de l'un des capteurs, obtenons les données et les stockons dans (principalement) une variable de données flottante. Nous choisissons judicieusement nos noms de variables, pas avec x ou y mais avec des noms comme "tempOutside" ou "pressure" ou des choses comme ça. Pour les rendre plus lisibles. OK, cela le rend un peu plus lourd sur l'utilisation des variables et plus gourmand en mémoire.
Voici l'astuce: lorsque nous rendons nos variables visibles à l'écran, il suffit de les placer à la bonne position.
Les deux bibliothèques utilisées ici, Adafruit_GFX.h et MCUfriend_kbv.h ont un bon ensemble de travail pour utiliser les couleurs, les polices et la possibilité de tracer des lignes. Dans un premier temps, j'ai utilisé un écran 12864 avec ces bibliothèques, plus tard j'ai changé cela dans l'écran tft. Tout ce que j'avais à faire, c'était de placer des cases, des rectangles et des lignes, et de m'assurer que les données sortaient au bon endroit. Pour cela, vous pouvez utiliser setCursor et tft. Write comme commande. Facile le fait. Les couleurs peuvent également être définies en tant que variables, il existe de nombreux exemples dans ces bibliothèques pour savoir comment les choisir.
Pour écrire sur la carte SD, nous avons également besoin de quelques astuces simples.
Par exemple, nous lisons nos données de l'horloge sous forme d'heures, de minutes et de secondes distinctes. Les températures sont DHT.temperature et DHTT.temperature, pour différencier entre l'intérieur et l'extérieur.
Quand on veut les mettre sur la carte SD, on utilise une chaîne: on démarre chaque boucle comme une chaîne vide:
chaîne variable=""; Ensuite, nous pouvons le remplir avec toutes nos données:
chaîne variable = chaîne variable + heures+":" + minutes +":" + secondes. Cela donne la chaîne comme 12:00:00.
Puisque nous l'écrivons sous forme de fichier TXT (voir le SD.h sur Arduino.cc), pour les variables suivantes, nous ajoutons un onglet, il est donc plus facile de l'importer dans Excel.
Nous arrivons donc à: variablestring = variablestring +" \t " + DHT.temperature + " \t" + DHTT. Temperature.
Etc.
Étape 5: Quelques captures d'écran…
Pour être sûr de ne pas "surcharger" nos ensembles de données, je n'ai écrit les données qu'une fois toutes les 10 minutes. Nous donnant 144 entrées par jour. Pas mal, je pense.
Et bien sûr, vous pouvez continuer à traiter ces données: vous pouvez faire des moyennes, vous pouvez rechercher des maxima et des minima, vous pouvez comparer avec les années passées…
Les bureaux météorologiques font généralement des moyennes du jour et de la nuit, pour les températures: la journée commence à 8 h 00 et se termine à 20 h 00.
Pour le vent, la pression et les précipitations, les moyennes sont prises de minuit à minuit.
Étape 6: Terminé ?
Pas vraiment… Comme je l'ai dit, j'aimerais enfin que le capteur de vitesse et de direction du vent fonctionne avec le reste du JAWS.
La petite construction que j'ai faite mesure environ 4m de haut. Le météorologue obtient la vitesse du vent à partir de 10 m de haut. Un peu trop haut pour moi…
J'espère que vous avez apprécié cette lecture !
Adafruit-GFX est expliqué ici:
MCUFRIEND_kbv.h se trouve ici:
En savoir plus sur le BMP 120 (identique au BMP085):
À propos de DHT22:
Conseillé:
Juste une autre console de jeu rétro ATtiny85 : 4 étapes
Juste une autre console de jeu rétro ATtiny85 : une petite configuration de type console rétro basée sur ATtiny85 x 0.96 OLED pour jouer aux envahisseurs de l'espace, Tetris, etc
Juste une ligne, juste de la lumière ! (Type1) : 19 étapes
Just Line, Just Light ! (Type1) : C'est un travail d'expression de la lumière sur des plaques acryliques gravées de motifs de dessins au trait. Il exprime harmonieusement les couleurs et les motifs de diverses LED. pour les planètes" de
Encore une autre station météo intelligente, mais : 6 étapes (avec photos)
Encore une autre station météo intelligente, mais… : OK, je sais qu'il y a tellement de telles stations météo disponibles partout, mais prenez quelques minutes pour voir la différence… 2 écrans e-paper à faible consommation… mais 10 différents écrans ! Accéléromètre basé sur ESP32 et capteurs de température / humidité Wifi upd
Juste une autre antenne : 4 étapes
Juste une autre antenne : J'ai donc décidé de créer une antenne à partir de matériaux de rebut que j'avais dans la maison, l'idée était de ne pas acheter de matériaux si possible. Je sais que la personne ordinaire n'aurait pas autant de déchets qui traînent, mais je l'ai fait alors je me suis mis au défi
PIWOOLET (Pi.WOOd.tabLET) : Juste une autre tablette PI : 10 étapes (avec photos)
PIWOOLET (Pi.WOOd.TABLET) : Juste une autre tablette PI : Intro - pourquoi ai-je réalisé cela ? La réponse est si simple : juste pour le plaisir :-) Quelques-uns de mes principaux objectifs maintiennent l'accès au port HDMI; conserver l'accès à la sortie audio; maintenir l'accès au GPIO; conserver l'accès à au moins un port USB. Le BOM Rasp