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


samedi 26 février 2022

ESP32 : Prototypage (suite)


ESP32 : Prototypage (suite)


Nous avons déjà vu dans un article précédent comment utiliser une carte ESP32 minimaliste :

ESP32 : prototypage

Aujourd'hui nous allons aller un peu plus loin.

1. Le but

Comme dit précédemment, le but est de pouvoir développer des montages de taille et consommation réduites, à l'aide de modules ESP32 nus :

Bien entendu, ce module sera soudé sur un PCB maison, en compagnie de quelques composants (alimentation, capteurs, connecteurs, etc.). Un PCB maison a de multiples avantages par rapport à un assemblage de cartes toutes faites :

  • compacité
  • réduction du nombre de fils
  • facteur de forme adapté à ses besoins
  • etc.

La production d'un PCB de ce type aura tout intérêt à être confiée à un fabricant comme JLCPCB.

Mais avant d'étudier un PCB maison, l'idéal est, comme dit dans l'article précédent, de pouvoir bâtir un prototype à l'aide d'une carte minimaliste :

Après la phase de prototypage, si tout s'est passé comme prévu, on pourra passer à la phase d'étude du PCB.

Pendant la phase de prototypage, la carte minimaliste peut certes être alimentée à l'aide d'une breadboard équipée d'une batterie LIPO ou d'une alimentation, d'un régulateur 3.3V, et chargée à l'aide d'un convertisseur FT232RL. Mais il serait plus pratique de réunir tout ce petit monde sur une petite carte.

2. Alternative : la FireBeetle

Si l'on dispose de suffisamment de place, la FireBeetle est une carte qui a fait ses preuves d'un point de vue consommation :

Sa consommation en veille est inférieure à 10µA.

Il est possible également de mettre au point un prototype à l'aide de cette carte, et ensuite réaliser un PCB maison pour la version définitive.

Il faudra tout de même prévoir un moyen de chargement du logiciel sur le PCB maison. La carte étudiée ici a donc également son utilité dans ce cas.

2. Le schéma

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

Outre les composants cités plus haut la carte comporte quelques suppléments :

  • 2 résistances R1 et R2 permettent de mesurer la tension de la batterie, avec un petit condensateur de filtrage
  • 2 transistors 2N2222 pour automatiser le chargement du logiciel sans appuyer sur des boutons
  • 2 connecteurs J4 et J5 pour alimenter des modules ou capteurs 3.3V
  • un connecteur J3 pour brancher un milliampèremètre
  • un interrupteur ON/OFF
  • un connecteur J2 pour le raccordement de l'ESP32
La carte minimaliste ESP32 est donc raccordée au connecteur J2 par 7 fils au maximum :
  • VCC + GND
  • une entrée analogique (si l'on désire mesurer la tension de la batterie)
  • RX + TX
  • EN et IO0

3. Répartition des composants

Pour l'instant la majorité des composants se trouvent sur la carte prototype. Mais qu'allons nous implanter sur le PCB maison ?

Je verrais les choses comme suit :

  • le module ESP32
  • une batterie LIPO ou LITHIUM-ION, ou une alimentation secteur miniature
  • un régulateur 3.3V
  • un connecteur de chargement du logiciel
  • un connecteur de mesure du courant (avec un cavalier)
  • un ou des capteurs
  • les deux résistances de mesure de la tension batterie
  • un chargeur de batterie (si l'on a suffisamment de place)

Pour ma part je pense qu'il n'y a aucune raison d'implanter le convertisseur FT232RL et les deux transistors sur une carte ESP32, car ils sont encombrants, et ces composants ne servent que pour le chargement du logiciel. Il en va de même pour les deux boutons poussoirs RESET et IO0.

La carte prototype servira donc au chargement du logiciel dans les deux cas :

  • carte minimaliste de prototypage
  • PCB maison

Le connecteur de chargement du logiciel sur le PCB maison aura donc seulement 5 broches (GND, TX, RX, EN, IO0).

4. Interrupteur ON/OFF

Il existe divers types d'inverseurs DIP :

L'interrupteur ON/OFF est utilisé pour court-circuiter le milliampèremètre pendant la phase de démarrage, comme expliqué dans l'article précédent : 3.2.3. La consommation en mode veille

Il peut être utilisé également comme interrupteur ON/OFF si le milliampèremètre n'est pas branché.

Je conseille de placer un point de couleur (vernis à ongle ?) du côté ON (tout dépend dans quel sens il est soudé sur la carte), afin de ne pas l'oublier dans un tiroir en position ON. La batterie n'y survivrait pas, à moins que l'ESP32 soit débranché ou en mode veille.

5. Convertisseur FT232RL

Le modèle utilisé est celui-ci, très courant :

Le module est enfiché sur deux barrettes femelles 9 broches, afin de pouvoir le changer en cas d'accident. Le cavalier jaune doit être positionné sur 3.3V bien entendu.

6. Régulateur

Le choix en matière de régulateurs LDO 500mA utilisables avec une batterie LIPO est assez limité :

  • ME6211
  • RT9013
  • RT9080
  • etc.
Afin de laisser le choix du régulateur à utiliser, et pouvoir tester différents modèles, celui-ci est implanté sur une petite carte enfichable :

Il est nécessaire de consulter la datasheet de chaque régulateur afin de connaître le type et la valeur des condensateurs à employer.

Pour un RT9080, les condensateurs choisis sont les suivants :

  • 1µF : céramique MLCC
  • 2x10µF tantale ou 22µF ou 47µF électrolytique

7. Charge de la batterie

Le module chargeur TP4056 est légèrement modifié. La résistance Rprog R3 est remplacée pour limiter le courant de charge, ceci afin de ne pas endommager la petite batterie de 1000mAH dont le courant de charge ne peut excéder 500mA :

Résistance Rprog

Si la batterie a une capacité supérieure à 2000mAH cette modification est inutile.

8. Photos

Voici quelques photos du montage :

Vue de dessus

En haut de gauche à droite :

  • le chargeur TP4056 (LED rouge allumée, car la batterie est en charge)
  • les deux résistances bleues à 1% de mesure de la tension batterie
  • les deux transistors 2N2222
  • le module FT232RL

En bas de gauche à droite :

  • le connecteur milliampèremètre
  • l'interrupteur
  • les 2 connecteurs 3.3V et le connecteur ESP32
Vue de dessous

Le connecteur de la batterie est soudé en dessous. La batterie est collée au ruban adhésif double face.

Carte régulateur 3.3V

9. Essais

Il convient avant tout de vérifier que la tension présente sur les broches 1 (GND) et 2 (VCC) du connecteur à 7 broches soit bien de 3.3V lorsque l'interrupteur est sur ON.

Après avoir raccordé la carte :

L'interrupteur est basculé sur ON.

9.1. Serveur

L'exemple HelloServer est chargé : HelloServer.ino

Remplacer ssid et password par ceux de votre box, et compiler.

Contrairement à ce qui se passait dans l'article précédent, les boutons RESET et BOOT n'ont plus aucune utilité. Il suffit de téléverser le sketch.

Le moniteur série affiche ceci :

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4

.....
Connected to SSID-ABCDEF
IP address: 192.168.1.49
MDNS responder started
HTTP server started

Et si l'adresse IP affichée est entrée dans un navigateur :

hello from esp32!

9.2. La consommation en mode veille

L'exemple deep-sleep est chargé : deep-sleep.ino

Remplacer ssid et password par ceux de votre box, et compiler.

Le moniteur série affiche ceci :

rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:1216
ho 0 tail 12 room 4
load:0x40078000,len:10944
load:0x40080400,len:6388
entry 0x400806b4
.....
WiFi Connected
IP: 192.168.1.49
DEEP-SLEEP

Après avoir branché le multimètre en position µA sur le connecteur prévu, l'interrupteur est basculé sur OFF.

Celui-ci affiche 70µA. Ce n'est pas vraiment ce qui était prévu. Après analyse il s'avère que les consommations sont les suivantes :

  • ESP32 : 4.3µA
  • pont diviseur : 2µA
  • module régulateur : 64µA

Le module régulateur devrait consommer 2µA ! Il va falloir investiguer pour trouver la cause de cette consommation anormale. Soit le régulateur acheté en chine est hors spécifications, soit il y a erreur sur le modèle, soit les condensateurs sont de mauvaise qualité.

Après avoir fabriqué un deuxième module régulateur, avec un condensateur MLCC de meilleure qualité (X7R) et un électrolytique 47µF en sortie, le résultat est le même. Il faudra acheter d'autre régulateurs chez un fournisseur différent.

Cela dit, une consommation de 70µA sur une batterie de 1000mAH réserve tout de même une belle autonomie : 14000 heures, soit 19 mois ! Il y a fort à parier que le courant d'auto-décharge de la batterie viendra à bout de celle-ci bien avant.

10. Téléchargement

Pour télécharger le projet :

https://bitbucket.org/henri_bachetti/esp32-board

Cette page donne toutes les informations nécessaires :

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

11. Conclusion

Cette première expérimentation est assez concluante, mis à part la petite déconvenue à propos du régulateur RT9080.

La prochaine étape sera l'étude d'une carte ESP32 alimenté sur batterie, et pouvant accueillir un capteur de température et d'humidité, de pression, ou autre.


Cordialement

Henri


lundi 21 février 2022

ARDUINO : La Détection Secteur





ARDUINO : La Détection Secteur


Cet article décrit les différentes méthodes de détection de la présence du secteur 230V.

1. Présentation

Dans certaines circonstances, il peut être indispensable ou souhaitable de pouvoir détecter si la tension secteur est présente ou absente :

  • à l'entrée d'une alimentation
  • aux bornes d'un moteur, d'une pompe
  • etc.

La solution choisie va dépendre du montage, et aussi du temps de réaction désiré.

On peut par exemple vouloir signaler la mise sous tension d'un moteur, d'une pompe. Dans ce cas, le temps n'est pas critique.

On peut aussi vouloir détecter la disparition du secteur pour différentes raisons :

  • sauvegarder les données volatiles d'un microcontrôleur. Dans ce cas, il faudra agir rapidement, avant que l'alimentation du microcontrôleur ne s'écroule.
  • interrompre un processus en toute sécurité
  • remettre un servomoteur dans une position donnée
  • envoyer une notification par radio, SMS ou WIFI
  • couper les sorties haut-parleur d'un amplificateur (anti-ploc)
  • etc.

Dans certains cas, il faut bien sûr que l'alimentation stocke suffisamment d'énergie (condensateur de forte capacité) après la coupure secteur, pour que l'on aie le temps de réaliser l'opération voulue.

2. Les différentes techniques

2.1. Le relais

On voit de temps à autre des montages de ce type, utilisé généralement pour détecter la présence du secteur aux bornes d'un moteur :

Un relais à bobine 230V ou un contacteur est utilisé. Lorsque la tension secteur est présente, on retrouve un niveau ZERO sur la broche 2 de la sortie DETECT, et un niveau 5V en cas de disparition du 230V.

La résistance de 100KΩ sert à ramener un niveau 5V lorsque le contact du relais est ouvert. On peut la remplacer par une pullup interne du microcontrôleur.

Bien évidemment, si le microcontrôleur est un modèle 3.3V on appliquera une tension de 3.3V sur la broche 1.

La solution à relais a un temps de réaction plutôt faible, de l'ordre de 10ms à 20ms, dépendant du relais utilisé.

Cette solution peut être assez coûteuse, et encombrante.

On peut utiliser un relais 230V prévu pour être implanté sur un PCB, dans ce cas, le coût peut être de 5€, mais un PCB doit être fabriqué.

On peut également utiliser un relais à cosses, prévu pour être enfiché sur un support :

On peut enfin utiliser un contacteur :

2.2. Le transformateur

Ici il ne s'agit pas d'ajouter un transformateur afin d'abaisser la tension secteur, pour ensuite la redresser. Il s'agit plutôt de profiter de la présence d'un transformateur d'alimentation dans un montage existant :

Sur ce schéma, la partie haute est une alimentation classique simplifiée à transformateur, et on va utiliser la tension du secondaire du transformateur. On suppose que le condensateur C4 a une capacité suffisamment importante pour maintenir la tension suffisamment longtemps pour réaliser l'opération désirée, par exemple, dans un amplificateur, couper les haut-parleurs à l'aide d'un relais.

La partie basse reprend la tension du secondaire du transformateur, la redresse et la filtre. Une zener limite la tension sur la sortie DETECT.

Lorsque la tension secteur est présente, on retrouve un niveau de 5V sur la broche 1 de la sortie DETECT, et un niveau ZÉRO en cas de disparition du 230V.

La résistance de 10KΩ limite le courant dans la zener. Quelques mA suffisent amplement. Ici, avec une tension d'entrée de 18V et une zener de 4.7V il est de :

I = (Ue - Uz) / 10000 = (18 - 4.7) / 10000 = 1.3mA

La résistance de 100KΩ sert à décharger le condensateur lorsque le secteur disparaît. Bien évidemment, si le microcontrôleur est un modèle 3.3V on remplacera la zener par un modèle 2.7V ou 3V.

Cette solution a un temps de réaction totalement dépendant du condensateur utilisé, et de la résistance de décharge. Avec les valeurs du schéma il est de l'ordre de 100ms :

T = R * C = 100000 * 0.000001 = 0.1

La solution est extrêmement bon marché, mais elle requiert la fabrication d'un PCB. On peut utiliser un morceau de plaquette à pastilles :

2.3. Montage électronique

Dans ce chapitre nous allons étudier une solution classique à optocoupleur :

Contrairement à pas mal de schémas, la tension secteur n'est pas abaissée à l'aide d'une simple résistance, mais à l'aide d'un condensateur (chute de tension capacitive). Ce condensateur est obligatoirement du type X2. Cette méthode permet de ne pas dissiper trop de calories dans une résistance.

L'impédance du condensateur C1 vaut : 

Z = 1 / (2 * Pi * F * C)

F : 50Hz

C : capacité en Farad

Si nous voulons obtenir un courant I de 3mA dans l'optocoupleur, sous 230V en 50Hz on peut calculer la capacité du condensateur nécessaire :

C = I / (2 * Pi * F * (230 - U)) = 0,003 ÷ (2 * 3,14 * 50 * (230-1)) = 42nF

U est la tension de sortie désirée, ici environ 1V, la tension directe de la diode de l'optocoupleur.

Après l'optocoupleur, une simple résistance et un condensateur filtrent la tension obtenue.

Lorsque la tension secteur est présente, on retrouve un niveau ZÉRO sur la broche 2 de la sortie DETECT, et un niveau de 5V en cas de disparition du 230V.

Cette solution a un temps de réaction totalement dépendant du condensateur C3 utilisé, et de la résistance de décharge R4. Avec les valeurs du schéma il est de l'ordre de 100ms :

T = R * C = 100000 * 0.000001 = 0.1

La résistance R4 de 100KΩ peut être remplacée par une pullup interne du microcontrôleur (environ 50KΩ).

Comme la solution précédente, celle-ci est très bon marché, mais elle requiert la fabrication d'un PCB. On ne pourra pas  utiliser un morceau de plaquette à pastilles, car l'espacement entre pastilles est insuffisant pour supporter une tension de 230V.

2.4. L'optocoupleur DIY

Il est possible de fabriquer un optocoupleur très simple à partir d'un voyant néon (luciole), d'une résistance LDR, le tout enveloppé à l'abri de la lumière dans un bout de gaine thermorétractable :

On peut facilement trouver des voyants 110V ou 230V, mais ici, comme je ne connais pas la tension de service du voyant (c'est de la récupération), j'ai placé une résistance 220KΩ en série. Il s'allume. La LDR a une résistance de 700KΩ lorsque le voyant est éteint, et 30KΩ lorsque celui-ci est allumé.

Si le voyant ne s'allume pas, c'est probablement qu'il supporte une tension supérieure. Il faut abaisser la valeur de la résistance jusqu'à obtenir l'allumage du voyant.

Le montage devient extrêmement simple et très bon marché :

Avec le montage proposé, lorsque le secteur est présent, la tension en sortie vaut :

U = 5V * R2 / (R2+R3) = 5V * 30000 / (220000+30000) = 0.6V

Lorsque le secteur est absent, la tension en sortie vaut :

U = 5V * R2 / (R2+R3) = 5V * 700000 / (220000+700000) = 3.8V

Ces niveaux seront interprétés comme un ZERO et un UN par le microcontrôleur.

La résistance R3 de 220KΩ peut être remplacée par une pullup interne du microcontrôleur (environ 50KΩ). Dans ce cas, la tension en sortie sera de 1.9V (secteur présent) et 4.7V (secteur absent).

2.5. Produits du commerce

Heureusement, pour ceux qui n'ont pas envie de fabriquer un PCB, on trouve dans le commerce des produits tout faits (ICI) :


D'un côté on relie le module au 230V, de l'autre un connecteur 3 broches permet de le relier au microcontrôleur : (VCC, GND, sortie détection).

Ici, pas de chute de tension capacitive. Celle-ci est réalisée à l'aide d'une résistance de puissance (le gros composant gris que l'on voit à gauche). Elle devrait dissiper environ 0.3W à 0.5W.

3. Sécurité

Il faut être prudent lorsque l'on manipule un montage alimenté par le secteur, et toute intervention doit être faite cordon secteur débranché. La sérigraphie du module ci-dessus est suffisamment explicite : "HIGH-VOLTAGE". Ne pas y mettre les doigts lorsqu'il est relié au secteur.

Cette réalisation est une idée d'un membre du forum ARDUINO. Le détecteur est utilisé afin de connaître l'état de marche d'une pompe de filtration :

Afin d'éliminer tout risque, le détecteur est glissé dans un morceau de goulotte plastique.

4. Liens utiles

On en parle aussi ici :

https://www.electroschematics.com/detector-module/

https://microclub.ch/2020/03/01/lecture-230vac-par-arduino-ou-autre-cpu/

5. Conclusion

J'espère que ce petit article aura été utile à ceux qui se posaient ce genre de question.


Cordialement

Henri