Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Manufacturing Technology >> Processus de fabrication

AWS - Station météo Arduino

Composants et fournitures

Arduino UNO
× 1
Câble USB-A vers Micro-USB
× 1
Planche à pain (générique)
× 1
Câbles de raccordement (générique)
× 1
Plexiglas 4 mm
× 1
Résistance 221 ohm
× 1
Adafruit Standard LCD - 16x2 Blanc sur Bleu
× 1
Maxim Integrated DS1307 64 x 8, série, I²C temps réel Horloge
× 1
Résistance photo
× 1
Capteur de température et d'humidité DHT11 (4 broches)
× 1
Capteur de température
× 1
Récepteur IR (générique)
× 1
Capteur de niveau d'eau
× 1
Kit RFID de démarrage Sunfounder
× 1

Outils et machines nécessaires

Coupe laser (générique)

À propos de ce projet

AWS, Arduino Weather Station, fournit des données précises 24 heures sur 24 pour l'environnement. En particulier, il est basé sur une carte de microcontrôleur Arduino, et il prend en charge un ensemble complet de capteurs pour l'analyse de l'environnement.

Le but

Le but de ce contrôle jusqu'à est de détecter une série de données grâce aux capteurs décrits ci-dessus et de l'interfacer avec l'utilisateur à travers un écran LCD. La petite taille du « hardware » du projet permet de le refermer dans une petite boîte réalisée avec la machine de découpe laser.

Capteurs utilisés

Capteur de niveau d'eau et de neige

L'indicateur de niveau d'eau est utilisé pour indiquer le niveau d'eau dans le réservoir supérieur, en l'utilisant, nous pouvons éviter le débordement d'eau, et à tout moment nous pouvons connaître le niveau d'eau dans le réservoir.

Capteur d'humidité et de température DHT11

Le capteur numérique de température et d'humidité DHT11 est un capteur combiné de température et d'humidité de sortie de signal numérique calibré, dont les modules spécifiques à l'application capturent la technologie et la technologie de capteur numérique de température et d'humidité pour garantir des produits d'une fiabilité élevée et d'une excellente stabilité à long terme. Le produit a une excellente qualité, une réponse rapide, une capacité anti-interférence, un faible coût et d'autres avantages.

Photorésistance

Les photorésistances, également appelées résistances dépendantes de la lumière (LDR), sont des dispositifs photosensibles le plus souvent utilisés pour indiquer la présence ou l'absence de lumière, ou pour mesurer l'intensité lumineuse. Dans l'obscurité, leur résistance est très élevée, mais lorsque le capteur LDR est exposé à la lumière, la résistance chute considérablement, même jusqu'à quelques ohms, selon l'intensité lumineuse.

Écran LCD I2C 1602

LCD1602 avec un bus I2C est un type de bus série. Il s'agit d'un bus série hautes performances doté d'une fonction de régulation de bus et de synchronisation de périphérique à haute ou basse vitesse requise par un système à hôtes multiples. Le potentiomètre bleu de l'I2C LCD1602 est utilisé uniquement pour le rétroéclairage.

I2C n'utilise que deux lignes bidirectionnelles à drain ouvert, Serial DataLine (SDA) et Serial Clock Line (SCL), tirées avec des résistances. Les tensions typiques utilisées sont +5 V ou +3,3 V bien que les systèmes avec d'autres tensions soient autorisés.

Module d'horloge temps réel DS1302

Il est basé sur le DS1302 intégré à l'intérieur duquel se trouvent une horloge/calendrier temps réel et 31 octets de RAM statique. Vous pouvez voir le format de l'heure sous la forme hh/mm/ss, tandis que le format de la date est aaaa/mm/jj.

Capteur de température LM35

Le capteur de température de précision LM35 est un capteur qui détecte la température de manière très précise. Le convertisseur analogique-numérique (ADC) convertit les valeurs analogiques en une approximation numérique basée sur la formule ADCValue =échantillon * 1024 / tension de référence (+5v). Donc avec une référence de +5 volts, l'approximation numérique sera =tension d'entrée * 205.

Récepteur infrarouge et télécommande

Ces deux composants fonctionnent ensemble :leur récepteur permet la réception des données de la télécommande. Les données dépendent du bouton sur lequel vous souhaitez appuyer. Les boutons suivants ont été choisis pour les affecter à des fonctions spécifiques :

  • Bouton 0 :vous pouvez voir l'heure et la date sur l'écran LCD.
  • 1 bouton :vous pouvez voir les données de température du LM35 et les données d'humidité du DHT11 sur l'écran LCD.
  •  2 boutons :vous pouvez voir le pourcentage d'obscurité sur l'écran LCD.
  •  3 bouton :vous pouvez voir la valeur du niveau de liquide (mm) sur l'écran LCD.
  • Bouton « Cycle » :vous pouvez voir tous les écrans dans un intervalle de 4 secondes les uns par rapport aux autres.

L'A.W.S.

Étape 1 :Construction de la boîte

Après avoir considéré la taille du projet, nous avons procédé à la construction de la boîte en plexiglas. Les tailles de faces avec leurs sièges et trous d'emboîtement relatifs pour la sortie des fils du capteur ont été conçues avec le logiciel Autocad, puis nous avons découpé les faces avec la machine de découpe laser. Et enfin, nous avons assemblé le tout avec de la colle puissante.

Étape 2 :Connexions schématiques et matérielles

Voici l'image du schéma de la station météo Arduino. Il a fait avec le logiciel fritzing. Les connexions sont assez simples.

Étape 3 :Arduino programmation

Nous avons fait le code sur Arduino IDE, utilisé toutes les bibliothèques dont nous avions besoin et programmé pour que notre station météo fonctionne comme nous le voulions.

Étape 4 : Comment ? fonctionne

AWS (Station météorologique Arduino ) est une station météo qui capte certaines données de l'environnement et leur permet de voir à l'aide d'une télécommande infrarouge. Pour les interfacer avec les utilisateurs, il dispose d'un écran LCD avec cinq écrans différents interchangeables par l'utilisateur.

Voici les écrans :

1. Écran d'accueil : c'est le premier écran que l'utilisateur peut voir quand on allume la carte. Il présente le projet avec les mots "Arduino Weather Station" qui ont un effet de décoloration particulier. Vous pouvez également voir cet écran chaque fois que vous demandez à AWS de voir certaines données.

2. Écran Date et heure : c'est le premier écran auquel l'utilisateur peut accéder, en appuyant simplement sur le bouton 0 de la télécommande. Lorsque vous appuyez dessus, l'écran a un délai de 10 secondes, puis revient à l'écran d'accueil.

3. Écran d'humidité et de température : c'est l'écran qui donne les données reçues par les capteurs DHT11 et LM35 concernant respectivement l'humidité et la température. Il est connecté au bouton 1 de la télécommande et lorsqu'il est enfoncé, l'écran a un délai de 10 secondes puis revient à l'écran d'accueil.

4. Écran sombre : c'est l'écran qui donne les données reçues par le LDR sur la quantité de lumière sur le capteur. Il montre le pourcentage d'obscurité sur le capteur. Il est connecté au bouton 2 de la télécommande et lorsqu'il est enfoncé, l'écran a un délai de 10 secondes puis revient à l'écran d'accueil.

5. Écran Niveau de fluide : cet écran donne la hauteur d'une quantité de fluide dans une recette. Il est connecté au bouton 3 de la télécommande et lorsqu'il est enfoncé, l'écran a un délai de 10 secondes puis revient à l'écran d'accueil.

Les quatre derniers écrans peuvent être visualisés successivement avec un intervalle de temps de 4 secondes les uns par rapport aux autres, en appuyant sur le bouton Cycle sur la télécommande. Avec ce mode, un seul tour des informations est effectué.

Précautions

Le premier fait à considérer pour la bonne pérennité de ce projet est d'éviter tout contact de liquides ou autres substances nocives avec la planche et avec la station en général.

Après une précipitation, il est nécessaire de vider le réservoir d'eau, de vérifier et de nettoyer le capteur.

La batterie rechargeable a une durée d'environ deux jours, il est donc nécessaire de la recharger (environ 2 heures) si elle va se décharger.

Parfois, le capteur infrarouge ne fonctionne probablement pas aussi bien que nous le souhaitons, de sorte que sa fonction peut être interrompue à basse température (environ 0 degré). Cela ne représente aucun problème, en fait il suffit d'ouvrir la boîte et d'appuyer sur le bouton de réinitialisation :AWS fonctionnera à nouveau normalement.

Si nous appuyons sur le bouton de réinitialisation, le module RTC DS1302 ne changera pas sa valeur sur la date et l'heure, grâce à la batterie de support présente dans le module qui dure environ 10 ans.

Si l'alimentation AWS est supprimée, la date et l'heure changeront. Pour résoudre le problème, il est nécessaire de les réinitialiser au point indiqué sur la liste en fonction de vos préférences. Une fois chargé, vous devez masquer les paramètres du programme comme indiqué ci-dessous.

Avant : Heure t(2017, 12, 03, 10, 15, 00, 1);rtc.heure(t);Après://Heure t(2017, 12, 03, 10, 15, 00, 1)//;rtc.time(t); 

Code

//include sketch library#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 se connecte à A1LiquidCrystal_I2C lcd(0x27, 16, 2); // définit l'adresse LCD sur 0x27 pour un displaydht DHT de 16 caractères et 2 lignes ; //créer un type de variable de dhtconst int DHT11_PIN =4; // attachez dht11 à la broche 4const int waterSensor =0; //définir la variable du capteur d'eauint waterValue =0; //variable pour le capteur d'eauint mmwaterValue =0;int sensorPin =A3; // sélectionne la broche d'entrée pour le potentiomètreint luce =0; //variable pour le ldrint pluce =0; //variable pour le ldrfloat tem =0; //variable pour la températurelong lmVal =0; //variable pour le LM35//irconst int irReceiverPin =3;IRrecv irrecv(irReceiverPin); //Crée une variable de type IRrecvdecode_results results;//define clock variableuint8_t RST_PIN =5; // Attache broche RST touint8_t SDA_PIN =6; //Broche IO attachée touint8_t SCL_PIN =7; //clk Pin attach to/* Créer des tampons */char buf[50];char day[10];/* Créer un objet DS1302 */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//créer un type de variable DS1302void print_time(){ /* Récupère l'heure et la date actuelles de la puce */ Time t =rtc.time(); /* Nommer le jour de la semaine */ memset(day, 0, sizeof(day)); switch (t.day) { cas 1 :strcpy(day, "Sun"); Pause; cas 2 :strcpy(jour, "Lun"); Pause; cas 3 :strcpy(jour, "mar"); Pause; cas 4:strcpy(jour, "Mer"); Pause; case 5:strcpy(jour, "Jeu"); Pause; cas 6 :strcpy(jour, "Ven"); Pause; cas 7 :strcpy(jour, "Sat"); Pause; } /* Formater l'heure et la date et insérer dans le tampon temporaire */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. an, t.mon, t.date, t.hr, t.min, t.sec); /* Affiche la chaîne formatée en serial afin que nous puissions voir l'heure */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.an); lcd.print("-"); lcd.print(t.mon/10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.date % 10); lcd.print(" "); lcd.print(jour); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(faux); //ir irrecv.enableIRIn(); //activer le module récepteur ir lcd.init(); //initialisation de l'écran lcd lcd.backlight(); // ouvrir le rétro-éclairage pinMode (sensorPin, INPUT); Heure t(2017, 12, 03, 10, 15, 00, 1);//initialiser l'heure /* Régler l'heure et la date sur la puce */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("A"); retard (50); lcd.setCursor(1, 0); lcd.print("r"); retard (50); lcd.setCursor(2, 0); lcd.print("d"); retard (50); lcd.setCursor(3, 0); lcd.print("u"); retard (50); lcd.setCursor(4, 0); lcd.print("je"); retard (50); lcd.setCursor(5, 0); lcd.print("n"); retard (50); lcd.setCursor (6, 0); lcd.print("o"); retard (50); lcd.setCursor(8, 0); lcd.print("W"); retard (50); lcd.setCursor(9, 0); lcd.print("e"); retard (50); lcd.setCursor (10, 0); lcd.print("a"); retard (50); lcd.setCursor(11, 0); lcd.print("t"); retard (50); lcd.setCursor(12, 0); lcd.print("h"); retard (50); lcd.setCursor(13, 0); lcd.print("e"); retard (50); lcd.setCursor(14, 0); lcd.print("r"); retard (50); lcd.setCursor(4, 1); lcd.print("S"); retard (50); lcd.setCursor(5, 1); lcd.print("t"); retard (50); lcd.setCursor (6, 1); lcd.print("a"); retard (50); lcd.setCursor(7, 1); lcd.print("t"); retard (50); lcd.setCursor(8, 1); lcd.print("je"); retard (50); lcd.setCursor(9, 1); lcd.print("o"); retard (50); lcd.setCursor (10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //si les données du récepteur du module récepteur ir { if (results.value ==0xFF6897) //si "0" est poussé print TIME{ lcd.clear(); //efface l'écran LCD print_time(); retard (10000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF30CF) //si "1" est poussé imprimer TEMPERATURE et HUMIDITE{ lcd.clear(); //efface l'écran LCD //READ DATA du DHT int chk =DHT.read11(DHT11_PIN); // AFFICHAGE DES DONNÉES lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lire la valeur de A1 tem =(lmVal * 0,0048828125 * 100);//5/1024=0,0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print the unit" ? " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("Hum :"); //Serial.print("Hum :"); lcd.print(DHT.humidité, 1); //impression de l'humidité sur l'écran lcd //Serial.print(DHT.humidity,1) ; lcd.print(" % "); //Série.println(" %"); retard (10000); // attendre 3000 ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF18E7) ​​//si "2" est poussé imprimer le DARKNESS{ lcd.clear(); //efface l'écran LCD lcd.setCursor(4, 0); //placez le curseur sur 4 colonnes, 1 ligne lcd.print("Darkness:"); luce =analogRead(sensorPin); //lire le ldr pluce =map(luce, 0, 1023, 0, 100); //la valeur du capteur est convertie en valeurs de 0 à 100 lcd.setCursor(6, 1); //placez le curseur au milieu de l'écran LCD lcd.print(pluce); // affiche le pourcentage lcd.print("%"); // affiche le délai de symbole (10000); //délai 10000 ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF7A85) //si "3" est poussé, imprimer le NIVEAU DE NEIGE ou D'EAU{ lcd.clear(); //efface l'écran LCD lcd.setCursor(0, 0); //placez le curseur sur 0 colonne, 1 ligne lcd.print("Niveau de fluide (mm):"); //print "Niveau de fluide (mm):" int waterValue =analogRead(waterSensor); // obtenir la valeur du capteur d'eau lcd.setCursor (6, 1); //placez le curseur sur 6 colonnes, 2 lignes mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //valeur affichée sur lcd delay (10000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); irrecv.resume(); // Recevez la valeur suivante}if (results.value ==0xFF9867) //si "PRESENTATION" est poussé, imprimez TIME, TEM et HUM, DARKNESS et S ou W LEVEL une fois{ lcd.clear(); //efface l'écran LCD print_time(); retard (4000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); //attendre un moment //READ DATA du DHT int chk =DHT.read11(DHT11_PIN); // AFFICHAGE DES DONNÉES lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lire la valeur de A0 tem =(lmVal * 0,0048828125 * 100);//5/1024=0,0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print the unit" ? " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("Hum :"); //Serial.print("Hum :"); lcd.print(DHT.humidité, 1); //impression de l'humidité sur l'écran lcd //Serial.print(DHT.humidity,1) ; lcd.print(" % "); //Série.println(" %"); retard (4000); // attendre 3000 ms lcd.clear(); //efface le délai LCD (200); //attendre un moment lcd.setCursor(4, 0); //placez le curseur sur 4 colonnes, 1 ligne lcd.print("Darkness:"); luce =analogRead(sensorPin); //lire le ldr pluce =map(luce, 0, 1023, 0, 100); //la valeur du capteur est convertie en valeurs de 0 à 100 lcd.setCursor(6, 1); //placez le curseur au milieu de l'écran LCD lcd.print(pluce); // affiche le pourcentage lcd.print("%"); // affiche le symbole delay(4000); //délai 10000 ms lcd.clear(); //efface le délai LCD (200); //attendre un moment lcd.setCursor(0, 0); //placez le curseur sur 0 colonne, 1 ligne lcd.print("Niveau de fluide (mm):"); //print "Niveau de fluide (mm):" int waterValue =analogRead(waterSensor); // obtenir la valeur du capteur d'eau lcd.setCursor (6, 1); //placez le curseur sur 6 colonnes, 2 lignes mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //valeur affichée sur lcd delay(4000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); irrecv.resume(); // Recevoir la valeur suivante}}}  

Au lieu d'écrire "Arduino Weather Station" lettre par lettre, il est possible de l'écrire avec le mode "commutateur/cas".

CONCLUSION

Nous avons réalisé une station météo avec Arduino qui prend en compte la date et l'heure actuelles et récupère certaines données environnementales pour les imprimer sur un écran LCD contrôlé par une télécommande infrarouge.

Code

  • AWS code.ino
AWS code.inoC/C++
//include sketch library#include #include  //clock library#include  //clock library#include  //clock library#include  //dht11 library#include  //LCD library#include  //Wire for LCD library#define lmPin A1 //LM35 se connecte à A1LiquidCrystal_I2C lcd (0x27, 16, 2 ); // définit l'adresse LCD sur 0x27 pour un displaydht DHT de 16 caractères et 2 lignes ; //créer un type de variable de dhtconst int DHT11_PIN =4; // attachez dht11 à la broche 4const int waterSensor =0; //définir la variable du capteur d'eauint waterValue =0; //variable pour le capteur d'eauint mmwaterValue =0;int sensorPin =A3; // sélectionne la broche d'entrée pour le potentiomètreint luce =0; //variable pour le ldrint pluce =0; //variable pour le ldrfloat tem =0; //variable pour la températurelong lmVal =0; //variable pour le LM35//irconst int irReceiverPin =3;IRrecv irrecv(irReceiverPin); //Crée une variable de type IRrecvdecode_results results;//define clock variableuint8_t RST_PIN =5; // Attache broche RST touint8_t SDA_PIN =6; //Broche IO attachée touint8_t SCL_PIN =7; //clk Pin attach to/* Créer des tampons */char buf[50];char day[10];/* Créer un objet DS1302 */DS1302 rtc(RST_PIN, SDA_PIN, SCL_PIN);//créer un type de variable DS1302void print_time(){ /* Récupère l'heure et la date actuelles de la puce */ Time t =rtc.time(); /* Nommer le jour de la semaine */ memset(day, 0, sizeof(day)); switch (t.day) { cas 1 :strcpy(day, "Sun"); Pause; cas 2 :strcpy(jour, "Lun"); Pause; cas 3 :strcpy(jour, "mar"); Pause; cas 4:strcpy(jour, "Mer"); Pause; case 5:strcpy(jour, "Jeu"); Pause; cas 6 :strcpy(jour, "Ven"); Pause; cas 7 :strcpy(jour, "Sat"); Pause; } /* Formater l'heure et la date et insérer dans le tampon temporaire */ snprintf(buf, sizeof(buf), "%s %04d-%02d-%02d %02d:%02d:%02d", day, t. an, t.mon, t.date, t.hr, t.min, t.sec); /* Affiche la chaîne formatée en serial afin que nous puissions voir l'heure */ Serial.println(buf); lcd.setCursor(2, 0); lcd.print(t.an); lcd.print("-"); lcd.print(t.mon/10); lcd.print(t.mon % 10); lcd.print("-"); lcd.print(t.date / 10); lcd.print(t.date % 10); lcd.print(" "); lcd.print(jour); lcd.setCursor(4, 1); lcd.print(t.hr); lcd.print(":"); lcd.print(t.min / 10); lcd.print(t.min % 10); lcd.print(":"); lcd.print(t.sec / 10); lcd.print(t.sec % 10);}void setup() { //clock Serial.begin(9600); rtc.write_protect(false); rtc.halt(faux); //ir irrecv.enableIRIn(); //activer le module récepteur ir lcd.init(); //initialisation de l'écran lcd lcd.backlight(); // ouvrir le rétro-éclairage pinMode (sensorPin, INPUT); Heure t(2017, 12, 9, 11, 20, 00, 7);//initialiser l'heure /* Régler l'heure et la date sur la puce */ rtc.time(t);}void loop() { lcd. setCursor(0, 0); lcd.print("A"); retard (50); lcd.setCursor(1, 0); lcd.print("r"); retard (50); lcd.setCursor(2, 0); lcd.print("d"); retard (50); lcd.setCursor(3, 0); lcd.print("u"); retard (50); lcd.setCursor(4, 0); lcd.print("je"); retard (50); lcd.setCursor(5, 0); lcd.print("n"); retard (50); lcd.setCursor (6, 0); lcd.print("o"); retard (50); lcd.setCursor(8, 0); lcd.print("W"); retard (50); lcd.setCursor(9, 0); lcd.print("e"); retard (50); lcd.setCursor (10, 0); lcd.print("a"); retard (50); lcd.setCursor(11, 0); lcd.print("t"); retard (50); lcd.setCursor(12, 0); lcd.print("h"); retard (50); lcd.setCursor(13, 0); lcd.print("e"); retard (50); lcd.setCursor(14, 0); lcd.print("r"); retard (50); lcd.setCursor(4, 1); lcd.print("S"); retard (50); lcd.setCursor(5, 1); lcd.print("t"); retard (50); lcd.setCursor (6, 1); lcd.print("a"); retard (50); lcd.setCursor(7, 1); lcd.print("t"); retard (50); lcd.setCursor(8, 1); lcd.print("je"); retard (50); lcd.setCursor(9, 1); lcd.print("o"); retard (50); lcd.setCursor (10, 1); lcd.print("n"); delay(50);if (irrecv.decode(&results)) //si les données du récepteur du module récepteur ir { if (results.value ==0xFF6897) //si "0" est poussé print TIME{ lcd.clear(); //efface l'écran LCD print_time(); retard (10000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF30CF) //si "1" est poussé imprimer TEMPERATURE et HUMIDITE{ lcd.clear(); //efface l'écran LCD //READ DATA du DHT int chk =DHT.read11(DHT11_PIN); // AFFICHAGE DES DONNÉES lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lire la valeur de A1 tem =(lmVal * 0,0048828125 * 100);//5/1024=0,0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print the unit" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("Hum :"); //Serial.print("Hum :"); lcd.print(DHT.humidité, 1); //impression de l'humidité sur l'écran lcd //Serial.print(DHT.humidity,1) ; lcd.print(" % "); //Série.println(" %"); retard (10000); // attendre 3000 ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF18E7) ​​//si "2" est poussé imprimer le DARKNESS{ lcd.clear(); //efface l'écran LCD lcd.setCursor(4, 0); //placez le curseur sur 4 colonnes, 1 ligne lcd.print("Darkness:"); luce =analogRead(sensorPin); //lire le ldr pluce =map(luce, 0, 1023, 0, 100); //la valeur du capteur est convertie en valeurs de 0 à 100 lcd.setCursor(6, 1); //placez le curseur au milieu de l'écran LCD lcd.print(pluce); // affiche le pourcentage lcd.print("%"); // affiche le délai de symbole (10000); //délai 10000 ms lcd.clear(); //efface le délai LCD (200); // attendre un peu irrecv.resume(); // Recevoir la valeur suivante}if (results.value ==0xFF7A85) //si "3" est poussé, imprimer le NIVEAU DE NEIGE ou D'EAU{ lcd.clear(); //efface l'écran LCD lcd.setCursor(0, 0); //placez le curseur sur 0 colonne, 1 ligne lcd.print("Niveau de fluide (mm):"); //print "Niveau de fluide (mm):" int waterValue =analogRead(waterSensor); // obtenir la valeur du capteur d'eau lcd.setCursor (6, 1); //placez le curseur sur 6 colonnes, 2 lignes mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //valeur affichée sur lcd delay (10000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); irrecv.resume(); // Recevez la valeur suivante}if (results.value ==0xFF9867) //si "PRESENTATION" est poussé, imprimez TIME, TEM et HUM, DARKNESS et S ou W LEVEL une fois{ lcd.clear(); //efface l'écran LCD print_time(); retard (4000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); //attendre un moment //READ DATA du DHT int chk =DHT.read11(DHT11_PIN); // AFFICHAGE DES DONNÉES lcd.setCursor(0, 0); lcd.print("Tem:"); lmVal =analogRead(lmPin);//lire la valeur de A0 tem =(lmVal * 0,0048828125 * 100);//5/1024=0,0048828125;1000/10=100 lcd.print(tem);//print tem lcd. print(char(223));//print the unit" " lcd.print("C "); // Serial.println(" C"); lcd.setCursor(0, 1); lcd.print("Hum :"); //Serial.print("Hum :"); lcd.print(DHT.humidité, 1); //impression de l'humidité sur l'écran lcd //Serial.print(DHT.humidity,1) ; lcd.print(" % "); //Série.println(" %"); retard (4000); // attendre 3000 ms lcd.clear(); //efface le délai LCD (200); //attendre un moment lcd.setCursor(4, 0); //placez le curseur sur 4 colonnes, 1 ligne lcd.print("Darkness:"); luce =analogRead(sensorPin); //lire le ldr pluce =map(luce, 0, 1023, 0, 100); //la valeur du capteur est convertie en valeurs de 0 à 100 lcd.setCursor(6, 1); //placez le curseur au milieu de l'écran LCD lcd.print(pluce); // affiche le pourcentage lcd.print("%"); // affiche le symbole delay(4000); //délai 10000 ms lcd.clear(); //efface le délai LCD (200); //attendre un moment lcd.setCursor(0, 0); //placez le curseur sur 0 colonne, 1 ligne lcd.print("Niveau de fluide (mm):"); //print "Niveau de fluide (mm):" int waterValue =analogRead(waterSensor); // obtenir la valeur du capteur d'eau lcd.setCursor (6, 1); //placez le curseur sur 6 colonnes, 2 lignes mmwaterValue =map(waterValue, 0, 1023, 0, 40); lcd.print(mmwaterValue); //valeur affichée sur lcd delay(4000); //délai 10000ms lcd.clear(); //efface le délai LCD (200); irrecv.resume(); // Recevoir la valeur suivante}}}

Pièces et boîtiers personnalisés

box_a5et5f4U9F.dwg

Schémas

aws_DMDwb4iUZp.fzz

Processus de fabrication

  1. Weather Station V 2.0
  2. Détecteur de langage TinyML basé sur Edge Impulse et Arduino
  3. Jeu de gyroscope Arduino avec MPU-6050
  4. 6-Shooter :Station de mélange de boissons Arduino
  5. Dés numériques Arduino
  6. Trouvez-moi
  7. Lampe de bureau réactive audio Arduino
  8. enregistreur de données de ballon météo alimenté par Arduino
  9. Station météo portable Arduino (AWS) à 10 $