Esp8266 Witty / Gizwits – Le petit module pour s’initier à l’IoT

esp8266-1
Vendu pour moins de 3€ depuis « l’Empire du Milieu », ce petit module à base de puce Espressif Esp8266 est à mon avis le candidat parfait pour s’initier à l’internet des objets, ou pour organiser des ateliers d’initiation et de programmation.

Pour rappel, la puce Esp8266 conçue plutôt comme un élément additionnel pour ajouter la connectivité WIFI à Arduino, a rapidement été plébiscitée car possédant son propre micro-processeur. En effet elle peut donc être programmée directement et utilisée de façon autonome, sans aucun besoin d’utiliser un module Arduino. Toute une communauté d’utilisateurs et bidouilleur s’est développée autour de cette puce.

Ce module que je vous présente ici est plus intégré et on le retrouve sous le nom de « Witty Cloud » ou « ESP266 Gizwits ». Il est commercialisé à la base pour être utilisé avec un service cloud et une application mobile tous deux chinois, mais bon tout est en Chinois… Cependant ce module peut-être flashé avec un autre firmware ou tout simplement programmé directement avec les outils Arduino pour en faire ce que vous souhaitez, tout comme un module NodeMCU DEVKIT, il est construit autour du module ESP-12.

Les avantages
– très bon marché
– très compact, plus petit qu’un module NodeMCU ou Arduino Nano
– pas besoin d’adaptateur USB-TTL, de cablage exotique, de convertisseur de voltage en 3.3V (comme pour les premiers modules esp-01,02,07,12)… Ici c’est intégré dans une alimentation micro-USB.
– des éléments déjà intégrés pour commencer à jouer et coder avec sans faire de branchements: LED RGB, capteur de luminosité et un bouton
– Compatibilité avec l’IDE Arduino, ce qui réduit la courbe d’apprentissage et ouvre la possibilité de quantité de codes et librairies déjà disponibles.
– dispose de 4Mo de stockage. Typiquement 1Mo pour vos sketchs compilés et 3Mo pour stocker des données via le système de fichier SPIFFS (youhou!!! On peut s’en servir pour stocker des données de configuration du module, des pages web, des données en JSON récupérées du web, etc…).
– une base détachable qui ne sert qu’à la programmation.

Les inconvénients
– pas compatible avec les breadboards!!! Ça c’est très ennuyeux pour le prototypage.
– un nombre de GPIO limité (notamment à cause de ceux déjà utilisés par les LED RGB, le bouton et le capteur de luminosité)
– du voltage 5V sur le pin VCC, à donc faire attention si vous avez des éléments fonctionnant en 3.3V
– pour Mac il vous faudra ajouter les pilotes signés pour le chipset CH340 (pour Windows/Linux, pas de problème!).
– peut-être moins performant en signal WIFI que d’autres modules de la famille ESP, à cause du bouton poussoir situé juste en dessous de l’antenne.

Utilisation avec Arduino

Il suffit pour cela d’installer l’IDE Arduino version minimum 1.6.5 et d’ajouter « l’URL de gestionnaire de cartes supplémentaires » dans vos préférences:
http://arduino.esp8266.com/stable/package_esp8266com_index.json
pref-arduino

Puis choisir comme type de carte « NodeMCU 1.0 (ESP-12E module) »
arduino-esp8266-1

Et vous pouvez commencer à « jouer » aussitôt avec les exemples fournis par les libraires
arduino-esp8266-2

Pour rappel des éléments intégrés et leurs ports :
LED Rouge: 15
LED Verte: 12
LED Blue: 13
Bouton: 4
Capteur de luminosité: ADC (retourne des valeurs entre 0 et 1024).

Pour plus de ressources et de discussions, ce sous-forum dédié à l’ESP8266 sur Arduino sera votre point de chute: http://www.esp8266.com/viewforum.php?f=25

Vues de ce module ESP8266

Les ports disponibles, il y a quand même de quoi faire.
esp8266-00

Le module vu de dos, avec ses deux ports USB (celui du bas pour alimenter/programmer, celui du haut juste pour l’alimentation)
esp8266-g1

Détaché de sa base. La base contient le port USB pour la programmation (avec puce CH340), un bouton RESET et un bouton FLASH.
esp8266-g2

esp8266-g22

Sa largeur qui l’empêche de faire du prototypage sur breadboard
esp8266-g3

Mais sur un proto-PCB de ce type, cela vous permet de faire des petites intégrations maison très sympa.
esp8266-protopcb

Très franchement ce petit module m’a séduit et je m’en suis commandé quelques uns.
J’apprécie beaucoup sa simplicité de mise en oeuvre, et je pense me faire plein de petits projets avec, notamment pour interagir avec des API web.

Et il ne m’aura pas fallu longtemps pour reconvertir un modeste projet que j’avais au placard d’une simple horloge (avec afficheur LED 7 segments et module RTC) utilisant un module Arduino, en quelque chose de plus amusant: une horloge connectée à un serveur de temps NTP (donc toujours à l’heure), sa LED RGB réagissant aux instructions issues d’un serveur MQTT, et avec l’option d’un détecteur de mouvements (PIR sensor) avertissant un serveur MQTT également.

esp8266-clock

Les soudures, ce n’est pas mon fort… Mais avec l’utilisation de « female pin header » (je ne sais pas comment appeler ça en Français) sur la plaque PCB, mon module est juste clipsable et je peux aisément le retirer si je veux le reprogrammer.
esp8266-clock2

J’ai réutilisé ces ressources pour mon petit projet et les ai remixées à ma sauce:
– exemple pour la synchronisation de temps à un serveur NTP: https://github.com/PaulStoffregen/Time/blob/master/examples/TimeNTP_ESP8266WiFi/TimeNTP_ESP8266WiFi.ino
– la librairie OASISLED pour afficher l’heure
– la libraire PubSubClient, avec l’exemple mqtt_esp8266 (situés dans les exemples de sketchs).
Pour ajouter cette librairie depuis le gestionnaire de bibliothèque:
esp8266-pubsub

Pour le broker MQTT, vous pouvez commencer par utiliser broker.mqtt-dashboard.com et l’interface en websocket de HiveMQ: http://www.hivemq.com/demos/websocket-client/. Et si vous voulez aller plus loin, vous pouvez vous installer votre propre serveur Mosquitto. L’application Android MyMQTT est également très utile pour interagir depuis votre smartphone.

Note spéciale à la libraire WiFiManager qui est tout juste excellente si vous voulez déployer vos projets utilisant le Wifi ailleurs que chez vous. Elle permet que le réseau WIFI (SSID/Password) et d’autres paramètres puissent être configurés via une interface web par l’utilisateur final, et non pas en dur dans vos script (ce qui voudrait dire reflasher la puce pour chaque changement).
Adresse: https://github.com/tzapu/WiFiManager

Conclusion

Au niveau des modules ESP8266, pour faire du prototypage plus poussé le module NodeMCU sera une meilleure approche (compatibilité breadboard, plus d’entrées/sorties). Pour faire de l’intégration plus fine dans de vos projets électronique/IoT et penser industrialisation alors des puces plus dépouillées directement soudable à vos circuits imprimés seront plus propices. Mais pour un entre-deux, le module Esp8266 « Witty / Gizwits » est parfait.

Où l’acheter ?
On le trouve en général à moins de 3 euros, sur des plate-formes de ventes chinoises telles que AliExpress, mais elle va se diffuser chez d’autres commerçant avec le temps.

Pour un workshop ou pour débuter c’est idéal. Pas besoin de breadbord, de connecteurs et cables Dupont et de quantité de matériel. Juste ce module , le cable USB de votre smartphone et commencez à coder. Et au prix de ce module, vous pouvez même laisser repartir les participants de votre workshop avec 😉

PS: je ne vais pas faire de support utilisateur ou de déboguage de script dans le fil des commentaires, cet article est simplement écrit pour partager mon enthousiasme pour ce module.
Les forums de Esp8266.com et Arduino.cc sont de meilleurs endroits pour cela.

4 thoughts on “Esp8266 Witty / Gizwits – Le petit module pour s’initier à l’IoT”

  1. Tom23 says:

    Salut,

    Il est vraiment très intéressant ce module. Merci de me l’avoir fait connaître.
    Je pratique un peu l’arduino, mais je n’ai pas encore joué avec les esp8266. Même si ça ne devrait pas tarder après la lecture de ton article.

    Par contre, tu ne précises pas si il faut forcément flasher le module avant de l’utiliser. Tu expliques qu’il peut être flashé et programmé directement depuis l’IDE arduino. Ensuite tu indiques que le module est utilisable directement avec l’IDE… Dans ce cas quel est l’intérêt de le flasher ?

  2. tof says:

    Bonjour @Tom23

    Je m’aperçois que je me suis mal exprimé. Le module est utilisable directement depuis l’IDE Arduino (choisir carte NodeMCU 1.0) et peut donc être programmé avec l’IDE sans plus de manip que d’ajouter le support de la carte à l’IDE (comme décrit dans l’article). Il supporte aussi la programmation OTA (Over The Air), mais je n’ai pas essayé. Il peut-être également flashé avec d’autres firmwares.
    Ça en fait un très bon remplacement aux modules Arduino, avec le wifi en prime. A quelques petites différences près (certaines librairies ne fonctionne pas toute et bien faire attention à respecter le voltage en 3.3V sur tous les ports I/O), c’est identique à l’utilisation du module Arduino. Ex: le script et le montage pour ma petite horloge avait préalablement été fait sur un module Arduino Uno. L’apport de la connectivité WIFI/Internet m’a fait abandonner les modules Arduino pour des modules ESP8266.

    Pour débuter avec ESP8266 ce module « Witty » est vraiment très bien, car il intègre des capteurs et permet de s’exercer directement au code. Perso j’avais commencé avec le module esp8266 ESP-1 qui n’est vraiment pas pratique du tout et j’ai beaucoup apprécié le « Witty » qui est « Plug&Play » ou plutôt « Plug&Code ».
    Si tu veux aller un peu plus loin (faire des montages persos) ou si tu es déjà habitué à Arduino, alors peut-être que le module WeMos D1 mini sera plus adapté pour le mettre sur une breadbord et faire tes prototypes.
    Il est vendu dans les 4€ sur AliExpress.
    Note beaucoup de vendeurs vendent désormais des copies du WeMos (les chinois se copient entre-eux), mais autant acheter à la source au fabricant WeMos (c’est pas plus cher et la livraison est tip-top en 15 jours), d’autant qu’ils ont fait l’effort de faire des documentations de leur module.

  3. Tom23 says:

    Merci pour ta réponse.
    Mon but est de voir si je peux développer des petits modules pour ma modeste installation domotique. J’ai déjà joué un peu avec arduino et je pense que les objectifs que je me fixe à court terme à ce niveau sont atteignables.
    Le wemos est très intéressant comme base pour ces modules. J’ai vu les shields qui sont proposés et ça remplit pas mal de fonctions déjà. Ce qui pourrait être bloquant à plus long terme serait qu’on ne peut pas pluger plusieurs shields et obligerait à multiplier les modules… A moins que je me trompe, je suis un peu court en connaissances à ce niveau encore.
    En faisant des recherches je suis tombé sur easyesp, qui est un firmware alternatif qui ajoute une interface web aux esp pour leur configuration/programmation. Elle est compatible wemos. Ce qui doit pouvoir faire gagner un certain temps lors des tests et du développement.
    Je vais sûrement me commander un ou deux modules witty pour continuer mon apprentissage, et des wemos et quelques shields pour commencer à voir ce que je peux en tirer. A moins que tu ais encore un excellent nouveau petit module à me proposer.
    Il faut aussi que je me penche sur le moyen d’alimenter ça de façon intelligente.

    En passant j’aime beaucoup ton blog que je lis régulièrement depuis l’arrivée d’un fameux Dockstar chez moi. Les articles sont clairs, précis et je trouve tes bidouilles toujours constructives.

  4. tof says:

    Pour les shields Wesmos, certains sont cumulables et d’autres non. Pour les empiler il faut utiliser des pins femelle.
    Il faut vérifier un à un sur la documentation:
    Exemple: le shield dht_pro utilise le pin D4 http://www.wemos.cc/Products/dht_pro_shield.html, le relais le pin D1 http://www.wemos.cc/Products/relay_shield_v2.html, le bouton le pin D3 http://www.wemos.cc/Products/button_shield.html, micro-SD les pins D5, D6, D7, D8 http://www.wemos.cc/Products/micro_sd_shield.html
    -> donc ceux là sont cumulables
    Mais l’écran OLED utilise D1 et D2 http://www.wemos.cc/Products/oled_shield.html (incompatible avec le capteur de température).

    Je n’ai pas vraiment d’autre module à te conseiller pour l’instant, j’ai également un module NodeMCU
    Mais la qualité de fabrication laisse à désirer et j’ai eu des résultats assez instables avec.

    En attendant les futurs modules avec la puce ESP32 (la génération qui suit la ESP8266), plus puissante, Wifi-N, d’autres type de calculs possible (encryption), bluetooth intégré, etc…

    Si tu cherches un moyen simple d’utiliser tes modules sans programmer, il y a Blynk ( http://www.blynk.cc/ ). Une petite librairie à charger via l’IDE Arduino et de configurer l’accès wifi au module. Ensuite tout se passe via l’appli sur le smartphone d’une façon très simple et très intuitive
    J’ai essayé Blynk avec le module « Witty », ça fonctionne très bien.

    Concernant l’alimentation, tout dépend des projets… pour certains trucs alimentés en 5V j’ai utilisé un adaptateur USB allume-cigare pour faire la conversion 12V->5V. L’utilisation d’un transfo 12V étant plus pratique dans mon cas (j’avais d’autres choses branchées en 12V).
    Trouvé dans un magasin « tout à 1€ », et démonté pour ne garder que le circuit de conversion.


    Merci pour les compliments 😉
    Mon Dockstar est toujours en service, fidèle au poste. Je l’ai juste upgradé sur Debian Jessie, et j’en ai un autre à débricker via connecteur JTAG (car mémoire flash interne corrompue) qui me fera probablement un serveur MQTT pour centraliser et interconnecter tous les modules ESP8266 @home (plutôt que d’utiliser un service « cloud »).

Laisser un commentaire

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