Aujourd’hui on va apprendre à comment récupérer une température avec un arduino et transmettre une information sans fil avec un module 433Mhz.
Tu vas pouvoir transmettre des informations numériques, récupérer des informations de station météo maison et même commander des prises télécommandable.
Matériel Nécessaire
– 2 arduino
– 1 module RF 433Mhz émetteur et récepteur
– 1 capteur DHT11, 1 résistance 4.7kΩ
Câblage
Pour le câblage rien de difficile, pour la partie réception à droite on alimente le module avec du 5 Volt et on branche un des deux pin du module au pin 2 de l’arduino.
Pour la partie émission on alimente le module émetteur et on branche le pin data sur le pin 10 de l’arduino et on branche le module DHT11 sur le pin 2 de l’arduino.
Update : ajouter une résistance 4.7kΩ entre le 5V du DHT et la branche Data du DHT.(http://www.gammon.com.au/forum/?id=10896&reply=5#reply5)
Pour le code on a besoin de deux librairies, la librairie rc-switch pour la transmission RF433 et de la librairie simpleDHT pour le module température humidité ( rechercher dans le menu gérer les bibliothèques ).
Partie émission de données on appelle les deux librairies capteur de température et module émetteur RF433 , on initialise le module sans fil “RCSwitch mySwitch = RCSwitch();”.
On définit le pin pour le module DHT11, “int pinDHT11 = 2;” et on initialise le dht avec “SimpleDHT11 dht11;”
Dans le setup on définit le module rf433 en mode transmission de donnée et on choisit le pin 10 de l’arduino avec “mySwitch.enableTransmit(10); “.
Dans la boucle je définis mes variables de température, humidité et err ; ma première grosse condition essaye de récupérer les informations du dht et si j’ai une erreur je reviens au début du programme avec return.
Si tout s’est bien passé je transmets les valeurs de température en y ajoutant 999000 pour savoir quelle variable on envoie au récepteur et pareil pour l’humidité mais avec ajout 888000 a la valeur ” mySwitch.send((999000 + temperature), 24); “.
On termine avec un delay pour ne pas envoyer des informations toutes les microsecondes.
Partie réception des données on appelle la librairie RCSwitch, on initialise le module sans fil “RCSwitch mySwitch = RCSwitch();”.
On définit nos variables température, humidité et quelques autres utiles à notre programme.
Dans le setup on définit le module rf433 en mode réception de donnée et on choisit le pin 2 de l’arduino avec “mySwitch.enableReceive(0);”.
Dans ma boucle la première condition vérifie que le module réception soit disponible, à l’intérieur je récupère la variable transmise et je la stocke dans une variable temporaire “temporaryValue = String(mySwitch.getReceivedValue());”.
J’ai 2 conditions par la suite je vais découper la valeur reçue et si j’ai 999 dans les 3 premiers caractères je sais que j’ai reçu la température , si j’ai reçu la température je vais extraire les 3 derniers caractères qui va me donner la température que je stocke dans température. Même chose pour l’humidité mais ici avec 888.
Puis on fait un reset sur le module rf433 “mySwitch.resetAvailable();” et je stocke le temps actuel dans oldDataTime .
Sorti de toutes les conditions j’ai une nouvelle condition “if(millis() > (oldDataTime + 10000) )” qui va contrôler le temps pour vérifier si il n’y a pas eu une interruption dans la transmission de donnée. Si pendant plus de 10 secondes je n’ai pas eu de valeur je vais définir la valeur de température et humidité à 999.
A la fin j’affiche mes informations avec le serial et termine avec un delay.
Télécharger les codes :
– Tuto 433 DHT11 RX
– Tuto 433 DHT11 TX
Conclusion
Ce tutoriel montre comment utiliser un module RF 433MHz avec un Arduino pour transmettre des données de température sans fil. Cela est utile pour des projets de domotique, comme la création de stations météo maison ou le contrôle de prises télécommandées. En suivant ces étapes, vous pourrez facilement récupérer et transmettre des données de température et d’humidité.
Exemple de code Arduino RF 333mhz
// Made by https://retroetgeek.com
#include <SimpleDHT.h>
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
// init DHT11
int pinDHT11 = 2;
SimpleDHT11 dht11;
void setup() {
Serial.begin(115200);
// Transmitter is connected to Arduino Pin #10
mySwitch.enableTransmit(10);
}
void loop() {
byte temperature = 0;
byte humidity = 0;
int err = SimpleDHTErrSuccess;
// if we dont get value from DHT we return to the begining
// si nous n'avons pas de valeurs du DHT on reviens au debut avec return
if ((err = dht11.read(pinDHT11, &temperature, &humidity, NULL)) != SimpleDHTErrSuccess) {
Serial.print("Read DHT11 failed, err="); Serial.println(err);delay(1000);
return;
}
Serial.print((int)temperature); Serial.print(" *C, ");
Serial.print((int)humidity); Serial.println(" H");
// we send information with 433 and we add 999000 or 888000 for values
// on envoie l'information ave le 433 et on ajoute 999000 ou 888000 aux valeurs
mySwitch.send((999000 + temperature), 24);
//delay(1000);
mySwitch.send((888000 + humidity), 24);
delay(1500);
}
// Made by https://retroetgeek.com
#include <RCSwitch.h>
// call 433 library
RCSwitch mySwitch = RCSwitch();
String temporaryValue ;
int temperature = 0 ;
int humidite = 0 ;
long oldDataTime;
void setup() {
Serial.begin(115200);
mySwitch.enableReceive(0); // Receiver on interrupt 0 => that is pin #2
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.print("Unknown encoding");
} else {
/* Serial.print("Received ");
Serial.print( mySwitch.getReceivedValue() );
Serial.print(" / ");
Serial.print( mySwitch.getReceivedBitlength() );
Serial.print("bit ");
Serial.print("Protocol: ");
Serial.println( mySwitch.getReceivedProtocol() );*/
}
// get data and split values
// on recupere la data et on separe les valeurs
temporaryValue = String(mySwitch.getReceivedValue());
if(temporaryValue.substring(0,3) == "999"){
temperature = temporaryValue.substring(3).toInt() ;
}
if(temporaryValue.substring(0,3) == "888"){
humidite = temporaryValue.substring(3).toInt() ;
}
// reset 433
mySwitch.resetAvailable();
oldDataTime = millis();
}
// control if we lost information , 10 second
// On controle si on a perdu le signal depuis plus de 10secondes
if(millis() > (oldDataTime + 10000) ){
temperature = 999 ;
humidite = 999 ;
}
// print value
// on affiche les valeurs
Serial.print("Temperature: ");
Serial.println(temperature);
Serial.print("Humidite: ");
Serial.println(humidite);
delay(2000);
}📌 FAQ – Module RF 433MHz & capteur DHT11 avec Arduino
Q : À quoi sert un module RF 433 MHz ?
R : Il permet de transmettre des données sans fil entre deux Arduino (ou microcontrôleurs), sur de longues distances (jusqu’à 100 m en champ libre), de façon simple et économique.
Q : Le module 433 MHz est-il bidirectionnel ?
R : Non, chaque module est monodirectionnel : un est émetteur (TX), l’autre récepteur (RX). Pour une communication bidirectionnelle, il faut deux paires distinctes.
Q : Le capteur DHT11 est-il précis ?
R : Le DHT11 est économique mais peu précis (±2 °C et ±5 % d’humidité). Pour plus de fiabilité, préfère le DHT22.
Q : Peut-on envoyer les valeurs du DHT11 par radiofréquence ?
R : Oui, tu peux lire les données température/humidité avec l’Arduino, puis les transmettre sans fil avec le module 433 MHz vers un second Arduino qui les affiche ou les traite.
Q : Quelle bibliothèque utiliser pour ces modules ?
R : Pour le DHT11, utilise DHT.h, et pour la RF, VirtualWire ou RadioHead, selon ton besoin de simplicité ou de fiabilité.
🔗 À découvrir aussi sur Retro&Geek
👉 Fabriquer un capteur connecté Wi-Fi avec ESP8266
Une alternative au 433 MHz, avec envoi direct des données sur un navigateur via Wi-Fi.
👉 Créer un minuteur avec NE555 et pompe DIY
Automatise des tâches (comme l’arrosage ou la ventilation) selon les données captées.
👉 Utiliser un écran LCD 16×2 avec Arduino
Affiche directement les données du DHT11 reçues par le module RF.
👉 Fabriquer un distributeur d’étain automatisé (Solder Feeder 2000)
Un autre projet Arduino motorisé où tu peux intégrer des commandes à distance.
N’hésitez pas à poser vos questions sur les réseaux sociaux de la chaîne instagram , twitter , facebook ,youtube ; si vous ne comprenez pas certaines parties du tutoriel n’hésitez pas , me dire ce que vous aimeriez que je crée pour en faire des vidéos tutoriel et à partager les projets que vous aimeriez créer etc…
Comme toujours allez sur la page de C’est quoi Retro et Geek pour connaître tout ce que je recherche à faire sur la chaîne.
Merci les RetroGeeker et RetroGeekeuse






