« Wifiser » un appareil électronique

Beaucoup d’appareils électroniques de l’ère pré-internet ne peuvent pas se connecter directement à un réseau, dans le meilleur des cas il est possible de les connecter à un PC par un port série. C’est le cas du Betabrite une enseigne lumineuse à base de LEDs que l’on peut pouvait voir dans des magasins, restaurants ou autres lieux publics. J’en ai acheté un d’occasion il y a quelques années dans le but de l’intégrer à mon système domotique pour afficher des notifications. Mais, ne voulant pas voir un cable de plus passer au milieu du salon, il était resté tout ce temps à prendre la poussière en haut d’une étagère.

Je l’ai récemment ressorti pour essayer de le « wifiser »  pour pouvoir le contrôler à distance sans fil, ce qui s’est avéré beaucoup plus facile que je ne l’avais imaginé.

Les principaux éléments utilisés dans ce projet sont:

  • NodeMCU DevKit  pour le microcontrolleur ESP8266 (<$4 sur aliexpress)
  • convertisseur RS232 <=> TTL, Max3232 (<$1 sur aliexpress)
  • ESP-Link, un firmware open source pour le ESP8266 qui permet de faire un pont WiFi-Série

Étape 1: Installation et configuration de ESP-Link

Rien de bien difficile ici, il faut connecter le NodeMCU a un PC avec un cable USB et ensuite suivre ces instructions (git et python doivent être installés sur le PC) pour flasher le firmware.  Ensuite, depuis un smartphone ou une tablette il faut se connecter au WiFi créer par esp-link pour pouvoir le connecter à son propre réseau WiFi comme expliqué ici.  Je ne pense pas avoir changer aucun des autres paramètres par défaut. Si besoin, on peut changer le baud rate et le format de la connection série dans le menu « μC Console »

 

Étape 2: Montage électronique

L’UARTs (universally asynchronous receiver/transmitter) de l’ ESP8266 fonctionne avec une logique TTL 3.3V (‘1’ est représenté par 3.3V et ‘0’ est représenté par 0V)  alors que le port série du Betabrite fonctionne en RS232 (‘1’ est représenté par une tension negative entre -3V et -25V,  et ‘0’ est représenté par une tension positive entre 3V et 25V). Il est donc nécessaire  d’utiliser un convertisseur (ici le MAX3232) pour que les deux puissent communiquer ensemble. Le montage consiste donc d’une part à connecter les pins 3V3, GND, TX, RX du NodeMCU  avec les pins VCC, GND, TX, RX du coté TTL du convertisseur , et d’autre part à connecter les pins GND, TX, RX du coté RS232 du convertisseur avec le port série du Betabrite.

On peut déjà tester à cette étape que tout fonctionne comme prévu. Pour cela j’ai utilisé la librairie betabrite-api-dotnet que j’ai légèrement modifiée pour pouvoir se connecter en TCP plutot qu’en série.

 Étape 3: Alimentation du montage

Le ESP8266 doit être alimenté en 3.3V, mais le NodeMCU DevKit a un régulateur qui permet de l’alimenter par un voltage compris entre 4.5V et 10V. Bingo! Le Betabrite étant lui alimenté en 7V, il suffit donc de connecter les pin Vin et GND du NodeMCU avec l’alimentation du Betabrite pour pouvoir se débarrasser du cable USB. On en profite pour fixer note montage électronique à l’intérieur du boitier (il y a largement la place) et le tour est joué!

 Étape 4: Integration avec HomeSeer

Pour interfacer mon Betabrite avec HomeSeer j’ai utlisé le plug-in BLLED. Ce plug-in permet de choisir une interface ethernet pour la connection (probablement pour des versions plus récentes de Betabrite qui communiquent nativement en WiFi) . Sans cette fonctionnalité il aurait fallu créer un port série virtuelle et le rediriger vers le port TCP de l’ESP8266, à l’aide d’outils comme com0com et com2tcp)
En utilisant des données déjà présentes dans mon système et un script pour récupérer des flux RSS, j’ai configuré le plug-in pour qu’il affiche les températures intérieure et extérieure, des résultats sportifs, des notifications etc….

Une réflexion au sujet de « « Wifiser » un appareil électronique »

  1. Ping : Votre maison a-t-elle une adresse email? - Domogeek

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *