Table des matières:

Station météo utilisant Arduino UNO : 7 étapes
Station météo utilisant Arduino UNO : 7 étapes

Vidéo: Station météo utilisant Arduino UNO : 7 étapes

Vidéo: Station météo utilisant Arduino UNO : 7 étapes
Vidéo: Une STATION MÉTÉO avec un ARDUINO ! 2024, Juillet
Anonim
Station météo utilisant Arduino UNO
Station météo utilisant Arduino UNO

Créé par: Hazel Yang

Ce projet est une station météo utilisant une carte Arduino UNO pour contrôler le flux de données, un capteur DHT22 pour collecter les données et un écran OLED pour afficher les données.

Étape 1: liste d'articles

Liste des articles
Liste des articles

1. Écran: OLED, écran 1,3 SH1106, couleur blanche I2C ---- PID: 18283

2. Capteur: Capteur numérique d'humidité et de température DHT22 ---- PID: 7375

3. Se connecte: fils de raccordement ---- PID: 10316 ou 10318 ou 10312 (selon la longueur) ou vous pouvez utiliser un fil solide 22 AWG ---- PID: 22490

Planche à pain ---- PID: 10686 ou 10698 ou 103142 (selon la taille)

4. Alimentation: ce câble ne peut se connecter qu'à un port USB d'ordinateur et le câble est également utilisé pour le transfert de données entre l'IDE et la carte Arduino. CÂBLE USB, A À B, M/M, 0,5 M (1,5 FT) ---- PID: 29862

Ou vous pouvez l'utiliser pour alimenter la carte: Adaptateur AC/DC 5V 2A ---- PID: 10817.

Étape 2: Introduction relative

Introduction relative
Introduction relative
Introduction relative
Introduction relative

Présentation de l'écran: écran OLED de 1,3 pouce blanc

1. Vous pouvez trouver le document qui montre la configuration de base et les descriptions:

Présentation du capteur: capteur d'humidité et de température DHT22 1. Vous pouvez trouver le document qui présente les descriptions:

Étape 3: connectez le circuit

Connectez le circuit
Connectez le circuit

Le capteur DHT22 envoie des données série à la broche 2. Connectez donc la deuxième broche en partant de la gauche, la broche "SDA" doit être connectée à la broche 2.

Pour l'affichage SSH1106, il utilise la broche analogique pour transmettre. Les circuits de l'écran seront la broche "SCL" sur "A5" d'Arduino et la broche "SDA" sur "A4" d'Arduino. Alors que les données de position des pixels sont transmises en continu, la fonction d'affichage du programme ne déclenche la commande qu'une seule fois chaque fois qu'elle lit les données du capteur.

Le capteur et l'écran peuvent utiliser le 3,3 V pour allumer Arduino en tant qu'entrée d'alimentation CC. Pour alimenter, nous devons connecter les deux broches "VCC" au "3.3V" d'Arduino. Et les broches "GND" peuvent être simplement connectées à la broche "GND" de la carte Arduino.

Utilisez le câble USB A vers B, connectez l'Arudino à l'ordinateur.

Étape 4: Préparez-vous à compiler

"u8glib" pour l'écran SSH1106 d'Olikraus.

"Bibliothèque de capteurs DHT" pour le capteur DHT22 d'Adafruit. Vous devez télécharger les deux bibliothèques: Bibliothèque de capteurs DHT22:

U8glib:

Et utilisez « gérer la bibliothèque » dans l'IDE pour les décompresser. Instructions en ligne de gestion des bibliothèques:

Étape 5: Code de test pour le port série du capteur DHT22

Testez le coe pour le port série du capteur DHT22 (qui se trouve dans la bibliothèque DHT22>>exemples):

(Vous pouvez sauter cette partie.)

Il suffit de tester le capteur DHT22 pour lire les données normalement

#comprendre

#comprendre

#comprendre

#comprendre

#comprendre

#définir DHTPIN 2

#définir DHTTYPE DHT22

DHT dht (DHTPIN, DHTTYPE);

void setup() {

Serial.begin(9600);

Serial.println(F("Test DHT22 !"));

dht.begin();

}

boucle vide() {

// Attendez quelques secondes entre les mesures.

retard (2000);

// La lecture de la température ou de l'humidité prend environ 250 millisecondes !

// Les lectures du capteur peuvent également avoir jusqu'à 2 secondes d'ancienneté (c'est un capteur très lent)

float h = dht.readHumidity();

// Lecture de la température en Celsius (valeur par défaut)

float t = dht.readTemperature();

// Lecture de la température en Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature(true);

// Vérifiez si des lectures ont échoué et quittez plus tôt (pour réessayer).

si (isnan(h) || isnan(t) || isnan(f)) {

Serial.println(F("Impossible de lire à partir du capteur DHT !"));

revenir;

}

// Calculer l'indice de chaleur en Fahrenheit (par défaut)

float hif = dht.computeHeatIndex(f, h);

// Calculer l'indice de chaleur en Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, faux);

Serial.print(F("Humidité: "));

Serial.print(h);

Serial.print(F("% Température: "));

Serial.print(t);

Serial.print(F("°C "));

Serial.print(f);

Serial.print(F("°F Indice de chaleur: "));

Serial.print(hic);

Serial.print(F("°C "));

Serial.print(hif);

Serial.println(F("°F"));

}

// Après avoir compilé le programme, cliquez sur OUTILS >> MONITEUR SÉRIE pour vérifier les données.

// Fin du programme de test.

Étape 6: Coder le projet

#comprendre

#comprendre

#comprendre

#comprendre

#comprendre

#définir DHTPIN 2

#définir DHTTYPE DHT22

#include "U8glib.h"

U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE);

Capteur DHT (DHTPIN, DHTTYPE);

tirage nul (vide) {

u8g.setFont(u8g_font_unifont);

float h = sensor.readHumidity();

// Lecture de la température en Celsius (valeur par défaut)

float t = sensor.readTemperature();

// Vérifiez si des lectures ont échoué et quittez plus tôt (pour réessayer).

si (isnan(h) || isnan(t)) {

u8g.print("Erreur.");

pour(;;);

revenir;

}

u8g.setPrintPos(4, 10);

u8g.print("Température(C):");

u8g.setPrintPos(4, 25);

u8g.print(t);

u8g.setPrintPos(4, 40);

u8g.print("Humidité(%):");

u8g.setPrintPos(4, 55);

u8g.print(h);

}

configuration vide (void) {

u8g.setRot180();

Serial.begin(9600);

sensor.begin();

}

boucle vide (vide) {

// boucle d'image

u8g.premièrePage();

faire {

dessiner();

} while(u8g.page suivante());

// reconstruire l'image après un certain délai delay(2000);

}

// Fin du programme principal.

Étape 7: Description

La description
La description

Ensuite, initialisez le circuit des broches de la carte Arduino. Parce que la bibliothèque de capteurs a besoin des données pour déclarer l'objet.

Et vous pouvez tester les données du capteur en surveillant les données de sortie via la broche numérique 2 en utilisant la fonction appelée "Serial.print()". Étant donné que la fréquence de transmission des données est d'environ 1 lecture toutes les 2 secondes (ce qui correspond à 0,5 Hz), lorsqu'elle est programmée dans Arduino IDE, nous devons définir le délai à l'intérieur de la fonction de boucle sur plus de 2 secondes. Il y a donc un "delay(2000)" à l'intérieur de la fonction de boucle. Cela garantit que les données seront actualisées fréquemment. Dans la fonction "draw", récupérez les données du port de données série et placez-les dans des nombres flottants à l'aide des fonctions "readHumidity" et "readTemperature".

Imprimez l'humidité et la température en utilisant la fonction d'impression dans le fichier "u8glib". Vous pouvez ajuster la position en changeant le numéro dans la fonction "setPrintPos". La fonction d'impression peut afficher directement le texte et les chiffres.

Pour configurer le matériel, donnez au port série un délai de 10 secondes. Appelez ensuite la fonction begin pour le capteur. D'après mon circuit, mon écran était à l'envers. J'ai donc également inclus une fonction "setRot180" pour faire pivoter l'affichage.

La fonction de boucle de la carte Arduino est la fonction principale. Il continue d'appeler la fonction de dessin pour afficher le texte et les données à chaque fois que le capteur est actualisé.

L'écran ressemble à ceci:

Vous pouvez déconnecter l'Arduino UNO de votre ordinateur et l'alimenter à l'aide d'un adaptateur secteur 5 V CC connecté à sa prise d'alimentation de 2,1 mm. Il stocke le programme à l'intérieur de son lecteur et peut exécuter à nouveau le programme en continu après avoir été alimenté.

Conseillé: