Lampe wifi

C'est une lampe fonctionnant sur batteries et pouvant être contrôlée par wifi depuis un téléphone portable (ou autre appareil Android)

Principe de fonctionnement

La lampe ouverte.

La lampe fonctionne sur une batterie au lithium composée de deux cellules récupérées d'une batterie d'ordinateur portable. La batterie peut être chargée par un port usb grace à ce chargeur.

La tension est ensuite montée à 5 V avec un convertisseur boost pour pouvoir alimenter les leds multicolores adressables WS2811.

Les 5 V deviennent 3.3 V grâce un régulateur LM317 pour alimenter l'ESP8266 qui se charge des communications et du pilotage des leds.

Principe de fonctionnement de la lampe.

ESP8266

Gros plan montrant le circuit contenant l'ESP8266 et le convertisseur 3.7V->5V. On voit aussi la batterie, l'interrupteur et une petite partie du chargeur de batterie sous l'interrupteur

C'est à l'origine un module dont le but est de fournir accès à une connexion wifi par l'intermédiaire d'une interface série. Cependant il comporte un microcontrôleur fonctionnant à 80 MHz et d'une mémoire flash conséquente (jusqu'à 4 Mo) et il n'a pas fallut longtemps avant que des firmwares alternatifs soient disponnibles.

Pour ce projet j'ai utilisé un module de types ESP-07 que j'ai flashé avec le firmware NodeMCU qui permet de programmer l'ESP très facilement en LUA. L'IDE ESPlorer rend la programmation encore plus pratique

Le niveau de réception du signal wifi étant très mauvais avec l'antenne intégrée au module, j'ai ajoutée une antenne externe récupérée sur un ordinateur portable. (heureusement qu'il y a une connexion pour une antenne externe !)

Le firmware est relativement simple. Lorsque la lampe est mise sous tension, elle cherche à se connecter à un point d'accès préalablement configuré (config.lua), si elle n'y parvient pas au bout de quelques secondes, elle crée un point d'accès qui permet de la configurer.

Deux serveurs fonctionnent simultanément :

Page web de configuration de la lampe.

Pour changer la couleur des LEDs, il suffit d'envoyer à la lampe un paquet UDP contenant une série de 18 octets (rgbrgbrgb...) qui correspondent aux valeurs de Rouge, Vert et Bleu de chacune des 6 leds.

Le serveur http est extrêmement basique, il répond à toutes les requêtes par la page de configuration, et gère la réception des paramètres. J'ai utilisé en partie nodemcu-httpserver d'un certain marcoskirsch.

Application Android

Application de contrôle Android.

L'application de contrôle est aussi très simple, l'utilisateur sélectionne la couleur de chaque led en cliquant sur le cercle coloré. Une glissage du doigt sur le cercle permet de sélectionner la même couleur pour toutes les LEDs. J'ai réutilisé le color picker de Chiral Code avec quelques légères modifications. La vidéo ci-dessous montre l'application en fonctionnement.

Photos

Vidéo