Projets IoT

Tutoriel SONOFF : Un contrôleur de température ambiante Wi-Fi pour 10 $

Mateo Vélez
· 5 min de lecture
Envoyer par email

Dans notre dernier article de blog, nous avons appris comment utiliser le SONOFF Smart Switch pour contrôler un relais d' Ubidots . Dans ce cas, nous apprendrons comment contrôler un climatiseur avec le SONOFF TH , une variante de celui d'origine qui comprend des capteurs de température et d'humidité. À l'aide de ces relevés, nous utiliserons Ubidots pour allumer ou éteindre automatiquement votre climatiseur, en fonction de la température ambiante.

Aperçu

Comparé aux $ , le SONOFF est une excellente alternative pour réaliser des projets de maison intelligente et même IoT à plus grande échelle. De plus, il est basé sur la populaire puce Wi-Fi ESP8266, ce qui le rend compatible avec l'environnement Arduino et d'autres ressources comme nos bibliothèques ESP chez Ubidots .

Le SONOFF est livré avec son propre firmware et sa propre application mobile, mais nous pensons que sa principale valeur réside en réalité dans son format et son prix. C'est pourquoi nous avons décidé de faire un peu de piratage et de libérer toute sa puissance !

Exigences

Installation

  1. Démontez l'appareil SONOFF, cela permet d'accéder au brochage SONOFF TTL, dont nous aurons besoin pour programmer l'ESP8266 intégré. Vous devrez souder quatre broches, celles-ci sont illustrées dans l'image ci-dessous.
  2. Connectez les broches UARTbee aux broches SONOFF, en suivant ce brochage :

UARTbee SONOFF
VCC VCC
Émission RX
RX Émission
GND GND

Allez dans l'IDE Arduino, cliquez sur Fichiers -> Préférences et entrez cette URL pour pouvoir accéder aux bibliothèques ESP8266 pour Arduino :

http://arduino.esp8266.com/stable/package_esp8266com_index.json

dans le URL du gestionnaire de cartes supplémentaires . Ce champ prend en charge plusieurs URL, en les séparant par des virgules, au cas où vous auriez déjà saisi d'autres URL.

3. Ouvrez le gestionnaire de cartes depuis Outils -> Carte et installez la plateforme ESP8266. Sélectionnez votre carte ESP8266 dans Outils > Carte après l'installation.

4. Téléchargez la bibliothèque Ubidots ici .

5. Maintenant, cliquez sur Sketch -> Inclure la bibliothèque -> Ajouter une bibliothèque .ZIP.

6. Sélectionnez le fichier .ZIP d' Ubidots puis cliquez sur « Accepter » ou « Choisir » .

7. Fermez l'IDE Arduino et rouvrez-le.

Créer des événements Ubidots

Nous aurons besoin de deux événements Ubidots : un pour allumer le relais et un autre pour l'éteindre :

  1. Dans votre Ubidots , allez dans Evénements puis cliquez sur « Ajouter un nouvel événement »
  2. Sélectionnez la source de données SONOFF que vous venez de créer.
  3. Sélectionnez la Indice de chaleur .
  4. Réglez la condition de déclenchement sur « supérieur à 25 » ou sur l'indice de chaleur souhaité (le SONOFF envoie les données en degrés Celsius).
  5. Sélectionnez le type de déclenchement « Définir une variable », puis sélectionnez à nouveau la source de données SONOFF, puis la « Variable de relais »
  6. Réglez-le sur « 1 » pour que les événements définissent la variable Relais sur « 1 » lorsque la condition est remplie.
  7. Répétez ces étapes pour créer un deuxième événement, mais cette fois-ci, définissez la condition sur « moins de 20 » et la valeur envoyée au relais sur « 0 ».

Codage de votre SONOFF-TH

Voici le code qui allume/éteint l'appareil SONOFF, pour utiliser ce code n'oubliez pas de changer WIFISSID, PASSWORD et votre Ubidots TOKEN.

Pour télécharger le code dans le SONOFF vous devrez le mettre en mode programmation :

  1. Connectez l'UARTbee au PC USB.
  2. Appuyez sur le bouton SONOFF et déconnectez l'USB en même temps.
  3. Tout en appuyant sur le bouton, connectez à nouveau l'USB.
/****************************************** * Inclure les bibliothèques ****** **********************************/ #inclure " Ubidots .h" #inclure "DHT.h" / **************************************** * Définir les instances et les constantes ***** ***********************************/ #define DHTPIN 14 // à quelle broche numérique nous sommes connectés #define DHTTYPE DHT11 // DHT 11 #define RELAY 12 #define LED 13 const char* UBIDOTS _TOKEN = "..."; // Mettez ici votre Ubidots TOKEN const char* WIFI_SSID = "..."; // Mettez ici votre SSID Wi-Fi const char* WIFI_PASS = "..."; // Mettez ici votre mot de passe Wi-Fi char *macAddrs; DHT dht(DHTPIN, DHTTYPE); Ubidots ubidots ( UBIDOTS _TOKEN, UBI_HTTP); /****************************************** * Fonctions auxiliaires ****** **********************************/ // Mettez ici vos fonctions auxiliaires /******* ********************************* * Fonctions principales ************** **************************/ void setup() { Serial.begin(115200); dht.begin(); ubidots .wifiConnect(WIFI_SSID, WIFI_PASS); pinMode (RELAIS, SORTIE); pinMode (LED, SORTIE); écriture numérique (LED, ÉLEVÉE) ; ubidots .setDebug(true); // Décommentez cette ligne pour imprimer les messages de débogage } void loop() { // Attendez quelques secondes entre les mesures. retard(2000); // La lecture de la température ou de l'humidité prend environ 250 millisecondes ! // Les lectures du capteur peuvent également être "anciennes" jusqu'à 2 secondes (c'est un capteur très lent) float h = dht.readHumidity(); // Lire la température en Celsius (valeur par défaut) float t = dht.readTemperature(); // Vérifiez si des lectures ont échoué et quittez plus tôt (pour réessayer). if (isnan(h) || isnan(t)) { Serial.println("Échec de la lecture du capteur DHT !"); retour; } // Calculer l'indice de chaleur en Celsius (isFahreheit = false) float hic = dht.computeHeatIndex(t, h, false); ubidots .add("humidité", h); // Modification du nom de votre variable ubidots .add("temperature", t); ubidots .add("chaleur", hic); bool bufferSent = faux ; bufferSent = ubidots .send(); // Enverra les données à une étiquette de périphérique qui correspond à l'ID du périphérique if (bufferSent) { // Faire quelque chose si les valeurs ont été envoyées correctement Serial.println("Valeurs envoyées par le périphérique"); } ubidots .getDeviceMac(macAddrs); /* Obtient la dernière valeur d'une variable sous forme float en utilisant HTTP */ float setRelay = ubidots .get(macAddrs, "relay"); if (setRelay == 1.00) { digitalWrite(RELAY, HIGH); //Sur le relais digitalWrite(LED, LOW); //Sur led } if (setRelay == 0.00) { digitalWrite(RELAY, LOW); //Relais désactivé digitalWrite(LED, HIGH); //LED éteinte } delay(5000); }
  1. Lorsque vous avez terminé de télécharger le code, déconnectez l'UARTbee et le SONOFF, puis connectez le capteur DHT11.

Votre SONOFF est prêt à être connecté à une alimentation 110-240V et à votre climatiseur.

Mettre tout cela ensemble

Nous avons testé ce projet avec un fan de « SAMURAI Eole Crystal ». Cette machine nécessitait d'appuyer sur un bouton pour l'allumer après l'avoir branchée à la prise secteur, nous avons donc soudé le bouton ON/OFF pour qu'il soit toujours allumé :

samouraï-top.jpg
samuri-pcb.jpg
samouraï-solded.jpg

Nous avons ensuite remonté l'appareil, l'avons connecté au secteur et c'est prêt !

samouraï-tous-2.jpg

Aller plus loin…

Ubidots est un service cloud permettant à des milliers d'ingénieurs du monde entier de créer IoT , tant dans le domaine de l'éducation que de l'entreprise. Pour savoir comment Ubidots peut aider votre entreprise, consultez nos fonctionnalités ou laissez-nous un message