Le contrôleur de billard (2/4)

Dans l'article précédent, nous avons donné un aperçu du projet de piscine à contrôle intelligent. Dans cette deuxième partie, nous allons regarder le cœur, le contrôleur. Ceci est basé sur un ESP32, mais pourrait également être implémenté avec un ESP8266 avec quelques modifications.

Tâche du contrôleur de piscine

Le contrôleur prendra le contrôle central. Il mesure cycliquement les températures de l'eau de la piscine et le stockage de chaleur du système solaire. Il commutera également les pompes (filtres et chauffage). L'ESP est donc à la fois un capteur et un actionneur. L'échange de données a lieu via WLAN à l'aide de MQTT.

Contrôleur de piscine

 

Mesurer les températures

La mesure de la température est généralement la première étape de la programmation des capteurs IoT. Il existe différents exemples de projets. Les capteurs de température viennent souvent ici DHT11  ou le plus précis DHT22  à utiliser. Cependant, comme les capteurs de température du projet doivent être placés à l'extérieur, nous utilisons le capteur étanche DS18B20. L'un des deux capteurs pour mesurer la température de l'eau de la piscine, l'autre pour mesurer la température dans le ballon tampon.

 

Mesure de température MQTT

Les températures mesurées sont lues toutes les 60 secondes à l'aide d'une minuterie et publiées sous forme de message via MQTT. L'intervalle est un compromis entre la lenteur du réchauffement de l'eau et le débogage du programme. Des valeurs toutes les 5 minutes suffiraient probablement, mais l'intégration dans OpenHAB rend également les intervalles de minutes beaucoup plus faciles plus tard. Plus sur cela plus tard.

Contrôler les prises radio

Comme nous ne voulons pas traiter directement avec 230 V AC dans le projet, nous commutons les pompes via des prises radio. Avec les prises radiocommandées, il y en a que vous pouvez utiliser avec les ESP Émetteur radio 433 MHz  peut contrôler. Une liste des prises radiocommandées compatibles se trouve dans Wiki  la bibliothèque utilisée.

Structure du circuit

Le circuit ressemble à ceci sur la planche à pain:

Les capteurs de température ont également des résistances de pull-up avec 4.7kΩ entre la ligne de données et l'alimentation + 3V VCC.

Les broches de données sur l'ESP32 sont affectées comme suit:

#define PIN_DS_SOLAR 16 // Capteur de température solaire
#define PIN_DS_POOL 17  // Pool de capteurs de température
#define PIN_RSSWITCH 18 // pour les émetteurs 433 MHz

Code source du projet

Nous utilisons l'environnement de développement pour le projet Platform.io IDE. Avec cela, nous créons un projet pour la carte «esp32dev». Récemment Platform.io est également devenu un grand Article publié.

Le code source complet du projet se trouve dans le référentiel GitHub de l'auteur: https://github.com/stritti/smart-swimming-pool.

Bibliothèques utilisées

Dans ce projet, il est important pour nous d'utiliser des composants logiciels éprouvés et de résoudre autant que possible les bibliothèques existantes. Pour cette raison, les bibliothèques suivantes sont utilisées:

  • rc-switch: contrôle des prises radio
  • OneWire: prise en charge des capteurs I2C
  • DallasTemperature: lire la température des capteurs
  • PubSubClient: recevoir et envoyer des messages MQTT
  • RemoteDebug: débogage sur Telnet
  • ESPBASE: modèle pour les projets IoT

Ces bibliothèques sont stockées dans la configuration Platform.io (platformio.ini) et sont automatiquement chargées et intégrées à partir d'Internet lors de leur compilation.

Le programme pour le contrôleur de pool est basé sur ESPBASE, qui, comme écrit dans l'article précédent, fournit certaines fonctions de configuration. Au début du code, certaines variables sont créées et les définitions de l'affectation des broches sont définies.

En plus de la configuration des deux fonctions () et de la boucle (), d’autres fonctions sont implémentées. Essentiellement, il s’agit de recevoir et d’envoyer des messages MQTT et de les mettre en œuvre. En outre, une minuterie est mise en œuvre qui lit les capteurs de température cycliquement et les publie via des messages MQTT.

Les détails

  1. Dans le Bouclefonction, la connexion Wi-Fi est vérifiée encore et encore et, si nécessaire, restaurée. Il s’agissait d’un problème perfide : l’ESP a perdu à plusieurs reprises la connexion Wi-Fi et sans le Reconnect, il ne pouvait plus envoyer de données.
  2. La fonction Publier est utilisé pour envoyer les messages MQTT. Ainsi, les données d’un redémarrage et la mesure de la température sont publiées sous forme de messages JSON.
  3. La minuterie pour l’envoi des températures est divisée. La raison en est que les méthodes réelles de minuterie doivent être aussi courtes que possible. Dans la mise en œuvre, la minuterie appelle la fonction onTimer, qui interrompreCounter Incréments. Dans la fonction de boucle, ceci est vérifié et le onTemperaturefonction déclenchée. Dans cette méthode, la température interne de l’ESP est également lue et publiée.
  4. La fonction surMQTTCallback est appelé quand un message est envoyé à un sujet qui commence par '/pool/switch/'. Le message contient les informations de la prise radio si elle doit être allumée ou éteinte. Le sujet est également divisé en groupe et l’encodage de l’appareil. Cela signifie que le codage des commutateurs DIP de la prise transformé en 0 et 1. Par conséquent, cette solution peut être utilisée avec souplesse ailleurs.

Le code source du contrôleur de billard peut être trouvé directement dans le fichier suivant : https://github.com/stritti/smart-swimming-pool/blob/master/Pool-Controller/src/pool-control.ino

 

Test

 

Test

Une fois le circuit mis en place et le projet chargé sur l’ESP, nous pouvons déjà tester. L’ESP ouvrira un réseau Wi-Fi comme point d’accès car aucune connexion Wi-Fi n’est configurée par défaut. Si vous vous connectez au contrôleur de piscine avec votre smartphone, vous pouvez configurer le Wi-Fi droit. Après cela, le microcontrôleur redémarre automatiquement et tente de se connecter au Wi-Fi spécifié.

Si tout est configuré correctement, un message d’état doit être publié via MQTT au début de l’ESP. Vous pouvez suivre tous les messages avec la commande suivante sur la framboise :

 mosquitto_sub -h localhost -v -t /#

L’adresse IP du serveur MQTT peut devoir être ajustée dans le code source.

Après cela, les températures devraient être de sortie sur la framboise dans le cycle minute.

Dans l’autre sens, nous pouvons changer les prises radio en envoyant un message approprié. Le sujet est "/pool/switch/'lt;group’gt;/'lt;device’gt;". Groupe et Appareil sont les commutateurs de trempette de la prise comme 0 et 1. "ON" ou "OFF" est envoyé comme un message.

Douilles

 

Que se passe-t-il ensuite ?

Cela jette les bases: nous pouvons lire les températures et nous pouvons changer de douilles.

Dans l’article suivant, nous connectons le contrôleur de piscine avec la solution maison intelligente openHAB et rendre la piscine vraiment intelligent par des règles.

 

Atteindre: Piscine et OpenHAB (3/4)

 

Esp-32Projets pour avancéTarte aux framboisesCapteursMaison intelligente

1 commentaire

Leon

Leon

Wo kann man den Sensor für die Wassertemperatur am besten unterbringen wenn das Pool haus weit vom Pool entfernt ist und der Sensor nicht sichtbar sein soll?

Laisser un commentaire

Tous les commentaires sont modérés avant d'être publiés

Messages de blogs recommandés

  1. Installez maintenant ESP32 via l'administrateur de la carte
  2. Lüftersteuerung Raspberry Pi
  3. Arduino IDE - Programmieren für Einsteiger - Teil 1
  4. ESP32 - das Multitalent
  5. OTA-Over the Air-ESP Programmation par WiFi