🛠 Gestion avancée des E/S GPIO avec UEXT-CH390
Objectifs
Ce tutoriel vise à maîtriser l'interfaçage de périphériques physiques (GPIO) avec le module UEXT-CH390 pour créer un nœud IoT complet. Contrairement aux solutions sans fil, l'Ethernet filaire offre une latence prévisible et une stabilité supérieure, idéale pour les systèmes de contrôle industriel ou domotique critique. Nous allons configurer les broches GPIO du microcontrôleur hôte pour lire un capteur analogique ou numérique et piloter un afficheur, tout en transmettant ces données via le stack réseau CH390. L'accent est mis sur la gestion des interruptions et la synchronisation entre les tâches temps réel (GPIO) et les tâches réseau (TCP/IP), en utilisant le pilote spécifique RP2040 ou le SDK ESP-IDF.
Matériel nécessaire
- Carte UEXT-CH390 (Olimex)
- Microcontrôleur compatible : Raspberry Pi Pico (RP2040) ou ESP32-S3
- Capteur de température/humidité (ex: DHT22) ou potentiomètre (analogique)
- Afficheur OLED I2C ou LED de statut
- Câbles de connexion UEXT et jumper
- Alimentation 3.3V stable
- Environnement de développement : ESPHome 2026.9.0+ ou SDK Raspberry Pi Pico (C/C++)
Étapes
- Connexion physique : Branchez le module UEXT-CH390 sur le port UEXT de la carte hôte. Assurez-vous que les broches SPI (MOSI, MISO, CLK, CS) sont correctement mappées. Pour le Pico, utilisez les broches GP2-GP5 par défaut si non configurées autrement. Notez que le module fonctionne en mode SPI 0 ou 3.
- Configuration du réseau : Dans votre code (ESPHome ou C++), initialisez le pilote CH390. Activez le DHCP pour obtenir une adresse IP. Vérifiez que la MAC d'usine est bien reconnue.
- Initialisation des GPIO : Configurez les broches de votre capteur en entrée (avec pull-up/down si nécessaire) et celles de l'affichage en sortie. Pour un capteur analogique, activez l'ADC correspondant.
- Implémentation de la logique : Créez une tâche périodique (ex: toutes les secondes) qui lit la valeur du capteur. Appliquez un filtre numérique (moyenne mobile) pour réduire le bruit.
- Transmission réseau : Formatez les données lues en JSON ou en protocole MQTT. Utilisez les API réseau du pilote CH390 pour envoyer les paquets. Assurez-vous que les opérations GPIO ne bloquent pas la pile réseau ; utilisez des interruptions ou des tâches RTOS dédiées si nécessaire.
- Pilotage local : Ajoutez une logique pour actionner l'affichage ou une LED en fonction des seuils critiques détectés, garantissant une réaction locale même si le réseau est coupé.
Vérification
Connectez la carte au réseau via un câble RJ45. Ouvrez une interface web locale ou un terminal MQTT pour observer la réception des données. Vérifiez la stabilité de la connexion en débranchant/rebranchant brièvement le câble Ethernet pour tester la reconnexion automatique. Assurez-vous que les valeurs des capteurs changent en temps réel sur l'interface distante.
Pour aller plus loin
Explorez l'intégration avec Home Assistant via la découverte automatique. Optimisez la consommation d'énergie en dormant les GPIO inactifs. Testez la robustesse du réseau en injectant des perturbations électromagnétiques, profitant de la meilleure immunité de l'Ethernet filaire par rapport au Wi-Fi.
Autres tutoriels pour cette carte
- Premier branchement et mise en route de l'UEXT-CH390
- Contrôler des GPIO et capteurs avec UEXT-CH390
- Cas d'usage complet : Connectivité Ethernet pour Raspberry Pi Pico
- Premier branchement et mise en route de l'UEXT-CH390
- Intégrer des GPIO avec l'Ethernet UEXT-CH390
- Connecter un RP2040 au réseau avec UEXT-CH390 et ESPHome
Exemples de code pour cette carte
esp32-ch390-lwip-station.inoC++rp2040-pico-ch390-micropython.pyPythonesp32-ch390-udp-sensor-gateway.inoC++esp32-ch390-web-server-local.inoC++rp2040-ch390-iot-home-assistant.inoYAMLrp2040-lwip-ethernet-ping-6.inoC/C++ (Raspberry Pi Pico SDK)