






Code
#define BLYNK_PRINT Serial // Définir l’impression Blynk pour la sortie du moniteur série
#define BLYNK_TEMPLATE_ID « ********** » // ID du modèle Blynk
#define BLYNK_TEMPLATE_NAME « Arduino R4 » // Nom du modèle Blynk
#define BLYNK_AUTH_TOKEN « qrxKXXIYXy_7C9dWLfqRs7-ETsPwn60w » // Jeton d’autorisation Blynk
#include // Inclut la bibliothèque SPI
#include // Inclut la bibliothèque WiFi pour S3
#include // Inclut la bibliothèque Blynk pour le WiFi
#include // Inclut la bibliothèque de capteurs DHT
#include « ArduinoGraphics.h » // Inclut la bibliothèque graphique pour Arduino
#include « Arduino_LED_Matrix.h » // Inclut la bibliothèque de matrices LED
Matrice ArduinoLEDMatrix ; // Crée une instance de la matrice LED
DHTdht(2, DHT11); // Créer une instance de capteur DHT sur la broche 2
char ssid[] = « RKranjan » ; // SSID Wi-Fi
passe de char[] = « ******** » ; // Mot de passe Wi-Fi
#define GREEN_LIGHT 3 // Définir la broche pour le feu vert
#define WHITE_LIGHT 4 // Définir la broche pour la lumière blanche
#define RED_LIGHT 5 // Définir la broche pour le feu rouge
#define LDR_SENSOR A5 // Définir la broche pour le capteur LDR
#define GARDEN_LIGHT 12 // Définir la broche pour l’éclairage du jardin
#define MQ2_PIN A0 // Définir la broche pour le capteur de gaz MQ2
#define BUZZER_PIN 11 // Définir la broche du buzzer
const int LOW_FREQ = 600 ; // Définir la basse fréquence pour le buzzer
const int HIGH_FREQ = 1200 ; // Définir la haute fréquence du buzzer
const int FADE_TIME = 10 ; // Définir le temps de fondu pour le changement de fréquence
const int HOLD_TIME = 200 ; // Définir le temps de maintien pour la fréquence
#define VIRTUAL_PIN_TEMPERATURE V1 // Définir une broche virtuelle pour la température
#define VIRTUAL_PIN_HUMIDITY V2 // Définir une broche virtuelle pour l’humidité
capteur à flotteurValue ; // Variable pour stocker la valeur du capteur
configuration vide() {
Série.begin(115200); // Démarre la communication série à un débit de 115 200 bauds
pinMode(GREEN_LIGHT, SORTIE); // Définit la broche de lumière verte comme sortie
pinMode(WHITE_LIGHT, SORTIE); // Définit la broche de lumière blanche comme sortie
pinMode(RED_LIGHT, SORTIE); // Définit la broche lumineuse rouge comme sortie
pinMode(GARDEN_LIGHT, SORTIE); // Définir la broche d’éclairage de jardin comme sortie
dht.begin(); // Initialiser le capteur DHT
WiFi.begin(ssid, pass); // Démarre la connexion WiFi
Blynk.config(BLYNK_AUTH_TOKEN); // Configurer Blynk sans bloquer
matrice.begin(); // Initialise la matrice LED
matrice.beginDraw(); // Commence à dessiner sur la matrice
matrice.AVC(0xFFFFFFFF); // Définit la couleur du trait sur blanc
matrice.textScrollSpeed(100); // Définir la vitesse de défilement du texte
matrice.textFont(Font_4x6); // Définir la police du texte
matrice.beginText(0, 1, 0xFFFFFF); // Commence le texte à la position (0,1) avec la couleur blanche
matrice.println( » UNO r4 « ); // Imprimer le texte sur la matrice
matrice.endText(SCROLL_LEFT); // Fin du dessin du texte et défilement vers la gauche
matrice.endDraw(); // Finir de dessiner sur la matrice
}
boucle vide() {
// Tentative de connexion à Blynk sans bloquer
if (WiFi.status() == WL_CONNECTED && !Blynk.connected()) {
Blynk.connect(2000); // Tentative de reconnexion à Blynk avec un délai d’attente de 2 secondes
}
si (Blynk.connected()) {
Blynk.run(); // Exécute les tâches Blynk uniquement si connecté
}
// Continuer à exécuter d’autres fonctions quel que soit l’état de la connexion Blynk
readDHTSensor(); // Lire la température et l’humidité du capteur DHT
updateGardenLight(); // Ajustez la lumière du jardin en fonction du capteur LDR
readGasSensor(); // Lire la valeur du capteur de gaz
scrollMatrixText(); // Faire défiler le texte sur la matrice LED
}
// Lecture du capteur DHT
void readDHTSensor() {
statique non signé long lastReadTime = 0 ; // Variable pour stocker l’heure de la dernière lecture
if (millis() – lastReadTime > 2000) { // Lire le capteur toutes les 2 secondes
lastReadTime = millis();
humidité flottante = dht.readHumidity(); // Lire l’humidité
température flottante = dht.readTemperature(); // Lire la température
if (!isnan(humidity) && !isnan(temperature)) { // Vérifier les lectures valides
Serial.print(« Température : « );
Serial.print (température);
Serial.print( » °C, Humidité : « );
Serial.println (humidité);
Blynk.virtualWrite(VIRTUAL_PIN_TEMPERATURE, température); // Envoie la température à Blynk
Blynk.virtualWrite(VIRTUAL_PIN_HUMIDITY, humidité); // Envoie de l’humidité à Blynk
} autre {
Serial.println(« Échec de la lecture du capteur DHT ! »); // Imprimer le message d’erreur
}
}
}
// Contrôle du capteur LDR
void updateGardenLight() {
int adc_val = 255 – (analogRead(LDR_SENSOR) / 4); // Lire la valeur LDR et calculer la valeur de la lumière du jardin
analogWrite(GARDEN_LIGHT, adc_val); // Définir la luminosité de la lumière du jardin
}
// Lecture du capteur de gaz
void readGasSensor() {
sensorValue = analogRead(MQ2_PIN); // Lire la valeur du capteur de gaz
Serial.print(« Valeur du capteur de gaz : « );
Serial.print(sensorValue);
if (sensorValue > 200) { // Vérifiez si de la fumée est détectée
Serial.print( » | Fumée détectée! »); // Imprimer le message de détection de fumée
playEmergencySiren(); // Jouer le son de la sirène d’urgence
} autre {
pas de tonalité (BUZZER_PIN); // Arrête le buzzer si pas de fumée
}
Série.println(« »); // Imprimer la nouvelle ligne
}
// Son de sirène d’urgence
void playEmergencySiren() {
for (int freq = LOW_FREQ; freq <= HIGH_FREQ; freq += 10) { // Augmenter la fréquence
tonalité (BUZZER_PIN, fréquence); // Jouer le son à la fréquence actuelle
delayMicroseconds(FADE_TIME * 1000); // Attendre le temps de fondu
}
delayMicroseconds(HOLD_TIME * 1000); // Maintenir la haute fréquence
for (int freq = HIGH_FREQ; freq >= LOW_FREQ; freq -= 10) { // Diminuer la fréquence
tonalité (BUZZER_PIN, fréquence); // Jouer le son à la fréquence actuelle
delayMicroseconds(FADE_TIME * 1000); // Attendre le temps de fondu
}
delayMicroseconds(HOLD_TIME * 1000); // Maintient la basse fréquence
}
// Défilement du texte de la matrice
void scrollMatrixText() {
statique non signé long lastScrollTime = 0 ; // Variable pour stocker l’heure du dernier défilement
if (millis() – lastScrollTime > 500) { // Fait défiler le texte toutes les 500 millisecondes
lastScrollTime = millis();
matrice.beginDraw(); // Commence à dessiner sur la matrice
matrice.AVC(0xFFFFFFFF); // Définit la couleur du trait sur blanc
matrice.textScrollSpeed(50); // Définir la vitesse de défilement du texte
matrice.textFont(Font_5x7); // Définir la police du texte
matrice.beginText(0, 1, 0xFFFFFF); // Commence le texte à la position (0,1) avec la couleur blanche
Matrix.println( » Texte défilant ! « ); // Imprimer le texte défilant
matrice.endText(SCROLL_LEFT); // Fin du dessin du texte et défilement vers la gauche
matrice.endDraw(); // Finir de dessiner sur la matrice
}
// Contrôles des boutons Blynk
BLYNK_WRITE(V0) {
digitalWrite(GREEN_LIGHT, param.asInt()); // Contrôle le feu vert en fonction de l’état du bouton Blynk
}
BLYNK_WRITE(V4) {
digitalWrite(WHITE_LIGHT, param.asInt()); // Contrôle la lumière blanche en fonction de l’état du bouton Blynk
}
BLYNK_WRITE(V3) {
digitalWrite(RED_LIGHT, param.asInt()); // Contrôle la lumière rouge en fonction de l’état du bouton Blynk
}
Retrouvez l’histoire de Raspberry Pi dans cette vidéo :

-
Arduino UNO R4 WiFi [ABX00087] - Carte de développement avec microcontrôleur Arm Cortex-M4 et WiFi intégré, idéale pour projets IoT, automatisation et Applications connectées avec Arduino IDE.
-
SunFounder Kit Explorateur Élite avec Arduino Uno R4 WiFi Original, Conforme RoHS, Bluetooth, IoT, ESP32, IIC LCD1602, OLED,Tutoriels en Ligne et Cours vidéo en Anglais pour débutants et ingénieurs
