Présentation de l’ESP8266

| 6 minutes read

Il parait que vous aimez bien les sujets hardware, donc autant en profiter. Je vais donc aujourd’hui vous parler d’un micro-contrôleur programmable qui rencontre énormément de succès : l’ESP8266.

L’ESP8266

ESP8266 (Source : http://espressif.com/en/products/esp8266/)

ESP8266 (Source : http://espressif.com/en/products/esp8266/)

L’ESP8266 est un micro-contrôleur programmable conçu par Espressif, constructeur chinois. Son succès tient en quelques points :

  • Avec 10 euros en poche, vous aurez une bonne poignée de ces modules.
  • Le micro-contrôleur proprement dit est ridiculement petit (5mm x 5mm)
  • Il supporte le WIFI (802.11 b/g/n)

Ces point clés en font un bon candidat pour créer des objets connectés à moindre coût.

Ci-dessous, la traditionnelle comparaison avec un Arduino Uno

 

Arduino UnoESP8266

Micro-contrôleur

ATmel ATmega328pTensilica Xtensa LX106

Espace d'adressage

8bits32bits

Fréquence d'horloge

16 MHz80 MHz

Mémoire flash

32 kio aucune (1)

Mémoire RAM

2 kio 96 kio

E/S numérique

18 (5V) dont 6 capables de PWM16 (3,3V), toutes capables de PWM

Entrées analogiques

5 (10 bits)1 (10 bits, 1V max (2))

Communication

1x UART;1x I2C; 1x SPI1,5x UART (3);1x I2C; 1x SPI

(1) Vous lisez bien, il n’y a pas de flash pour stocker le programme. En revanche, il est possible de l’interfacer avec une mémoire flash externe.

(2) L’ESP8266 accepte 1V maximum sur sa broche analogique. Certains modules de prototypage intègrent un pont diviseur de tension pour autoriser une mesure maximale à 1,8V ou 3,3V.

(3) 1,5 UART car il y en a un complet (broches RX et TX), et un à moitié complet (broche TX uniquement)

Les modules ESP8266

Comme vous avez pu le voir sur la photo précédente, ce format de micro-contrôleur est assez peu évident à manier tel quel. C’est pour ça qu’il est le plus souvent vendu sous forme de module prêt à l’emploi, contenant à minima : l’ESP8266, une mémoire flash externe, et quelques broches accessibles.

Les modules les plus communs sont ceux d’AI-Thinker, sous la dénomination ESP-XX, avec XX allant à l’heure actuelle de 01 à 13.

ESP8266 Family (Source : http://l0l.org.uk/2014/12/esp8266-modules-hardware-guide-gotta-catch-em-all/)

ESP8266 Family (Source : http://l0l.org.uk/2014/12/esp8266-modules-hardware-guide-gotta-catch-em-all/)

Les différences entre ces modules portent principalement sur :

  • La taille de la mémoire flash externe (de 512 kio à 4 Mio)
  • Le nombre de broches accessibles
  • Le type d’antenne WIFI
  • La taille du module
  • Les certifications FCC et / ou CE

Il est aussi possible de passer par d’autres cartes, qui souvent intègrent les modules dans un format plus pratique. Les plus connues étant la Huzzah d’Adafruit, ou le NodeMCU Dev Kit (de NodeMCU), ce dernier étant présenté en photo ci-dessous (le module ESP-12E est présent sur la partie gauche de la carte).

NodeMCU Dev Kit

NodeMCU Dev Kit

Le(s) langage(s) de programmation

Une fois que vous avez craqué et acheté votre kit de développement, il va falloir programmer l’engin. Pour ça, vous avez plusieurs choix possibles

Choix 1 : Hipster style (a.k.a. les commandes AT)

Pour ceux qui regrettent les années 90 et leur modem RTC, ou bien se sentent en phase avec le mouvement des grosses barbes et chemises de bucheron à carreaux, il est possible de parler directement avec l’ESP8266 à l’aide de commandes AT.

L’exemple suivant permet de se connecter à un réseau WIFI nommé « mywifi » avec le mot de passe « crackme ».

// Bascule l'ESP8266 en mode station (par opposition au mode point d'accès)
AT+CWMODE=1
// Rejoint le réseau « mywifi » avec le mot de passe « crackme »
AT+CWJAP=mywifi,crackme

Pour les autres commandes AT, elles sont disponibles en ligne.

Choix 2 : Le firmware NodeMCU, avec le langage de script Lua

Le deuxième choix pour programmer un module ESP8266 est l’installation du firmware de NodeMCU sur la mémoire flash du module, et qui offre une console série permettant de le programmer à l’aide du langage de script Lua.

Pour que le code soit exécuté automatiquement lors de l’allumage du module, il suffit de l’ajouter à un fichier nommé « init.lua » et à transférer ce dernier sur le module avec un programme du type LuaLoader.

L’exemple suivant permet de se connecter à un réseau WIFI nommé « mywifi » avec le mot de passe « crackme ».

-- Bascule l'ESP8266 en mode station (par opposition au mode point d'accès)
wifi.setmode(wifi.STATION)
-- Configure la connexion au WIFI « mywifi » avec le mot de passe « crackme »
wifi.sta.config("mywifi","crackme")
-- Se connecte au WIFI
wifi.sta.connect()

 

Choix 3 : Préparez l’IDE Arduino, le C est de sortie

Enfin, pour les personnes qui ne peuvent se passer de l’environnement de développement Arduino, il est possible d’installer le support pour ESP8266 sur ce dernier. Ce support permet d’utiliser l’API Arduino comme à l’accoutumée. La compilation du code crée un firmware qui sera installé sur la mémoire flash externe du module.

L’exemple suivant permet de se connecter à un réseau WIFI nommé « mywifi » avec le mot de passe « crackme ».

// Rejoint le réseau « mywifi » avec le mot de passe « crackme »
WiFi.begin("mywifi", "crackme");

 

Que peut-on faire avec un ESP8266 ?

Tellement de choses. En vrac et de manière non exhaustive :

Remarques diverses

Quelques informations supplémentaires en vrac :

  • La mémoire flash externe est subdivisée en plusieurs sections :
    • Un espace de stockage pour le firmware
    • Un espace de stockage temporaire pour les mises à jour OTA (Over The Air) du firmware
    • Un système de fichier SPIFFS
    • Un emplacement EEPROM pour la sauvegarde de données par les programmes
    • Un emplacement pour stocker la configuration du WIFI dans le cas de l’utilisation du SDK natif
  • Le système de fichier SPIFFS se présente comme un système de fichier standard, et dans lequel on peut stocker les fichiers que l’on veut. Par exemple, dans le cas d’un serveur web, on peut y stocker les images et feuilles de style. La taille de ce système de fichier va varier selon la taille de la puce flash (et plus le système SPIFFS est grand, moins la taille de la flash dédiée au programme est importante). Les tailles possibles sont les suivantes :
    • puce flash de 512 kio : SPIFFS de 64 kio
    • puce flash de 1 Mio : SPIFFS de 64 kio, 128 kio, 256 kio ou 512 kio
    • puce flash de 2 Mio : SPIFFS de 1 Mio
    • puce flash de 4 Mio : SPIFFS de 1 Mio ou 3 Mio
  • Il est possible de mettre à jour le firmware en mode sans fil, soit en passant par la bibliothèque ArduinoOTA (compatible avec l’IDE Arduino 1.6.7 et suivant), soit par une page web hébergée sur le module (Arduino et firmware NodeMCU).

Arnaud Boudou Author: Arnaud Boudou

Développeur Java et mobile (iOS) ; enthousiaste des TIC ; photographe amateur (un jour, peut-être…).

Mes hashtags : #j2ee #objc #raspberrypi #inneedforgadgetry

@boudouarnaud sur Twitter

Like it?  Share  it!

Share Button