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.

Si ce module prétend supporter courant de plusieurs ampères sous 250 VAC, il est important de rappeler que les circuits de distribution domestiques présentent un risque évident de chocs électriques, brûlures et de mort dans les cas les plus graves. N'hésitez pas à vous faire conseillé par quelqu'un disposant du savoir faire nécessaire pour vous aider dans vos démarches.

Raspberry-Pi Pico

Raspberry-Pi Pico-W
Faut-il encore présenter ce microcontrôleur double-coeur de la fondation Raspberry-Pi. Il apporte le support WiFi (et Bluetooth quand cela sera prêt), l'alimentation 5V et les entrées/sorties. De surcroît, il dispose d'un firmware MicroPython :-) 

Carte contrôleur WiFi-4-Relais

Voici quelques caractéristique du projet:

  1. 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).
  2. Il faut pouvoir activer/désactiver facilement un relais manuellement (donc directement sur le projet depuis la carte).
  3. Il faut pouvoir améliorer le projet, si l'on veut, avec des capteurs et afficheurs.
  4. 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:

  1. La possibilité de souder la carte contrôleur directement sur le connecteur de la carte relais.
  2. Ou la possibilité d'employer une nappe 6 fils pour déporter la carte contrôleur de la carte relais (ex: au dessus).
  3. Les boutons utilisateurs permettent de contrôler directement les relais sans devoir passer par l'interface WEB. 
  4. 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.
  5. 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.

Puisque cela est indépendant du relais activé (pour autant que c'est le 4ième), le problème n'est pas sur la carte relais mais du côté du PICO. C'est comme si le Pico n'arrivait pas à produire une 4ieme fois les 2.5mA nécessaires à l'activation du relais.
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.

MCHobby investit du temps et de l'argent dans la réalisation de traduction et/ou documentation. C'est un travail long et fastidieux réalisé dans l'esprit Open-Source... donc gratuit et librement accessible. 

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.

Bien qu'il existe une version 2 de MicroWebSvr mais celle-ci est nettement moins stable sur le Pico-W. La version 1 offre déjà de nombreuses possibilités satisfaisant amplement à la démonstration de ce projet.

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 relais

Interface utilisateur
Quelque soit le projet connecté, il doit être possible d'outre-passer les commandes distantes pour désactiver rapidement un relais (en cas de problème).
 
Note: Le retour d'état est déjà offert par la carte relais puisqu'il y a une LED par par relais.

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).

Si MicroWebSvr n'est pas un foudre de guerre, il fonctionne plutôt bien et rend les services attendus.

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

L'API retourne toujours une réponse au format JSON. Il s'agit d'un dictionnaire composé du numéro de relais = état.
Si l'action concerne plusieurs relais alors le dictionnaire contient plusieurs entrées... si l'action ne concerne qu'un seule relais alors le dictionnaire ne contient qu'une seule entrée.

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

Liste d'achat

Le kit WiFi-4-Relais sera bientôt disponible sur notre shop.

 



Aucun commentaire