MicroPython: Carte 4 relais WiFi avec Raspberry-Pi Pico - faire de l'IoT en Python

Bonjour à tous,

Dans les idées de projets abordable, 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. 

En commençant ce projet, 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 semble! La carte adaptateur 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.

Ce kit n'est donc pas un produit destiné à l'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 adaptateur WiFi-4-Relais

Je m'étais dit que:

  1. Il suffisait de brancher les 4 relais (entrée) de la carte relais sur les sorties du Pico. Raccourcis simple et évident... mais je m'étais fourvoyé (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 arguments pour la création de la carte adaptatrice (qui sera livrée pré-assemblé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 l'adaptateur directement sur le connecteur de la carte relais.
  2. Ou la possibilité d'employer une nappe 6 fils pour déporter la carte adaptateur par rapport à la carte relais (ex: au dessus).
  3. Les boutons utilisateurs permettant de contrôler directement les relais sans devoir passer par l'interface WEB. 
  4. 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. Ajouter un connecteur UEXT exposant un bus I2C +SPO+UART et alimentation. Un standard Industriel d'Olimex permettant d'ajouter des interfaces très variée comme des relais I2C, Lecteur RFID, module LoRa, Afficheur SPI, etc.

Considération technique importante

Piloter les 3 premiers relais se fait sans problème... mais impossible de commander le 4ième... peu importe le relais. Dans les faits, on entend que le 4ieme relais essaye de s'active mais faiblement... comme s'il voulait se fermer mais qu'il ne peut pas se fermer.

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à pas mal!

Plutôt que d'essayer de trouver une parade pour que le Pico active ce 4ième relais (en utilisant un autre port, ou augmentant le courant max par sortie), j'ai 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, et le fournir en 5V, au entrées de la carte relais.
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.

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 que l'on pourra facilement télécharger depuis MicroPython.org (section RP2).

Web Serveur sur  microcontrôleur

Après quelques recherches et quelques tests, j'ai opté pour MicroWebSvr (Micro Web Server), un projet MicroPython très avancé tenant la comparaison avec 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 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 physique

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, en cours de développement, est l'utilisation d'une API REST (wikipedia) permettant ainsi d'offrir un service WEB.

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

Mais c'est une partie du projet encore en cours de réalisation... mais ne tardera pas.

API REST en cours de développement.
Suivez la doc sur le dépôt GitHub WiFi-4-Relais
 

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.
C'est prévus dans les cartons mais il faudra être un peu patient.

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