Comment construire un système de surveillance météorologique basé sur l’IoT à l’aide d’Arduino?

IoT-based Weather Monitoring System Using Arduino

Avez-vous déjà voulu construire le vôtre Station de surveillance météorologique basée sur l’IoT? Imaginez la surveillance de la température en temps réel, des niveaux d’humidité, de la pression atmosphérique, de la détection des précipitations, de l’indice de qualité de l’air (AQI), et plus encore – de votre réseau local. Avec la puissance du Arduino Uno R4 WiFivous pouvez créer une dynamique Page Web du tableau de bord météo Cela affiche toutes vos données environnementales en temps réel sans s’appuyer sur des services cloud tiers.

Pas besoin de souligner les configurations de cloud complexes ou les plans d’abonnement coûteux. Ce Projet de station météo IoT DIY Ne nécessite que quelques capteurs environnementaux et la carte WiFi Arduino Uno R4 polyvalente. Il mélange l’IoT, le développement Web et la programmation intégrée, ce qui en fait un projet IoT idéal pour les débutants, les étudiants et les amateurs de technologie intéressés par les systèmes météorologiques intelligents, les projets Arduino et la surveillance des données en temps réel.

Station météorologique basée sur l'IoT utilisant Arduino

Un système de surveillance météorologique basé sur l’IoT utilise des capteurs pour collecter des données environnementales en temps réel comme la température, l’humidité et la pression de l’air. Il transmet les données vers le cloud à l’aide de protocoles IoT tels que Wi-Fi ou LORA. Les utilisateurs peuvent accéder à ces informations à distance via les applications Web ou mobiles. Ce système contribue à des prévisions précises, à la recherche environnementale et à l’agriculture intelligente.

Diagramme de circuit pour le système de surveillance météorologique basé sur Arduino

Pin de capteur MQ135 Broche arduino uno r4
VCC 5V
GND GND
Faire Pin analogique (A3)
Pin de capteur DHT11 Broche arduino uno r4
VCC 5V
GND GND
DONNÉES PIN numérique (D2)
Broche de capteur BMP180 Broche arduino uno r4
VCC 5V
GND GND
SDA SDA (A4)
SCL SCL (A5)
Pin de capteur de pluie Broche arduino uno r4
VCC 5V
GND GND
Do un PIN numérique (D3)

Configuration matérielle du système de surveillance météorologique utilisant Arduino

#include 
#include 
#include 
#include 
#include "Arduino_LED_Matrix.h"
#include "WiFiS3.h"
#define Rain_SensorPin 3
#define Air_SensorPin A0
#define Temp_Hum_SensorPin 2
DHT_Unified dht(Temp_Hum_SensorPin, DHT11);
Adafruit_BMP085 bmp;
WiFiServer server(80);
ArduinoLEDMatrix matrix;  
const uint32_t wifi_connected[] = {
                               0x3f840,
        0x49f22084,
        0xe4110040
};
const uint32_t no_wifi[] = {
                               0x403f844,
        0x49f22484,
        0xe4110040
};
char ssid[] = "Semicon Media";
char pass[] = "xxxxxxxxxxxx";
float temperature = 0.0, humidity = 0.0, pressure = 0.0;
int AQI = 0, rainfall = 0;
unsigned long lastSensorUpdate = 0;
unsigned long lastWiFiCheck = 0;
void wifi_connect(){
 if (WiFi.status() == WL_NO_MODULE) {
   Serial.println("Communication with WiFi module failed!");
   matrix.loadFrame(no_wifi);
   while (true);
 }
 Serial.print("Connecting to WiFi...");
 matrix.loadSequence(LEDMATRIX_ANIMATION_WIFI_SEARCH);
 matrix.play(true);
 delay(6000);
 while (WiFi.begin(ssid, pass) != WL_CONNECTED) {
   Serial.print(".");
   delay(1000);
 }
 
 matrix.loadFrame(wifi_connected);
 
 Serial.println("\nConnected to WiFi!");
 Serial.print("IP Address: ");
 Serial.println(WiFi.localIP());
}

Symbole WiFi stable après une connexion réussie avec le hotspot

void wifi_reconnect(){
   Serial.println("Wifi Reconnecting........");
   matrix.loadFrame(no_wifi);
   delay(6000);
   wifi_connect();
}

Reconnecter Arduino à Hotspot après la perte de connexion

void read_sensor_data(){
   sensors_event_t event;
   dht.temperature().getEvent(&event);
   temperature = event.temperature;
   dht.humidity().getEvent(&event);
   humidity = event.relative_humidity;
   pressure = bmp.readPressure() / 100.0; // Convert Pa to mbar
   int mq135Raw = analogRead(Air_SensorPin);
   float mq135PPM = mq135Raw * (5.0 / 1023.0) * 200.0; // Convert raw value to PPM
   AQI = map(mq135PPM, 0, 500, 0, 300); // Convert PPM to AQI (adjust as needed)
   rainfall = digitalRead(Rain_SensorPin) == HIGH ? 0 : 1;
   Serial.println("-------------------------");
   Serial.println(temperature);
   Serial.println(humidity);
   Serial.println(rainfall);
   Serial.println(pressure);
   Serial.println("-------------------------");
}
void send_json_data(WiFiClient &client) {
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: application/json");
 client.println("Connection: close");
 client.println();
 
 String json = "{\"temperature\":" + String(temperature) +
               ",\"humidity\":" + String(humidity) +
               ",\"pressure\":" + String(pressure) +
               ",\"aqi\":" + String(AQI) +
               ",\"rainfall\":" + String(rainfall) + "}";
 
 client.println(json);
}
void send_web_page(WiFiClient &client) {
 // Send HTTP headers
 client.println("HTTP/1.1 200 OK");
 client.println("Content-Type: text/html");
 client.println("Connection: close");
 client.println();
 // Use raw string literal for HTML content
 const char* html = R"rawliteral(





Weather Dashboard







Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

  • Station Météo Connectée WIFI, 11 en 1 Professionnelle Station Meteo Sans Fil avec Capteur Extérieur, Anémomètre, Pluviomètre, Girouette, Thermomètre, Hygromètre, Prévisions Météorologiques, Indice UV
  • VEVOR Station Météo Wifi 7 en 1 Station Météo Sans Fil Intérieur Extérieur Solaire Grand Écran Couleur 7,5 po Station Météo Numérique Capteur pour Température Humidité Vitesse Direction de Vent Pluie