Auteur Sujet: L’ESP8266 : « Une drôle de petite bête »  (Lu 59836 fois)

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
L’ESP8266 : « Une drôle de petite bête »
« le: septembre 10, 2017, 07:21:38 am »


Bonjour à tous,

Ne me dite pas que vous n’ayez jamais entendu parlé de ce composant qui fait déjà « pas mal de bruit dans le Landerneau » du DIY et de ce qui gravite autour !

A la base, l’ESP8266 est un simple module WIFI destiné à étendre les possibilités de cartes à microcontrôleurs comme les Arduino et d’établir avec elles des connections WIFI en TCP/IP. Mais l’ESP8266 disposant lui-même de son propre microcontrôleur, il est vite apparu à une petite communauté que l’on pourrait se dispenser de la carte « maitresse » pour peu que l’on dispose de l’environnement logiciel pour sa programmation.

C’est ce à quoi va rapidement « s’atteler » son fabriquant chinois, ESPRESSIF en proposant (entre autres) une solution en C/C++ au travers de l’IDE Arduino ; de l’Arduino sans Arduino ! Vous pouvez en effet comparer l’ESP8266 à un Arduino Mini ou Nano qui serait doté de la WIFI. Avec des performances pourtant supérieures :

Fréquence 80MHz pour l’ESP8266  contre 16MHz pour un Arduino UNO R3,
Flash Memory 4MB pour l’ESP8266  contre 32Kb (sic) pour un Arduino UNO R3.

L’ESP ne dispose pas par contre d’EEPROM ce qui nécessite d’utiliser la Flash Memory mais on voit bien qu’avec 4MB ce n’est pas un problème.

Mais ne nous y trompons pas tout de même. Si tout a été fait pour que la programmation soit aussi proche que possible de celle d’un Arduino, parfaitement intégrée dans l’IDE, utilisant même le langage spécifique de l’Arduino comme « digitalWrite » ou « analogRead », l’ESP n’est pas un Arduino. Les processeurs tout d’abord sont différents : ATmega pour la plupart des Arduino contre ESP8266.

Cependant, j’ai fait quelques tests de comparaisons sur digitalWrite justement. L’ESP donne une vitesse d’exécution environ 1,5 fois supérieure à un UNO !!! Et à mon grand étonnement, l’utilisation des routines de bas niveau spécifiques à l’ESP : (GPIO_REG_WRITE(GPIO_OUT_W1TS_ADDRESS, 1 << outPin) comparables aux manipulations de ports sur Arduino (PORTD = b10101000) n’apporte pas de gains significatifs en vitesse (+7 à 8%). Mais il ne s’agit que de tests théoriques portants sur des point très spécifiques. Il faudrait comparer si c’est possible l’exécution d’un programme bien réel.

Alors l’ESP, est-il de l’Arduino sans Arduino et mieux que l’Arduino ? Il faudra aviser selon ce que l’on souhaitera réaliser. Arduino vient de sortir un UNO en WiFi, mais il est certain que lorsque le gain de place est recherché, un ESP est plus facile à embarquer qu’un UNO. Et nous ne devrions pas attendre longtemps je pense pour voir apparaître des Nano ou autres Mini en WiFi chez Arduino.

Quoiqu’il en soit, l’ESP a de nombreux atouts et peut apporter beaucoup à la richesse et aux fonctionnalités des projets de modélisme ferroviaire.

Je suis personnellement en train de terminer une réalisation de pont tournant automatisé sur la base d’un FLEISCHMANN 6152 en HO et aucune autre solution Arduino embarquée n’était envisageable. Vous trouverez rapide aperçu ici et pourrez vous rendre compte du degré de miniaturisation :



Nous sommes assez nombreux à avoir initialisé des projets à base d’ESP. Encore plus nombreux sans doute sont ceux qui voudraient mais ne le connaissent pas bien. On peut penser que l’ESP ne sert qu’à faire des serveurs internet, ce qui est largement faux. Quoique, cela peut-être bien utile si l’on souhaite développer une application riche et pilotable à distance via un ordinateur, une tablette ou un smartphone.

Voilà, j’ai souhaité ouvrir ce nouveau fil pour que vous puissiez poser toutes vos questions et que la communauté Locoduino puisse partager une expertise déjà importante semble t’il sur le sujet.

Bien amicalement.

Christophe
« Modifié: septembre 10, 2017, 08:20:30 am par bobyAndCo »

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #1 le: septembre 10, 2017, 09:10:56 am »
Excellent d'ouvrir un fil sur ce sujet.
Je n'ai pas encore mis d'ESP8266 dans mes trains, mais je suis en train de détourner des prises télécommandables SONOFF (< 5€) en remplaçant le firmware :
https://projetsdiy.fr/hacker-prise-connectee-sonoff-s20-super-smart-plug-espeasy-rules/#.WbTj0NFpyUk
Il y aura bien une petite place dans ma domotique pour le train !
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #2 le: septembre 10, 2017, 11:07:45 am »
Je viens de recevoir un circuit WEMOS LOLIN32 qui est dans la liste des modules supportés par l'IDE Arduino (avec l'extension d'Espressif)

http://www.ebay.fr/ulk/itm/263092747338

7€52 !
Module ESP32 : ESP-WROOM-32 d’Espressif. microprocesseur dual core @ 240 MHz équipé de 4MB de mémoire flash
Connectivité: WiFi 802.11 b/g/n, Bluetooth 4.0 LE
Entrées/Sorties: 26x E/S digitales (3.3V), 12x entrées analogiques
UART, I2C, SPI, VP/VN, DAC
USB : 1x micro USB port pour l’alimentation et la programmation/débogage
Alimentation: 5V via le port micro USB
Connecteur pour batterie LiPo externe (courant de charge: 500mA max).
Poids : 5.8 grammes


Je ferai part de mes essais.
« Modifié: septembre 10, 2017, 10:28:31 pm par Dominique »
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #3 le: septembre 10, 2017, 01:00:08 pm »
Whouaaaa, un vrai petit micro pour moins de 8 € !!!

Pour l'alimentation, il faut regarder la datasheet mais il n'y a pas de raison pour que cela ne soit pas comme l'E12, à savoir, alimentation jusqu'à 20 V. On peut ainsi l'inclure dans des montages sans  avoir à réguler le courant. Le NodeMCU est par ailleurs équipé d'un régulateur LD1117 intégré pour fonctionner en 3,3V qui peut aussi délivrer du 3,3V à d'autres composants (max 20 mA par broche).

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #4 le: septembre 10, 2017, 10:27:10 pm »
Le test du WEMOS LOLIN32 s'est avéré extrêmement simple

- Le contrôleur est dans la liste des modules ESP32



- Choix du sketch WiFiScan (recherche des points d'accès Wifi environnants)

/*
 *  This sketch demonstrates how to scan WiFi networks.
 *  The API is almost the same as with the WiFi Shield library,
 *  the most obvious difference being the different file you need to include:
 */
#include "WiFi.h"

void setup()
{
    Serial.begin(115200);

    // Set WiFi to station mode and disconnect from an AP if it was previously connected
    WiFi.mode(WIFI_STA);
    WiFi.disconnect();
    delay(100);

    Serial.println("Setup done");
}

void loop()
{
    Serial.println("scan start");

    // WiFi.scanNetworks will return the number of networks found
    int n = WiFi.scanNetworks();
    Serial.println("scan done");
    if (n == 0) {
        Serial.println("no networks found");
    } else {
        Serial.print(n);
        Serial.println(" networks found");
        for (int i = 0; i < n; ++i) {
            // Print SSID and RSSI for each network found
            Serial.print(i + 1);
            Serial.print(": ");
            Serial.print(WiFi.SSID(i));
            Serial.print(" (");
            Serial.print(WiFi.RSSI(i));
            Serial.print(")");
            Serial.println((WiFi.encryptionType(i) == WIFI_AUTH_OPEN)?" ":"*");
            delay(10);
        }
    }
    Serial.println("");

    // Wait a bit before scanning again
    delay(5000);
}

Compilation et téléversement :

Le croquis utilise 436667 octets (33%) de l'espace de stockage de programmes. Le maximum est de 1310720 octets.
Les variables globales utilisent 32840 octets (11%) de mémoire dynamique, ce qui laisse 262072 octets pour les variables locales. Le maximum est de 294912 octets.
esptool.py v2.1-beta1
Connecting........_
Chip is ESP32D0WDQ6 (revision 1)
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Configuring flash size...
Auto-detected Flash size: 4MB
Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %)
Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 17627.2 kbit/s)...
Hash of data verified.
Flash params set to 0x022f
Compressed 10464 bytes to 7012...

Writing at 0x00001000... (100 %)
Wrote 10464 bytes (7012 compressed) at 0x00001000 in 0.1 seconds (effective 878.2 kbit/s)...
Hash of data verified.
Compressed 437808 bytes to 286840...

Writing at 0x00010000... (5 %)
Writing at 0x00014000... (11 %)
Writing at 0x00018000... (16 %)
Writing at 0x0001c000... (22 %)
Writing at 0x00020000... (27 %)
Writing at 0x00024000... (33 %)
Writing at 0x00028000... (38 %)
Writing at 0x0002c000... (44 %)
Writing at 0x00030000... (50 %)
Writing at 0x00034000... (55 %)
Writing at 0x00038000... (61 %)
Writing at 0x0003c000... (66 %)
Writing at 0x00040000... (72 %)
Writing at 0x00044000... (77 %)
Writing at 0x00048000... (83 %)
Writing at 0x0004c000... (88 %)
Writing at 0x00050000... (94 %)
Writing at 0x00054000... (100 %)
Wrote 437808 bytes (286840 compressed) at 0x00010000 in 4.0 seconds (effective 871.6 kbit/s)...
Hash of data verified.
Compressed 3072 bytes to 122...

Writing at 0x00008000... (100 %)
Wrote 3072 bytes (122 compressed) at 0x00008000 in 0.0 seconds (effective 5155.5 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting...

436 K (33% de la flash, maxi 1,3 Mo), pour un si petit programme : ça m'impressionne grave !
Il doit y avoir des biblios d'enfer.

En tout cas le téléversement démarre automatiquement et le résultat s'affiche sur le moniteur :

scan start
scan done
2 networks found
1: DIRECT-JhML-2160 Series (-53)*
2: Livebox-978d (-75)*
« Modifié: septembre 10, 2017, 10:31:23 pm par Dominique »
Cordialement,
Dominique

TF53

  • Newbie
  • *
  • Messages: 47
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #5 le: septembre 10, 2017, 10:52:09 pm »

Je suis personnellement en train de terminer une réalisation de pont tournant automatisé sur la base d’un FLEISCHMANN 6152 en HO et aucune autre solution Arduino embarquée n’était envisageable.


Pourquoi ne pas avoir utilisé une arduino nano ou mini? Tu le pilotes à distance via wifi?

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #6 le: septembre 11, 2017, 07:23:22 am »
C'est bien là tout l'intérêt de la chose. Avec (même) un Mini ou un Nano en plus ça n'entre pas sous le pont où la place est limitée. Voici la position sommaire des composants. Au milieu, je suis obligé de laisser un espace car il y a un chemin de roulement.

La carte moteur est ici un Pololu A4990 mais je vais la remplacer par un autre Pololu, le TB6612FNG qui fournit une courant en PWM. Je vais sans doute aussi pouvoir me dispenser du régulateur TRACOPOWER car l'ESP NodeMCU accepte un courant jusqu'à 20 volts. Je peux donc utiliser le même courant que celui qui alimente le moteur (12V). Or le Mini n'accepte au plus que 12V (on est donc à taquet) et le Nano 9V, ça ne passe pas.

Et en plus je réduis les coûts puisque l'ESP Node MCU vaut le même prix qu'un Nano ou qu'un Mini auxquels il faut ajouter la WiFi.

« Modifié: septembre 11, 2017, 07:25:36 am par bobyAndCo »

msport

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 2217
  • HO avec DCC++ en DIY Réseaux très éphémères
    • Voir le profil
Re : Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #7 le: septembre 11, 2017, 09:36:23 am »
Le test du WEMOS LOLIN32 s'est avéré extrêmement simple

- Le contrôleur est dans la liste des modules ESP32




Une question pour rester en phase :

je  n'ai pas dans ma liste des hardware spécifiquement le Wemos Lolin mais seulement ce que donne ce site :
http://ouilogique.com/NodeMCU_esp8266/
qui propose comme référence :
http://arduino.esp8266.com/stable/package_esp8266com_index.json
à savoir Type de carte NodeMCU 1.0 (ESP12-E Module)

Une référence pour le json de la carte Wemos Lolin ?

Merci
Cordialement

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #8 le: septembre 11, 2017, 09:48:59 am »
Bonjour msport,

J'ai installé l'ESP32 dans l'IDE Arduino à partir du package suivant :

https://github.com/espressif/arduino-esp32

Il y a donc un dossier hardware "esp32" dans le dossier "espressif" qui contient des éléments différents de ceux que tu as dans ton dossier "esp8266"

Je pense qu'il faut installer les 2 dossiers dans ton cas.
Moi je ne passe pas par la ligne de commande mais seulement via l'IDE Arduino (1.8.2)

J'ai aussi ajouté le chemin suivant dans les préférences :
https://git.oschina.net/dfrobot/FireBeetle-ESP32/raw/master/package_esp32_index.json
mais je ne suis pas certain qu'il corresponde à ma carte Wemos Lolin, ou qu'il soit nécessaire, en tout cas ça marche !

Dominique
« Modifié: septembre 11, 2017, 09:55:40 am par Dominique »
Cordialement,
Dominique

Didier44

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #9 le: décembre 04, 2017, 10:39:31 am »
Bonjour à tous,

Pas beaucoup d'amateur de WiFi ?
Je vous prépare un article pour vous montrer comment il peut être (assez) facile d'utiliser ce composant.
J'ai réalisé une commande sans fil d'une centrale DCC++, voire sans box ni internet. Et tout cela à partir d'un smartphone ou d'une tablette.
Et pas de câblage compliqué, puisque seulement deux fils entre le NodeMcu et votre Arduino DCC++  8).

A bientôt
Didier

Dominique

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 3039
  • 100% Arduino et N
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #10 le: décembre 04, 2017, 11:16:53 am »
Mais si, mais si  :D ;D

On attend avec impatience  :P

cordialement
Dominique
Cordialement,
Dominique

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #11 le: décembre 04, 2017, 01:19:26 pm »
Si, si, moi j'attends des shields d'ici un ou deux jours pour monter sur des Mega. J'ai un projet précis dont je parlerai quand je serai plus avancé.


Didier44

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #12 le: décembre 04, 2017, 01:46:35 pm »
La chance  8)
Je n'avais pas jusqu'ici réussi a en trouver, tous en rupture de stock. Donc pas assez cherché !
Sur quel site l'as tu trouvé ? Ce serais idéal pour le projet que je viens d'évoquer. (correction vu ton fournisseur sur la photo)
Au fait j'ai déjà reçu également un ESP32. Pas de problèmes particulier pour la mise en route mais juste essayé la fameuse LED clignotante.

Didier
« Modifié: décembre 04, 2017, 02:24:56 pm par Didier44 »

bobyAndCo

  • Global Moderator
  • Hero Member
  • *****
  • Messages: 1081
  • HO avec DCC++
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #13 le: décembre 04, 2017, 03:01:11 pm »
J'en ai commandé 4, je peux te dépanner si tu le souhaites !

Didier44

  • Newbie
  • *
  • Messages: 43
    • Voir le profil
Re : L’ESP8266 : « Une drôle de petite bête »
« Réponse #14 le: décembre 04, 2017, 05:56:42 pm »
Merci mais je viens d'en commander et je patienterais et puis cela sera un bon moyen de rappeler que le NodeMCU est 'presque' un Arduino (avec le WiFi) et que l'on peut commander comme avec un Arduino différent accessoires. Les relais collent bien même avec du 3,3V ! Mais pas tous ensemble bien sur !
Je ferais un complément d'information dès que j'aurais les pièces.