Affichage des articles triés par date pour la requête pcf8574. Trier par pertinence Afficher tous les articles
Affichage des articles triés par date pour la requête pcf8574. Trier par pertinence Afficher tous les articles

mardi 8 novembre 2022

ESP32 : Micro-irrigation Connectée (1ère partie)

 


 

ESP32 : Micro-irrigation Connectée (1ère partie)

 

J'avais présenté il y a deux ans une centrale d'irrigation automatisée :

https://riton-duino.blogspot.com/2019/06/arduino-micro-irrigation-automatisee.html

Certains besoins personnels m'ont conduit à étudier une nouvelle version :

  • changement d'habitation et présence de plusieurs jardins
  • création d'une zone framboisiers et groseilles
  • tomates sous serre, donc abritées de la pluie

Le précédent jardin, devant la maison précédente, n'était pas à proprement parler un potager. La plantation était assez diversifiée (tomates, courgettes, plantes aromatiques, fleurs), mais il est devenu un jardin uniquement floral suite à la création du potager à l'arrière de la maison. L'ancienne centrale continuera à l'irriguer.

Auparavant l'arrosage était conditionné par l'humidité du sol. Mais il arrive fréquemment que certaines plantes, tomates en particulier soient intentionnellement abritées (sous serre), et nécessitent un arrosage quotidien, tandis que d'autres plantes bénéficient d'un apport en eau par la pluie, et ne doivent pas être arrosées systématiquement.

Le nouveau système doit donc comporter plusieurs voies, et pour chaque voie l'arrosage peut être systématique ou conditionné par l'humidité du sol, au choix de l'utilisateur.

Les principales fonctions du précédent système sont conservées :

  • capteur de débit
  • capteur d'humidité
  • plages d'arrosage automatique
  • arrosage manuel

Pour ceux qui seraient intéressés, il existe un projet open-source analogue : OpenSprinkler.

Le contrôleur vaut un peu plus de 200€, mais on peut le réaliser soi-même.

Les sources sont disponibles ici : https://github.com/opensprinkler 

Apparemment les schémas sont développés à l'aide de EagleCAD. EagleCAD est gratuit si l'on se contente de développer de petites cartes (80cm²).

1. Les besoins

Le but de cette nouvelle version est d'apporter quelques améliorations :

  • 12 voies possibles par défaut
  • paramétrage par une page WEB

Le nombre de voies peut être augmenté par l'adoption de modules relais ou MOSFETs commandables par I2C.

Voir mes articles récents sur ces sujets :

Modules à relais DIY

Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017

Plusieurs voies peuvent être mises en eau, séparément ou simultanément, à différents moments de la journée. On pourra ainsi arroser plusieurs zones, et chaque zone peut se voir attribuer une ou plusieurs voies.

Comment attribuer les différentes voies ? voici un exemple :

  • zone 1 :
    • tomates sous serre : voie 1
    • le reste : voie 2
  • zone 2 :
    •  plantes abritées (avancée de toiture par exemple) : voie 3
    •  le reste : voie 4
  • zone 3 :
    • jeunes arbres : voie 5

Dans cet exemple 5 voies sont nécessaires.

Plusieurs arrosages par jour sont possibles pour chaque voie, pendant une certaine durée. Cette durée doit être fixée en fonction des besoins des plante les moins gourmandes en eau, qui seront arrosées avec un goutteur à faible débit (2 litres / heure par exemple). Les plantes nécessitant plus d'eau recevront un goutteur ayant un débit plus élevé, ou un goutteur réglable.

On peut également espacer les arrosages de plusieurs jours, par exemple pour arroser de jeunes arbres nécessitant une quantité d'eau importante pendant quelques mois après leur plantation, tous les 5 à 10 jours par exemple.

Chaque arrosage peut être systématique ou conditionné par l'humidité du sol. Dans l'exemple précédent les voies 1 et 3 seront irriguées systématiquement, les autres uniquement si le sol est sec.

Le paramétrage se fera par une page WEB, car proposer une interface homme-machine sur un écran TFT demanderait un travail assez conséquent. Une simple page HTML / JavaScript sera beaucoup plus rapide à développer.

Un simple téléphone mobile pourra être utilisé pour configurer le système, ou un PC.

Un ESP32 est utilisé pour ses capacités de communication WIFI.

1.1. Petits rappels

Un petit rappel concernant les diamètres de tuyaux et raccords :

  • 1/2" (15/21) ou 3/4" (20/27) : matériel de plomberie fileté 1/2 pouce ou 3/4 de pouce
    • raccords
    • nez de robinets
    • vannes
    • électrovannes
    • petites pompes
  • 1" (26x34) : matériel de plomberie fileté 1 pouce
    • raccords (généralement pour des tuyaux d'arrosage de 25mm)
    • pompes
  • 12.5mm et 15mm : tuyaux d'arrosage courants
  • raccords rapides : on trouve différents modèles :
    • 12.5mm / 15mm
    • 15mm / 19mm
    • 25mm
  • tuyau d'arrosage goutte à goutte (polyéthylène noir) :
    • 13mm intérieur, 16mm extérieur
    • 4mm intérieur, 6mm extérieur (dit capillaire)

Pour ma part j'utilise un tuyau principal 12.5mm, amplement suffisant pour une cinquantaine de goutteurs.

2. Description

2.1. Circuit hydraulique

Le circuit hydraulique retenu est le suivant :

  • une seule vanne principale située à proximité de la centrale
    • motorisée ou non
    • 12V, 24V ou 220V
  • plusieurs secondaires situées aux abords du ou des jardins (zones)
    • 12V ou 24V de préférence
  • un tuyau entre la vanne principale et chaque zone d'arrosage

Si une seule voie au total est utilisée, les vannes secondaires sont inutiles.

L'utilisation d'une vanne principale et de plusieurs vannes secondaires permet de réduire le coût. Si l'on désire utiliser des vannes motorisées, une seule est nécessaire. Les vannes simples sont bon marché.

On pourrait penser qu'en multi-voies la vanne principale est inutile. En effet on pourrait laisser uniquement les vannes secondaires, mais cela aurait une conséquence : le tuyau d'arrosage qui alimente les vannes resterait en permanence sous pression, ce que je ne souhaite pas.

2.1.1. Les vannes

Les vannes sont de préférence des modèles 12V ou 24V, pour des raisons de sécurité.

Si elles sont à l'abri et au sec, on peut éventuellement opter pour des modèles 220V. Mais en général ces vannes sont équipées de cosses plates de 6mm (sauf les vannes motorisées), ce qui pose tout de même un problème de sécurité vis à vis des personnes, à moins de les enfermer dans un coffret fermé.

Les électrovannes que l'on trouve sur les sites chinois (certaines valent 1€) supportent en général jusqu'à 0.8 Mpa (mégapascal), ce qui correspond à 8 bars. Elles conviennent à la plupart des réseaux de distribution d'eau, étant donné que la pression du réseau public n'excède pas 5 bars.

2.1.2. Commande des vannes

Ces vannes doivent être commandées par des modules à relais ou à MOSFETs.

Le plus simple pour l'amateur ne désirant pas se lancer dans la conception d'une carte à MOSFETs est d'utiliser des modules à relais.

Si des vannes 12V ou 24V sont utilisées, il serait préférable d'utiliser des modules relais fonctionnant sous la même tension, ce qui simplifiera l'alimentation.

Des modules relais récents sont nécessaires, car ils sont étudiés pour pouvoir être commandés sous 3.3V ou 5V :

Module relais 2 voies

Module relais 8 voies

Ces modules possèdent un connecteur d'entrée :

  • GND
  • IN1, IN2, etc.
  • VCC)

Un connecteur d'alimentation des bobines est également présent :

  • GND
  • JD-VCC (12V, ou 24V en fonction des relais)

Les modules ancienne génération ne conviennent pas. J'ai essayé celui-ci :

Module inadapté

Une vanne principale motorisée possède 3 fils (commun, ouverture et fermeture), elle aura donc besoin de deux voies, une vanne simple se contentera d'une voie.

Exemples : 

  • module relais 1 voie :
    • vanne principale non motorisée sans vanne secondaire
  • module relais 2 voies :
    • vanne principale motorisée sans vanne secondaire
  • module relais 4 voies :
    • vanne principale non motorisée + 3 vannes secondaires
    • vanne principale motorisée + 2 vannes secondaires
  • module relais 8 voies :
    • vanne principale non motorisée + 7 vannes secondaires 
    • vanne principale motorisée + 6 vannes secondaires 
  • etc.

Bien entendu on peut combiner plusieurs modules :

  • 1 module relais 1 voie + 1 module relais 2 voies :
    • vanne principale non motorisée + 2 vannes secondaires
  • 2 module relais 2 voies :
    • vanne principale motorisée + 2 vannes secondaires
  • 1 module relais 1 voie + 1 module relais 4 voies :
    • vanne principale non motorisée + 4 vannes secondaires
  • 1 module relais 2 voies + 1 module relais 4 voies :
    • vanne principale motorisée + 4 vannes secondaires
  • etc.

Si des vannes 12V ou 24V sont utilisées, les modules relais peuvent être remplacés par des modules à MOSFET. Des modèles adaptés à une commande en 3.3V (dits "logic level") sont impératifs (IRLR7843, AOD4184, etc.) :

Module MOSFET logic level

Exemple : aliexpress.com

Il faut éviter les modules du genre IRF520, IRF540, etc.

L'avantage du module MOSFET est l'absence de bruit, la fiabilité, et ils ne nécessitent aucune alimentation, donc ne consomment rien.

  • 2 modules seront nécessaires pour une vanne motorisée, un pour ouvrir, l'autre pour fermer
  • 1 module sera nécessaire pour chaque vanne non motorisée

L'inconvénient est que l'on ne trouve pas de modules à MOSFET multi-voies dans le commerce. Mais on peut éventuellement en fabriquer un :

MODULE 8 MOSFETs IRLZ44N

MODULE 16 MOSFETs AO3400

Cet article explique comment faire :

https://riton-duino.blogspot.com/2020/07/un-module-16-mosfets.html

Même s'il est techniquement possible de placer les modules relais ou MOSFET près des vannes, ces cartes sont susceptibles de s'oxyder dans un environnement humide. Il est préférable de les installer au sec, près de la centrale d'irrigation.

2.1.2. La vanne principale

Comme dans la version précédente la vanne principale peut être un modèle motorisé ou non :

Vanne motorisée 230V 3/4" (20/27)

Électrovanne 12V 1/2" (15/21)

La vanne motorisée permet une montée en pression plus progressive et permet souvent d'éviter des ruptures de circuit ou l'éjection de goutteurs.

Une vanne simple est suffisante si la pression est faible ou si l'on utilise un réducteur de pression.

Si l'ensemble du système est alimenté en eau du réseau public (en moyenne 3.5 bars) il est déconseillé d'utiliser un tuyau d'arrosage en amont de la vanne principale. La pression pourrait être trop forte, et le risque d'inondation élevé. Privilégier une arrivée d'eau et des raccords cuivre ou PER, à visser ou souder :

Arrivée d'eau de l'irrigation actuelle

Ma centrale d'irrigation actuelle est alimentée à l'aide de cuivre Ø14mm :

  • vanne principale : raccords 3/4 mâles
  • capteur de débit : raccords 1/2 femelles

Tous les raccords sont brasés car les écarts de température peuvent être importants. La soudure à l'étain serait moins résistante et pourrait occasionner des fuites.

Une installation à base de tube PER sera certainement plus aisée à réaliser si l'on ne dispose pas d'un poste à souder à acétylène.

2.1.3. Les vannes secondaires

Les vannes diamètre 1/2 (15/21) sont préférables, pour des raisons de coût des raccords et d'encombrement général. Mais on peut également tout réaliser en 3/4 (20/27).

Si une seule voie est utilisée, les vannes secondaires sont inutiles.

Si plusieurs voies sont nécessaires un collecteur du type sanitaire peut être utilisé. Normalement chaque zone devrait avoir besoin au maximum de 2 voies :

Collecteur 2 départs 15/21

L'arrivée est en diamètre 3/4 (20/27).

Pour le raccordement du tuyau d'arrivée on peut utiliser un nez de robinet 20/27 :


Le raccordement des vannes sur le collecteur peut être fait à l'aide de raccords femelle 15/21 :

Raccord 15/21 femelle

En sortie de vanne on trouve des raccords 15/21 sur lesquels on pourra directement brancher les tubes d'arrosage 13mm :

Raccord Claber 20/27 ou 15/21 - 13mm

On trouve même des modèles permettant de raccorder directement un tube capillaire 4mm :

Raccord Claber 20/27 ou 15/21 - 4mm

Ces raccords sont compatibles 20/27 et 15/21. Pour les raccorder en 20/27 il suffit de retirer l'adaptateur orange.

L'ensemble peut être mis à l'abri dans un élément de pilier béton enterré, avec un couvercle :

élément de pilier 32x32x25

2.2. Câblage

Un câble sera nécessaire pour relier la centrale aux vannes secondaires de chaque zone :
  • un câble à 2 conducteurs pour 1 vanne
  • un câble à 3 ou 4 conducteurs pour 2 vannes
  • etc.

Si l'on choisit un câble à 3 conducteurs pour deux vannes, un des 3 conducteurs devra supporter le double du courant si les vannes sont alimentées simultanément. Dans ce cas il est préférable d'opter pour un câble à deux conducteurs par vanne, à moins de doubler la section.

Il est important de choisir un câble de section suffisante. Un câble de 0.5mm² de longueur de 10 mètre a une résistance non négligeable :

R = 0,0175 ∙ 10 / 0,5 = 0.35Ω

Cette résistance est à multiplier par 2 : 0.7Ω. La chute de tension sur une vanne 12V consommant 500mA sera de :

U = R * I = 0.7Ω * 0.5A = 0.35V

Si les longueurs sont faibles, une section de 75mm² ou même 0.5mm² sera donc amplement suffisante pour véhiculer le courant nécessaire à chaque vanne.

Si l'installation est enterrée, il faut prévoir une gaine de diamètre suffisant pour passer le tuyau et le câble.

Sinon, le tuyau d'arrivée devra être facilement débranché en cas de besoin, tondre le gazon par exemple. Un raccord rapide doit être prévu.

Il en va de même pour le ou les câbles. Des connecteurs résistants et fiables doivent être utilisés. Pour quelques € on trouve des tas de choses intéressantes sur AliExpress :

Connecteurs IP68

2.3. L'eau de pluie

J'utilise soit de l'eau du réseau, soit de l'eau de pluie quand celle-ci est disponible.

Un réservoir de 1500 litres récupère l'eau de pluie d'une toiture. Ensuite un surpresseur permet d'augmenter la pression à 2 bar.

2.4. Interface homme machine

2.4.1. Interface WEB

Voici à quoi pourrait ressembler l'interface WEB :

Une autre page permettra de configurer le fonctionnement, et de visualiser certaines données :

  • marche ou arrêt
  • temps d'ouverture et de fermeture de la vanne (si motorisée)
  • durée par défaut de l'arrosage manuel
  • débit maximal autorisé
  • interdire les arrosages simultanés sur plusieurs voies
  • humidité minimale pour autoriser l'arrosage
  • adresse du serveur NTP (*)
  • visualisation de données :
    • affichage de l'heure du prochain arrosage
    • affichage du débit pendant l'arrosage
    • humidité du sol
  • visualisation de la quantité d'eau distribuée
    • journalière
    • hebdomadaire
    • mensuelle
    • annuelle

L'option "interdire les arrosages simultanés sur plusieurs voies" permet de vérifier après programmation que les arrosages ne se chevauchent pas. C'est utile dans deux cas :

  • l'alimentation est peu puissante et ne permet pas d'activer plusieurs voies simultanément (voir plus loin : 4. L'alimentation)
  • la pression en eau est faible et ne permet pas d'alimenter un grand nombre de goutteurs

(*) L'heure et la date courantes seront demandées par le réseau WIFI à l'aide d'une requête sur un serveur NTP.

2.4.2. Interface locale

Sur la centrale l'interface est réduite au strict minimum :

  • bouton d'arrosage manuel
  • bouton fonction
  • afficheur OLED
    • affichage date et heure
    • affichage de l'humidité
    • affichage du débit pendant l'arrosage
    • affichage "ouverture vanne" et "fermeture vanne"
    • affichage "problème de débit"
    • par appui sur le bouton fonction :
      • affichage adresse IP
      • affichage de l'heure du prochain arrosage
  • LED verte
    • arrosage en cours
  • LED rouge
    • débit maximal dépassé (clignotement)

2.4.3. Options

Certaines options sont configurables par modification d'un fichier :

  • SSID et password de la box internet
  • vanne principale motorisée ou non
  • modules relais utilisés
    • relais normaux
      • niveau haut
      • niveau bas
    • relais I2C
  • capteur de débit présent ou non
  • capteur d'humidité présent ou non

3. ESP8266 ou ESP32

3.1. Esp8266

WEMOS D1 MINI

Si l'on utilise une WEMOS D1 MINI les broches utilisable sont :

  • GPIO 0 : réservée
  • écran OLED I2C : GPIO 4, 5
  • vannes : GPIO 2
  • boutons : GPIO 13, 14
  • capteur de débit : GPIO 12
  • capteur d'humidité : A0 (ADC)
  • LEDs verte et rouge : GPIO 15, 16

Avec cette carte nous serions très limités (une seule voie). Il faudrait ajouter un expander I2C pour commander les relais, un MCP23008 ou MCP23017 par exemple. Mais cela reste tout à fait faisable.

3.2. ESP32

ESP32 DevKitC

L'ESP32 a été retenu pour son grand nombre d'entrées / sorties. Il convient de consulter la page suivante avant de décider de leur affectation :

https://randomnerdtutorials.com/esp32-pinout-reference-gpios/ 

Voici un résumé des besoins :

  • GPIOS 0 à 3, 6 à 12 : réservées ou problématiques
  • sorties :
    • écran OLED I2C : GPIO 21, 22
    • vannes : GPIO 4, 5, 13 à 19, 23, 25, 26, 27
    • LEDs verte et rouge : GPIO 32, 33
  • entrées
    • boutons : GPIO 34, 35
    • capteur d'humidité : GPIO 36 (ADC CH0)
    • capteur de débit : GPIO 39

Comme on le voit un ESP32 DevKit ne sera pas de trop. Le nombre de voies possibles est de 11 ou 12 en fonction du type de vanne principale, motorisée ou non. Cela devrait couvrir l'immense majorité des cas. Si les besoins sont supérieurs, lire le paragraphe suivant :

3.3. Le choix

A noter : les GPIOS 34, 35, 36 et 39 sont des entrées. Elles ne peuvent être configurées en sortie.

Également, certaines GPIOS peuvent empêcher le démarrage si elles sont au niveau haut. C'est le cas de la GPIO12. Si l'on connecte un module relais actif au niveau bas, la tension sera positive sur son entrée, et l'ESP32 ne démarrera pas. On pourrait éventuellement utiliser cette broche pour commander une LED, à condition de la connecter, avec sa résistance, entre GPIO12 et GND.

J'ai retenu la version ESP32 DevKitC. C'est une carte à 38 broches très répandue, équipée d'un convertisseur USB / CP2104 et d'un régulateur 3.3V AMS1117 :

Elle provient d'ici : WorldChips. Mais on la trouve un peu partout.

Pour un débutant qui voudrait réaliser ce projet il sera plus facile d'utiliser cette carte précisément, car une seule version de PCB sera étudiée. On peut également réaliser ce projet sur une plaquette à pastilles.

On peut aussi réaliser ce montage à l'aide de pratiquement n'importe quel modèle, à partir du moment où les GPIOs nécessaires sont présentes. Une WEMOS LOLIN32 conviendra parfaitement. Les broches nécessaires existent mais elles sont placées différemment :

Pour les aficionados de la technologie la carte HELTEC WIFI KIT 32 peut être une solution. Elle réunit avec bonheur un ESP32 et un écran SSD1306 :


D'un point de vue WIFI elle est moins performante que l'ESP32 DevKitC ou la WEMOS. Il faudra s'assurer que la couverture WIFI est suffisante dans l'habitation.

J'en parle ici : https://riton-duino.blogspot.com/2021/06/esp32-heltec-wifi-kit-32.html

3.4. Le WIFI

Pour l'instant l'évaluation de la carte ESP32 DevKitC est en cours. Installée à l'endroit prévu elle semble donner toute satisfaction d'un point de vue portée WIFI. La carte HELTEC WIFI KIT 32 ne convient pas, sa portée est insuffisante. Mais elle pourrait convenir à certains.

3.5. Augmenter le nombre de voies

On pourrait difficilement monter à 16 voies avec un ESP32 seul, à moins d'utiliser un module à 16 relais ou MOSFETs commandable par I2C.

Voir mes articles récents sur le sujet :

Modules à relais DIY

Piloter des Relais ou des MOSFEts à l'aide d'un Module MCP23008 ou MCP23017

Un module relais ou MOSFETs équipé d'un expander MCP23017 I2C 16 canaux permettra de bénéficier de 16 voies. Comme le MCP23017 possède 3 broches de sélection d'adresse I2C, on peut connecter jusqu'à 8 modules. Cela permettra d'offrir en tout 128 voies.

4. L'alimentation

Comme dit plus haut l'alimentation principale sera choisie en fonction de la tension acceptée par les vannes, et sa puissance dépendra du nombre de vannes et de relais.

Si les distances entre les relais et les vannes sont importantes, l'adoption de vannes 24V permettra de réduire le courant nécessaire, et donc la section des fils :

  • vanne de 6W sous 12V : 500mA
  • vanne de 6W sous 24V : 250mA

La puissance des vannes est en général de 6W. La consommation des relais est d'environ 450mW pour les modèles courants : SRD-12VDC-SL-C ou SRD-24VDC-SL-C.

Pour une centrale 4 voies nous aurons besoin de :

  • 1 vanne principale + 4 vannes secondaires : 30W
  • 5 relais : 2.5W

A cela il faudra ajouter les besoins de l'ESP32, qui sera alimenté à travers un régulateur du type MP1584 3.3V : 100mA, soit 0.33W.

Le total est de presque 33W. Bien entendu c'est une consommation maximale, en considérant que toutes les vannes sont ouvertes. Au repos, seul l'ESP32 consommera du courant.

Pour 8 voies la consommation maximale monte à 57W.

Il est possible de consommer moins de courant en commandant un seul arrosage à la fois, et en les enchaînant, ainsi 1 seule vanne secondaire sera alimentée :

  • 1 vanne principale + 1 vanne secondaire : 12W
  • 2 relais : 1W

C'est pour cela que l'option "interdire les arrosages simultanés sur plusieurs voies" est prévue. Elle permet de vérifier après programmation que les arrosages ne se chevauchent pas.

Cette option permet d'utiliser une alimentation nettement moins puissante et ainsi de réduire le coût. Une alimentation de qualité coûte cher :

  • MEANWELL RS-15-12 15W : 8.50€
  • MEANWELL RS-35-12 35W : 13.50€
  • MEANWELL RS-75-12 75W : 18.50€

On aurait pu diminuer légèrement cette consommation en adoptant des relais bistables, mais je n'en vois pas trop l'intérêt, étant donné que la puissance des relais est très faible par rapport à celle des vannes.

5. Le schéma

Le schéma est réalisé à l'aide de KICAD :


Le connecteur d'alimentation P2 reçoit la tension de l'alimentation principale : 12V ou 24V, choisie en fonction des électrovannes et des relais.

Comme le capteur de débit est à alimenter sous 5V, il est indispensable d'ajouter un régulateur. J'ai choisi un module MP1584 à tension fixe 5V, qui alimente également la carte DEVKIT-C :

Les MP1584 réglables sont équipés d'un potentiomètre miniature de très mauvaise qualité. A éviter.

Celui-ci provient de chez WorldChips : https://fr.aliexpress.com/item/4000330604568.html?spm=a2g0o.store_pc_groupList.8148356.53.6d06635eIkRNN1

La carte DEVKIT-C est équipée d'un régulateur AMS1117, qui fournit du 3.3V :

  • à l'ESP32
  • à l'écran OLED SSD1306
  • au capteur d'humidité

Deux ponts diviseurs sont présents :

  • R3-R5 : abaisse la tension de sortie du capteur d'humidité (0V à 3.3V) pour la rendre compatible avec la tension maximale de l'ADC : 1.1V
  • R4-R6 : abaisse la tension de sortie du capteur de débit pour la rendre compatible avec la tension maximale d'une entrée digitale: 3.3V

Les auteurs de certains tutoriels ESP32 se permettent de relier directement la sortie d'un capteur de débit 5V à une entrée de l'ESP32. Ce n'est pas recommandé.

Deux connecteurs de sortie sont prévus :

  • P4 permet de commander jusqu'à 13 relais ou MOSFETs
  • P5 permet de relier un ou plusieurs modules à relais ou à MOSFETs I2C
Pour terminer, deux LEDs (rouge et verte) sont présentes, ainsi que deux boutons de commande.

6. Le coût

La centrale d'arrosage de base devrait être très bon marché, en achetant les composants sur AliExpress :

  • ESP32 : 4€ 
  • le module à relais ou MOSFETs :
    • module 8 relais : 6€
  • ou
    • un module à 8 MOSFETs AO3400 à réaliser soi-même : 1€.
  • écran OLED : 2.60€
  • 2 boutons TACT : 0.10€
  • le PCB
    • une plaquette à pastilles 100x100 : 5€ les 5 pièces
  • ou
    • un PCB réalisé par JLCPCB : 9€ les 5 pièces
  • l'alimentation 15W : 8.50€
  • quelques connecteurs DUPONT : 0.15€
  • capteur de débit : 7€
  • capteur d'humidité capacitif : 1.70€

A cela il faudra ajouter les vannes :

  • vanne simple : 1€ pièce
  • vanne motorisée : 20€

A la louche une centrale 8 voies devrait coûter 60€ avec une vanne principale motorisée, 40€ sinon. On peut gagner encore 5€ si on remplace la carte 8 relais par une carte à 8 MOSFETs.

En comparaison, une centrale d'arrosage minimaliste à 4 voies, sans capteurs de débit et d'humidité, coûte environ 80€.

En commandant le maximum de matériel chez le même revendeur on peut réduire fortement le coût de transport (attention ce n'est pas le cas chez tous les marchands).

Chez WorldChips, par exemple, c'est le cas. Ma dernière commande chez eux (58€ de matériel) s'est vue attribuer 15€ de réduction sur 21€ de coût de livraison.

7. Le code

Le code actuel implémente les parties suivantes :

  • configuration des relais
  • connexion au réseau WIFI 
  • page HTML principale
  • page HTML de test des relais

7.1. La configuration

La configuration reprend le principe décrit dans cet article :

ESP32 & ESP8266 : les Fichiers de Paramètres

Il faut bien lire le paragraphe suivant : 2. Le chargement dans SPIFFS

Le fichier de configuration fourni est un exemple permettant d'utiliser un module relais ou MOSFETs sur 8 GPIOS et un module à 16 relais ou MOSFETs sur bus I2C :

https://bitbucket.org/henri_bachetti/esp32-sprinkle-timer/src/master/arduino/esp32-sprinkle-timer/data/config.ini

[WIFI]
access-point=SSID:ABCDEFGHIJ

[relays]
modules=gpio-1, mcp23017-1(0x20)
gpio-1=GPIO-L(4), GPIO-L(5), GPIO-L(13), GPIO-L(14), GPIO-L(15), GPIO-L(16), GPIO-L(17), GPIO-L(18)
mcp23017-1=I2C-H(0-15)
main=gpio-1.0

[zones]
zones=massif1, potager, courges, massif2, massif3, montmorency, moissac, mirabellier, pommier

[massif1]
voie1=mcp23017-1.0
voie2=mcp23017-1.1

[potager]
voie1=mcp23017-1.2
voie2=mcp23017-1.3
voie3=mcp23017-1.4
voie4=mcp23017-1.5

[courges]
voie1=mcp23017-1.6

[massif2]
voie1=mcp23017-1.7

[massif3]
voie1=mcp23017-1.8

[montmorency]
voie1=mcp23017-1.9

[moissac]
voie1=mcp23017-1.10

[mirabellier]
voie1=mcp23017-1.11

[pommier]
voie1=mcp23017-1.12

La section WIFI donne le SSID et le PASSWORD du réseau.

La première ligne de la section [relays] déclare deux modules :

  • GPIO
  • un MCP23017 à l'adresse I2C 0x20
Le module gpio-1 est ensuite décrit. Il utilise les GPIOS 4, 5, et 13 à 18.

Le module mcp23017-1 utilise les GPIOS 0 à 15 du MCP23017.

La syntaxe de description des relais est la suivante :

  • GPIO ou I2C
  • tiret
  • L ou H selon le niveau de commande du relais ou du MOSFET
  • (X) représente le N° physique de la sortie

Exemples :

  • GPIO-L(4) : un relais activable par un niveau bas sur GPIO4
  • GPIO-H(4) : un relais activable par un niveau haut sur GPIO4
  • GPIO-H(4+5) : un relais bistable activable par un niveau haut sur GPIO4 et GPIO5
  • I2C-L(0) : un relais I2C activable par un niveau bas sur GPIO0 d'un MCP23008 ou MCP23017
  • I2C-H(0) : un relais I2C activable par un niveau haut sur GPIO0 d'un MCP23008 ou MCP23017
  • I2C-H(0+1) : un relais I2C bistable activable par un niveau haut sur GPIO0 et GPIO1 d'un MCP23008 ou MCP23017
  • I2C-H(0-15) : 16 relais I2C activables par un niveau haut sur GPIO0 à GPIO15 d'un MCP23017

Après lecture de la configuration chaque relais est nommé comme suit :

  • nom du module
  • point
  • index du relais

Les relais gérés par le module gpio-1 sont donc nommés gpio-1.0 à gpio-1.7

Les relais gérés par le module mcp23017-1 sont nommés mcp23017-1.0 à mcp23017-1.15

Cette manière de procéder ajoute un niveau d'abstraction. Cela évite d'avoir à se préoccuper des N° physiques des GPIOs.

Ensuite, le relais pour la vanne principale (main) est décrit. Il utilise la voie gpio-1.0

La description des différentes zones d'irrigation occupe plusieurs sections :

  • [zones] donne la liste des zones
  • [massif1] se réserve les voies mcp23017-1.0 et mcp23017-1.1
  • [potager] se réserve les voies mcp23017-1.2 à mcp23017-1.5
  • etc.

7.1.1. Ajouter un module

Ajouter un module est relativement facile. Bien entendu deux modules ne peuvent porter le même nom.

Actuellement seuls les modules GPIO, MCP23008 et MCP23017 sont gérés. On pourrait facilement ajouter la gestion d'autres composants (PCF8574, PCF8575, 74HC595, etc.).

Deux modules I2C MCP23008 ou MCP23017 ne peuvent cohabiter sur la même adresse I2C. Il faudra donc configurer les modules pour qu'ils utilisent des adresses différentes, et utiliser les mêmes adresses dans la configuration.

Sur cette photo on voit comment configurer un module MCP23017 :

 

3 résistances 0Ω sont présentes en bas à droite (A0, A1, A2). Il faut déplacer les résistances en fonction de l'adresse désirée :

  • A0, A1, A2 à GND : 0x20
  • A0 à VCC, A1, A2 à GND : 0x21
  • A1 à VCC, A0, A2 à GND : 0x22
  • A0 et A1 à VCC, A2 à GND : 0x23

C'est binaire.

7.1.2. Ajouter un module sur GPIO

Il serait facile d'ajouter un deuxième module à 4 relais :

modules=gpio-1, gpio-2, mcp23017-1(0x20)
gpio-1=GPIO-L(4), GPIO-L(5), GPIO-L(13), GPIO-L(14), GPIO-L(15), GPIO-L(16), GPIO-L(17), GPIO-L(18)
gpio-2=GPIO-L(19), GPIO-L(23), GPIO-L(25), GPIO-L(26)

Pour rappel, seules les GPIO 4, 5, 13 à 19, 23, 25, 26, 27 de l'ESP32 sont utilisables.

7.1.3. Ajouter un module MCP23008

On pourrait ajouter également un module I2C MCP23008 à 8 relais :

modules=gpio-1, mcp23017-1(0x20), mcp23008-1(0x21)
gpio-1=GPIO-L(4), GPIO-L(5), GPIO-L(13), GPIO-L(14), GPIO-L(15), GPIO-L(16), GPIO-L(17), GPIO-L(18)
mcp23017-1=I2C-H(0-15)
mcp23008-1=I2C-H(0-7)

Le mcp23008-1 est déclaré à l'adresse I2C 0x21.

7.1.4. Ajouter un module MCP23017

On pourrait ajouter de la même façon un deuxième module I2C MCP23017 à 16 relais :

modules=gpio-1, mcp23017-1(0x20), mcp23017-2(0x21)
gpio-1=GPIO-L(4), GPIO-L(5), GPIO-L(13), GPIO-L(14), GPIO-L(15), GPIO-L(16), GPIO-L(17), GPIO-L(18)
mcp23017-1=I2C-H(0-15)
mcp23017-2=I2C-H(0-15)

Le deuxième module mcp23017-2 est déclaré à l'adresse I2C 0x21.

7.1.5. Modification de la configuration online

La configuration sera modifiable par une page WEB :

  • ajout de modules
  • affectation des voies aux différentes zones
  • horaires d'arrosage
  • etc.
Ces modifications seront enregistrées dans un deuxième fichier de configuration.

8. Librairies

Les librairies suivantes sont nécessaires :

https://github.com/yurilopes/SPIFFSIniFile

https://github.com/adafruit/Adafruit-MCP23017-Arduino-Library

https://github.com/adafruit/Adafruit_BusIO

Elles sont installables depuis l'IDE ARDUINO. 

Dans ses dernières version (2.0.0 et suivantes) la librairie Adafruit-MCP23017-Arduino-Library gère le MCP23008 et le MCP23017, y compris les versions SPI MCP23S08 et le MCP23S17. Le sketch ne pourra pas être compilé avec les anciennes versions des librairies Adafruit-MCP23008-Arduino-Library et Adafruit-MCP23017-Arduino-Library.

9. Téléchargements

Pour télécharger le projet :

https://bitbucket.org/henri_bachetti/esp32-sprinkle-timer

Cette page vous donne toutes les informations nécessaires :

https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

10. Conclusion

Ce nouveau projet est en cours d'étude. D'un point de vue matériel il est déjà suffisamment mature pour que l'on puisse s'en inspirer.

Du côté logiciel, tout ou presque reste à faire. Mais j'ai tout l'hiver pour le mener à terme.


Cordialement

Henri


mercredi 9 mars 2022

ARDUINO : Centrale d'Alarme 2 Zones

 



ARDUINO : Centrale d'Alarme 2 Zones


Dans cet article je reprends un ancien projet de centrale d'alarme, réalisée à partir d'une carte ARDUINO NANO. Cette alarme est utilisée pour la surveillance d'un local annexe qui ne justifie pas un investissement lourd. C'est une centrale toute simple :

  • 1 seule zone
  • 1 seul capteur PIR
  • non connectée
  • alimentée par le secteur

Mes besoins ayant changé depuis, cette centrale va évoluer petit à petit vers quelques chose de plus complexe, afin d'être installée dans une habitation :

  • activation et désactivation par badge RFID
  • 2 zones
  • plusieurs capteurs radio
  • sirène auto-alimentée
  • envoi de notifications vers un téléphone mobile
  • alimentation de secours par batterie
  • etc.

Deux versions sont envisagées : une version simple à base d'ARDUINO NANO, comme la centrale actuelle, et une version à base d'ESP32.

Dans ce premier article, nous allons surtout parler de la version de base d'ARDUINO NANO. Divers sujets seront abordés :

  • lecture d'un clavier matriciel
  • pilotage un écran LCD I2C
    • affichage clignotant
    • affichage d'un caractère animé
    • création d'un caractère personnalisé
    • barre de progression
  • saisie au clavier
    • codes d'accès
    • paramètres de configuration
  • utilisation d'un lecteur RFID

1. Les besoins

1.1. Nombre de zones

Il m'a semblé qu'évoluer vers une centrale à deux zones était intéressant, surtout si l'on envisage d'utiliser des capteurs sécurisés, avec détection d'arrachement ou de coupure de câble.

La zone 1 déclenche l'alarme sans délai.

La zone 2 déclenche l'alarme de manière retardée. Le retard permet deux choses :

  • pouvoir sortir du local surveillé sans déclencher l'alarme, après son activation
  • laisser le temps à l'utilisateur d'entrer le code de désactivation après être entré dans le local

En zone 2 on va regrouper tous les capteurs dont l'activation est normale en utilisation habituelle :

  • capteurs d'ouverture de porte d'entrée
  • détecteurs de présence aux entrées de l'habitation

En zone 1 on va regrouper tous les capteurs dont l'activation est anormale en utilisation habituelle :

  • capteurs d'ouverture de fenêtre
  • détecteurs de présence en dehors des entrées de l'habitation
  • fil d'autoprotection des capteurs (l'alarme est donc déclenchée immédiatement si un capteur est arraché ou si son câble est coupé)

1.2. Nombre de capteurs

Pour mon usage, jusqu'à présent, je ne voyais pas l'intérêt de disposer de plusieurs capteurs. Un PIR était amplement suffisant. Cela convient parfaitement à la surveillance d'un local du type atelier, garage, ou d'un petit appartement. Par contre les besoins ont évolué et une utilisation plus poussée est envisagée.

1.3. Filaire ou radio ?

Dans sa version de base la centrale d'alarme est reliée par câble à deux éléments : un PIR et une sirène. Cette nouvelle version permet d'utiliser un ou plusieurs détecteurs du commerce.

En filaire, si le nombre de capteurs est important, la complexité du câblage dans l'habitation serait bien plus importante que celle du codage. Pour ma part j'hésiterais à mettre en oeuvre un tel système, mis à part s'il s'agit d'une construction neuve ou d'une rénovation totale, et même dans ce cas, le coût en longueur de câbles, gaines et main d’œuvre serait trop important, et le système serait peu évolutif.

Mais on peut aussi passer en liaison radio intégrale ou WIFI. Dans ce cas, un grand nombre de capteurs seront utilisables, ainsi que plusieurs systèmes d'avertissement. C'est pour cette raison que des extensions sans fil sont prévues. Voir plus loin : 1.4.2. Extensions.

1.4. Évolutions

1.4.1. Connectivité

En fonction de la technologie retenue pour les transmissions radio, la centrale d'alarme pourra exploiter diverses solutions :

  • modem et radio :
    • 433MHz, 868MHz, 1.4GHz : modules ARDUINO + NRF24L01 ou RFM69
  • WIFI : ESP8266 ou ESP32

Si la solution retenue est le WIFI, la centrale d'alarme elle-même pourra être développée à partir d'un ESP8266 ou ESP32. Avant tout il faudra s'assurer que la couverture WIFI est suffisante pour couvrir toutes les pièces à surveiller dans l'habitation. Dans le cas contraire il faudra se rabattre sur une solution radio 433MHz ou 868MHz, ou installer des points d'accès supplémentaires.

La disponibilité du réseau WIFI pose un problème d'alimentation. Si le secteur disparaît, le réseau disparaît aussi. Il y a certainement une solution à ce problème : un mini-onduleur.

1.4.1.1. SMS

En ajoutant un modem il serait possible d'envoyer des SMS, mais là encore, la NANO manque de broches disponibles. Une MEGA serait nécessaire.

1.4.1.2. Intranet & internet

Avec un ESP8266 ou un ESP32 on pourrait aussi imaginer d'autres fonctionnalités :

  • connexion à un serveur domotique
  • envoi de mails
  • envoi de notifications à un téléphone mobile
  • activation / désactivation à distance
  • etc.

Divers capteurs WIFI peuvent être disposés dans l'habitation. Leur alimentation peut parfaitement être assurée par batterie.

Cette solution pourrait convenir pour une centrale d'alarme plus riche en fonctionnalités. Elle fera l'objet d'un autre article.

1.4.2. Version ARDUINO et extensions

La version ARDUINO de cette centrale d'alarme, même si elle n'utilise qu'une petite carte NANO, a des possibilités d'extension. Elle dispose d'un connecteur auxiliaire :

  • entrée intrusion zone 1
  • entrée intrusion zone 2
  • sortie alarme
  • sortie LED
  • alimentation

Ce connecteur peut être utilisé soit pour le raccordements direct d'un ou plusieurs détecteurs de mouvements du commerce, soit pour alimenter et communiquer avec divers systèmes auxiliaires. Ces sous-systèmes n'existent pas encore, ce sont des projets à venir.

1.4.2.1. Sous-système intrusions

On peut ajouter un sous-système de détection d'intrusions par radio, WIFI, etc.

Ce sous-système doit être composé de plusieurs modules :

  • un module récepteur (passerelle) relié physiquement à la centrale d'alarme
  • plusieurs capteurs émetteurs

Le module récepteur envoie une impulsion sur une des entrées intrusion de la centrale d'alarme s'il reçoit un message d'intrusion de la part de l'un des émetteurs. Si tous les capteurs sont déportés, le PIR filaire de la centrale d'alarme devient inutile.

L'alimentation de certains capteurs peut parfaitement être assurée par batterie.

On peut également ajouter un sous-système de détection d'intrusions filaire, avec un ou plusieurs capteurs. Celui-ci sera simplement composé d'une carte, pas forcément intelligente, à laquelle seront raccordés divers capteurs HC-SR501, contacts secs, ou autres.

1.4.2.2. Sous-système d'alarme

On peut ajouter un ou plusieurs sous-systèmes d'alarme :

  • envoi de SMS, de mails ou de notifications à un téléphone mobile
  • envoi de notifications à une centrale domotique
  • activation par radio d'une sirène déportée

Dans ce cas, ce sous-système sera activé lorsque la sortie alarme elle-même sera activée.

1.4.2.3. Sortie LED

La sortie LED permet de signaler que la centrale d'alarme est activée. Elle ne peut débiter que 20mA. Si une puissance supérieure est requise, pour un voyant visible de l'extérieur par exemple, on peut raccorder sur cette sortie un module comportant une LED ou un voyant plus puissant, alimenté sous 5V ou 12V, une LED de puissance commandée par un transistor par exemple.

La sortie LED peut également être utilisée pour activer un voyant extérieur par radio.

1.5. Contrôle d'accès

Cette alarme est contrôlable de deux manières :

  • par le clavier
  • par le lecteur RFID

Que ce soit par la saisie d'un code ou sur présentation d'un badge RFID, les privilèges d'accès sont les suivants :

  • privilèges utilisateur
  • privilèges administrateur

Les privilèges utilisateur permettent d'activer ou désactiver l'alarme.

Les privilèges administrateur permettent de configurer l'alarme.

La configuration permet de modifier les paramètres de l'alarme, entre autres les codes d'accès et les UID des badges.

Quelques règles : les codes d'accès doivent être différents, et les UID des badges également. S'ils sont identiques, seule la configuration sera possible.

Par conséquent, si un lecteur RFID est prévu, il est nécessaire de posséder deux badges, ou un badge et une carte. La plupart des vendeurs fournissent une carte et un badge avec le lecteur :

AliExpress

2. Description

La centrale actuelle est composée de :

  • un ARDUINO NANO
  • un écran LCD 4 lignes I2C
  • un clavier matriciel 12 touches
  • un capteur PIR
  • un module relais
  • une LED
  • une alimentation 12V
  • une sirène 12V sans batterie

L'écran LCD est équipé d'un module I2C PCF8574 :

Certains fournisseurs proposent le pack complet : AliExpress.

Le clavier est un modèle à membrane :


clavier ACCORD KB304
Clavier métal anti-vandalisme

Le lecteur RFID est du type RC522 :

Ce genre de lecteur accepte des badges ou des cartes RFID MIFARE. La plupart des vendeurs fournissent une carte et un badge du type porte-clés avec le lecteur :

Le lecteur peut parfaitement être placé sous le clavier (si celui-ci est ultra-plat) si l'on désire gagner de la place en façade du boîtier. Il faudra pour cela adopter un module RFID pourvu d'un connecteur coudé (pas comme celui de la photo ci-dessus).

La LED peut être installée en façade du boîtier, mais également déportée pour être visible de l'extérieur.

2.1. Alimentation

L'alimentation dépend de la configuration envisagée :

  • adoption d'une sirène filaire ou non
  • capteurs de mouvements du commerce
  • présences de sous-systèmes

On peut alimenter la centrale d'alarme de deux manières :

  • 5V, dans ce cas l'ARDUINO est alimenté par sa broche VCC
  • 6.5V à 12V, dans ce cas l'ARDUINO est alimenté par sa broche VIN
La sélection se fait à l'aide d'un cavalier.

2.1.1. Sirène et capteurs filaire

L'alarme, la sirène et les capteurs doivent être alimentés à l'aide d'un alimentation externe 6.5V à 12V. En fait tout va dépendre de la tension d'alimentation de ceux-ci. Il existe pas mal de modèles dont la tension d'alimentation peut être comprise entre 6V et 14V. La tension d'alimentation de la centrale d'alarme ne devra pas excéder 15V.

Si la sirène est un modèle 24V, l'alimentation devra également être un modèle 24V, et l'alarme ne le supportera pas. Dans ce cas, celle-ci pourra être alimentée de deux manières :

  • une simple alimentation MINI-USB 5V, par le connecteur USB de l'ARDUINO
  • un convertisseur STEP-DOWN qui abaissera la tension de 24V à une valeur acceptable par l'alarme et les capteurs

La puissance de l'alimentation sera principalement dépendante de celle de la sirène. Certaines sirènes auto-alimentées ne requièrent qu'un courant assez faible, pourvu qu'il soit suffisant pour recharger leur batterie.

2.1.2. Sirène sans fil

Si la sirène est commandée par radio, et qu'aucun détecteur 12V du commerce n'est utilisé, l'alimentation de la centrale d'alarme peut se faire tout simplement en 5V.

2.1.3. Sous-systèmes

Les sous-systèmes recevront la même tension d'alimentation que la centrale d'alarme. Si l'alimentation se fait en 5V il y a de fortes chances que cette tension soit acceptée directement :

  • cartes à base d'ARDUINO
  • cartes à base d'ESP8266, ESP32
  • modem 2G ou 3G

Si l'alimentation se fait en 12V il faudra abaisser cette tension pour la rendre acceptable par les sous-systèmes.

Attention à la puissance nécessaire :

  • un sous-système utilisant un modem du genre SIM800 aura besoin de 2A lors des transmissions
  • un sous-système utilisant un module ESP8266 ou ESP32 aura besoin de plus de 400mA lors de la connexion au réseau WIFI
  • un sous-système basé sur ARDUINO et liaison radio par NRF24L01 sera beaucoup moins gourmand : 50mA suffiront

2.1.4. En bref

Si la centrale d'alarme est simple (un seul PIR et sirène 12V filaire) il est préférable d'adopter une alimentation adaptée à la sirène, 12V de préférence.

Si la centrale d'alarme est plus complexe (un ou plusieurs PIR et sirène(s) sans fil) il est préférable d'adopter une alimentation 5V.

2.1.5. Batterie

Si l'alarme nécessite d'être sous tension en permanence, même en cas de disparition de la tension secteur, il est facile de l'alimenter à l'aide d'une carte d'alimentation par batterie :

5V : Cartes d'alimentation par batterie & POWER-BANK

12V : Un Power-Bank DIY

2.2. Détection et avertissement

2.2.1. HC-SR501

La centrale d'larme, dans sa version la plus simple, est équipée d'un détecteur de présence du type HC-SR501 :

Celui-ci dispose d'un connecteur 3 points pour un raccordement direct, en alimentation 5V.

Le HC-SR501 n'est pas un capteur évolué. Si un animal est présent dans l'habitation, il sera susceptible de déclencher l'alarme. De plus on ne pourra en raccorder qu'un seul, sauf si l'on fabrique une carte additionnelle pouvant en accepter plusieurs.

Si le HC-SR501 est utilisé, on ne pourra pas raccorder d'autres détecteurs de mouvements en parallèle, à moins de prévoir une électronique adaptée.

2.2.2. Détecteurs de mouvements du commerce

On peut utiliser un ou plusieurs détecteurs de mouvements d'alarme du commerce, généralement alimentés sous 12V. Dans ce cas on utilisera le connecteur auxiliaire, qui propose également le raccordement du fil d'autoprotection (tamper).

L'autoprotection d'un détecteur de mouvements est constituée en général d'un contact ILS situé sous le détecteur, et d'un aimant situé sur le socle. Si les deux sont séparés par arrachement, le contact s'ouvre.

Certains détecteurs de mouvements du commerce permettent de ne pas déclencher l'alarme dans le cas où un animal est détecté :

Bosch BDL2-WP12

On peut également utiliser un ou plusieurs capteurs à contact sec, sur une porte par exemple :

Si plusieurs détecteurs de mouvement ou capteurs à contact sec sont nécessaires, ils sont normalement connectés en série sur la centrale d'alarme, car leur contact, en général, est fermé au repos :

Sur ce schéma, deux détecteurs de mouvement sont branchés à la centrale d'alarme. Les deux sont alimentés par la centrale. Leurs contacts NC (Normaly Closed) sont en série entre GND et Z2. Leurs fils d'auto-protection (tamper) sont en série entre GND et Z1.

Les entrées Z1 et Z2 de la centrale sont ramenées à une tension positive à l'aide de résistances internes de rappel (pullups). Si tous les capteurs sont branchés correctement, Z1 et Z2 sont à la masse au repos.

Si un détecteur est activé, il ouvre son contact. L'alarme voit un niveau haut sur son entrée Z2. Elle commence le décomptage d'intrusion.

Si un détecteur est arraché, son contact d'autoprotection s'ouvre. L'alarme voit un niveau haut sur son entrée Z1. Elle active directement l'alarme.

Si un câble est sectionné, l'alarme voit un niveau haut sur son entrée Z1. Elle active directement l'alarme.

C'est un principe de base adopté par pratiquement toutes les alarmes du type filaire.

2.2.3. Sirène

L'avertissement peut être confié à une sirène filaire du commerce, auto-alimentée ou non. Celle-ci est actionnée par un relais.

Le contact NO (normalement ouvert) peut être utilisé pour alimenter une sirène simple, non auto-alimentée.

Généralement une sirène auto-alimentée est actionnée par la disparition d'un +12V sur son entrée. On peut donc utiliser le contact NF (normalement fermé). Mais certaines sont paramétrables.

2.3. Activation et désactivation

L'alarme est activée ou désactivée soit par l'entrée d'un code au clavier, soit par la présentation d'un badge RFID. Le code à saisir peut avoir une longueur quelconque, tout en restant dans les limites d'affichage du LCD (ici, 14 caractères maximum).

Après l'entrée du code, l'alarme devient active au bout d'un temps paramétrable, ce qui permet de sortir du local surveillé sans déclencher celle-ci.

Si une intrusion est détectée, l'alarme est déclenchée au bout d'un temps paramétrable, ce qui permet d'entrer dans le local surveillé sans déclencher la sirène, afin de désactiver l'alarme.

Le temps d'activation de la sirène est également paramétrable. A noter : certaines sirènes possèdent leur propre temporisation.

2.4. Interface

L'écran LCD affiche en permanence les informations suivantes :

  • état de l'alarme (INACTIVE, ACTIVATION, ACTIVE, INTRUSION, ALARME)
  • nombre d'intrusions (clignotant si supérieur à ZÉRO)

Il affiche également ces informations :

  • décompte du temps pendant l'activation
  • décompte du temps après une intrusion
  • barre de progression pendant l'alarme

La LED sert d'indicateur :

  • éteinte si l'alarme est inactive
  • allumée si l'alarme est active
  • clignotante si il y a eu une intrusion ou plus

Le clavier permet d'entrer les codes administrateur et utilisateur. La touche * efface le code entré. La touche # valide le code entré.

Le lecteur RFID permet également d'activer / désactiver ou configurer l'alarme.

2.5. Sécurité

L'état de l'alarme (INACTIVE, ACTIVE), ainsi que le nombre d'intrusions, sont sauvegardés dans l'EEPROM de l'ARDUINO. En cas de coupure secteur momentanée, l'alarme revient dans son état après rétablissement de l'alimentation.

2.6. Paramètres

Les paramètres de l'alarme sont les suivants :

  • présence d'un lecteur RFID ou non
  • délai d'activation
  • délai d'intrusion
  • délai d'alarme
  • délai d'allumage du backlight de l'écran
  • auto-réactivation ou non
  • codes d'accès au clavier, administrateur et utilisateur
  • codes UID des badges RFID, administrateur et utilisateur

Tous, sauf le premier, peuvent être modifiés en présentant un badge d'administration, ou en entrant le code d'administration au clavier. Ils sont sauvegardées en EEPROM.

L'auto-réactivation est intéressante dans le cas où le capteur est un détecteur de mouvement. Sinon, s'il s'agit d'un contact susceptible de rester activé après l'intrusion, comme un capteur d'ouverture de porte ou de fenêtre, il est préférable que la réactivation soit manuelle, car les intrus ne refermeront probablement pas la porte, et la sirène risquerait d'être entendue jusqu'à la désactivation manuelle de l'alarme. Les voisins seraient ravis ...

L'auto-réactivation automatique ne concerne que la zone 2. Une intrusion en zone 1 n'est pas ré-activable automatiquement.

Si l'on modifie le code d'accès administrateur, il vaut mieux le mémoriser ou le noter, car si l'on n'a pas jugé nécessaire d'ajouter un lecteur RFID l'accès à la configuration deviendrait impossible.

Mais il existe une solution : le moniteur série affiche les codes au démarrage. Il suffit donc de raccorder un PC et de lancer le moniteur série ou n'importe quel terminal (115200 baud) pour les retrouver :

valid config data has been found in the EEPROM:
magic: DEADBEEF
activation delay: 5
intrusion delay: 10
alarm duration: 12
backlight duration: 30
AUTO-REACTIVATE: 1
ADMIN-CODE: 123
USER-CODE: 456
ADMIN-RFID: 0x55A185E9
USER-RFID: 0xF80D4416

3. Le schéma

Ce schéma est réalisé à l'aide de Kicad 5.1 :

Pour récupérer le projet voir plus bas :  6. Téléchargements.

Ce montage peut facilement être essayé sur une breadboard, avec pour alimentation un simple cordon USB branché sur la NANO.

3.1. Le montage

Comme on le voit, toutes les GPIOs logiques disponibles de la NANO sont occupées. Il reste seulement A6 et A7, purement analogiques.

Le capteur HC-SR501 n'est pas implanté sur la carte, il est déporté grâce à un connecteur 3 points.

Le connecteur J3 permet d'alimenter la carte de deux manières, à l'aide du cavalier JP1 :

  • 5V : cavalier sur les broches 2-3
  • 6.5V à 12V : cavalier sur les broches 1-2
Le connecteur J2 possède 6 broches :

  • 1 : entrée intrusion Zone 2
  • 2 : entrée intrusion Zone 1
  • 3 : sortie alarme
  • 4 : sortie LED
  • 5, 6 : sortie alimentation (directement reprise sur le connecteur J3)

Les deux entrées intrusion sont protégées par des diodes zener, au cas où elles recevraient accidentellement du 12V.

J2 peut être utilisé pour alimenter et activer divers systèmes auxiliaires :

  • détecteurs de mouvement ou à contact du commerce
  • un module d'envoi de SMS, de mails ou de notifications à un téléphone mobile
  • un module de réception d'intrusions par radio
  • un voyant déporté
Si des détecteurs de mouvement ou à contact du commerce sont branchés, leur contact (normalement fermé) doit être raccordé entre GND et entrée Z2. Leur contact de protection doit être raccordé entre GND et entrée Z1.

3.2. La réalisation

Il y a deux possibilités de montage :

Soit un PCB (à venir) est fabriqué, et on utilisera plutôt des composants discrets :

  • un relais SRD-05VDC-SL-C (disponible chez tous les revendeurs chinois)
  • une transistor 2N2222, une résistance et une diode de roue libre
  • des connecteurs soudés
    • afficheur : 4 points
    • LED : 2 points
    • PIR : 3 points
    • clavier : 8 points
    • lecteur RFID : 8 points
    • alimentation : 2 points
    • sirène : 3 points
    • auxiliaire : 5 points
Soit on préfère réaliser le montage à l'aide de modules tout faits, et on utilisera plutôt des modules du commerce :
  • un module relais
  • des fils DUPONT

La deuxième solution n'est certainement la plus fiable, mais si l'on vérifie bien la bonne tenue des fils DUPONT sur les connecteurs, elle peut l'être.

On peut également couper la poire en deux et utiliser une plaquette à pastilles, en y implantant le relais et les connecteurs cités plus haut :

4. IDE ARDUINO

Les bibliothèques ARDUINO suivantes sont nécessaires :

Librairie Keypad : https://github.com/Chris--A/Keypad

Librairie LCD I2C : https://github.com/fdebrabander/Arduino-LiquidCrystal-I2C-library

Librairie RFID : https://github.com/miguelbalboa/rfid

Elles sont directement installables à l'aide du gestionnaire de bibliothèques de l'IDE.

Dans l'IDE (arduino-cc 1.8.19 par exemple), dans le menu "Outils/Type de Carte" choisir "Arduino Nano". Dans le menu "Outils/Processeur" choisir "ATmega328p" ou "ATmega328p (old bootloader)".

4.1. Messages

Tous les messages sont affichés en majuscules, car le LCD est incapable d'afficher les caractères accentués.

4.2. Personnalisation

Celle-ci se trouve dans le fichier custom.h

Il convient de modifier certains paramètres avant de compiler et charger le code dans l'ARDUINO :

Si un lecteur RFID est utilisé :

#define USE_MFRC522

Sinon :

//#define USE_MFRC522

L'adresse I2C de l'écran LCD

#define I2CADDR 0x20

La longueur maximale du code entré au clavier :

#define LEN               8

Les broches de l'ARDUINO (celles-ci correspondent au schéma) :

#define RFID_SS_PIN       10
#define Z1                          9
#define Z2                          A0
#define RELAY                 A1
#define RFID_RST_PIN      A2
#define LED                      A3

Si le brochage du clavier est alterné (lignes colonnes) comme le clavier ACCORD :

#define KBD_ACCORD

Sinon :

//#define KBD_ACCORD

Si un module relais est utilisé, et qu'il s'agit d'un modèle activable sur un niveau bas :

#define RELAY_ON          LOW
#define RELAY_OFF         HIGH

Sinon :

#define RELAY_ON          HIGH
#define RELAY_OFF         LOW

Les codes d'accès administration et utilisateur. La longueur doit être inférieure à LEN :

#define ADMIN_CODE      "123"
#define USER_CODE          "456"

Les code d'accès par badge :

#define ADMIN_NUID        0x55A185E9
#define USER_NUID           0xF80D4416

Les codes d'accès par badge RFID ne sont pas connus au départ, mais ils sont affichés sur le moniteur série  (115200 baud) lorsqu'un badge est présenté :

PICC type: MIFARE 1KB
A new card has been detected.
NUID: 0xF80D4416

Il suffit donc de :

  • charger le code tel quel, sans modifier quoi que ce soit
  • présenter les deux badges à tour de rôle
  • copier coller les deux valeurs dans le code
  • compiler / recharger

On peut également les configurer après avoir entré le code d'accès administration, mais il est préférable que le fichier custom.h contienne le code et le NUID du badge administrateur, car la configuration peut être manuellement rechargée avec les valeurs par défaut.

Voir plus loin : 5.2. Reset de la configuration

Les broches utilisées par le clavier sont définies dans keypad16.h. Ces broches peuvent être changées si le clavier utilisé a un brochage différent de ceux que j'ai employé.

5. Utilisation

Après avoir chargé le code, la première chose à faire est de régler le potentiomètre de contraste de l'écran TFT, le petit potentiomètre bleu situé sur le module I2C.

Voici le mode opératoire.

5.1. Configuration

Pour entrer en mode configuration, il suffit d'entrer au clavier le code d'administration ou de présenter le badge administrateur.

Pendant une saisie, les touches ont les fonctions suivantes :

# : validation

* : correction

0 à 9 : modification des valeurs 

La touche correction n'est pas vraiment nécessaire. Lorsqu'une valeur est affichée, pour la modifier il suffit d'entrer le nouvelle valeur. Les chiffres se décalent vers la gauche et le plus à gauche disparaît.

Exemple (saisie du délai d'activation) :

Délai affiché : 005

Délai à entrer : 20 secondes

Il suffit de taper 020 puis #.

Par contre, dans le cas de la saisie d'un code d'accès, si le code à entrer a une longueur différente du code actuellement en mémoire, la touche correction permet d'effacer tous les caractères et d'entrer un code de longueur différente, plus court ou plus long.

La saisie permet de modifier divers types de paramètres :

  • valeur numérique : entrer une valeur numérique, puis taper #
  • valeur booléenne (OUI, NON) : répondre 0 ou 1, puis taper #
  • codes d'accès : entrer une valeur, puis taper #

Le logiciel de configuration permet de configurer les paramètres suivants :

  • délai d'activation, délai d'intrusion, durée d'alarme, durée d'allumage du backlight : entrer une valeur en secondes, puis taper #
  • auto-réactivation ou non : répondre 0 ou 1, puis taper #
  • code d'accès administrateur, code d'accès utilisateur : entrer le code, puis taper #
  • code UID du badge administrateur, code UID du badge utilisateur : par présentation du badge

Si la valeur du paramètre affiché convient, il suffit de taper # pour passer au paramètre suivant.

En fin de configuration, si un lecteur RFID est présent, le logiciel pose deux questions :

CHANGER ADMIN RFID ?

Si la réponse est 1, il demande de présenter le badge administrateur :

PRESENTER RFID

Si la réponse est 0 (il suffit de taper #), il passe à la question suivante :

CHANGER USER RFID ?

Si la réponse est 1, il demande de présenter le badge utilisateur :

PRESENTER RFID

Remarque : tant que le badge n'est pas présenté, il attend indéfiniment.

La configuration est terminée. Si une modification a été effectuée, l'alarme affiche "SAUVEGARDE", sinon, elle affiche "AUCUN CHANGEMENT".

5.2. Reset de la configuration

Si l'on redémarre l'alarme en appuyant sur une touche du clavier pendant le démarrage, l'alarme demande :

RESET CONFIG ?

Si la réponse est 1, la configuration est remplacée par les valeurs par défaut provenant du fichier custom.h et config.h :

  • ACTIVATION_DELAY
  • INTRUSION_DELAY
  • ALARM_DURATION
  • BACKLIGHT_DURATION
  • AUTO_REACTIVATE
  • ADMIN_CODE et USER_CODE
  • ADMIN_NUID et USER_NUID

C'est un moyen de retrouver les conditions de départ en cas de perte des codes d'accès. Il est bon de conserver quelque part au moins le code d'accès administrateur.

5.3. Alarme inactive

Au repos l'alarme affiche :

  • CODE : 
  • INACTIVE
  • ALERTES : 0

Lorsque l'alarme est inactive, si un capteur est actionné, l'afficheur l'indique :

  • CODE : 
  • INACTIVE                         Z1
  • ALERTES : 0

Ici le capteur zone 1 est activé. Il peut s'agir d'un câble coupé, ou d'une fenêtre ouverte.

5.4. Activation de l'alarme

Présenter son badge ou enter le code au clavier, suivi de #. L'alarme affiche :

  • CODE : OK" pendant 2 secondes
  • ACTIVATION + décompte en secondes
  • puis :
  • ACTIVE à la fin du décompte
  • ALERTES : 0
  • la LED s'allume

5.5. Intrusion en zone 2

Lors d'une détection d'intrusion en zone 2 l'alarme affiche :

  • CODE :
  • INTRUSION + décompte en secondes
  • puis :
  • ALARME Z2 + caractère tournant + barre de progression
  • ALERTES : 1 ou plus (clignotant)
  • la LED clignote
Après une alarme en zone 2 l'alarme doit afficher :
  • CODE : 
  • INACTIVE ou ACTIVE (si réactivation automatique)
  • ALERTES : 1 ou plus (clignotant)
  • la LED clignote

Une intrusion en zone 2 désactive ou non la centrale après que l'alarme ait été signalée. Ce comportement est paramétrable.

5.6. Intrusion en zone 1

Lors d'une détection d'intrusion en zone 1 l'alarme affiche :

  • CODE :
  • ALARME Z1 + caractère tournant + barre de progression
  • ALERTES : 1 (clignotant)
  • la LED clignote
Après une alarme en zone 1 l'alarme doit afficher :
  • CODE : 
  • INACTIVE                         Z1
  • ALERTES : 1 ou plus (clignotant)
  • la LED clignote
Par exemple, s'il y a eu deux intrusions en zone 2 puis une en zone 1, l'alarme affichera :
  • CODE : 
  • INACTIVE                         Z1
  • ALERTES : 3 (clignotant)
  • la LED clignote

On l'aura compris, une intrusion en zone 1 désactive la centrale après que l'alarme ait été signalée, car sinon, la sirène risquerait d'être entendue jusqu'à la désactivation manuelle de l'alarme, avec les conséquences que l'on imagine pour le voisinage.

5.7. Désactivation de l'alarme

L'entrée dans le local déclenche une intrusion. Le décompte s'affiche comme précédemment. Il faut présenter son badge ou enter le code au clavier, suivi de #, de préférence avant la fin du décompte, sinon la sirène sera activée.

L'alarme affiche :

  • CODE : OK" pendant 2 secondes
  • INACTIVE à la fin du décompte
  • ALERTES : 0
  • la LED s'éteint

Avant la présentation du badge ou la saisie du code au clavier, un simple coup d’œil à l'afficheur permet de constater s'il y a eu intrusion ou non. De plus la LED clignote si c'est le cas.

6. Téléchargements

Pour télécharger le projet : https://bitbucket.org/henri_bachetti/alarm-system

Cette page donne toutes les informations nécessaires :

https://riton-duino.blogspot.com/p/migration-sous-bitbucket.html

7. Consommation

L'alarme consomme peu : 

  • 50mA lorsque le backlight est allumé
  • 30mA sinon
  • 110mA si le relais est activé
A cela il faut ajouter la consommation de la sirène, des détecteurs et des sous-systèmes éventuels.

8. Vidéo

Voici une petite vidéo de la maquette :


Cette vidéo a été faite à partir d'une première version, avec un clavier 16 touches, mais un 12 touches sera utilisé pour la version finale. Cela a permis de libérer une broche pour obtenir deux zones de détection.

La vidéo montre les deux accès possibles :

  • activation par le code utilisateur entré au clavier
  • 1ère intrusion et alarme
  • 2ème intrusion
  • désactivation par le code utilisateur entré au clavier
  • activation par badge RFID
  • 1ère intrusion et alarme
  • désactivation par badge RFID pendant l'alarme

On voit un petit défaut à la fin : si l'on désactive l'alarme alors que la sirène est activée, la barre de progression reste affichée. Ce léger bug est corrigé.

9. Liens utiles

Voici la suite :

ARDUINO : Centrale d'Alarme 2 Zones (2ème partie)

10. Conclusion

Le lecteur RFID apporte un confort indéniable à cet ancien projet, surtout si l'on possède un badge du type porte-clés. La détection sur deux zones est la cerise sur la gâteau.

Il ne reste plus qu'à étudier un PCB et mettre l'alarme en boîte. Photos à venir ...


Cordialement

Henri