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.
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. 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 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 :
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. 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 est donc né pour programmer directement NodeMCU avec l’IDE Arduino, comme un 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 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.
Aller plus loin
- Site de NodeMCU (5040 clics)
- Site communautaire ESP8266 (2029 clics)
- Livre sur l'ESP8266 (2220 clics)
# Clarification
Posté par gUI (Mastodon) . Évalué à 3.
Merci pour cet article ! Je connais pas NodeMCU, je vais regarder tout ça avec intérêt :)
NodeMCU est à l'ESP8266 ce que le ATmega 328 est à l'Arduino
C'est pas l'inverse ? NodeMCU est à l'ESP8266 ce que l'Arduino est au ATmega 328 ? C'est à dire la plateforme complète vs le coeur ?
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Clarification
Posté par Juke (site web personnel) . Évalué à 2.
oui.
[^] # Re: Clarification
Posté par Benoît Sibaud (site web personnel) . Évalué à 4.
Corrigé, merci.
[^] # Re: Clarification
Posté par gUI (Mastodon) . Évalué à 4.
Merci !
Par contre c'est le tableau de comparaison qui est complètement cassé maintenant.
En théorie, la théorie et la pratique c'est pareil. En pratique c'est pas vrai.
[^] # Re: Clarification
Posté par Cyprien (site web personnel) . Évalué à 1.
Oups, désolé ! Tu as raison :)
# Clarifications
Posté par Voxelf . Évalué à 4.
L'ESP8266 c'est la puce qui est commune aux modules ESP-01, ESP-2 … ESP-12 (PCBs avec pins et mémoire flash).
Tu relies NodeMCU à l'ESP-12 mais je crois qu'on peut flasher le firmware NodeMCU sur tous ces modèles différents (exemple https://github.com/wogum/esp01).
La différence principale entre ces modèles est le nombre de GPIOs de l'ESP8266 qui sont reliés à des pins du pcb.
Il faut donc faire gaffe au modèle que l'on achète, sachant que l'ESP-12 offre plus de GPIO que le ESP-01 (2 pins seulement).
Il est aussi possible d'utiliser des GPIO expanders pour augmenter le nombre de GPIOs.
[^] # Re: Clarifications
Posté par Voxelf . Évalué à 2.
J'ai dit une bêtise : tu relies le firmware NodeMCU à la board NodeMCU qui à l'avantage de se programmer en usb, contrairement aux ESP-x.
http://blog.squix.ch/2015/03/esp8266-module-comparison-esp-01-esp-05.html (en anglais)
[^] # Re: Clarifications
Posté par Cyprien (site web personnel) . Évalué à 3.
La confusion vient du fait que NodeMCU est un firmware ET une carte, donc le même nom pour deux choses différentes.
Sinon, oui, tu as aussi raison :
- L'ESP8266 est incluse au modules ESP-01, ESP-02, etc. Il est donc possible de la flasher avec n'importe quel firmware.
- l'ESP-12 est incluse dans la carte NodeMCU
J'ai des modules 74HC4051 (pour les entrées analogiques) et des 74HC595 (pour les digitales), est-ce de cela dont tu veux parler ? Sinon, tu as d'autres alternatives ?
Une autre question, beaucoup relient un arduino à un ESP8266 pour lui ajouter des fonctionnalités WIFI, mais est-ce possible de faire l'inverse (faire discuter un ESP8266 avec un arduino via une liaison serie par exemple) pour profiter des GPIO de l'arduino ?
[^] # Re: Clarifications
Posté par Juke (site web personnel) . Évalué à 2.
Pourquoi ne pourrais tu pas ?
# Tableau
Posté par Thomas Debesse (site web personnel) . Évalué à 8.
Le tableau est complètement cassé !
Je suppose que c’était :
ce commentaire est sous licence cc by 4 et précédentes
[^] # Re: Tableau
Posté par Cyprien (site web personnel) . Évalué à 1.
Moi qui avait fait un beau tableau !! :(
# Wemo D1 Mini
Posté par Benjamin Henrion (site web personnel) . Évalué à 2.
Je recommande comme board moins chere (4USD) la Wemo D1 Mini:
http://www.cnx-software.com/2016/02/19/4-wemos-d1-mini-esp8266-board-supports-shields-with-a-temperature-sensor-a-button-a-relay-or-a-micro-sd-slot/
Elle est "breadboard friendly", comparée à la Witty cloud qui est plus grosse:
http://www.cnx-software.com/2015/12/14/3-compact-esp8266-board-includes-rgd-led-photo-resistor-buttons-and-a-usb-to-ttl-interface/
[^] # Re: Wemo D1 Mini
Posté par AncalagonTotof . Évalué à 2.
Je plussois.
On trouve du Wemo D1 mini à $4 environ sur les sites chinois (aliexpress et cie).
Sinon, pardon si j'ai lu trop vite ce qui précède, mais j'aimerais préciser :
Enfin, si quelqu'un a déjà vu passé un driver Linux pour cette puce, ça m'intéresse. En même temps, vu son architecture, je doute que ça existe.
[^] # Re: Wemo D1 Mini
Posté par Cyprien (site web personnel) . Évalué à 2.
Oui, j'avais vu passer cette carte. Ceci étant dit, je ne pense pas qu'elle soit tellement moins chère que les "copies" de NodeMCU :
http://fr.aliexpress.com/item/new-Wireless-module-CH340-NodeMcu-V3-Lua-WIFI-Internet-of-Things-development-board-based-ESP8266/32520574539.html
Je vais m'en commander une pour tester.
# Pour les néophites
Posté par Maz (site web personnel) . Évalué à -3.
Pour moi qui ne suit pas du tout ces cartes, est-ce que je pourrais avoir un résumé qui indique ce que cela à avoir avec le noyau linux ou le libre ?
[^] # Re: Pour les néophites
Posté par briaeros007 . Évalué à 6.
Arduino permettant de faire du code libre si on le souhaite, tu as déjà un lien :)
Ensuite, sur linuxfr, contrairement au nom, des dépêches ne traitant pas forcément que de linux ou de la FSF peuvent être autorisés si l'information est considéré comme suffisament d'intérêt général.
Là c'est du matos à vraiment pas cher pour développer des applis/utilisations et permettre à tout un chacun de faire sa propre utilisation pour les IoT.
Je trouve que c'est assez proche du principe du libre, même si c'est pas encore de l'openhardware.
[^] # Re: Pour les néophites
Posté par aiolos . Évalué à 5.
Et surtout pour Arduino, tout ce qu'ils font eux même est libre : la carte (mais pas le processeur ATMega) est en Open Hardware (CC BY-SA 2.5), les bibliothèques et le bootloader sont en LGPL et l'IDE est en GPL.
[^] # Re: Pour les néophites
Posté par Benjamin Henrion (site web personnel) . Évalué à 4.
L'OS est un fork de FreeRTOS, la seule partie non libre est le .a avec le firmware radio.
Espressif a publié tous les .a sous GPL, puis a changé de license:
https://github.com/espressif/ESP8266_RTOS_SDK/issues/1
[^] # Re: Pour les néophites
Posté par Cyprien (site web personnel) . Évalué à 1.
J'avoue avoir eu du mal à trouver des infos au niveau des licences. Quelle est donc cette nouvelle licence de espressif ?
Sinon, comme l'a dit briaeros007, demain, on pourrait avoir des objets connectés libres grâce à ces puces (en partie non libres).
De plus, presque tous les projets autour de l'ESP8266/NodeMCU sont libres.
[^] # Re: Pour lesnéophites
Posté par Juke (site web personnel) . Évalué à 2.
Il y en a deja un paquet.
# MicroPython sur esp8266
Posté par jeanrhum . Évalué à 5.
Il y a eu récemment une campagne sur Kickstarter pour avoir micropython sur ces MCU: https://www.kickstarter.com/projects/214379695/micropython-on-the-esp8266-beautifully-easy-iot/description
Je ne sais pas trop quoi en penser et j'ai peur que l'on soit dans la même situation qu'en Lua avec du coup peu de mémoire disponible. Si certains ont des retours sur ce type d'environnement je suis preneur.
De mon côté j'utilise plusieurs de ces cartes pour superviser les températures de certaines pièces chez moi. J'utilise des modules nodeMCU ayant eu quelques difficultés à utiliser directement les cartes esp12-E. Elles sont tellement petites que ce n'est pas facile de les utiliser avec une breadboard. Le gros avantage (dans mon cas) des nodeMCU ou D1 mini est qu'on les alimente en 5v avec un port microusb. J'aurais pu me contenter de l'esp01 dans mon cas, mais il aurait quand même fallu l'alimenter en 3,3V avec une ou 2 résistances pour avoir un truc stable.
Autre point à améliorer, c'est à mon avis la consommation électrique et la gestion des modes de veille. Je n'ai pas encore trop creuser le sujet, mais c'est rarement abordé dans les tutos disponibles et il y a de gros gains possibles (200mA -> 60 voire 10mA).
J'ai aussi noté quelques trucs bizarres de mon côté sans avoir poussé plus loin par manque de temps. J'utilise l'arduino IDE et dans mes sketchs je ne demande pas la création d'un point d'accès et pourtant j'en vois apparaitre un de plus quand je scanne mon réseau wifi.
[^] # Re: MicroPython sur esp8266
Posté par Frank-N-Furter . Évalué à 3.
Tu fais un WiFi.mode(WIFI_AP_STA) ?
Depending on the time of day, the French go either way.
[^] # Re: MicroPython sur esp8266
Posté par jeanrhum . Évalué à 1. Dernière modification le 22 mars 2016 à 08:38.
Non pas du tout, j'ai modifié l'exemple fourni de serverweb et en version simplifiée ça donne ça:
Je n'ai rien qui modifie le mode et définie un quelconque point d'accès.
# Certifications CE et FCC
Posté par plr . Évalué à 1.
Merci pour ces infos.
Juste pour précision, je trouve que l'affirmation "La carte qui se rapproche le plus d'un Arduino est la NodeMCU" est erronée, sachant que tu compares un module WIFI comme il en existe déjà un certain nombre (plutôt des cartes d'évaluation d'ailleurs) chez Microchip ou autre fabricant. Sans doute pas avec la même communauté, je te le concède.
Des chips WIFI avec des caractéristiques équivalentes se retrouvent chez d'autres fabricants.
Pour ma part, je trouve que l'arduino/genuino, c'est déjà basé sur de la vieille techno d'atmel (ATmega) alors que les versions ATxmega sont largement plus intéressantes et moins chères.
Ensuite, pour des questions de certifications (CEM touça), je m'abstiendrais actuellement d'utiliser les chips ESP (ou tout autre chip "designed in China") surtout chez moi. le CE est de l'auto-certification et pour le FCC, j'ai l'impression qu'il l'ont fait aussi en auto-certification et uniquement sur une des dernières versions du chip. Connaissant les "magouilles" et autres "arrangements" pour faire passer ce genre de certifications (et même en Europe), je me permets d'avoir quelques doutes sur le rayonnement et autres perturbations de ce genre de chip: le nombre de "hobbistes" ne fait pas la "validité technique et environnementale", plutôt bouffer des ogm tous les jours, dans l'état actuel de l'art, celà me "semble" moins risqué. ^
Sauf à avoir des certifications par un labo européens et indépendant bien entendu.
ps: c'est marrant un site de communauté "nodemcu.com" qui a une licence ICP (no.14038071) (surveillance du gouvernement Chinois)
[^] # Re: Certifications CE et FCC
Posté par Juke (site web personnel) . Évalué à 1.
Ouais sauf que celle ci, l'interet c'est qu'elle peut etre autonome.
[^] # Re: Certifications CE et FCC
Posté par plr . Évalué à 1.
Qu'entends-tu par "autonome"?
[^] # Re: Certifications CE et FCC
Posté par Juke (site web personnel) . Évalué à 2.
Elle n'a pas besoin d'être asservie autre micro controlleur, elle peut tourner en standalone.
[^] # Re: Certifications CE et FCC
Posté par plr . Évalué à 2. Dernière modification le 21 mars 2016 à 13:54.
Ah ok, ce que tu entends par "autonome", c'est juste avoir accès à la cpu du module Wi-Fi.
Comme par exemple sur le "Wi-Fi micro Kit" de chez RedBearLab
[^] # Re: Certifications CE et FCC
Posté par karteum59 . Évalué à 4. Dernière modification le 25 mars 2016 à 05:07.
Tu y vas fort en accusant carrément le fabricant de chipset (pas seulement un petit OEM inconnu) de tricher sur ses émissions hors bande et sur la certif CE. Tu as des éléments un peu factuels pour étayer tes accusations ou bien c'est juste une attaque gratuite / limite raciste ? (Je bosse pas mal avec la Chine, et je sais qu'ils sont capables du meilleur comme du pire, mais en l'occurrence ils ont d'excellents labs de test parfaitement indépendants - si ça n'était pas le cas l'UE n'autoriserait pas l'import. Et les douaniers ne rigolent pas et il est pas si facile que ca de tricher ! J'ai actuellement 500 routeurs bloqués à Roissy pour une broutille, parce que le document relatif à la certification CE et aux tests se réfère à une version légèrement obsolète de EN301908, donc qu'on ne vienne pas me parler de "magouilles"…). Je pense que le "et même en Europe" se passe de commentaires (et est contradictoire avec ton souhait d'acheter des produits testés par des labos européens).
Ah au fait: le fait qu'un chip soit "made in US" ne te protège absolument pas d'une implémentation foireuse par l'OEM sur la CEM… Donc pour être cohérent il faut que tu refuses tout produit (tout PCB) made in China. Bon courage…
Sauf que sans cela ledit site ne peut pas être implanté en Chine (donc derrière le "grand firewall"). Or tout site situé à l'étranger rame (ou est bloqué) depuis la Chine. Peut-être que les concepteurs du nodemcu ne voulaient pas se priver du marché chinois…
[^] # Re: Certifications CE et FCC
Posté par arduinooo . Évalué à 1.
Bonjour,
pour préciser le processeur un Tensilica L106 32-bit est un processeur comparable aux ARM d'Atmel avec une capacité wifi. Donc oui elle ce rapproche de l'Arduino. Et cela n'a rien de cartes d'évaluations.
CE et FCC excusez moi mais ou donc ont fabriquées les puces Atmel, Intel etc…ainsi que tous les composants électronique, en Asie.
Donc on soude des composants(acheté aux prix chinois de gros) sur une carte on marque CE et on fait payer.
Au fait la Chine va bientôt sur la Lune donc les composants fait en Chine j'ai confiance.
# Prises commandées Wifi
Posté par _eLRIC . Évalué à 2.
A propos de NodeMCU et d'ESP8266, si vous voulez faire simplement des prises commandées basées sur ce firmware, je vous invite à regarder les prises Sonoff de chez itead
Reste un bout de code NodeMCU pour les faire fonctionner sur un réseau MQTT sans dépendre d'un quelconque cloud et le tour est joué …
[^] # Re: PrisescommandéesWifi
Posté par Juke (site web personnel) . Évalué à 3.
y'a ça chez olimex aussi :
https://www.olimex.com/Products/IoT/ESP8266-EVB/open-source-hardware
# Gros avantages versus arduino
Posté par Guillaume D. . Évalué à 4.
Bonjour,
il y a quand même de gros avantages pour preferer un hadware NodeMCU à un arduino :
C'est les firmwares type : ESP Easy : http://www.esp8266.nu/index.php/Main_Page
a+
[^] # Re: Gros avantages versus arduino
Posté par Benjamin Henrion (site web personnel) . Évalué à 3.
Moi j'uilise esp-link: interface web, mis à jour via Wifi, bridge TCP-serie transparent, etc…
https://github.com/jeelabs/esp-link
# Quelques infos pour programmer directement l'ESP8266
Posté par olivierl . Évalué à 2.
Il est assez facile de programmer l'ESP8266 de façon similaire à ce que l'on peut faire avec un Arduino (via l'IDE Arduino), sans passer par NodeMCU. Il faudra juste un convertisseur USB <-> TTL (ça doit valoir 1 euro sur Ebay).
Plus d'infos ici : http://www.fais-le-toi-meme.fr/fr/electronique/tutoriel/programmes-arduino-executes-sur-esp8266-arduino-ide (je crois que l'article n'est pas terminé mais il donne déjà pas mal d'infos sur ce qu'on peut faire)
Olivier
# Grave erreur !!!!
Posté par arduinooo . Évalué à 0.
Bonjour,
le NodeMcu comporte 4 Mbits de Ram et pas 4Mbytes !!!!!!
NodeMCU firmware detected.
=node.heap()
21888
A+
Olivier
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.