Le Monde des Objets Connectés
Le Monde des Objets Connectés
Robots et Objets Inter-Connectés
Le Monde des Objets Connectés
Techcryptage : De quoi sâagit-il ?
Ătude du NodeMCU Developpement Kit
Installation et Configuration -
Chargement âFlashageâ du dernier micro-code âFirmwareâ NodeMCU
Nos premiers pas avec LUA
1) DĂ©butons par le classique âBonjour Ă Tousâ
2) Plus sĂ©rieux : Le Bonjour des geek, la LED qui clignote âle blinkâ
3) CrĂ©ation dâun fichier programme dans notre NodeMCU
4) SĂ©quence dâinitialisation sous LUA
5) Utilisation du script de transfert luatool
Un IDE pour lâESP8266 & NodeMCU
(Fin provisoire de lâarticle)
A.1) Outils pour flacher le firmware :
Récupération firmware en mode Windows
ESP8226 avec lâIDE Arduino
Exemples de codes & montages
Mise en place dâun container docker ESP
Techcryptage : De quoi sâagit-il ?
De crĂ©er une infrastructure dâObjets en ConnectĂ©s sans fil, qui interagiront de façon autonome comme un assistant global. Une espĂšce de Robot Ă©thĂ©risĂ© Ă notre service.
Un exemple, un peut futuriste (mais si peut) de ce concept dans notre vie quotidienne :
Votre rĂ©veil connectĂ© Ă votre smartphone sâest programmĂ© tout seul grĂące Ă votre agenda Ă©lectronique, ce mĂȘme rĂ©veil a programmĂ© le grille-pain pour que votre tartine saute en mĂȘme temps que le cafĂ© est servi. Votre voiture a programmĂ© lâouverture des portes de votre garage etc ..
Ainsi Internet et les objets connectĂ©s ne forme plus quâun ensemble Ă la fois physique et virtuel.
Techniquement, lâinternet des objets est un rĂ©seau de rĂ©seaux qui permet par des systĂšmes dâidentifications complexes de transmettre des donnĂ©es entre objets physiques et virtuels. Ainsi Internet nâest plus quâun rĂ©seau invisible mais il prend forme dans ces objets.
On peut imaginer, ce rĂ©seau dâobjets connectĂ©s, un peut comme un robot autonome Ă notre service.
Dans une vision optimiste, avec lâassistance de lâintelligence artificielle, cette nouvelle urbanisation dâobjets connectĂ©s sera dotĂ© de comportement dâassistant, proche de celle que nous pouvons nous mĂȘme apportĂ© Ă notre entourage.
Le dĂ©veloppement de cette nouvelle sphĂšre dâobjets inter-agissant dans notre quotidien, constituera en soi un Ă©cosystĂšme de âcyber-objetsâ, qui sera bien plus efficace, quâune simple agrĂ©gation dâobjets, mais un ensemble dâagents Ă©conomiquement utile Ă la SociĂ©tĂ©.
Globalement, Câest une bataille technologique aux enjeux considĂ©rables. OpĂ©rateurs et industriels sont en train de crĂ©er de nouveaux rĂ©seaux de communication pour les milliards dâobjets connectĂ©s qui nous attendent dans lâavenir.
Votre curiositĂ© Ă Ă©tĂ© titillĂ©, vous voulez en savoir dâavantage tout en restant gĂ©nĂ©raliste :
Objet connecté : histoire et définition
Les différents usages des objets connectés
Remarque globale de lecture :
Lâarticle se situ Ă deux niveaux,
lâun gĂ©nĂ©raliste dans lâesprit Techcryptage, rend compte du sujet, sans plonger dans les rouages des techniques nĂ©cessaires au fonctionnement de la technologie Ă©voquĂ©e.
Un second pour comprendre comment mettre en Ćuvre cette technologie, avec dĂ©tails et exemples de rĂ©alisations. Cette partie sâadresse bien sur aux membres du groupe ”System, et ceux qui Ă cette occasion oseront plonger dans ce grand bain du nouvel internet, celui des Objets.
Pour chaque chapitre, je proposerais une intro de type TechCryptage.
Pour une connaissance fonctionnelle des objets connectĂ©s vous pouvez picorer, en sautant de âTechcryptageâ en âTechcrypageâ le long de lâarticle.
Lâobjectif de lâarticle est dâapporter une description dĂ©taillĂ© avec le support dâexemples de rĂ©alisation, permettant Ă ceux qui le souhaitent de construire ou dâadapter un rĂ©seau dâobjets connectĂ©s, en utilisant les briques techniques de bas niveau. Par lâĂ©tude des composants matĂ©riels et logiciels constituant ce cette vaste technologie des Objets ConnectĂ©s.
Lâon va dĂ©buter cette Ă©tude avec lâun des composants clĂ© de ce bouillonnement (buzz), des objets connectes, le Module ESP8266.
LâESP8266 est un module de communication Wifi-SĂ©rie (je reviendrais sur cette dĂ©finition) apparu ces derniers temps (fin 2013 - dĂ©but 2014 pour les premiĂšres versions fiabilisĂ©es).
LâESP8266 est un design Open-Hardware dâESPressif Systems une entreprise chinoise.
ProposĂ© Ă un tarif trĂšs agressif (Ă partir de 2⏠sur les sites chinois) avec un positionnement en Open-Hardware, cela Ă contribuer dâemblĂ©e Ă une explosion de lâoffre.
Une gamme1 en forte croissances de modules sont disponible chez de nombreux fournisseurs 2.
La version initiale lâESP-01 dâune taille rĂ©duite (env une piĂ©ce de 2âŹ) contient :
Le ”ContrÎleur EPS8266 à 80Mhz ,
une puce WI-FI avec son antenne,
un port série et deux Entrées/Sorties (GPIO).
Dâautres versions, contiennent dâavantages de GPIO, ou dâautres particularitĂ©s, forcement positionnĂ© sur une grille de tarif adaptĂ©.
Certains modules comme le NodeMCU3 incorpore un modĂšle EPS-12 ou EPS-12E sur une mini carte mĂšre comprenant un connecteur micro USB et un brochage normalisĂ© pour les platines dâexpĂ©rimentations (breadboard), simplifiant lâĂ©laboration du prototypage. Le ModeMCU est conçus comme un kit dâinitiation au module ESP8266.
le NodeMCU dĂ» Ă ses caractĂ©ristiques dâoutils dâexpĂ©rimentation, sera le premier module Ă©valuĂ© dans cette Ă©tude.
Un Forum (ESP8266 Community Forum) ainsi quâun Wiki fĂ©dĂšre une communautĂ© assez active.
Le module ESP8266 est avant tout un équipement de communication série :
soit en mode direct cùblé,
soit en mode sans fil Wifi, qui reste une encapsulation dans le protocole Wifi, dâune communication sĂ©rie standard. Câest en effet une Communication de type UART, comme celle que lâon retrouve dans les modules de communication sĂ©rie sans fil traditionnel 433MHz .
LâESP8266, comme pour les modules de comm serie 433MHz, sont Ă la fois bon marchĂ© mais Ă©galement de basse consommation Ă©lectrique. Et comme pour les modules 433MHz, les modules ESP8266 peuvent sâinterconnecter entre eux pour faire de LâUART Ă travers un pont Wifi.
Mais alors pourquoi lâESP8266 ?
les modules standard de communication sans fil Ă 433Mhz ne sont-il pas suffisant ?
Les différences ne sont pas nombreuses mais elles sont majeurs :
LâESP8266 possĂšde une unitĂ© de traitement, le ”ContrĂŽleur cadencĂ© Ă 80Mhz, assez remarquable pour le prix du composant. Cela confĂšre une autonomie de fonctionnement, il peut donc se passer dâun arduino ou autre ”System pour effectuer des taches de traitements localisĂ©s,
Le protocole WIFI est supportĂ©, dâune façon un peut particuliĂšre certes ( on verra cela lors de lâimplĂ©mentation des exemples). GrĂące Ă quoi il peut tout de mĂȘme interfĂ©rer avec nos rĂ©seaux locaux voir communiquer avec des sites distants,
il bénéficie de la sécurité de chiffrement WPA/WPA2, inhérent au Wifi,
Une portĂ© de communication trĂšs convenable, qui permet dâĂȘtre en interconnexion partout dans un champs wifi conventionnel, donc partout dans la maison,
Grand plus, en fonction des modĂšles, il dispose de point de raccordement plus ou moins nombreux avec son environnement, les fameuse EntrĂ©es/Sorties GPIO, confĂ©rant par la mĂȘme dâune capacitĂ© dâinteraction direct avec lâenvironnement. Ouvrit une porte de garage, enclenchĂ© la cafetiĂšre âŠ.,
Dernier point et non des moindres, la capacitĂ© Ă reflacher le firmware. Le fait que le module soit openHarware et OpenSource, ouvre des perspectives intĂ©ressantes. De nombreux Microcodes (Firmware) sont disponible permettant permettant dâattaquer le module avec diffĂ©rents environnement et diffĂ©rents langages.
Pour une connaissance détaillé sur le module le datasheet est la référence.
Voyons comment se servir de ce module EPS8266, avec le NodeMCU
Ătude du NodeMCU Developpement Kit
NodeMCU Developpement Kit que je vais simplement nommer NodeMCU dans la suite de cet article
Pour cette premiĂšre Ă©tude approfondie jâutilise une version 1.0 (Black, la version prĂ©cĂ©dente 0.9 Ă©tait nommĂ© blue), embarquant le module ESP8266 - ESP-12E -. Pour les reconnaĂźtre rien de plus facile la 1.0 est noir la prĂ©cĂ©dente Ă©tait bleu.
Le NodeMCU , nâest rien dâautre quâun module ESP-12E .
Monté sur une platine avec :
une connexion micro USB, avec un chip UART CP2102,
Un régulateur de tension,
Un bouton de Reset âRSTâ, raccordĂ© sur la broche REST de lâESP-12E
Un bouton de âFASHâ, raccordĂ© en entrĂ©e sur le GPIO_00
Une LED Bleu de contrÎle, raccordé en sortie sur le GPIO_01
Un ensemble de 30 broches(2x15) au pas standard pour plaque dâexpĂ©rimentation (breadboard).
- Le Brochage du module embarqué ESP-12E
- Le brochage de la carte NodeMCU
Installation et Configuration -
Remarque :
Bien que je vais utiliser le NodeMCU, pour la suite de ce chapitre. Le cĆur de notre platine est composĂ© dâun ESP8266, la version ESP-12E pour ĂȘtre prĂ©cis.
Tout autres Ă©quipements possĂ©dant une puce ESP8266, par exemple ceux dâautres constructeurs comme Olimex, sont tout aussi indiquĂ©s pour rĂ©aliser les mĂȘmes manipulations.
Les diffĂ©rences entre les modules vont se situer sur la forme, la facilitĂ© de rĂ©aliser les montages sur une plaque dâexpĂ©rimentation, le raccordement direct en mode USB, mais Ă©galement sur le nombres dâentrĂ©e/sorties GPIO disponibles.
Le jeu de commande ou langage sera liĂ© au firmware utilisĂ©. Ces firmwares pourront ĂȘtre installĂ© sur tous les modules incorporant la puce ESP8266.
Chargement âFlashageâ du dernier micro-code âFirmwareâ NodeMCU
Une mise Ă niveau du firmware est toujours une bonne option lorsque lâon dĂ©marre sur une nouvelle plate forme. Ne serait-ce que pour rĂ©cupĂ©rer les derniĂšres Ă©volutions et patchs correctifs, dâautant plus que le produit est trĂšs jeune et donc soumis Ă correctifs et mise Ă jour rĂ©guliĂšres.
Organisation de mes répertoires pour cet exemple :
Répertoire firmware : $HOME/Developpement/”System/EPS/NodeMCU
Répertoire esptool : $HOME/Developpement/”System/EPS/esptool
Commençons par récupérer le dernier firmware sur le site nodemcu-firmware
Ou directement ici :
Pour procĂ©der Ă lâinstallation nous auront besoin dâun outil de transfert.
Sous Linux une mini application en ligne de commande, Ă©crite en python, par un contributeur, fera amplement lâaffaire.
esptool : disponible sur Github.
Entrez dans votre répertoire de travail. Pour ma part et pour la suite du document se sera $HOME/Developpement/”System/EPS :
Si vous nâavez par encore installĂ© le programme Git, faite le maintenant :
- avec Ubuntu
- Avec OpenSuse
Pour dâautres distrib voir votre gestionnaire de paquet.
On passe Ă lâinstallation esptool
$ git clone https://github.com/themadinventor/esptool.git
Dernier point avant de lancer le flashage du firmware. Sur le brochage du NodeMCU vous avez peut ĂȘtre remarquĂ© une broche notĂ© âFLASHâ, cette broche doit ĂȘtre raccordĂ© au GND pour effectuĂ© cette opĂ©ration.
Le bouton âFLASHâ devrait effectuer cette action, cela nâa pas eu dâeffet lors de mes tests, jâai donc optĂ© pour le pont filaire direct.
Le pont étant en place on lance la commande depuis le répertoire esptool :
sudo python esptool.py --port /dev/ttyUSB0 \ write_flash -fm=dio -fs=32m \ 0x00000 ../NodeMCU/nodemcu_float_0.9.6-dev_20150704.bin
Pour flasher uniquement les données et les fichiers utilisateurs + init (nous auront besoin de cette séquence un peut plus loin)
sudo python esptool.py --port /dev/ttyUSB0 \ write_flash \ 0x7C000 nodemcu-firmware/bin/esp_init_data_default.bin \ 0x7E000 nodemcu-firmware/bin/blank.bin
AprĂšs le temps de transfert on obtient :
Parfait, nous allons pouvoir jouer avec le module NodeMCU.
Un peut de patience, je vous propose avant cela de faire un peut connaissance avec le langage LUA
Câest un parti pris des concepteurs du NodeMCU que de proposer une interface de programmation en mode script, dans un esprit trĂšs similaire au Python.
Cela permet une interaction plus immĂ©diate avec lâutilisateur, les commandes tapĂ©es dans la console sont directement exĂ©cutĂ©es ligne Ă ligne par lâinterprĂ©teur LUA. Pas de compilation, mais une interprĂ©tation du code, un retour immĂ©diat pour lâutilisateur, qui peut ainsi directement visualiser le rĂ©sultat des commandes.
LUA est un langage de script souple et puissant, destinĂ© Ă ĂȘtre utilise sur des Ă©quipements lĂšges comme les systĂšmes embarquĂ©s.
La force de LUA, une taille trĂšs compacte et une portabilitĂ© aisĂ©, pouvant par ce fait ĂȘtre intĂ©grĂ© dans des plate-formes trĂšs rĂ©duite comme lâESP8266. LUA est un langage que lâon trouve de plus en plus souvent en Robotique.
Autre atout, ĂȘtre abordable par des dĂ©butants en programmation.
Les curieux pourront aller voir sur le net, de trĂšs nombreuses pages traitant de ce langage, comme :
Nous allons donc nous faire quelques armes avec LUA sur NodeMCU.
Nos premiers pas avec LUA
Physiquement on raccorde le module NodeMCU via le port micro USB Ă notre ordinateur. Par dĂ©faut on sera raccordĂ© sur le pĂ©riphĂ©rique interne ttyUSB0. Lâidentification du pĂ©riphĂ©rique (device) est indispensable pour paramĂ©trer la console sĂ©rie.
Sous Linux, jâutilise la console minicom avec les paramĂštres suivant :
PĂ©riphĂ©rique de connexion : ttyUSB0 âa adaptĂ© selon votre configâ
Vitesse du protocole : 9600 bauds
Autres paramÚtres : 8 bits de données, sans parité, 1 stop bit; qui est résumé par : 8N1
La premiĂšre commande LUA que je vais utiliser, permet dâĂ©tendre le systĂšme de fichier sur la totalitĂ© de la mĂ©moire disponible. OpĂ©ration nĂ©cessaire aprĂšs le flashage du firmware :
Pas dâinquiĂ©tude lâopĂ©ration dure plusieurs minutes sans affichage particulier.
Nous voila avec un module NodeMCU parfaitement vivant et sain.
1) DĂ©butons par le classique âBonjour Ă Tousâ
> print("Bonjour Ă Tous")
Facile ! Câest comme du python, on tape sa commande, et Hop! La ligne est interprĂ©tĂ©.
2) Plus sĂ©rieux : Le Bonjour des geek, la LED qui clignote âle blinkâ
Le petit montage idoine :
La séquence des commande pour le clignotement :
> gpio.mode(3, gpio.OUTPUT) > gpio.write(3, gpio.LOW) > gpio.write(3, gpio.HIGH)
Jâallume, jâĂ©teins, OK! . Ce serait mieux si jâautomatisais un peut la chose
> while 1 do >> gpio.write(3, gpio.LOW) >> tmr.delay(1000000) -- délais 1.000.000 ”s = 1 seconde >> gpio.write(3, gpio.HIGH) >> tmr.delay(1000000) -- délais 1.000.000 ”s = 1 seconde > end
! Génial ! DÚs ma derniÚre commande validée, le programme est en action et ma LED clignote.
Câest pas mal, mais se serait plus pratique de pouvoir crĂ©er un fichier, plutĂŽt que de saisir ligne Ă ligne chacune des commandes de notre petit programme.
3) CrĂ©ation dâun fichier programme dans notre NodeMCU
Avant de nous lancer dans la réalisation de ce programme, un petit retour sur le site officiel NodeMCU . On y trouve la liste des commandes et instructions LUA, disponible pour notre module.
On va particuliÚrement intéresser au groupe de commande file module, pour la construction du fichier programme.
Commandes utilisées pour la création de notre fichier de programme.
Description : Création et Ouverture du fichier nommé.
Syntaxe : file.open(NomFichier, Mode)
Parametres :
NomFichier: type âstringâ, le nom du fichier Ă ouvrir, directories are not supported
ârâ: fichier en Lecture (Le mode par dĂ©faut) âreadâ
âwâ: Fichier en Ă©criture âwriteâ
âaâ: Mode ajout âappendâ
âr+â: Mode de mise Ă jour, Ă©criture en dĂ©but de fichier avec prĂ©servation des donnĂ©es,
âw+â: Mode de mise Ă jour avec effacement des donnĂ©es,
âa+â: Mode de mise Ă jour, Ă©criture en fin de fichier avec prĂ©servation des donnĂ©es,
Description : Ăcrit une chaĂźne de caractĂšres dans le fichier et ajoute une mise Ă la ligne \n
Syntaxe : file.writeline(string)
Parametres :
string: Contient la chaßne de caractÚre à écrire
je nâen precise pas dâavantage, tout est dans le nom.
LâĂ©criture du programme sous la forme dâun fichier pour lâESP8266 devient :
> file.open("blink.lua","w+") > file.writeline([[while 1 do]]) > file.writeline([[gpio.write(3, gpio.LOW)]]) > file.writeline([[tmr.delay(1000000)]]) > file.writeline([[gpio.write(3, gpio.HIGH)]]) > file.writeline([[tmr.delay(1000000)]]) > file.writeline([[end]]) > file.close()
Et pour lancer ce petit bout de programme,
Vu la difficulté à saisir ce petit bout de code, est-il au moins persistant suite à une coupure de courant ?
Faisons le test ! Je débranche .
-> le terminal mâinforme de la perte de la connexion
et rebranche aprĂšs une petite attente de 30s.
-> Je retrouve automatiquement le prompt de LUA, aprĂšs une action sur ma touche âEnterâ
Faisons un petit contrĂŽle sur lâĂ©tat des fichiers en mĂ©moire dans le module.
Saisir le petit code suivant dans la console :
l = file.list(); for f,t in pairs(l) do print("Fichier:"..f..", Taille:"..t) end
(mettre image du résultat)
2 fichiers sont bien présent, dont : Fichier:blink.lua, Taille:102
Je relance lâexĂ©cution du fichier âblinkâ
Et Ă nouveau ma LED Clignote !
Quâavons nous appris ?
Le firmware NodeMCU est dotĂ© dâun gestionnaire de fichier. On peut ainsi invoquĂ© lâexĂ©cution dâun fichier via la console ou par programmation.
Il serait pertinent de pouvoir faire exécuter notre programme immédiatement au démarrage du module. Est-ce possible ?
Bien sur NodeMCU, possĂšde dâun fichier auto-exĂ©cutable au dĂ©marrage, un fichier dâinitialisation.
4) SĂ©quence dâinitialisation sous LUA
Le fichier dâinitialisation, est simplement dĂ©fini par son nom, et comme on peut sâen douter il se nomme : âinit.luaâ
Si ce fichier existe, son contenu est exĂ©cutĂ© au dĂ©marrage dâun module ESP8266.
Reste Ă faire la vĂ©rification sur le NodeMCU , câest parti :
> file.open("init.lua","w+") > file.writeline([[print("Demarrage du programme Blink")]]) > file.writeline([[dofile("blink.lua")]]) > file.close()
On voit ce qui ce passe aprĂšs une action sur le bouton de reset âRSTâ.
Super ! Ăa dĂ©marre avec le petit jingle dâaccueil â Demarrage du programme Blink â puis on enclenche sur le programme âblink.luaâ.
Satisfait ?
Ăa fonctionne comme je le souhaitais.
Mais ATTENTION .. ce code soufre dâun Gros BUGâŠ
Le programme une fois lancĂ© ne laisse plus la main, plus de console et donc plus aucun moyen de passer la moindre commande. Impossible de supprimer Ă©ventuellement le programme dâinit ou le Blink.
Le programme Blink tourne dans une boucle sans fin. La seule issue, consiste Ă re-fasher le ModeMCU pour effacer les data et repartir dans une configuration propre (on est tout de mĂȘme pas obliger de re-flacher le âfirmwareâ).
je vous avais bien dit que nous allons avoir à nouveau besoin de cette séquence réinitialisation
On re-Flash la zone data et les zones utilisateurs
sudo python esptool.py --port /dev/ttyUSB0 \ write_flash \ 0x7C000 nodemcu-firmware/bin/esp_init_data_default.bin \ 0x7E000 nodemcu-firmware/bin/blank.bin
Correction de notre code
Le module âtimerâ du langage LUA, propose une fonction interruptive qui sera traitĂ© Ă intervalle paramĂ©trĂ©.
A chaque appel, le timer alarme âtmr.alarm()â transfert le pointeur dâexĂ©cution, Ă la fonction passĂ© en paramĂštre au timer.
Si cette fonction est nommĂ© âfunction()â elle sera directement codĂ© dans le module âtmr.alarmâ, Ă la suite de la dĂ©claration.
Câest ce mode compact, que jâutilise dans la rĂ©-Ă©criture du code âblinkâ.
Une utilisation plus conventionnel du module âtmr.alarmâ sera traitĂ© ultĂ©rieurement.
Saisir ou recopier le script suivant dans votre éditeur, nommé ce fichier blink.lua
allume=0 pin=3 gpio.mode(pin,gpio.OUTPUT) -- la broche 3 est fixĂ© en sortie tmr.alarm(1,2000,1,function() -- tmr.alarm traitĂ© toute les 2 secondes - function() est codĂ© ci-suivant if allume==0 then -- si le suis Ă©teint allume=1 -- j'alume gpio.write(pin,gpio.HIGH) else -- sinon allume=0 -- jâĂ©teins gpio.write(pin,gpio.LOW) end end)
Précédemment nous avions écrit notre code directement dans le module NodeMCU via les instructions file.writeline([[..]])
Le moins que lâon puisse dire, câest que le mode dâĂ©criture, consistant Ă saisir ligne Ă ligne, chacune des commandes en utilisant la commande file.writeline([[..]]) est assez contraignant.
Ce mĂȘme constat Ă Ă©tĂ© fait par dâautres expĂ©rimentateurs, et des rĂ©ponses ont Ă©tĂ© apportĂ©es pour soulager la crĂ©ation de programme sous LUA.
La solution la plus simple : la crĂ©ation, lâutilisation dâun script de transfert.
Le script python âluatoolâ Ă©tablie une connexion sĂ©rie avec le module ESP8266, puis automatise la phase de crĂ©ation du fichier cible, complĂšte chaque ligne avec la sĂ©quence : (Ă©lĂ©ment en gras)
file.writeline([[ la ligne de code ]])
et termine le fichier avec lâinstruction de clĂŽture du fichier.
5) Utilisation du script de transfert luatool
Sur la racine du répertoire de travail, je charge le gitub du script luatool.
$ git clone https://github.com/4refr0nt/luatool.git
Je vous laisse découvrir la doc, sur le gitub du projet.
Transfert du script âblink.luaâ sur lâESP8266
python luatool.py --port /dev/ttyUSB0 --src blink.lua --dest init.lua --verbose
Puis un reset sur le module pour lancer la phase dâinit, la LED est a nouveau en clignotement.
Contrairement au programme prĂ©cĂ©dent qui bouclait sans fin, on peut se connecter avec la console sĂ©rie, pour stopper/ supprimer le programme dâinit.
Au restart, plus de programme init().
Cela clos, cette premiĂšre initiation Ă ESP8266, de LUA et du module ModeMCU.
Dans le chapitre suivant je vous propose de traiter un projet complet. Pour ce faire, nous allons au prĂ©alable Ă©tudier un environnement de dĂ©veloppement (IDE), plus adaptĂ© Ă la rĂ©alisation dâun projet plus consĂ©quent.
Un IDE pour lâESP8266 & NodeMCU
Cette premiĂšre prise en main de LâESP8266 sous un mode console sĂ©rie, nous a fait dĂ©couvrir les bases de fonctionnements en mode console sĂ©rie.
Cette approche console sĂ©rie, si elle peut ĂȘtre intĂ©ressante dans cette phase de dĂ©couverte, elle reste peut adaptĂ© Ă la crĂ©ation de projet plus ambitieux. Nous somme habituĂ© Ă des environnements plus complet intĂ©grant la communication avec les plates-formes cibles, un Ă©diteur pleine page, des correcteurs de syntaxe voir des dĂ©bogueurs pour la correction de nos programme.
Si un outil aussi complet nâest pas encore disponible, il existe une bonne approche en Open Source pour lâESP8266 :
lâIDE ESPlorer, est un projet Java, multiplate-forme, disponible sous Windows, Mac et aussi Linux.
La prĂ©-existence de Java est donc nĂ©cessaire Ă lâinstallation dâESPlorer.
Si vous nâavez pas encore installĂ© Java sur votre machine, voir le lien, pour lâinstallation de la version la plus rĂ©cente adaptĂ© Ă votre configuration.
Java est en place, nous pouvons à présent télécharger ESPlorer.
Enregistrer le fichier compressĂ© dans votre rĂ©pertoire de tĂ©lĂ©chargement. DĂ©compresser et installer ESPlorer dans votre rĂ©pertoire dâapplications. Pour ma part jâai optĂ© pour :
Dans votre lanceur dâapplications ajouter une nouvelle entrĂ©e sous votre Menu âDĂ©veloppementâ, comme pour lâimage suivante :
Pour la commande de lancement :
java -jar /opt/ESPlorer/ESPlorer.jar
Un clic sur cette nouvelle entrĂ©e du menu âESPlorerâ pour obtenir :
Une interface bien plus riche que ce que nous avions précédemment avec la console série, trÚs épure.
Pas de crainte nous allons explorer lâutilisation de cette interface, dans la cadre de notre premier projet.
Connexion du NodeMCU
Quitter ESPlorer, connecté NodeMCU, puis relancer ESPlorer. (il existe un BP de ré-synchronisation, nous verrons plus tard)
On remarque quâESPlorer reconnaĂźt automatiquement le pĂ©riphĂ©rique connectĂ©. Dans mon cas : â/dev/ttyUSB0â
Chargement, Sauvegarde du programme âblinkâ
Pour dĂ©butĂ© nous allons faire un copier/coller du programme âblinkâ dans la fenĂȘtre gauche dâESPlorer (fenĂȘtre de lâonglet âNEWâ)
On sauvegarde âicone saveâ au-dessus de la fenĂȘtre dâĂ©dition, sous le nom et rĂ©pertoire de votre choix.
Pour ma part : $HOME/Developpement/”System/ESP/My-Prog/blink.lua
Versement et ExĂ©cution de âblinkâ dans lâESP8266
Avant de pouvoir verser un programme dans le module ESP8266, il est nĂ©cessaire dâouvrir la connexion.
Par défaut la vitesse de connexion est paramétré à 9600 bauds.
Il suffit de cliquer sur le gros bouton âOpenâ au-dessus de la fenĂȘtre de droite, qui passe instantanĂ©ment Ă Close avec le rĂ©sultat de la connexion dans la fenĂȘtre de contrĂŽle.
Sous la fenĂȘtre dâĂ©dition cliquĂ© sur âSave&Runâ
(Fin provisoire de lâarticle)
Notes et liens utilisé pour mes essais
On peut mais câest pas trĂšs pratique. Je vous conseil dâutiliser ESPlorer un environnement dĂ©diĂ© dĂ©veloppement LUA et MicroPython qui cible les plate-forme EPS8266.
A.1) Outils pour flacher le firmware :
esptool : Dialogue en comm serie, flashage, ⊠(Linux)
modmcu-flasher : (Windows)
ESP Flasher Tool : (Windows)
Building and Running MicroPython on the ESP8266 (Adafruit)
<â ### Commande de connexion au rĂ©seau Wifi â>
<- Sur le réseau freebox
<
< wifi.sta.config(âfreebox_photonâ,âAF007BC123â)
<
<- Sur le réseau interne Fonera
<
Récupération firmware en mode Windows
https://github.com/nodemcu/nodemcu-flasher
ESP8226 avec lâIDE Arduino
Exemples de codes & montages
ESP8266 and Arduino IDE - blink :
Voir simplement dans la liste des exemples dans IDE
Mini Client with the Arduino TRINKET and the ESP8266 :
Installing and Building an Arduino Sketch for the $5 ESP8266 Microcontroller :
Mise en place dâun container docker ESP
https://github.com/speakinghedge/docker-esp-open-sdk
utilise :
https://github.com/pfalcon/esp-open-sdk
esptool : Dialogue en comm serie, flashage, ⊠(Linux)
Loading new firmware onto an ESP8266 :
Construire son propre firmware :
Flashing the NodeMCU firmware on the ESP8266 (Linux) - Guide
What is NodeMCU How to Code LUA Script with a Simple Lines of Code :
explication de connexion +++ :
Wifi with ESP8266 - Part 2
Wifi with ESP8266 - Part 3
App Inventor 2 - ESP8266 GPIO Control with Nodemcu LUA
NodeMCU ESP8266 simple httpd (web server) example
How to push code to an ESP8266 module : esp
Tool for loading Lua-based scripts from file to ESP8266 with nodemcu firmware : luatool
ESP8266 NodeMCU/LUA: Saving, Executing, and Compiling Script Files : ESPlorer
0x7c000 .bin/esp_init_data_default.bin 0x7e000 ./bin/blank.bin
Wifi detector using ESP8266 and NodeMCU
ESP8266 + ds18b20 + thingspeak+ nodemcu
ESP8266 / NodeMCU: Methods of Interrupting init.lua During Boot
internet-of-things-photon
Code for the Internet of Things with the Photon book
User customizable Bluetooth / Internet / WiFi remote control for Arduino, PIC, etc.
Adafruit - Using NodeMCU Lua
4 raisons pour lesquelles jâai abandonnĂ©s NodeMCU/Lua pour ESP8266 :
Liste modĂšle ESP8266 : â©
Une liste non exhaustive (à compléter)
- ESPressif
- Olimex
- Adafruit
- Spark
- Wireless-tag
- Qilianer
- ⊠â©
Site officiel NodeMCU : â©