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

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Composants et fournitures

Arduino UNO × 1
ESP8266 ESP-01 (Espressif) × 1
Capteur température/humidité DHT22 × 1
Capteur température sol DS18B20 (1-Wire) × 1
LDR (Photorésistance) × 1
Module relais 2 canaux 5V CC × 1

Applications et services en ligne

À propos de ce projet

Objectif : collecter des données d'une unité locale et les envoyer sur Internet. Un utilisateur n'importe où peut consulter ces données et envoyer des commandes aux actionneurs de l'unité locale. Tout capteur ou actionneur peut être utilisé.

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

La majorité de mes travaux IoT utilisaient NodeMCU puis ESP32. Mais il est important de ne pas oublier mes débuts avec Arduino UNO et l'ESP8266-01. Je reviens ici sur ces dispositifs avec plus d'expérience, les connectant au cloud via ThingSpeak.com. Nous contrôlerons aussi à distance via une application Android développée avec MIT App Inventor.

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

ThingSpeak.com est le centre du projet. L'unité locale (UNO/ESP-01) capture les données capteurs et l'état des actionneurs, les envoie vers Internet ("écriture" sur un Canal Statut ThingSpeak). Elle reçoit aussi des données ("lecture" depuis des Canaux Actionneurs ThingSpeak).

Une application Android lit les données du Canal Statut pour l'utilisateur. Celui-ci, basé sur ces infos, envoie des commandes aux actionneurs en écrivant sur les Canaux Actionneurs (voir diagramme de blocs).

Étape 1 : Introduction

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Avec des capteurs courants, nous collectons plusieurs données envoyées au cloud. ThingSpeak.com, plateforme IoT ouverte, permet de collecter, analyser et agir sur ces données.

Données capteurs :

Actionneurs :

L'état des actionneurs (MARCHE/ARRÊT) est aussi envoyé au cloud.

Logique de décision utilisateur :

Commande à distance via application Android.

Étape 2 : Nomenclature (BoM)

Étape 3 : Matériel

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Assemblez et testez par étapes :

  1. Installer et tester tous les capteurs localement
  2. Configurer l'ESP-01 (BareMinimum)
  3. Repasser l'ESP-01 en configuration finale et tester
  4. Configurer le canal Statut ThingSpeak
  5. Installer le code ThingSpeak sur Arduino et vérifier les capteurs sur le cloud
  6. Développer la v1 de l'appli Android (affichage statut/messages)
  7. Installer les actionneurs (LEDs, relais)
  8. Configurer les canaux Actionneurs ThingSpeak
  9. Installer et tester le code Arduino avec actionneurs
  10. Finaliser l'appli Android

Étape 4 : Connexion des capteurs

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Bibliothèques nécessaires et configuration initiale :

// DS18B20
#include <OneWire.h>
#include <DallasTemperature.h>
#define ONE_WIRE_BUS 5
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature DS18B20(&oneWire);
int soilTemp = 0;

// DHT
#include "DHT.h"
#include <stdlib.h>
int pinoDHT = 11;
int tipoDHT = DHT22;
DHT dht(pinoDHT, tipoDHT);
int airTemp = 0, airHum = 0;

// LDR
#define ldrPIN 1
int light = 0;

// Humidité sol
#define soilHumPIN 0
int soilHum = 0;

Dans setup() et loop() :

void setup() {
  Serial.begin(9600);
  DS18B20.begin();
  dht.begin();
}
void loop() {
  readSensors();
  displaySensors();
  delay(10000);
}

Fonctions de lecture et d'affichage :

/********* Lecture capteurs *************/
void readSensors(void) {
  airTemp = dht.readTemperature();
  airHum = dht.readHumidity();
  DS18B20.requestTemperatures();
  soilTemp = DS18B20.getTempCByIndex(0);
  soilHum = map(analogRead(soilHumPIN), 1023, 0, 0, 100);
  light = map(analogRead(ldrPIN), 1023, 0, 0, 100); // LDR: 0=sombre -> 100%
}

/********* Affichage série *************/
void displaySensors(void) {
  Serial.print("airTemp (oC): "); Serial.println(airTemp);
  Serial.print("airHum (%): "); Serial.println(airHum);
  Serial.print("soilTemp (oC): "); Serial.println(soilTemp);
  Serial.print("soilHum (%): "); Serial.println(soilHum);
  Serial.print("light (%): "); Serial.println(light);
  Serial.println("");
}
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Code complet : Sensors_Test.ino sur GitHub

Étape 5 : Configuration initiale ESP8266-01

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

L'ESP-01 sert de pont série (commandes AT). Vérifiez le baud rate : généralement 115200 en usine, à changer en 9600.

  1. Connectez l'ESP-01 comme indiqué.
  2. Téléversez BareMinimum (Fichier > Exemples > 01.Basics) sur l'Arduino avant de connecter l'ESP-01 (évite conflit série).
  3. Ouvrez le moniteur série à 115200 bauds. Envoyez "AT" → doit répondre "OK".
  4. Changez le baud rate : AT+UART_DEF=9600,8,1,0,0 (définitif).
  5. Passez le moniteur à 9600 bauds. Testez "AT" → "OK".
  6. Mode Station (Client) : AT+CWMODE=1
  7. Connexion WiFi : AT+CWJAP="nom_réseau","mot_de_passe" (guillemets obligatoires).
  8. Si "WIFI CONNECTED" et "WIFI GOT IP" → OK.
  9. Récupérez l'IP : AT+CIFSR

Étape 6 : Test de l'ESP-01

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Câblage final :

Code test simple (pont série) :

#include <SoftwareSerial.h>
SoftwareSerial esp8266(6,7); // Rx=D6, Tx=D7
#define speed8266 9600
void setup() {
  esp8266.begin(speed8266);
  Serial.begin(speed8266);
  Serial.println("Test ESP8266 - commandes AT");
}
void loop() {
  while(esp8266.available()) Serial.write(esp8266.read());
  while(Serial.available()) esp8266.write(Serial.read());
}

Commandes de test :

* AT           → OK
* AT+RST       → Redémarrage + OK
* AT+GMR       → Version AT, SDK, ID, OK
* AT+CWMODE?   → Type de mode
* AT+CWLAP     → Points d'accès proches
* AT+CIFSR     → IP attribuée
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Code : ESP_AT_Config.ino

Pour reconnexion auto au démarrage, ajoutez connectWiFi() dans setup() :

void connectWiFi(void) {
  sendData("AT+RST\r\n", 2000, 0);
  sendData("AT+CWJAP=\"USER\",\"PASS\"\r\n", 2000, 0);
  delay(3000);
  sendData("AT+CWMODE=1\r\n", 1000, 0);
  sendData("AT+CIFSR\r\n", 1000, 0);
  Serial.println("8266 Connecté");
}

String sendData(String command, const int timeout, boolean debug) {
  String response = "";
  EspSerial.print(command);
  long int time = millis();
  while ((time + timeout) > millis()) {
    while (EspSerial.available()) {
      char c = EspSerial.read();
      response += c;
    }
  }
  if (debug) Serial.print(response);
  return response;
}

Étape 7 : Capteurs et ESP-01 ensemble

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Tous les capteurs testés + ESP-01 fonctionnel = prêt pour envoi cloud.

Étape 8 : ThingSpeak

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Créez un compte sur ThingSpeak.com. Nouveau canal avec 8 champs :

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Notez les clés (Write API Key, Read API Key, Channel ID).

Étape 9 : Envoi statut vers le cloud

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Écriture sur ThingSpeak via requête GET en 3 parties :

  1. AT+CIPSTART="TCP","184.106.153.149",80 (IP api.thingspeak.com)
  2. AT+CIPSEND=116 (longueur commande)
  3. Chaîne GET : GET /update?api_key=VOTRE_CLE&field1=pompe&field2=lampe&field3=airTemp&field4=airHum&field5=soilTemp&field6=soilHum&field7=light&field8=reserve

Code complet d'envoi : SendingStatusTS_EXT.ino

Étape 10 : Appli Android - Partie 1 : Surveillance statut

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Création interface utilisateur + blocs logiques (MIT App Inventor).

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Code : ArduFarmBot_Status_App_EXT.aia

Étape 11 : Installation actionneurs (LEDs et relais)

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Module relais optocoupleur déclenchement niveau bas, alimenté en 5V séparé. GND du relais NON connecté au GND Arduino (évite bruit). Capteurs omis sur schéma pour clarté.

Étape 12 : Configuration canaux Actionneurs ThingSpeak

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

2 nouveaux canaux (un par actionneur), écriture seul sur Champ 1 :

Étape 13 : Code Arduino avec actionneurs (lecture commandes)

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Lecture depuis ThingSpeak (GET sur /channels/ID/fields/1/last) toutes les 10s. Fonction clé : readThingSpeak(String channelID).

Code complet : ReadingCommandTS_EXT.ino

Étape 14 : Envoi commandes actionneurs (test navigateur)

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

URLs de test direct :

ALLUMER Pompe : https://api.thingspeak.com/update?api_key=CLE_ECRITURE_ACT1&field1=1
ETEINDRE Pompe : https://api.thingspeak.com/update?api_key=CLE_ECRITURE_ACT1&field1=0
ALLUMER Lampe : https://api.thingspeak.com/update?api_key=CLE_ECRITURE_ACT2&field1=1
ETEINDRE Lampe : https://api.thingspeak.com/update?api_key=CLE_ECRITURE_ACT2&field1=0

Étape 15 : Finalisation appli Android

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Ajout boutons ON/OFF par actionneur (changement couleur texte : ON=Bleu, OFF=Rouge).

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor
Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Code complet : ArduFarmBot_V1_EXT.aia

Étape 16 : Assemblage final

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Code complet combinant lecture/écriture continue, avec vérification ESP-01 (envoi "AT" avant chaque opération, reset matériel si pas de "OK").

Code final : ArduFarmBot_Light_EXT.ino

Étape 17 : Conclusion

Réaliser des projets IoT simples avec Arduino UNO, ESP-01, ThingSpeak et MIT App Inventor

Beaucoup reste à explorer dans l'IoT avec Arduino Uno et ESP8266-01. Nouveaux tutos à venir ! Suivez MJRoBot.

J'espère que ce projet aidera d'autres à découvrir l'électronique, la robotique et l'IoT !

GitHub mis à jour : ArduFarmBot_Light

Blog : MJRoBot.org

Saludos du sud du monde !

À bientôt !

Marcelo

Code (extraits)

Voir les extraits complets sur le dépôt GitHub : ArduFarmBot_Light

Schémas

Schéma électrique : Fichier Fritzing

Processus de fabrication

  1. Construction de Code Parallèle C++17 SYCL sur Cartes IoT Raspberry Pi 4B+
  2. Moniteur de Fréquence Cardiaque IoT en Temps Réel avec Arduino et MAX30100
  3. Serveur Web Arduino Uno WiFi : Commander une LED via Navigateur
  4. Calculatrice basique Arduino UNO - Projet facile pour débutants
  5. Construire un affichage à persistance rétinienne portable avec Arduino UNO et ATtiny85
  6. Portique de contrôle de température sans contact pour dépistage rapide et précis
  7. Arduino UNO & Shield WiFi : Affichage température temps réel sur le Web via série
  8. Utiliser une thermistance facilement : Guide étape par étape Arduino
  9. Système de Contrôle de Piscine IoT Azure : Capteurs Intelligents & Surveillance à Distance