URL: https://linuxfr.org/news/nodemcu-esp8266-une-alternative-a-l-arduino Title: NodeMCU + ESP8266 : une alternative à l'Arduino ? Authors: Cyprien Nÿco, palm123, Benoît Sibaud, Yves Bourguignon, M5oul, esdeem, Pierre Jarillon et NeoX Date: 2016年03月17日T15:04:39+01:00 License: CC By-SA Tags: esp8266, nodemcu, arduino, esp et microcontrôleur Score: 38 On entend de plus en plus parler de cette carte esp8266 qui permet facilement de se connecter et d'échanger sur un réseau WIFI. Des cartes tels que NodeMCU sont de plus en plus populaires et permettent d'utiliser l'esp8266 plus facilement, presque comme un Arduino. Il est possible de la programmer en Lua, de créer des firmwares avec l'IDE d'Arduino et de nouveaux projets fleurissent tous les jours. Seulement, toutes ces possibilités amènent de la confusion lorsque l'on commence à s'intéresser à l'esp8266 et c'est pour éclaircir les choses que j'ai eu envie de créer cette dépêche. ---- [Site de NodeMCU](http://nodemcu.com/index_en.html) [Site communautaire ESP8266](http://www.esp8266.com/) [Livre sur l'ESP8266](https://leanpub.com/ESP8266_ESP32) ---- Comparaison technique entre NodeMCU et Arduino =========== La carte qui se rapproche le plus d'un Arduino est la NodeMCU. Elle a été créée pour pouvoir utiliser l'ESP8266 avec le firmware du même nom, NodeMCU, qui permet d'interpréter des scripts Lua. Aujourd'hui cette carte peut être programmée comme un Arduino avec l'IDE d'Arduino. NodeMCU est à l'ESP8266 ce que l'Arduino est à l'ATmega 328. Il existe aujourd'hui [14 versions de l'ESP8266](http://www.esp8266.com/wiki/doku.php?id=esp8266-module-family). NodeMCU utilise la version 12 (ESP12E) de l'esp8266. ``` +---------------------+----------------+------------------------+ | | Arduino UNO R3 | NodeMCU | +---------------------+----------------+------------------------+ | Power | 5V | 3,3V | | Fréquence | 16MHz | 80MHz | | Microcontroller | ATmega328 | ESP8266 | | Flash Memory | 32KB | 4MB | | SRAM | KB | 64 KB SRAM / 96KB DRAM | | EEPROM | 1 KB | Non, utiliser Flash | | USB | Oui | Oui | | External Power Port | Oui | Non | | Pins | 32 | 22 | | GPIO | 14 | 16 (11 Digital I/O) | | Analog I/O | 6 | 1 | | WiFi | Non | Oui ! | | PWM | 6 | 9 | | SPI / I2C | Oui | Oui | +---------------------+----------------+------------------------+ ``` Pour le prix, l'Arduino est à 20 € pour une version officielle et à 2,50 € en Chine pour une copie. NodeMCU est à 3 € en Chine. Historique =========== L'ESP8266 a été créé en 2014 par une société chinoise (Espressif). Elle a été surtout utilisée au début pour ajouter des fonctionnalités WIFI à des projets Arduino via des commandes AT. Très vite, devant la puissance de la puce et avec la publication d'un SDK par Espressif, une belle communauté a développé des outils et firmware pour pouvoir la programmer. En deux ans, [un grand nombre de modèles différents](https://en.wikipedia.org/wiki/ESP8266) ont été commercialisés. Firmwares =========== Si beaucoup de projets ont débuté pour programmer la puce, deux semblent principalement utilisés : NodeMCU ----------- NodeMCU est donc le nom d'une carte, mais également d'un firmware qui permet de programmer l'ESP8266 via le langage de script Lua. Cela simplifie grandement les choses, voici par exemple le code nécessaire pour se connecter à un réseau WIFI : ```Lua print(wifi.sta.getip()) --nil wifi.setmode(wifi.STATION) wifi.sta.config("SSID","password") print(wifi.sta.getip()) --192.168.18.110 ``` Voici [d'autres exemples sur la page du projet](http://www.nodemcu.com/index_en.html#fr_5475f7667976d8501100000f). Malheureusement, la quantité de mémoire disponible pour les scripts après installation du firmware est faible pour les scripts un peu longs. Il a été tenté de « minifier » le code Lua (les commentaires, nom de variables, etc étant envoyés en mémoire) mais on perd du coup de la simplicité de programmation. Création de firmware via l'IDE Arduino ----------- [Un nouveau projet](https://github.com/esp8266/Arduino) est donc né pour programmer directement NodeMCU avec l’IDE Arduino, [comme un Arduino](http://www.instructables.com/id/Programming-ESP8266-ESP-12E-NodeMCU-Using-Arduino-/). Ce projet est aujourd'hui très actif et utilisé. Il ne s'agit plus ici de scripts mais bien de créer un firmware à télécharger sur la puce. Cela évite donc les problème de mémoire rencontrés avec NodeMCU. [Un grand nombre de bibliothèques](http://esp8266.github.io/Arduino/versions/2.1.0/doc/libraries.html) sont déjà disponibles pour créer vos firmware. Conclusion (personnelle) =========== Je n'ai passé que peu de temps avec mon NodeMCU et cela est à mon avis plus compliqué à utiliser que les Arduino : - Beaucoup de solutions sont proposées, on a un peu l'impression de rentrer dans une jungle avec beaucoup de sentiers possibles (d’où cette dépêche pour éclaircir un peu les choses), là ou avec l'Arduino on est sur une autoroute ; - C'est une solution puissante, grâce au WIFI, aux 4 Mo de mémoire flash, à la possibilité de créer des pages web, à la rapidité du processeur ; - De mon coté, il me manque des GPIO et surtout des entrées analogiques. Il faut également mieux connaître l’électronique car les voltages sont différents de l'Arduino (3.3 v partout, entrée analogique entre 0 et 1 v) et les nombreux exemples de montages avec l'Arduino ne fonctionnent donc plus.