🌟 Cours Complet : Arduino R4 Uno avec MQTT (WiFi)
- 0 comments
"Apprends à allumer une LED à distance comme par magie, avec un Arduino et ton réseau WiFi !"
1️⃣ Objectif pédagogique
À la fin de ce cours, tu sauras :
✅ Comprendre le rôle d’un broker MQTT (comme un "standard téléphonique" pour tes objets connectés).
✅ Configurer ton Arduino R4 Uno pour qu’il se connecte à ton WiFi et écoute des commandes.
✅ Envoyer des messages MQTT depuis ton PC pour allumer/éteindre une LED (broche 13).
✅ Déboguer avec le moniteur série et comprendre les erreurs courantes.
✅ Imaginer des extensions (ex: contrôler plusieurs LEDs, ajouter un capteur).
2️⃣ Présentation du module
🔍 Pourquoi ce cours ? Imagine que ton Arduino est un robot domestique :
Tu veux lui dire "Allume la lumière !" sans fil, depuis ton téléphone ou ton PC.
MQTT est comme un talkie-walkie invisible qui permet à ton Arduino et ton PC de se parler via le WiFi.
📌 Ce que tu vas faire :
Brancher ton Arduino R4 Uno (avec sa LED intégrée sur la broche 13).
Installer un broker MQTT (Mosquitto) sur ton PC (comme un "central téléphonique").
Programmer l’Arduino pour qu’il écoute les messages MQTT.
Envoyer des commandes depuis ton PC pour allumer/éteindre la LED.
3️⃣ Matériel nécessaire
ÉlémentDétailsArduino R4 Uno WiFiCarte avec module WiFi intégré (pas besoin de shield supplémentaire).Câble USBPour alimenter et programmer l’Arduino.PC (Windows/Linux/Mac)Avec accès au réseau WiFi.Broker MQTTMosquitto (gratuit) – Lien d’installation (vidéo dédiée disponible).Logiciels- Arduino IDE (version récente).
- Un terminal (Invite de commandes/PowerShell).
4️⃣ Explication du fonctionnement
🌐 Analogies pour comprendre :
-
MQTT = Un service de messages comme WhatsApp, mais pour objets connectés.
Exemple : Ton Arduino est ton ami "Bob", et ton PC est toi. Vous discutez via un groupe (le broker).
Broker (Mosquitto) = Le serveur du groupe qui transmet les messages.
Topic = Un sujet de conversation (ex:
"maison/led/13").Payload = Le message (ex:
"ON"ou"OFF").
📡 Schéma du flux :
5️⃣ Premier code minimaliste
📝 Code complet à copier dans l’IDE Arduino : (Remplace ton_ssid et ton_mot_de_passe par tes identifiants WiFi !)
// -------- BIBLIOTHÈQUES --------
#include <WiFiS3.h> // Pour le WiFi (Arduino R4 Uno)
#include <PubSubClient.h> // Pour MQTT
// -------- IDENTIFIANTS WIFI --------
#include "arduino_secrets.h" // Fichier caché avec SSID/mot de passe
char ssid[] = "ton_ssid"; // Remplace par ton SSID
char pass[] = "ton_mot_de_passe"; // Remplace par ton mot de passe
// -------- PARAMÈTRES RÉSEAU --------
IPAddress localIP(192, 168, 1, 165); // Adresse IP fixe pour l'Arduino
IPAddress gateway(192, 168, 1, 1); // Passerelle (ex: box Internet)
IPAddress subnet(255, 255, 255, 0); // Masque de sous-réseau
IPAddress dns(192, 168, 1, 1); // DNS (même que la passerelle)
// -------- PARAMÈTRES MQTT --------
const char broker = "192.168.1.XX"; // Adresse IP de ton PC où Mosquitto est installé
const int port = 1883; // Port par défaut de MQTT
const char topic = "maison/led/13"; // Topic pour écouter les commandes
// -------- INSTANCES --------
WiFiClient wifiClient;
PubSubClient mqttClient(wifiClient);
// -------- FONCTIONS --------
void setupWiFi(){
Serial.print("Connexion au WiFi...");
WiFi.begin(ssid, pass);
WiFi.config(localIP, gateway, subnet, dns); // Configure l'IP statique
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\\nConnecté au WiFi !");
Serial.print("Adresse IP: ");
Serial.println(WiFi.localIP());
}
void reconnectMQTT(){
while (!mqttClient.connected()) {
Serial.print("Connexion au broker MQTT...");
if (mqttClient.connect("ArduinoR4Client")) { // Nom du client
Serial.println("Connecté !");
mqttClient.subscribe(topic); // Écoute le topic
} else {
Serial.print("Échec (code: ");
Serial.print(mqttClient.state());
Serial.println(") -> Nouvelle tentative dans 5s...");
delay(5000);
}
}
}
void callback(char topic, byte payload, unsigned int length){
Serial.print("Message reçu sur [");
Serial.print(topic);
Serial.print("]: ");
// Convertit le payload en chaîne de caractères
String message;
for (int i = 0; i < length; i++) {
message += (char)payload[i];
}
Serial.println(message);
// Allume/éteint la LED selon le message
if (message == "ON") {
digitalWrite(LED_BUILTIN, HIGH);
Serial.println("LED ALLUMÉE !");
} else if (message == "OFF") {
digitalWrite(LED_BUILTIN, LOW);
Serial.println("LED ÉTEINTE !");
}
}
// -------- CONFIGURATION INITIALE --------
void setup(){
Serial.begin(9600);
pinMode(LED_BUILTIN, OUTPUT); // LED intégrée (broche 13)
digitalWrite(LED_BUILTIN, LOW); // Éteint la LED au démarrage
setupWiFi();
mqttClient.setServer(broker, port);
mqttClient.setCallback(callback); // Définit la fonction de rappel
}
// -------- BOUCLE PRINCIPALE --------
void loop(){
if (!mqttClient.connected()) {
reconnectMQTT();
}
mqttClient.loop(); // Maintient la connexion MQTT
}
6️⃣ Décryptage du code
🔍 Explications ligne par ligne :
-
Bibliothèques :
WiFiS3.h: Gère le WiFi de l’Arduino R4.PubSubClient.h: Permet d’utiliser MQTT.
-
Identifiants WiFi :
arduino_secrets.h: Fichier caché (créé par toi) pour stocker SSID/mot de passe sans les afficher dans le code.
-
Adresses IP :
localIP: Adresse fixe pour ton Arduino (ex:192.168.1.165).Pourquoi ? Pour toujours le retrouver facilement sur ton réseau.
-
Broker MQTT :
broker: Adresse IP de ton PC où Mosquitto est installé.topic:"maison/led/13"→ comme un "numéro de téléphone" pour la LED.
-
Fonctions clés :
setupWiFi(): Connecte l’Arduino au WiFi et affiche son IP.reconnectMQTT(): Se reconnecte au broker si la connexion est perdue.-
callback(): Cœur du programme ! Écoute les messages MQTT et agit :Si le message est
"ON"→ allume la LED.Si le message est
"OFF"→ éteint la LED.
-
Boucle
loop():Vérifie en permanence la connexion MQTT et appelle
mqttClient.loop()pour recevoir les messages.
7️⃣ Expérimentation guidée
🛠️ Étapes à suivre :
1. Préparer le broker Mosquitto
Installe Mosquitto sur ton PC (voir ma vidéo dédiée).
-
Lance le broker avec la commande :(Le terminal affichera les messages reçus/envoyés.)
mosquitto -v
2. Télécharger le code
Copie le code ci-dessus dans l’IDE Arduino.
-
Crée un fichier
arduino_secrets.hdans le même dossier avec :char ssid[] = "ton_ssid"; char pass[] = "ton_mot_de_passe";
3. Upload et moniteur série
Branche ton Arduino R4 Uno en USB.
Upload le code et ouvre le moniteur série (9600 bauds).
-
Résultat attendu :
Connexion au WiFi..... Connecté au WiFi ! Adresse IP: 192.168.1.165 Connexion au broker MQTT...Connecté !
4. Envoyer des commandes MQTT
Ouvre un nouveau terminal et envoie des commandes avec mosquitto_pub :
# Allumer la LED
mosquitto_pub -h 192.168.1.XX -t "maison/led/13" -m "ON"
# Éteindre la LED
mosquitto_pub -h 192.168.1.XX -t "maison/led/13" -m "OFF"(Remplace 192.168.1.XX par l’IP de ton PC.)
5. Observer le résultat
La LED sur l’Arduino s’allume/éteint.
-
Dans le moniteur série, tu verras :
Message reçu sur [maison/led/13]: ON LED ALLUMÉE !
8️⃣ Projet libre ou bonus
💡 3 idées pour aller plus loin :
-
Contrôler plusieurs LEDs :
Ajoute des LEDs sur les broches 12, 11, etc.
Modifie le
callback()pour écouter"maison/led/12","maison/led/11", etc.
-
Ajouter un capteur :
Branche un capteur de température (ex: DHT11).
Fais publier l’Arduino sur un topic
"maison/temperature"toutes les 5 secondes.
-
Créer une interface web :
Utilise Node-RED ou un script Python pour envoyer des commandes MQTT via un bouton web.
9️⃣ Résumé
📌 Ce que tu as appris :
MQTT = Protocole léger pour faire communiquer des objets (comme des SMS pour l’IoT).
Broker = Serveur central qui transmet les messages (ex: Mosquitto).
Topic/Payload = Sujet + message (ex:
"maison/led/13"+"ON").-
Code Arduino :
Connexion WiFi + IP statique.
Écoute des messages MQTT et action sur la LED.
🚀 Prochaine étape : Essaie de contrôler ton Arduino depuis ton smartphone avec une app MQTT (ex: MQTT Dash).
🎤 Message final
"Félicitations ! Tu viens de créer ton premier système IoT avec MQTT. 🎉 Maintenant, à toi de jouer :
Expérimente avec d’autres topics ou capteurs.
Partage tes résultats en commentaire (photo/vidéo de ton montage !).
Like et abonne-toi pour plus de projets Arduino magiques !
Un problème ? Le moniteur série est ton meilleur ami : il te dira toujours ce qui ne va pas. 😉"
📌 Note pour les parents/enseignants : Ce projet est parfait pour les enfants (dès 10 ans) avec un peu d’aide pour :
La configuration WiFi.
L’installation de Mosquitto. Conseil : Utilisez des post-it colorés pour représenter les messages MQTT ("ON" en vert, "OFF" en rouge).