Re: Tous les capteurs reliés au RPI par Wifi avec module ESP
Posté : sam. 13 juin 2015 19:52
Coucou Fidoboulettes,
Pour les version 0.9.6
https://github.com/nodemcu/nodemcu-firm ... v_20150406
Utilise la version integer car si tu utilise la version float je pense qu’il faut adapter le programme bmp085.
Avec la version Integer il faut calculer séparément la partie entière et la partie décimale d’un nombre.
Avec la version Float on peut manipuler les nombres entiers ou décimaux.
Si l’on écrit f=10.5 , avec la version integer on à l’erreur « testintfloat.lua:1: malformed number near '10.5' »
Pour la version 0.9.5 j’utilise le NodeMcu Firmware programmer avec la configuration par défaut. NodeMCU 0.9.5 build 20150213 powered by Lua 5.1.4
Dans les options il faut indiquer la taille de la mémoire Flash (4MO dans mon cas car c’est le kit NodeMcu). Comme IDE j’utilise NodeMcu Studio 2015-06-13
http://bbs.nodemcu.com/t/nodemcu-studio ... 50111/64/1
Quelques problèmes que j’ai rencontrés sur ton programme.
error loading module 'bmp085' from file 'bmp085.lua':
not enough memory
Il faut compiler bmp085.lua -> node.compile("bmp085.lua")
Si il y a un message manque de mémoire, il faut faire un Reset avant d’exécuter un programme.
bmp085.getUT(false ) ne marche pas utiliser bmp085.getUT(true)
Mais ceci provient peut-être que je n’ai pas de BMP085 de connecté.
Print ("heap=" .. node.heap() ) ne marche pas (reboot de l’ESP)
Utiliser print(node.heap() .."<-heap") ou print(node.heap()) tout seul.
Il est délicat de faire appel de fonctions à l’intérieur des événements "conn:on"
Après un flash s’il existe encore des fichiers dans la mémoire flash faire un file.format()
Faire un reset avant de mettre à jour un fichier lua car si un programme est en train de s’exécuter avec un trm.alarm (…) en cours d’exécution ,l es prints vont perturber la mise à jour du fichier Lua.
Pour ta question sur la compilation:
Un compilateur transforme un langage source en binaire directement utilisable par le CPU de l'ESP8266.
C'est le cas si l'on utilise le langage C par exemple dans l'IDE ESP8266/ Arduino.
C'est également le cas si l'on utilise un compilateur C (gcc) .
Après la compilation il y a une phase "edition de lien" qui permet de rajouter les fonctions fournies déjà compilées du SDK d'Espressif.
Lua est un interpréteur , le code Lua va être transformé par un node.compile en pseudo code.
Ce pseudo code est lu par l'interpréteur Lua qui transforme le pseudo code en binaire.
On compilant du code lua on gagne sur la taille du programme en mémoire ( en particulier il n'y a plus de commentaires).
Si on ne compile pas un programme, lua le compile en pseudo code avant de l'interpréter.
L'avantage d'un interpréteur c'est que l'on peut saisir du code lua directement dans la console Lua (même si un programme lua est en train de s'exécuter).
C'est tout pour aujourd'hui.
SMBA38
Pour les version 0.9.6
https://github.com/nodemcu/nodemcu-firm ... v_20150406
Utilise la version integer car si tu utilise la version float je pense qu’il faut adapter le programme bmp085.
Avec la version Integer il faut calculer séparément la partie entière et la partie décimale d’un nombre.
Avec la version Float on peut manipuler les nombres entiers ou décimaux.
Si l’on écrit f=10.5 , avec la version integer on à l’erreur « testintfloat.lua:1: malformed number near '10.5' »
Pour la version 0.9.5 j’utilise le NodeMcu Firmware programmer avec la configuration par défaut. NodeMCU 0.9.5 build 20150213 powered by Lua 5.1.4
Dans les options il faut indiquer la taille de la mémoire Flash (4MO dans mon cas car c’est le kit NodeMcu). Comme IDE j’utilise NodeMcu Studio 2015-06-13
http://bbs.nodemcu.com/t/nodemcu-studio ... 50111/64/1
Quelques problèmes que j’ai rencontrés sur ton programme.
error loading module 'bmp085' from file 'bmp085.lua':
not enough memory
Il faut compiler bmp085.lua -> node.compile("bmp085.lua")
Si il y a un message manque de mémoire, il faut faire un Reset avant d’exécuter un programme.
bmp085.getUT(false ) ne marche pas utiliser bmp085.getUT(true)
Mais ceci provient peut-être que je n’ai pas de BMP085 de connecté.
Print ("heap=" .. node.heap() ) ne marche pas (reboot de l’ESP)
Utiliser print(node.heap() .."<-heap") ou print(node.heap()) tout seul.
Il est délicat de faire appel de fonctions à l’intérieur des événements "conn:on"
Après un flash s’il existe encore des fichiers dans la mémoire flash faire un file.format()
Faire un reset avant de mettre à jour un fichier lua car si un programme est en train de s’exécuter avec un trm.alarm (…) en cours d’exécution ,l es prints vont perturber la mise à jour du fichier Lua.
Pour ta question sur la compilation:
Un compilateur transforme un langage source en binaire directement utilisable par le CPU de l'ESP8266.
C'est le cas si l'on utilise le langage C par exemple dans l'IDE ESP8266/ Arduino.
C'est également le cas si l'on utilise un compilateur C (gcc) .
Après la compilation il y a une phase "edition de lien" qui permet de rajouter les fonctions fournies déjà compilées du SDK d'Espressif.
Lua est un interpréteur , le code Lua va être transformé par un node.compile en pseudo code.
Ce pseudo code est lu par l'interpréteur Lua qui transforme le pseudo code en binaire.
On compilant du code lua on gagne sur la taille du programme en mémoire ( en particulier il n'y a plus de commentaires).
Si on ne compile pas un programme, lua le compile en pseudo code avant de l'interpréter.
L'avantage d'un interpréteur c'est que l'on peut saisir du code lua directement dans la console Lua (même si un programme lua est en train de s'exécuter).
C'est tout pour aujourd'hui.
SMBA38