Automatisation 2.0 d’un portail (DIY)

Le but de ce système est l’ouverture et la fermeture à distance d’un portail électrique depuis :
– un smartphone grâce à un serveur web
– une télécommande radio
– un bouton poussoir extérieur ou intérieur

En complément, on gère la sonnette qui diffuse un message sur les enceintes Google et une ou plusieurs Caméras IP pour surveiller l’ouverture. De même, un mail est adressé à des personnes désigné avec les photos prisent par les caméras.

Architecture

Le système par sa structure modulaire permet de moderniser un portail existant en conservant les moteurs ou vérins, ou de concevoir l’ensemble.

Par expérience, depuis de nombreuses années, il faut un système très robuste aux pannes, aux coupures de courant afin de garantir le service pendant des mois et ne pas tomber sur le système à l’arrêt en rentrant chez soi. Pour cela, on décompose l’ensemble en 2:
– un microcontrôleur Arduino, en charge des fonctions essentiels, déclenchement sur poussoir ou radio, contrôle des moteurs, surveillance de la sonnette. La simplicité du montage et du logiciel offre la robustesse exigée,
– un « Single Board Computer » ou micro-ordinateur qui se connecte au web, permet l’ouverture à distance par smartphone, prend des photos à l’aide de caméras IP, informe par mail, enregistre les allées et venues. La complexité des logiciels, les coupures d’internet, les micro-coupures électriques font que la qualité de service sur des mois n’est pas celle d’un simple Arduino.

Vidéo de présentation

Arduino Nano

La carte Arduino Nano est basée sur un ATMega328 cadencé à 16 MHz. Elle dispose d’une mémoire de 32 kB et d’un grand nombre d’E/S:
– 14 broches d’E/S dont 6 PWM
– 8 entrées analogiques 10 bits
– bus série

Les entées analogiques seront utilisées pour surveiller les courants qui alimentent les moteurs afin de les arrêter en fin de course ou si blocage.

La carte est disponible pour quelques € en Chine (Aliexpress), une dizaine d’€ en France (provenance de Chine), 30 € sur le magasin officiel…

Orange Pi Zero

Orange Pi Zero

Pratiquement, vu la pénurie de Raspberry , on se tourne vers des Orange Pi qui répondent également au besoin. Cela change de fruit et fonctionne toujours bien. L’Orange Pi Zero est l’entrée de gamme, mais est suffisant pour notre application. Il faut l’acheter en Chine en passant par Aliexpress en choisissant la version 512k de RAM et non 256k. L’Operating System que j’utilise dessus est Armbian. Pour l’installer, voir l’article https://f1atb.fr/index.php/fr/2020/03/27/mise-en-route-orange-pi-zero/
Créer un utilisateur Portail par exemple, cela crée un dossier /home/Portail dans lequel on implante les sources.

Ne pas installer Samba ou les drivers Audio.

On se connecte à l’Orange Pi par un cable ethernet ou le wifi.

Si vous disposez d’un autre « Single Board Computer », Raspberry Pi, Orange Pi xxx… tournant sous une variante Debian, cela est adaptable facilement.

Schéma électrique

Toute l’électronique s’articule principalement autour de l’Arduino. Ce dernier est lié à l’Orange Pi par le cable USB qui lui permet l’échange de données et fourni l’alimentation 5V.

L’Orange pi zero a une LED branchée sur la pin 26 avec une résistance en série entre 300 et 1000 ohm. Elle clignote par logiciel pour afficher le bon fonctionnement. L’Orange pi est alimentée par un chargeur 5V/2A, il alimente via l’USB l’Arduino.

Logiciels

Pour piloter à distance via le web, on utilise Apache comme serveur. Son installation est aisée : https://f1atb.fr/index.php/fr/2020/11/12/apache-sur-orange-pi-zero/
Comme l’installation de notre appli se trouve dans un dossier dédié, il faut configurer Apache dans le fichier 000-default.conf du dossier « /etc/apache2/sites-available/ ». Puis redémarrer Apache.

Installez, VNC sur l’Orange Pi si vous souhaitez y accéder à distance depuis un PC et écrire / modifier le programme sur l’Arduino. Restez sous l’utilisateur « root » c’est plus simple.

Installez de même VNC-Viewer sur votre PC et connectez-vous à l’adresse IP de votre Orange ou Raspberry. Pour les Orange Pi, préciser le port 5901.

Après avoir installé le bureau et VNC, un petit « apt-get update » peut-être utile.

Installez les librairies python permettant de faire des « pings » pour tester la liaison internet et pour les liaisons série.

pip install ping3
pip install pyserial

Installez la librairie pour envoyer un message audio sur une Google Home.

pip install PyChromecast

L’orange pi zero ayant peu de mémoire, il est bon de lui allouer un fichier de swap de 1 Go. Suivez la procédure ici : https://linuxize.com/post/how-to-add-swap-space-on-debian-9/

Installer l’IDE Arduino

L’environnement Arduino est disponible dans les dépôts:
apt-get install arduino -y

Branchez la carte Arduino Nano sur le port USB de l’Orange Pi Zero et dans Tools, sélectionnez la carte, le type de processeur si besoin et le port /dev/ttyUSB0. Si vous utilisez d’autres cartes ou port série, adaptez en conséquence.

Attention, si vous avez un Arduino Nano avec l’ancien Bootloader, il faut programmer le nouveau Bootloader afin de pouvoir utiliser le watchdog. Il y a une bonne explication ici: https://www.youtube.com/watch?v=VewaVZ4H5Cw

Téléchargez le programme le plus simple pour tester l’ensemble « Blink ». Le clignotement d’une Led sur la carte. Lancez la compilation et le téléchargement sur l’Arduino. À présent, la Led doit clignoter.

Code Source

Le code source pour l’Arduino et l’Orange Pi Zero est disponible ici sous forme de fichier zip :

Lancement du logiciel

On emploie les tâches cron sous root. Tapez ‘crontab -e’ dans un terminal et remplissez en bas de page:

1 1 * * * python3 /home/portail/cron_clean.py
*/5 * * * * python3 /home/portail/cron_temp_cpu.py
@reboot python3 /home/portail/portail.py

cron_clean.py efface toutes les nuits les journaux d’évènements vieux de plus d’un mois.
cron_temp_cpu.py envoi la température du CPU à ma domotique (optionnel)
portail.py programme principal de gestion du portail

Achats

Pour l’Orange Pi Zero allez par exemple ici et choisissez la version 512Mb de mémoire. Si vous ne le trouvez pas, vous pouvez prendre un Orange Pi Zero 2 plus récent.

Pour l’Arduino Nano, de nombreux vendeurs le proposent sur Aliexpress. Prenez la version avec le câble USB.

Pour la Radio, on trouve le module tout monté avec 2 canaux (2 relais, un pour ouvrir et un pour fermer) avec plusieurs radios pour moins de 20€.

La mesure de courant par effet Hall (ACS712) est disponible ici. La version 20A devrait correspondre à la plupart des moteurs.

Les 2 relais pour alimenter le transformateur de puissance des moteurs et la lampe de sécurité sont des modèles classiques pour Arduino.

Les relais qui pilotent les moteurs sont un point délicat. Les relais classiques bleus à brancher sur des Arduinos sont limités à 10A. Ils grillent avec le temps. J’ai trouvé des modèles plus costauds de 16A max qui nécessitent des transistors pour les piloter, car ils consomment trop de courant en 5V.