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

Station météo IoT temps réel – Arduino, ESP8266, DHT11 & ThingSpeak

Matériel

Arduino Uno 1
Module ESP8266 ESP-01 (WiFi) 1
Capteur DHT11 température/humidité (3 broches) 1
Plaque d'essai + alimentation 5V/3,3V (module breadboard) 1
Fils de liaison 1 lot

Câblage

ESP-01 (attention : 3,3V uniquement !)

DHT11

Important : L'ESP8266 a des pics de courant > 300 mA. L'alim 3,3V de l'Arduino est insuffisante. Utilisez impérativement un module d'alimentation breadboard 5V/3,3V externe.

Configuration ThingSpeak

  1. Créez un compte sur ThingSpeak.
  2. New Channel → 2 champs : Field 1 = Temperature, Field 2 = Humidity.
  3. Notez la Write API Key (onglet API Keys).

Bibliothèques Arduino requises

  1. Adafruit Unified Sensor : GitHub
  2. DHT sensor library : GitHub
  3. Installation : Croquis → Inclure une bibliothèque → Ajouter la bibliothèque .ZIP

Sketch complet

String myAPIkey = "VOTRE_WRITE_API_KEY_ICI";
#include <SoftwareSerial.h>
#include <DHT.h>

SoftwareSerial ESP8266(2, 3); // RX, TX
#define DHTTYPE DHT11
#define DHTPIN A0
DHT dht(DHTPIN, DHTTYPE, 11); // 3e param = timing pour CPU 16MHz

float humidity, temp_f;
long writingTimer = 17; // intervalle en secondes (min 15s pour ThingSpeak gratuit)
long startTime = 0;
unsigned char check_connection = 0;
unsigned char times_check = 0;

void setup() {
  Serial.begin(9600);
  ESP8266.begin(9600);
  dht.begin();
  startTime = millis();
  ESP8266.println("AT+RST");
  delay(2000);
  Serial.println("Connexion WiFi...");
  while (check_connection == 0) {
    Serial.print(".");
    ESP8266.print("AT+CWJAP=\"VOTRE_SSID\",\"VOTRE_MOT_DE_PASSE\"\r\n");
    ESP8266.setTimeout(5000);
    if (ESP8266.find("WIFI CONNECTED\r\n") == 1) {
      Serial.println("WIFI CONNECTED");
      break;
    }
    times_check++;
    if (times_check > 3) {
      times_check = 0;
      Serial.println("Reconnexion...");
    }
  }
}

void loop() {
  long waitTime = millis() - startTime;
  if (waitTime > (writingTimer * 1000)) {
    readSensors();
    writeThingSpeak();
    startTime = millis();
  }
}

void readSensors() {
  temp_f = dht.readTemperature(); // °C
  humidity = dht.readHumidity();  // %
}

void writeThingSpeak() {
  startThingSpeakCmd();
  String getStr = "GET /update?api_key=";
  getStr += myAPIkey;
  getStr += "&field1=" + String(temp_f);
  getStr += "&field2=" + String(humidity);
  getStr += "\r\n\r\n";
  GetThingspeakcmd(getStr);
}

void startThingSpeakCmd() {
  ESP8266.flush();
  String cmd = "AT+CIPSTART=\"TCP\",\"";
  cmd += "184.106.153.149"; // IP api.thingspeak.com
  cmd += "\",80";
  ESP8266.println(cmd);
  Serial.print("Start: "); Serial.println(cmd);
  if (ESP8266.find("Error")) {
    Serial.println("AT+CIPSTART error");
    return;
  }
}

String GetThingspeakcmd(String getStr) {
  String cmd = "AT+CIPSEND=";
  cmd += String(getStr.length());
  ESP8266.println(cmd);
  Serial.println(cmd);
  if (ESP8266.find(">")) {
    ESP8266.print(getStr);
    Serial.println(getStr);
    delay(500);
    String messageBody = "";
    while (ESP8266.available()) {
      String line = ESP8266.readStringUntil('\n');
      if (line.length() == 1) {
        messageBody = ESP8266.readStringUntil('\n');
      }
    }
    Serial.print("Response: "); Serial.println(messageBody);
    return messageBody;
  } else {
    ESP8266.println("AT+CIPCLOSE");
    Serial.println("AT+CIPCLOSE");
  }
  return "";
}

Résultat sur ThingSpeak

Graphiques température/humidité mis à jour toutes les 15–17 secondes. Visualisation publique ou privée, alertes configurables (ex. email si T > 30°C).

Dépannage courant

Évolutions

Processus de fabrication

  1. Construction d'une station météo extérieure avec Raspberry Pi 2 et ADS‑WS1
  2. Construire une station météo Raspberry Pi qui envoie les données météo quotidiennes par email
  3. Station météo avancée v2.0 : Surveillance en temps réel de température, pression, humidité et altitude
  4. Dé numérique Arduino sur écran LCD 16x2 – Générateur aléatoire à bouton poussoir
  5. Construire un Iron Man animé avec Arduino : capteurs, sons et relais
  6. Find Me : Localisateur d'objets intelligent avec Arduino et Bluetooth
  7. Construire un bras robotique 3D fonctionnel piloté par Arduino – Guide pas à pas
  8. Contrôleur d'humidificateur DIY avec Arduino et relais – Installation haute tension sécurisée
  9. Station Météo Arduino Portable à 10$ – Nano, DHT22, BMP180 et LCD