ESP8266-DEV

De MCHobby - Wiki
Sauter à la navigation Sauter à la recherche

L'ESP8266-DEV & ESP8266-EVB

Ce tutoriel se concentre sur le Flash de MicroPython sur un ESP8266-EVB (carte d'évaluation d'Olimex avec Relais) et l'ESP8266-DEV (carte ESP8266 d'Olimex destinée aux développements).

 

Mise en oeuvre de l'ESP8266 par Olimex Ltd sous forme d'une carte d'évaluation, la déclinaison de l'ESP8266 est nettement améliorée avec:

  • Des entrées/sorties en quantité,
  • Un accès au convertisseur Analogique/Digital (1V max),
  • 2 Mo de mémoire Flash (contrairement aux autres modules ne proposant que 512Ko),
  • Une interface SDIO.

La carte d'évaluation apporte:

  • Une fiche Jack d'alimentation (5V) et régulateur de tension
  • Un relais
  • Un bouton poussoir
  • Un connecteur UEXT (pour brancher facilement des modules complémentaires)
    • Interface série
    • Bus I2C
    • SPI
  • Exposition de nombreux signaux sur le connecteur CON3
    • GPIOs additionnels
    • signaux SD_IO
    • Enable, ...

Olimex c'est aussi une garantie de qualité et de pérennité de gamme.

Connexion Série

Etant donné que le l'ESP8266-DEV (et donc ESP8266-EVB) ne disposent pas de convertisseur USB-Série, il sera donc nécessaire d'utiliser un câble console (USB-Série-TTL) pour communiquer avec la carte ESP8266.

   

Flasher MicroPython

Pour flasher MicroPython sur l'ESP8266-DEV (module ESP8266) qui équipe la carte d'évaluation d'Olimex (ESP8266-EVB), nous vous proposons le tutoriel Charger MicroPython ci-dessous.

Utiliser MicroPython sur ESP8266 nécessite de Flasher le MicroContrôleur avec le Firmware et d'utiliser des outils appropriés pour communiquer avec lui. Vous trouverez ci-dessous une sélection de tutoriel pour vous préparer. Nous recommandons vivement l'usage de RSHell, même si Ampy reste une solution plus simpliste (mais aussi nettement plus limitée).

Charger MicroPython

Apprenez comment charger le Firmware MicroPython sur une carte Pyboard, ESP8266 (Feather, Wemos, NodeMcu), etc.

RShell

Transférez des fichiers et contrôlez votre carte depuis une simple connexion série. ESP8266 compatible.

Ampy

Outil simplifié de transfert de fichiers et de contrôlez de carte depuis une connexion série. ESP8266 compatible.

 

RShell sur ESP8266

Une petite pointe de rappel pour l'utilisation des ESP8266 avec RShell...

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

Nous avons également un petit script shell rsheel-esp8266.sh pour faciliter faciliter le démarrage de rshell pour un esp8266.

ESP8266-EVB en détails

Les différents éléments de la carte se présentent comme suit:

 

Avec le diagramme suivant publié par Olimex :

 

La carte propose deux connecteurs: un connecteur UEXT et un connecteur additionnel (CON3).

Connecteur UEXT

Le connecteur UEXT est connecteur 10 broches permettant de transporter les bus les plus fréquemment utilisés sur les microcontrôleurs avec:

  • un bus I2C
  • un bus SPI
  • un port série

 

Connecteur CON3

Le connecteur CON3 reprend différents signaux dont le GPIO 0, GPIO 5, GPIO 16.

Le convertisseur ADC (Analogique --> Digital) est également disponible 1 Volts max. L'entrée ADC peut aussi être utiliser comme entrée digitale à condition d'employer un pont diviseur de tension adéquat pour ne pas dépasser 1V sur l'entrée.

 

Commander le relais

Comme indiqué sur le schéma ci-dessous,le relais en branché sur le GPIO 5.

 

>>> from machine import Pin
>>> relay = Pin(5, Pin.OUT)
>>> relay.value( 1 ) # Relais activé
>>> relay.value( 0 ) # Relais inactif
>>> relay.value( 1 ) # Relais activé
>>> relay.value( 0 ) # Relais inactif
>>> relay.value( 1 ) # Relais activé
>>> relay.value( 0 ) # Relais inactif

Utilisation de l'entrée

La lecture de l'entrée bouton se fait sur le GPIO 0.

 

En pressant le bouton, l'entrée GPIO 0 est placée à la masse. Cela implique donc qu'il faut activer la résistance pull-up interne sur le GPIO 0. Par conséquent:

   Switch OUVERT : GPIO 0 = HIGH (3.3v)
   Switch FERME : GPIO 0 = LOW (0v)

Le script suivant lit le GPIO 0 à interval régulier et affiche le résultat dans la session REPL.

>>> from machine import Pin
>>> from time import sleep_ms
>>> btn = Pin( 0, Pin.IN, pull=Pin.PULL_UP )
>>> while True:
>>>     print( '--' if btn.value()==1 else 'PRESSE' )
>>>     sleep_ms( 300 )

Ce qui produit les résultats suivants sur la session REPL.

--
PRESSE
PRESSE
PRESSE
--
--
--
--
--
PRESSE
--
--
PRESSE
--
--
--
--