Où sommes nous ?

Retour

Installation de l'IDE Arduino pour ESP8266

Il est possible de programmer un ESP-8622 dans différents langages : Lua, Python, Javascript. Mais il est aussi possible de le programmer en C++ comme on le ferait avec un Arduino.
C'est ce que je vais décrire dans cette page.

L'exercice se fera avec un ESP-12 NodeMCU qui a l'avantage de simplifier grandement les choses : il peut être alimenté directement par un câble micro USB qui permettra aussi de téléverser nos programmes et de les déboguer par les messages qu'on enverra sur leur sortie série. Comme son nom l'indique, 12 GPIO sont aussi disponibles. Tout ça pour un peu plus de 2€, que demander de plus (bon, ok, avec la possibilité d'y connecter une antenne externe, ca aurait été encore mieux )

Configuration de Linux

Système

Le NodeMCU apparaitra côté nunux comme un adaptateur USB -> Série à base de CH341 (et non CP120x comme on peut le voir parfois) : il faut donc vérifier que USB_SERIAL_CH341 est bien compilé dans notre kernel.

laurent@PSet ~ $ grep USB_SERIAL_CH341 /usr/src/linux/.config
CONFIG_USB_SERIAL_CH341=m

Une fois connecté, il apparait en tant que ttyUSBx (où le x dépend évidemment du nombre d'autres adaptateurs du même genre présent sur la machine).

Oct  8 14:28:26 pset kernel: usb 3-2: new full-speed USB device number 3 using xhci_hcd
Oct 8 14:28:26 pset kernel: usb 3-2: New USB device found, idVendor=1a86, idProduct=7523
Oct 8 14:28:26 pset kernel: usb 3-2: New USB device strings: Mfr=0, Product=2, SerialNumber=0
Oct 8 14:28:26 pset kernel: usb 3-2: Product: USB2.0-Serial
Oct 8 14:28:26 pset mtp-probe[5356]: checking bus 3, device 3: "/sys/devices/pci0000:00/0000:00:14.0/usb3/3-2"
Oct 8 14:28:26 pset mtp-probe[5356]: bus: 3, device: 3 was not an MTP device
Oct 8 14:28:26 pset kernel: usbcore: registered new interface driver ch341
Oct 8 14:28:26 pset kernel: usbserial: USB Serial support registered for ch341-uart
Oct 8 14:28:26 pset kernel: ch341 3-2:1.0: ch341-uart converter detected
Oct 8 14:28:26 pset kernel: usb 3-2: ch341-uart converter now attached to ttyUSB0
laurent@PSet ~ $ ls -l /dev/ttyUSB?
crw-rw---- 1 root uucp 188, 0 8 oct. 14:28 /dev/ttyUSB0

Pour y avoir accès, notre utilisateur doit faire partie du groupe uucp d'où un classique

usermod -a -G uucp laurent

(vous relogger pour que ce soit pris en compte).

Java

L'IDE arduino est (malheureusement) en Java qui doit être installée sur votre système. Il faut donc une machine avec pas mal de mémoire et un CPU véloce : ça swappe sur une de mes machines de teste avec seulement 1Go de RAM.

laurent@PSet ~ $ java -version
openjdk version "1.8.0_144"
OpenJDK Runtime Environment (IcedTea 3.5.1) (Gentoo icedtea-3.5.1)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

Installation de l'IDE

Téléchargez l'archive de l'IDE arduino depuis cette page puis décompressé la : chez moi, ça se fera dans /usr/local

Puis lancer le script install.sh qui créera une entrée dans le menu électronique et liera les fichiers .ino avec cette IDE.

Configurons

Menu > Fichiers > Préférence : il faut indiquer à l'IDE où trouver les définitions de l'ESP (le cadre rouge).

http://arduino.esp8266.com/stable/package_esp8266com_index.json

L'éditeur interne est certes suffisant, il m'y manque cependant les raccourcis de Vim : c'est pourquoi, j'ai coché (en vert) "Editeur externe". Dans ce mode, l'interface passe en mode "lecture seule" et l'édition se fait directement dans le fichier projet.

Outils > Type de carte > Gestionnaire de carte : sélectionnez "esp8266" et installer ... patientez quelques minutes, minutes qui dépendront de la rapidité de votre ligne ADSL et de votre machine (ha, java).

Il ne reste plus qu'à sélectionner notre carte (NodeMCU 1.0 dans mon cas) et le port série virtuel dans outils > Ports. Si /dev/ttyUSB0 n'apparaît pas, c'est que le kernel n'est pas correctement configuré. On laisse la vitesse par défaut. Voilà, nous en avons fini.

Premier test

Sur les ESPs que j'ai essayés, les LEDs sont allumées lorsque le GPIO est au niveau bas.

L'interface affiche le squelette d'un programme pour Arduino, que l'on nomme Croquis en Français, ou Sketch dans la langue de Shakespeare.

Pour ceux qui ne connaissent pas, il s'agit d'un dérivé du C++, mais un peu déroutant, car il n'y a pas de main(), juste

Le menu Fichier > Exemples contient, ho surprise, des exemples de programmation. Nous choisons Blink qui fera clignoter la LED incluse sur l'ESP. De base, il ne fonctionnera pas (dommage) car la dite LED d'un ESP se trouve sur un autre GPIO que sur un Arduino : il faut donc ajouter un

#define LED_BUILTIN 2

Téléversons par l'appuis sur le 2nd bouton en forme de flèche : le code se compile, l'IDE indique la place prise

Archiving built core (caching) in: /tmp/arduino_cache_599688/core/core_esp8266_esp8266_nodemcuv2_CpuFrequency_80,UploadSpeed_115200,FlashSize_4M3M_d9dc56dc5851248c94f446b80837086d.a
Le croquis utilise 222145 octets (21%) de l'espace de stockage de programmes. Le maximum est de 1044464 octets.
Les variables globales utilisent 31512 octets (38%) de mémoire dynamique, ce qui laisse 50408 octets pour les variables locales. Le maximum est de 81920 octets.

houlala, 21% juste pour faire clignoter une LED ???? Ben oui, n'oublions pas la place prise par les librairies standards. Mais il reste largement suffisamment de place pour faire des trucs sympa.

Puis il est téléversé en quelques secondes : la LED se met à clignoter.


Visitez :
La liste de nos voyages
Nos sorties Ski et rando
Copyright Laurent Faillie 2001-2017
N'oubliez pas d'entrer le mot de passe pour voir aussi les photos perso.
Contactez moi si vous souhaitez réutiliser ces photos et pour les obtenir avec une plus grande résolution.
Visites durant les 7 derniers jours Nombre de visites au total.

Vous pouvez laissez un commentaire sur cette page.