C'est quoi l'ESP-01?#
L’ESP8266 est un microcontrôleur à cœur Tensilica L106 (RISC 32bit) produit par la société chinoise Espressif Systems intégrant un module Wifi. Initialement cette puce était un « simple » module Wifi permettant à un microcontrôleur équipé d’une liaison série, tel un Arduino, de disposer d’une connectivité Wifi. Mais depuis Octobre 2014, Espressif a publié un kit de développement (SDK) permettant de reprogrammer la puce supprimant ainsi la nécessité d’un microcontrôleur séparé ! On peut donc maintenant développer sur ce microcontrôleur autonome en C++ natif, en Arduino, en Lua, etc…
Le module “ESP-01” produit par la société AI-Thinker embarque un ESP8266 qui se présente sous la forme d'un circuit imprimé minuscule (1,4cm x 2,4cm) équipé d'un connecteur double 4 broches (au pas standard de 2,54mm) avec une antenne intégrée et une puce de mémoire flash.
Le connecteur est composé de :
- 2 broches pour l’alimentation en 3,3V (Vcc et Gnd)
- 2 broches pour la connexion série (Tx et Rx)
- 1 broche RST (reset) pour réinitialiser la puce en le connectant à la masse
- 1 broche CH_PD (chip power-down) qui doit être alimenté en 3,3V pour activer le Wifi
- 2 broches GPIO pour vos I/O (GPIO0 et GPIO2)
Le GPIO0 a un autre rôle : il peut servir également à entrer dans le mode programmation (dit "Flash mode"). Pour cela, il faut le connecter à la masse. Ainsi l’ESP8266 ne démarrera pas son programme mais entrera dans l'"UART download mode", c’est-à-dire qu’il écrira tout ce qu’il reçoit sur la liaison série dans sa mémoire. De ce fait, pour programmer la puce, il faut redémarrer l’ESP en "Flash mode" afin de pouvoir écrire un nouveau firmware.
Une carte de programmation#
C’est pourquoi, pour faciliter les opérations, je me suis fabriqué une carte de programmation afin de simplifier chaque manipulation/programmation de l’ESP. Il s’agit d'une carte réalisée dans une plaque d'essai avec un connecteur sur lequel brancher l'ESP-01.
Cette carte dispose de :
- 1 connecteur de 6 pins femelles pour y connecter l’interface FTDI/USB facilement (seul les broches Vcc/Gnd/Rx/Tx sont utilisées)
- 1 module de régulation AMS1117 5V->3,3V disposé sur 2 connecteurs (Vin(5V)/GND et Vout(3,3V)Gnd) pour l'alimentation (non nécessaire si l'adaptateur FTDI est en 3,3V)
- 1 connecteur de 3 pin femelles pour les GPIO0, GPIO2 et GPIO16 (RST)
- 1 bouton poussoir RST (celui du haut) pour faire un reset de l’ESP sans avoir à débrancher l'interface FTDI ou l'alimentation
- 1 bouton poussoir PROG (celui du bas) pour entrer dans le “Flash mode” afin de charger le nouveau firmware dans l'ESP
De plus, on y trouve aussi:
- 1 condensateur de 10µF sur l'alimentation en 3,3V pour servir de condensateur de filtrage
- 2 résistances de rappel de 10kOhm pour mettre les bornes CH_PD et RST à l'état haut
Voici le brouillon du schéma de la carte :
Version haute résolution ici
Voici le schéma définitif de la carte de programmation :
Version haute résolution ici
Le recto/verso de la carte :
Version haute résolution ici
La breadboard complète :
Version haute résolution ici
En savoir plus :#
- Article "Un « Arduino » avec Wifi pour moins de 10 euros ?" de Hackable magazine n°7
- le site ESP8266 Community Wiki
- le tutoriel de l'"Adafruit HUZZAH ESP8266 breakout" (carte de programmation pour ESP12) et notamment le schéma électronique : https://learn.adafruit.com/adafruit-huzzah-esp8266-breakout/overview
- le tutoriel "ESP-01 & ESP-03 Breakout" sur Hackaday.io : https://hackaday.io/project/5936-esp-01-esp-03-breakout