ESP8266

Liens_Web

PINOUT

NodeMCU
_images/PINMAP.png
Wemos_D1_mini
_images/d1-mini.jpg

Flasher un nouveau Firmware

La façon simple (quant tous vas bien)

Pour flasher un firmware sur le NodeMCU, il faut le mettre en mode « flashage » en reliant le GPIO 0 (D3) au GND. Il faut alors suivre les étape de « MAJ du firmware ».

/!\Attention/!\

cette broche ne peux / doit pas être utilisée dans un montage.

La façon compliqué (quant ça merde)

FTDI_NodeMCU
_images/cablage_nodeMcu.png

Ce schéma a été élaboré à partir de différent schéma trouvés sur internet. Cette configuration est la seul qui ai fonctionné. il permet de flasher un ESP8266 à l’aide d’un FTDI232 sans passer par le CH340

/!\_Attention_/!\
  1. L’ESP8266 fonctionnant uniquement en 3.3v, il faut configurer le FTDI en 3.3v


  2. Le Rx du FTDI doit être connecté au Tx0 de l’ESP et le Tx du FTDI doit être connecté sur le Rx0 de l’ESP


  3. Sur l’ESP, le Tx1 doit être relié à VCC pour qu’il soit neutralisé et qu’il ne perturbe pas l’ESP durant la communication entre le FTDI et l’ESP

MAJ du Firmware

Liens_Web
  1. Téléchargement et installation d’ESPTool

    EspTool permet d’effacer l’ESP ou d’y téléverser un nouveau Fimware. Par défaut, la cible est l’ESP8266. Pour sélectionner un autre composant (comme l’ESP32), il faut consulter la documentation

    Il peut être installer directement avec pip :

    pip install esptool
    

    Ou peut être utiliser directement si on récupère de le dépôt et que l’on travail depuis le dossier extrait à partir de l’archive.

  2. Récupérer le binaire à téléverser

    Par défaut le firmware installer dans le NodeMCU est en LUA. Il est possible de mettre un firmaware MicroPython.

    N.B: La programmation de l’ESP depuis l’IDE Arduino écrase le firmware présent dans

    l’ESP pour mettre le siens à la place.

    1. Firmware original (LUA)

    2. Firmware MicroPython

    3. Programmer l’ESP depuis l’IDE Arduino

      Liens_Web
  3. Déployer un nouveau Firmware

    Liens_Web
    1. Rappel : Identifier les ports COM utilisés

      • Sous Windows :

        'Gestion de l'ordinateur\Gestionnaire de péripérique\Ports (COM et LPT)'
        
      • Sous Linux :

        ls /dev/ttyUSB*
        
    2. Ecraser la flash

      esptool.py --port /dev/ttyUSB0 erase_flash
          # example sous linux
      
    3. Déployer le nouveau Firmware

      esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dio 0 esp8266-20170108-v1.8.7.bin
          # L'ESP supporte bien un baurate de 460800 pour le déploement du Firmware
      

OSError: [Errno 2] ENOENT: main.py

Après avoir flasher le firmware, on peut avoir le message d’erreur :

OSError: [Errno 2] ENOENT: main.py

Se message apparait lors de la connexion au terminal série (en REPL). Il n’est alors plus possible d’interagir avec le micro-contrôler.

Ce message vient du faite que lors du déploiement du firmware, le fichier “main.py” n’est pas créer.

Pour corriger ce problème il faut soit le créer soit le copier à partir de l’utilitaire python “RSHELL”


Utilisation avec MicroPython

Liens_Web
INFOS
  • Micropython n’est pas très évolué. Il ne supporte pas les Class ou les scripts trop complexes

  • L’ESP8266, n’a pas de coprocesseur Arithmétique. Les opération mathématiques complexe ou avancées ne sont pas possibles

RSHELL

Liens_Web
Définissions

RShell est un simple shell qui est exécuté sur un hôte et utilise le more raw-REPL de Micropython pour envoyer des commandes vers une carte micro python.

Cela permet:

  • d’obtenir des informations sur le système de fichier

  • de transférer des fichiers vers ou depuis la carte

  • d’établir une session REPL.

Comme il est possible d’invoquer REPL, RShell peut également être utilisé comme un émulateur terminal.

Installation et démarrage

RSHELL est un programme python :

pip install rshell
Ouvrir une session
/!\Attention/!\

Sur un ESP8266, il est impératif de réduire la taille du buffer à 128 octets pour le pas écraser le système de fichier.

L’ouverture de session se fait avec la commande suivante :

# Linux
rshell --port /dev/ttyUSB0 --baud 115200 --buffer-size 128 --editor nano

# Windows
# sous Windows, il est inutle de préciser l'éditeur car il n'y en as pas d'utilisable en ligne
# de commande.
rshell --port COM3 --baud 115200 --buffer-size 128

Utilisation

  • help : pour obtenir la liste des commandes :

    Documented commands (type help <topic>):
    ========================================
    
    args    cat  connect  echo  exit      filetype  ls     repl  rsync
    boards  cd   cp       edit  filesize  help      mkdir  rm    shell
    
Accéder au système de fichier de la carte
  • Pour accéder au système de fichier :

    /pyboard
    
    ex:
    ls -l /pyboard
    
  • Pour accéder à la flash :

    # (Non testé)
    /flash
    
  • Pour accéder à la carte sd :

    # (Non testé)
    /sdcard
    
Créer un fichier
  1. Se connecter au REPL :

    repl
    
    Entering REPL. Use Control-X to exit.
    >
    MicroPython v1.10-8-g8b7039d7d on 2019-01-26; ESP module with ESP8266
    Type "help()" for more information.
    >>>
    >>>
    
  2. Créer simplement le fichier en python :

    >>> fileName = "main.py"
    >>> f = open(fileName, "w+")
    >>> f.write("# main.py")
    9
    >>> f.close()
    
  3. Vérifier que le fichier à bien été créer :

    ls -l /pyboard
    
        230 Dec 31 1999  boot.py
         9 Apr  6 19:23  main.py
    
  4. Consulter le contenu d’un fichier :

    cat /pyboard/main.py
    
    # main.py
    
Copier un fichier local sur la carte
cp main.py /pyboard

REPL, WebREPL et File System

Il est possible d’interagir directement avec l’ESP. Soit depuis le port série, c’est le REPL. Soit au travers d’un WebSocket, c’est le WebREPL. Le deux modes renvoie la même console d’interprétation Python.

N.B: Une fois dans la console Python, il faut tapez “help()” pour connaitre les opérations spécifiques applicable à MicroPython et à LESP8266.

REPL
  • Accessible depuis un terminal sur le port COM de l’ESP avec un Baudrate de 115200

WebREPL
  • Activer le WebREPL au démarrage:

    # Depuis le REPL (terminal serie)
    >>>import webrepl_setup
    
    --> 'E' pour activer le WebREPL au démarrage
    --> saisir et confirmer un mot de passe
    
  • Accessible depuis un navigateur Web. Le Wifi doit au préalable avoir été configuré depuis le REPL. Il est accessible depuis l’url : http://micropython.org/webrepl/. Le WebSocket associé se présente sous la forme suivante :

    ws://<Adresse_ip>:8266
    
    ex:
    ws://192.168.1.26:8266
    
File_System_(FS)

Un système de fichier est présent dans MicroPython. Il permet de déposer des fichiers (en “.py” par exemple) qui seront Exécutés / consultés après la fin de la séquence de démarrage.

  • boot.py: C’est un fichier obligatoire qui est créer automatiquement. Il est possible de le modifier, mais ce n’est pas conseiller. Ce fichier est le premier qui sera exécuté au démarrage de l’ESP.

  • main.py: Ce fichier sera appeler automatiquement par “boot.py” si il existe. Il n’est pas obligatoire si on utilise l’ESP manuellement (seulement depuis la console python).

Adafruit a créer un CLI permettant de déposer et récupérer des fichiers dans le FS au travers de la liaison série : https://github.com/adafruit/ampy

Conclusion sur MicroPython et l’ESP8266

L’ESP8266 est une bestiole sympa qui mérite d’être utilisée. Malheureusement MicroPython est trop limité et trop restrictif. Cela pénalise l’ESP. Pour utiliser l’ESP de façon avancée, il est conseillé de l’utiliser au travers de l’IDE ARDUINO.


WEMOS D1 Mini avec Arduino

Installation de la carte dans l’IDE Arduino

Liens_Web

Installer l’utilitaire de gestion de fichiers (zone SPIFFS)

Liens_Web

Utilisation du système de fichiers (FS)

  1. Créer dans le dossier contenant le fichier “.ino” un sous dossier “data”

  2. Mettre les fichiers devant être téléverser dans le FS dans le dossier data :

    .\data\index.html
    
  3. Ouvrir le sketch devant être téléverser

  4. Depuis le menu “Outils”, sélectionner “ESP8266 Sketch Data Upload”. Attention, pas de confirmation, téléversement direct.

    /!\ Attention /!\ : Il faut fermer la console série pendant le téléversement des fichiers sinon l’opération échoue.