Arduino arduino_goodfields_64.jpg30 Domotique Goodfields
 
Sommaire

30  Un réseau domotique ... 30 Un réseau domotique ... Réseau Réseau logiciel réseau logiciel réseau
types de modules types de modules entrées-sorties,  options entrées-sorties, options Matériel Matériel
Options  #define Options #define structure  matérielle structure matérielle ESP8266  : génial ! ESP8266 : génial !
Programme Programme
La page principale ... La page principale ...
Modules ARDUINO associés : _35_GerDomEepromV2 _37_GerDom _59_GerDom
   
Vers le début Vers Page 2 Vers sommaire 30 Un réseau domotique ...
Tous les chapitres précédents m'ont permis de tester un panel de fonctionnalités pour arriver à concecoir des modules domotiques plus ou moins universels.

Les idées de base sont :
- réseau facile à mettre en oeuvre, filaire et/ou radio
- possibilité de diffusion générale
- nombre de modules variables, non défini, ajout quand on veut sur le réseau de diverses fonctions
- modules d'acquisistion (thermomètre, chaufferie, station météo, claviers, connexion vers serveur web local ou internet...)
- modules avec clavier et afficheur (communication, commandes) ou aveugles (capteurs)
- ARDUINO UNO à la base (autonome, mini, nano, méga si besoin), ESP8266, RaspBerry Pi ...
- Programme de trace/journalisation/tests en C sous MinGW sur PC et sur RaspBerry Pi

Par exemple :
- un module 'portier' affichant mon NOM, mais aussi l'heure et le Saint du jour, avec 1 bouton sonnette qui alerte tous les autres modules, et une sortie de télécommande de la porte ou du portail. Eventuellement une entrée 'détecteur de présence' pour traquer les intrus, une sortie pour commander l'éclairage ...
- un module 'capteur' station météo avec capteurs de température, pression, tendances ...
- un module 'capteur' de surveillance de charge solaire ...
- un module 'horloge' avec affichage, chargé de diffuser une mise à l'heure périodique à partir d'un système de synchronistion comme NTP ou DCF77, qui se charge aussi du Saint du jour (à partir de mon serveur Web personnel) ...
- un module 'télécommande', avec lien WiFi, autonome sur batterie LiIon rechargeable sur USB ou 12 Volts.
- un module 'centrale', accessible depuis internet, pour informations, surveillance de sécurité ou télécommande de chauffage.

Tous ces modules pouvant gérer un éclairage local (commandé localement et/ou à distance) et un buzzer.

 
Réseau
Après avoir réfléchi et testé plusieurs réseaux, le plus simple et le plus facile c'est Ethernet. Tout le monde a une Box internet à la maison, et c'est en général un switch 4 ports. Cela va permettre de démarrer. Cet accès à internet va aussi nous permettre d'obtenir une synchronisation de l'heure par NTP, un accès à la 'centrale' par routage du port 80 externe (ou autre) ...
De plus, on va pouvoir utiliser le mode d'alimentation PoE ou 'PoEP du pauvre' pour centraliser l'alimentation de tous ces modules (raisonnablement jusque vers 15 Watts, ce qui permet un éclairage à Led déjà conséquent, équivalent à plus de 100 Watts incandescence).
Les interfaces Ethernet semblent plus cher que d'autres bus, mais ils ont beaucoup diminué (voir ENC28J60 et ESP8266 à moins de 10 euros), et sont très facile à mettre en oeuvre au niveau matériel : pas de bidouille !
 
logiciel réseau
Pour avoir une diffusion générale, sans tenir compte d'une liste de modules destinataires au niveau d'ethernet, il faut utiliser le protocole UDP, qui a pour avantage d'être assez simple, mais pas 'sécurisé'.

Dans les messages eux-mêmes, j'ai inventé un format global, tout en ascii 'lisible', ce qui facilitera la mise au point.
On a une zone 'destinataires' avec soit un destinataire nommé ('1','2','A'...'Z') soit '0', ce qui signifiera 'à tous' (35 adresses possibles).

Adresse destinataire : 1 octet
Adresse expéditeur : 1 octet
Fonction : 1 octet
Sous-fonction : 1 octet, en général précision de la fonction (ex: Lampe 0 ou 1)
Données : en général 16 ou 17 (heure) octets ou plus (voir NTP), finalement buffers de 48 octets

exemples :
[0ZTe11:43:35 18/05/14] envoi à tous(0) du PC(Z) l'heure(T) heure d'été(e) pour synchronisation des horloges
[01ARPORTAIL ENTREE ] sonnette porte d'entrée, avec possibilité de commande 'R'emote (ouverture portail)
[2ZL5] module 2, allume ta lampe à 5/5
[5Z?I] module 5 as-tu des informations ?
[Z5I0St Jean Baptiste] information No 0 du module 5 pour Z
[0AI1Tmp 3C50= 3C30# 1C20_ 7C50^] information No 1 du module A pour tous :
température 3,5°C stable(=), moyenne(#) 3,3°C, mini(_) maxi(^) du jour-1:1,2°C et 7,5°C
Nota : la syntaxe exacte et à jour est documentée dans le module gerd_eth_UDP.h

 
types de modules

type de module Ethernet accès externe alimentation afficheur clavier
centrale LAN serveur PoE oui oui
lampadaire LAN - PoE + puissance non/oui 1BP ou +
horloge LAN client PoE oui(7seg) -
capteur LAN/WiFi - PoE - -
portier LAN/WiFi - PoE oui 1 BP
télécommande WiFi - Batterie LiIon non/oui 13 BP

Mon ambition est de proposer un programme universel, dans lequel on choisira par des #define les fonctions activées.

réseau : LAN (W5100 ou ENC28J60) ou Wifi (Shield officiel ou ESP8266)
clavier : 5 à 16 touches
capteurs éventuels
afficheur : 2L16C ou 7SEG6/12/18 ou serie ELCDXXX ou serie ou I2C ou 'Ger' : 2 lignes de 16 caractères ou 7 segments 6,12, 18 car., ou sortie sur en série (lcd 2x16 ou 4x20)

   
Vers le début Vers Page 2 Vers sommaire entrées-sorties, options
Voici un tableau qui résume les fonctionnalités testées sur chaque version.
module_type lcd res final. inclut
_30_A_tests LAN dev. UDP
_30_B_lcd direct - dev. lcd
_30_B_lcd ELCDXXX - dev. ELCDXXX
_30_C_time idem - dev. time B
_30_D_time2 idem LAN dev. time UDP A+B
_36_Ger_Dom_Enc idem LAN_ENC UDP
_37_GerDom
_59_GerDom gerd_lcd W5100, ENC28J60, Wifi
_35_GerDomEeprom - - ok programmation de l'EEPROM
No de station ...

   
Vers le début Vers Page 2 Vers sommaire Matériel

Module composé de 'standards' en 5V : budget 23€
- ARDUINO R3 5V 16Mhz et shield Ethernet (18,04€)
- shield afficheur et clavier (4,74€)
cliquez pour agrandir : photo/36_arduino_ethernet.jpg cliquez pour agrandir : photo/36_afficheur_LCD1602_clavier.jpg

Ou :
- ARDUINO EThernet
- shield afficheur et clavier (4,74€)

Module composé de 'minis' en 3,3V : budget 16€ + bidouille
- ARDUINO Pro Mini 3,3V 8Mhz (3,32€) ou Nano 5V
- ENC28J60 Mini avec carte d'intégration (5,04€)
- alimentation 12V -> 3,3V (1,89€)
- afficheur 2 lignes de 16 caractères (3,81€)
- clavier 5 touches avec 6 diodes BAT47/48 (0,2V) ou résistances (# 2€)
+ programmateur idoine USB Serial (5,42€) recyclable si Mini
cliquez pour agrandir : photo/36_arduino_pro_mini.jpg cliquez pour agrandir : photo/36_EN28J60mini.jpg
cliquez pour agrandir : photo/36_alim.jpg cliquez pour agrandir : photo/36_afficheur_LCD1602.jpg
cliquez pour agrandir : photo/36_programmateur.jpg cliquez pour agrandir : photo/30_mini3_2enc.jpg
cliquez pour agrandir : photo/30_nano5_2enc.jpg
   
Vers le début Vers Page 2 Vers sommaire Options #define
Mise à jour : 26/12/2016
Les options disponibles sont décrites dans le 'module modèle'.
Les 'modules' sont des descriptions de modules, en fonctions de leurs options.
Voir début de source de _59_GerDom

   
Vers le début Vers Page 2 Vers sommaire structure matérielle
photo/30_schema_general.pdf
schema global schema global

   
Vers le début Vers Page 2 Vers sommaire ESP8266 : génial !
Super compact !
http://www.f1lzr.fr/domotique/realisations/boitier_wifi/
Avec un ARDUINO :
https://www.fais-le-toi-meme.fr/fr/electronique/materiel/esp8266-arduino-wifi-2-euros
En autonome :
https://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide
   
Vers le début Vers Page 2 Vers sommaire Programme
Source
La page principale ... La page principale ...
Photos de la page :
cliquez pour agrandir : photo/30_mini3_2enc.jpg cliquez pour agrandir : photo/30_nano5_2enc.jpg
30_mini3_2enc 30_nano5_2enc
cliquez pour agrandir : photo/36_afficheur_LCD1602.jpg cliquez pour agrandir : photo/36_afficheur_LCD1602_clavier.jpg
36_afficheur_LCD1602 36_afficheur_LCD1602_clavier
cliquez pour agrandir : photo/36_alim.jpg cliquez pour agrandir : photo/36_alim_boost.jpg
36_alim 36_alim_boost
cliquez pour agrandir : photo/36_alim_buck-boost.jpg cliquez pour agrandir : photo/36_alim_LM2596_import.jpg
36_alim_buck-boost 36_alim_LM2596_import
cliquez pour agrandir : photo/36_alim_on_off_a.jpg cliquez pour agrandir : photo/36_alim_on_off_b.jpg
36_alim_on_off_a 36_alim_on_off_b
cliquez pour agrandir : photo/36_arduino_ethernet.jpg cliquez pour agrandir : photo/36_arduino_pro_mini.jpg
36_arduino_ethernet 36_arduino_pro_mini
cliquez pour agrandir : photo/36_EN28J60mini.jpg cliquez pour agrandir : photo/36_programmateur.jpg
36_EN28J60mini 36_programmateur

Dernière mise à jour : 11:40:08 18/09/2020