Prendre en main nodeMCU sur ESP8266

NodeMCU est un framework qui permet, via du code lua, de programmer un ESP comme on programmerait un Arduino. Globalement on peut faire la même chose que sur ces derniers mais avec en plus une connexion wifi ! Cet article va vous guider de l’achat du matériel a la création d’un petit serveur de démo!

le choix du matériel

Il existe des dizaines de variantes de l’esp8266. Certaines incluent seulement la puce (ESP01, ESP12, etc). Mais certaines incluent carrément des outils de développement (NodeMCU dev kit ou Wemos). Pour les puces seules, il vous faudra rajouter une alimentation stabilisée en 3.3 volts, et convertir toutes les entrées dans cette tension (Arduino fonctionne en 5volts et grillera votre ESP). Il faudra aussi rajouter une interface Série vers USB pour le programmer. En bref, ce n’est pas l’idéal et je vous déconseille cette option pour commencer.

L'esp8266 existe a partir de 3 euros les deux. Attention, il vous faudra un adaptateur usb pour le programmer facilement.

ESP8266

NodeMCU Dev Kit rajoute autour de l’ESP un régulateur de tension, rend les pins 5v tolérants, et ajoute un convertisseur Série to Usb directement sur la carte. Avec cette option, il y a juste à brancher en USB, presser le bouton Flash et uploader votre code ! On dispose aussi d’un bouton reset et d’une dizaine de pins d’IO libres. C’est déjà beaucoup plus simple pour commencer !

On trouve des NodeMCU Dev Kit à partir de 5eur pièce.

NodeMCU DEVKIT 1.0

Enfin, ma solution préférée, le Wemos D1 ! Ici on se retrouve avec une puce sur une carte beaucoup plus petite que pour NodeMCU Dev Kit. On retrouve toujours le régulateur 3.3v (de meilleure qualité) et le convertisseur Usb to Serial. Autre avantage, il n’y a plus de bouton Flash. La puce détecte l’upload de firmware et passe automatiquement en mode flash comme le fait l’Arduino !

Wemos D1

Si vous êtes nouveau dans le monde de l’ESP, choisissez le WemosD1 ! C’est une valeur sure !

Option la moins chère, Wemos D1 est a 8euros les 3. Existe aussi avec des addons batterie et écran OLED.

Premier flash

Pour la suite, je vais partir du principe que vous avez une Wemos D1 ou un NodeMCU devkit.

De base, la puce vient souvent avec un firmware très ancien. On va donc flasher une nouvelle version de NodeMCU.

  • Téléchargez ESP8266Flasher.
  • Téléchargez nodeMCU
  • Lancez ESP8266Flasher.
  • Dans l'onglet configuration: Sélectionnez le .bin et définissez 0x00000 comme adresse
  • Passez l'ESP en mode Flash (Maintenez FLASH et appuyant brièvement sur RESET. Au bout de quelques secondes vous pourrez relâcher FLASH)
  • Dans l'onglet principal, cliquez sur FLASH
  • Au bout de quelques secondes, la barre défilera.
  • Lorsque la barre aura fini d'avancer, il faudra attendre quelques secondes puis RESET l'ESP.

Premiere connection

Pour se connecter a l 'ESP, on utilisera ESPlorer, telechargeable sur le Site officiel d'ESPlorer Le baudrate par default est soit 72880, soit 115200.

Au premier démarage, l'ESP va formatter son systeme de fichier et restera bloqué une dizaine de minutes dessus. Ceci est tout a fait normal et il faudra patienter.

Au prochain reboot, votre ESP sera pret à etre utilisé !

Il faudra ensuite le connecter a votre WIFI. Pour se faire, j'utilise le code suivant:

wifi.sta.autoconnect(0)
wifi.setmode(wifi.STATION)
station_cfg={}
station_cfg.ssid="SETWIFINAME"
station_cfg.pwd="SETWIFIPASSWD"
station_cfg.save=false
print("Set conf")
wifi.sta.config(station_cfg)
print("Connect")
wifi.sta.connect()
print("Conn done")

tmr.alarm(1, 250, tmr.ALARM_AUTO, function () 
	local ip = wifi.sta.getip()
	if ip then
		tmr.stop(1)
		print("Mon IP: " .. ip)
	end
end)

Une fois executé, votre ESP va se connecter au wifi et finir par afficher son IP dans la console. Ce code sera à executer à chaque debut de sketch, mais vous pouvez aussi laisser l'ESP se connecter tout seul apres chaque redemarrage en mettant wifi.sta.autoconnect(1) et station_cfg.save=true

Premier script

Notre ESP est maintenant connecté a la fois a notre PC et a notre wifi. Il est maintenant temps de faire quelque chose avec !

Le script suivant permet d'afficher dans la console un Hello world chaque seconde:

-- Config
local duration = 1000    --> 1 second


-- Function toggles LED state
function sayHello()
    print("Hello!")
end

-- Create an interval
tmr.alarm(0, duration, 1, sayHello)

Uploadez ce fichier vers sayHello.lua, et voila, notre ESP commence a parler!

Par contre, si vous appuyez sur RESET, la fonction s'arrete, meme si le fichier est toujours sauvegardé sur l'ESP. Il nous manque un init.lua pour lancer des action automatiquement au démarrage!

J'utilise ce code pour initialiser mes ESP:

function startup()
	print("STARTING...")
	dofile("sayHello.lua")
end

tmr.alarm(0, 5000, tmr.ALARM_SINGLE, startup)

Dans ce script, je definie un timer de 5 secondes avant de lancer mon vrai programme. Cela permet, si jamais je fais une erreur de script, d'avoir la main pendant quelques secondes au demarrage afin d'uploader un autre script. Si vous ne faites pas cela, vous pouvez vous bloquer vous-meme en dehors de votre ESP et devoir reflasher le firmware de zero !

N'hesitez pas à me partager vos creations par email. Je pourrais sans probleme leur dedier un article pour les plus prometteuses d'entre elles !

Qu'avez vous pensé de cet article?