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!
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.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.
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 !
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.
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.
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
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 !