Centrale Domotique

De HATLAB

Une Technique de avatarSylvain dans les catégories Électronique, Énergie, Maison. Dernière modification le 27/10/2018 par Sgiraud.

Centrale Domotique logo.png

Mon but est de fabriquer une centrale pour gérer la maison à faible coût et avec beaucoup de flexibilité grâce à l'utilisation d'arduino et raspberry pi. Par “gérer”, dans un premier temps on vas se limiter au chauffage.

Licence : Attribution (CC BY)

Centrale Domotique logo.png

Introduction

(Merci Clément pour le dessin qui parle de lui-même ;-) )

Pour commencer, je vais:

  • mesurer température/humidité/qualité de l'air,
  • contrôler les radiateurs qui disposent d'un fil pilote,
  • ensuite, on verra…

Ah, j'oubliais, tout ça doit se faire:

- à distance depuis n'importe où via Internet (et avec un peu de sécurité), - avec n'importe quel terminal du type smartphone ou PC

Liste des matériaux

J'utilise:

   - 1 Arduino Uno avec 1 Shield Ethernet W5100 pour Arduino
   ou bien, 
   - 1 Nano v3 avec 1 Shield Ethernet ENC28J60 v1
   - 1 capteur  DHT-22 de température au 1/10° et d'humidité, remplacé finalement par un Si7021
   - 1 capteur MQ135 qualité de l'air
   - divers composants pour le fil pilote

Pour centraliser les données: l'application du projet Gladys que je fais tourner sur un raspberry PI 3. Il peut tourner sur à peu près n'importe quoi, y compris un PC puisque c'est du NodeJS. (PC sous Linux, cela va sans dire. Ne pensez même pas à utiliser un système M$, sauf si vous préférez les problèmes plutôt que les solutions)

Liste des outils

  • De quoi souder
  • Un PC Linux avec Firefox et l' "Arduino IDE"
  • De la persévérance

Etape n°1 - Faire un plan de toutes les étapes

En bref, il faudra faire:

  • 1) Branchement des 2 capteurs sur le Arduino
  • 2) Branchement de la shield Ethernet
  • 3) Installation de Gladys et configuration
  • 4) Création du circuit de contrôle du fil pilote et branchement à l'Arduino (Merci à Vincent pour avoir vu les problèmes de soudure)
  • 5) Ecriture du code Arduino pour envoyer les 3 mesures à Gladys
  • 6) Mise à jour du code Arduino pour prendre en compte les commandes HTTP pour les 4 modes du fil pilote

Etape n°2 - Réalisation

Voici les 2 versions:

  • Arduino et
  • Nano,

avec chacune leur shield respectif, le capteur DHT22 et le capteur MQ135.

Il y a aussi au milieu l'électronique du fil pilote (plaque verticale avec un fusible) qui n'est que sur la version Arduino actuellement.

Etape n°3 - Les déboires

  • Alimentation

Sans surprise, il faut passer par une alimentation sur VIN car l'alim par usb ne suffit plus quand les 2 capteurs et le shield sont branchés.

  • 1er déboire) La carte W5100.

Tout d'abord, le "bug" chinois: erreur sur la résistance sur la prise RJ45. La bonne résistance aurait dû être “510” = 51 x 10^0 = 51 Ohms et non pas 51 x 10^1 = 510 Ohms, sinon pas de connexion au-delà de 10Mbps !

Ensuite, le couple Arduino/W5100 parait peut fiable. J'ai de nombreux crash aléatoires et inexpliqués. EN désespoir de cause, je passe sur nano v3 + shield Ethernet ENC28J60 v1.

  • 2nd déboire) Le DHT22 (AM2302)

Le DHT22 ne semble pas fonctionner sur le nano! Merci à Philippe pour l'utilisation de l'oscilloscope numérique. On voit sur l'image que le signal série est bien visible, mais le niveau 0 ne redescend pas en dessous de 1,5 V sur le modèle de marque "ASAIR" (1V/graduation) ! Sans doute un problème de résistance "pull-up". En attendant, heureusement le DHT 22 de "AOSONG", lui, fonctionne sur le nano.

  • 3ie déboire) Encore le DHT22

Finalement pas fiable. Parfois 1 mesure sur 10, parfois aucune. Que me dit Internet? OK, je passe sur Si7021. Et le mesures deviennent fiables. J'obtiens de belles courbes sur Gladys.

  • 4ie déboire) La librairie UIPEthernet.h

Sur le papier, l'idée est géniale: compatibilité totale avec la librairie Ethernet.h de la carte W5100. Rien à changer dans le code si ce n'est le "#include". Mais voilà, il y a un "mais". Cette librairie consomme 70% de la mémoire avant même d'avoir écrit 1 ligne de code. Les résultats sont bons au début, puis mon programme s'étoffe et j'arrive aux limites. Encore bloqué.

Je peux réduire de 50% la conso de la librairie en désactivant UDP. Cela ne m'aide pas car j'en ai besoin pour le DHCP. Sinon le système perd sa capacité plug&play.

Je passe alors sur la librairie EtherCard.h. Malheureusement elle est très peu documentée. Avec les exemples on s'en sort, et finalement le code est plus simple qu'avec Ethernet .h

Etape n°4 - A suivre...

  • J'en suis là: à la 5ième étape du plan.

Finalement le réseau cible ne me permettra pas d'envoyer des commandes à l'arduino car je ne pourrais pas maîtriser le NAT. Donc je passe en mode polling: l'arduino va venir interroger le Gladys pour récupérer la consigne. J'ai tenté d'éviter les duplications de code en créant une fonction pour envoyer les mesures et parser le retour qui contiendra la consigne. Pour le moment beaucoup de blocage. La carte plante assez vite. Problème de C? Debug en cours.

  • La suite c'est :

Passer sur Internet. En fait je l'ai déjà fait sans problème depuis le sqylab. C'est plutot le réseau orange qui me pose problème. Certains ports ne passent pas. Merci Orange :-( !!

Notes et références

feedback