MicroPython: Carte 4 relais WiFi avec Raspberry-Pi Pico - faire de l'IoT en Python
Bonjour à tous,
18/04/2023 : publication du projet, sa documentation anglais/français, API REST et carte Wifi-4-Relais.
Dans les idées de projets abordables, nous avions en tête la commande d'un module 4 relais via WiFi et grâce au Raspberry-Pi Pico W et son prix défiant toute concurrence, cela est enfin possible.
La publication du livre Raspberry-Pi Pico et Pico-W aux éditions ENI aura quelque peu retarder la sortie de ce projet.
Raspberry-Pi Pico et Pico-W aux éditions ENI |
En Débutant le projet Wifi-4-Relais, je ne m'attendais pas à ce qu'il s'étende autant!
Voici donc un outil pratique pour vos labos, projet Maker , expérimentations et apprentissage STEM. C'est que commander un relais en WiFi fait intervenir de nombreuses aspects technologiques.
C'est le projet qui nous accaparait la semaine dernière, voici donc le Module 4 Relais WiFi (WiFi-4-Relais) avec son code OpenSource sous MicroPython et ses possibilités de personnalisation.
WiFi-4-Relais propulsé par un Raspberry-Pi Pico sous MicroPython |
Alors cela semble être un projet très simple, pourtant il y a plus de travail qu'il n'y paraît! La carte contrôleur n'est pas là pour "faire joli"... elle a de multiples utilités parfois technique, parfois facilitatrice.
WiFi-4-Relais : revue des éléments
Faisons donc un petit tour des différents éléments composant ce kit.
Le but est de créer une solution abordable pour Makers et classe STEM.
Sur base des éléments présents, ce kit présente de très nombreux axes d'apprentissages technologiques. Il n'est donc pas destiné à un usage professionnel.
Module relais
Module 4 relais |
Le module relais, que nous connaissons bien, est là pour assurer
l'isolation galvanique et permet de commander, en toute sécurité, des
périphériques de puissance (donc bien au dessus de 5V et avec des
courant de plusieurs ampères) à partir d'un microcontrôleur. Inutile de
réinventer la roue pour cette partie de l'application.
Dans le cadre d'expérimentation et découvertes STEM, nous recommandons de rester sous 12V continu et 24 Volts alternatif de sorte a éviter les risques d'électrocution.
Raspberry-Pi Pico
Raspberry-Pi Pico-W |
Carte contrôleur WiFi-4-Relais
Voici quelques caractéristique du projet:
- Il faut pouvoir commander facilement les relais.
Il ne suffit pas de brancher les 4 commandes relais sur des sorties du Pico. Raccourcis simple... mais erroné comme nous le verrons (voir plus bas). - Il faut pouvoir activer/désactiver facilement un relais manuellement (donc directement sur le projet depuis la carte).
- Il faut pouvoir améliorer le projet, si l'on veut, avec des capteurs et afficheurs.
- le projet doit être accessible à tous (répéter un schéma de raccordement c'est parfois pesant)
Voici quelques caractéristique pour la création de la carte contrôleur (qui sera livrée pré-assemblée et testée).
Détails techniques
Cette carte est surtout conçu pour être utile, simple et évolutive. Il sera possible de faire évoluer votre projet avec des capteurs/afficheurs complémentaires.
Carte WiFi-4-Relais - face avant |
Carte WiFi-4-Relais - face arrière |
Ce qu'il y a d'important sur cette carte:
- La possibilité de souder la carte contrôleur directement sur le connecteur de la carte relais.
- Ou la possibilité d'employer une nappe 6 fils pour déporter la carte contrôleur de la carte relais (ex: au dessus).
- Les boutons utilisateurs permettent de contrôler directement les relais sans devoir passer par l'interface WEB.
- Permet d'ajouter facilement un capteur de température, écran OLED ou autre sur le connecteur Qwiic/StemmaQT... des standards respectifs de SparkFun et Adafruit Industries très populaires.
- Permet d'ajouter des extensions et capteur via le connecteur UEXT exposant un bus I2C+SPI+UART et alimentation. Un standard Industriel d'Olimex permettant d'ajouter des interfaces très variées comme des relais I2C, Lecteur RFID, module LoRa, Afficheur SPI, etc.
Utiliser des transistors de commande
La carte relais dispose d'entrée par OptoCoupeur. Il est donc possible d'activer ces opto-coupleur directement directement avec une sortie du microcontrôleur.
Sauf que seul les 3 premiers relais sont activable sans problème... mais impossible de commander un 4ième relais en plus... peu importe le relais.
Dans les faits, on entend ce 4ieme relais qui essaye de s'active mais faiblement... comme s'il voulait se fermer mais qu'il n'a pas assez de puissance pour le faire.
Il est vrai que cela fait 10mA au total.. c'est déjà important à la taille d'un microcontrôleur!
Plutôt que d'essayer de trouver une parade, j'ai simplement décidé d'opter pour une méthode de "buffering".
J'ai donc placé 4 transistor MOSFET pour fournir le courant d'activation nécessaire à chacun des optocoupleurs et utiliser une tension d'activation 5V sur les optocoupleurs.
Ce sont des MOSFET 2N7002 activable en 3.3V (ce qui n'est pas fréquent dans le monde des MOSFETs).
Wifi-4-Relais : un projet Open-Source
Comme beaucoup de projets chez MCHobby, le code est disponible en Open-Source sur le dépôt GitHub WiFi-4-Relais .
dépôt GitHub WiFi-4-Relais |
Vous pouvez consulter le code, le comprendre et le faire évoluer pour qu'il s'adapte à vos besoins. Vous pouvez même porter le code sur d'autres plateformes.
SI vous aimez nos traductions et documentations ALORS aidez nous à en produire plus en achetant vos produits chez MCHobby.
WiFi-4-Relais : éléments logiciels
Le projet est forcement propulsé par MicroPython pour Raspberry-Pi Pico-W .
La carte contrôleur (et son Pico-W) sont pré-initialisés avec MicroPython et les scripts nécessaires aux premiers tests.
Vous pouvez évidemment faire une mise-à-jour de MicroPython, modifier les scripts ou créer votre propre solution. Le mot clé ici est "liberté".
Web Serveur sur microcontrôleur
Après quelques recherches et quelques tests, j'ai opté pour MicroWebSvr (Micro Web Server) pour constitué le test. Un projet MicroPython très avancé assez proche du fonctionnement de Flask.
Toute la partie HTML du projet est développé sur MicroWebServer et le résultat est plutôt satisfaisant pour un premier jet.
Interface homme-machine
La première partie du projet fût de permettre un contrôle marche/arrêt directe des relais en appuyant sur les boutons correspondant. Ce n'est donc pas un hasard s'il y a 4 boutons utilisateurs.... un bouton par relaisInterface utilisateur |
Interface WEB
La deuxième partie du projet est réaliser en HTML. La page d'index du WebServeur permet d'accéder aux différents services dont la page /status .
La page /status , propose une interface simple permettant de commander indépendamment chaque relais.
Le dernier état connu est affiché et les boutons on/off restent toujours accessibles.
En effet, depuis le dernier état connu, l'état du relais pourrait avoir été modifié en pressant le bouton (ou par l'intermédiaire de l'API REST).
API REST
La troisième partie, implémente une API REST (wikipedia) sur le serveur WEB permettant ainsi d'offrir un service WEB ou contrôler la carte relais comme un objet distant.
Cette interface pourra être utilisée par des applications WEB sur PC/SmartPhone et même depuis des serveurs WEB.
Cette interface sera complètement documentée sur le dépôt GitHub (et aussi depuis la page d'index).L'API REST, qui utilise aussi le serveur web du Pico, fonctionne en parallèle avec l'interface WEB/HTML.
Cette API est relativement facile à comprendre
Implémentation MQTT
Un tel projet ne serait pas complet s'il n'y avait pas une implémentation MQTT pour contrôler le module 4 relais.
Contrôle MQTT. Suivez la doc sur le dépôt GitHub WiFi-4-Relais |
Projet futur: c'est prévus dans les cartons lorsque je ferais une nouvelle mise-à-jour de Python Raspberry-Pi et Flask.
WiFi-4-Relais : Whislist
Hé oui, pas encore achevé mais déjà une WishList!
N'hésitez pas à partager vos idées et suggestions :-)
Web Serveur Alternatif
Bien que MicroWebSvr offre les services dont j'ai besoin, il semble que le WebServer MicroDot (sous MicroPython) fasse beaucoup parler de lui.
MicroDot exploite asyncio, ce qui permet d'avoir du multitâche coopératif.
Si ce sujet vous intéresse, vous pouvez en apprendre plus en parcourant l'article
- Secrets of MicroPython: ESP32 Web Server using Microdot (Bhavesh, anglais)
Liste d'achat
Le kit WiFi-4-Relais sera bientôt disponible sur notre shop.
- Kit WiFi-4-Relais (MCHobby)
- Livre Raspberry-Pi Pico et Pico-W aux éditions ENI
- Raspberry-Pi Pico W
- Raspberry-Pi Pico
Écrire un commentaire