FEATHER-ESP8266-NodeMCU-Lua
Préambule
Chaque carte Feather HUZZAH ESP8266 est livré préprogrammé avec l'interpréteur Lua de NodeMCU. Au moment de la traduction de ce tuto, c'est la version NodeMCU 0.9.5 build 20150318 powered by Lua 5.1.4 qui est distribué mais vous pourriez avoir une version plus récente.
L'interpréteur Lua s'exécute sur l'ESP8266 et vous pouvez saisir des commandes et lire le résultat via le port série. Pour pouvoir télécharger du code sur l'ESP8266 et utiliser la console série, connectez un câble micro-USB sur le Feather HUZZAH et sur le port USB de votre ordinateur. Installez le pilote USB CP2104 pour voir apparaître le port USB/Série (et qu'il soit correctement accessible)
N'oubliez pas d'installer le Pilote USB pour le convertisseur USB-vers-Serie CP2104! |
Ouvrir une console série
Ouvrez ensuite un logiciel "console/terminal série" sur votre ordinateur. Vous pouvez utiliser un logiciel tel que CoolTerm (Mac) ou Putty (Windows) ou screen (linux). Le programme Teraterm semble ne pas apprécier le flux de donnée initial débité à 74400bps produit par l'ESP8266 (vous pouvez l'essayer mais vous aurez probablement besoin de réinitialiser votre programme console).
Connectez vous sur le port COM/série utilisé par votre câble, fixez le débit à 9600 Baud
Assurez-vous d'avoir désactivé la gestion matériel du contrôle de flux (cherchez les termes handshake ou flow control).
Crédit: AdaFruit Industries www.adafruit.com
Une fois le logiciel terminal connecté sur l'ESP8266, cliquez sur le bouton Reset de la carte Feather et vous verrez apparaître le message de bienvenue:
Crédit: AdaFruit Industries www.adafruit.com
Si vous ne voyez pas apparaître ce message, vérifiez d'abord si les LEDs rouge/bleue clignotent lorsque vous pressez le bouton Reset. Si les LEDs ne clignotent pas, assurez-vous d'avoir bien sélectionné le débit de 9600 bauds dans votre logiciel terminal.
Hello World
Nous pouvons maintenant allumer une LED. Il y a une LED rouge sur chaque carte, elle est connectée sur le broche GPIO #0
La numérotation des broches de NodeMCU n'est pas identique à celle utilisée pour Arduino/gcc. Adafruit à imprimé la numérotation Arduino sur les cartes... faites attention! |
La documentation Lua pour l'ESP8266 a inversé les GPIO #4 et #5 swapped. Si les brcohes #4/#5 ne fonctionnent pas comme attendu, essayez de les inverser! |
Note concernant la broche |
Carte/Arduino | NodeMCU/Lua |
Pas de pullup! | 0 | 3 |
2 | 4 | |
3 | 9 | |
4 | 1 | |
5 | 2 | |
9 | 11 | |
10 | 12 | |
12 | 6 | |
13 | 7 | |
14 | 5 | |
15 | 8 | |
16 | 0 |
Par conséquent, pour allumer ou éteindre la LED sur la broche #0 (qui sera la broche #3 dans Lua), nous allons configurer la broche en sortie:
gpio.mode(3, gpio.OUTPUT)
Allumer la LED avec:
gpio.write(3, gpio.LOW)
Et éteindre la LED:
gpio.write(3, gpio.HIGH)
Nous pouvons automatiser un peu les choses en utilisant le code suivant:
while 1 do gpio.write(3, gpio.HIGH) tmr.delay(1000000) -- attendre 1.000.000 µs = 1 seconde gpio.write(3, gpio.LOW) tmr.delay(1000000) -- attendre 1.000.000 µs = 1 seconde end
Ce qui fait clignoter LED en continu.
Note:
Etant donné que c'est une boucle infinie, il n'est pas possible de l'arrêter via l'interpréteur. Pressez une nouvelle fois le bouton Reset pour arrêter la boucle!
Scanner le réseau WiFi et connexion
Continuons avec cette petite démo qui scan et connecte les réseaux WiFi et s'y connecte.
Once you're back at the Lua prompt, set the ESP8266 into WiFi Client mode with
wifi.setmode(wifi.STATION)
Then you can run the scanner and have it print out the available AP's
-- affiche la liste ap (Access Point = Point d Acces) function listap(t) for k,v in pairs(t) do print(k.." : "..v) end end wifi.sta.getap(listap)
ou pour plus de détails...
-- afficher la liste des Access Points function listap(t) for ssid,v in pairs(t) do authmode, rssi, bssid, channel = string.match(v, "(%d),(-?%d+),(%x%x:%x%x:%x%x:%x%x:%x%x:%x%x),(%d+)") print(ssid,authmode,rssi,bssid,channel) end end wifi.sta.getap(listap)
Nous pouvons nous connecter sur un point d'accès à l'aide de wifi.sta.config et wifi.sta.connect - ce qui prendra une seconde ou deux pour établir complètement la connexion. Vous pouvez interroger l'état du module à l'aide de wifi.sta.status(). Lorsque vous obtenez la valeur 5, cela signifie que le processus de connexion et DHCP (obtention de l'adresse IP) sont complétés avec succès.
wifi.sta.config("nom_du_point_d_access","votre_mot_de_passe") wifi.sta.connect() tmr.delay(1000000) -- attendre 1,000,000 µs = 1 seconde print(wifi.sta.status()) print(wifi.sta.getip())
Exemple WebClient
Une fois l'adresse IP obtenue, vous pouvez vous connecter sur un site (Adafruit par exmple) et lire + afficher le contenu d'une page web.
Saisissez le code suivant:
sk=net.createConnection(net.TCP, 0) sk:on("receive", function(sck, c) print(c) end ) sk:connect(80,"207.58.139.247") sk:send("GET /testwifi/index.html HTTP/1.1\r\nHost: www.adafruit.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
Vous pouvez également demander au module de faire une résolution DNS pour vous. Il suffit de lui communiquer le nom de l'hôte (hostname) à la place de l'adresse IP:
Saisissez le code suivant:
sk=net.createConnection(net.TCP, 0) sk:on("receive", function(sck, c) print(c) end ) sk:connect(80,"www.adafruit.com") sk:send("GET /testwifi/index.html HTTP/1.1\r\nHost: www.adafruit.com\r\nConnection: keep-alive\r\nAccept: */*\r\n\r\n")
Voici qui termine cette petite introduction (et tests) deu breakout ESP8266 / Feather ESP8266!
Pour plus d'information, voyez la page du tutoriel NodeMCU sur https://github.com/nodemcu/nodemcu-firmware/wiki/nodemcu_api_en. Vous y obtiendrez de nombreux détails sur les fonctions disponibles. Vous pouvez également consulter le lien http://www.lua.org pour en apprendre plus sur le langage de scripting Lua.
Source: Adafruit Feather ESP8266 créé par LadyAda pour AdaFruit Industries. Crédit [www.adafruit.com AdaFruit Industries]
Traduit par Meurisse D. pour MCHobby.be
Traduit avec l'autorisation d'AdaFruit Industries - Translated with the permission from Adafruit Industries - www.adafruit.com
Toute référence, mention ou extrait de cette traduction doit être explicitement accompagné du texte suivant : « Traduction par MCHobby (www.MCHobby.be) - Vente de kit et composants » avec un lien vers la source (donc cette page) et ce quelque soit le média utilisé.
L'utilisation commercial de la traduction (texte) et/ou réalisation, même partielle, pourrait être soumis à redevance. Dans tous les cas de figures, vous devez également obtenir l'accord du(des) détenteur initial des droits. Celui de MC Hobby s'arrêtant au travail de traduction proprement dit.