ESP8266 - Internet of Object à la portée de tous

ESP8266 - Internet of Object à la portée de tous - Domotique et maison connectée - Electronique, domotique, DIY

Marsh Posté le 02-01-2016 à 12:28:40    

Bonjour,

 

J'ai fait l'acquisition de module ESP8266 pour gérer des trucs en WIFI.
Comme je débute, ce topic me permettra d'y poser mes problèmes tout en essayant d'étoffer la première page au fur et à mesure.

 

Premier projet : récupérer la téléinfo de mon compteur EDF via un ESP8266 version 01 et la transmettre à une base mysql sur un server@home.

 


__________________________________________________________________

 


Qu'est ce qu'un ESP8266 ? le mieux est de check wikipedia pour un résumé : https://en.wikipedia.org/wiki/ESP8266

 

Comment flasher son ESP8266 vers nodeMCU ? le mieux est de suivre cette vidéo : https://www.youtube.com/watch?v=mXJoLnuhWiE


Message édité par _pollux_ le 03-01-2016 à 10:20:32

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 02-01-2016 à 12:28:40   

Reply

Marsh Posté le 02-01-2016 à 12:30:08    

Je précise que je veux faire ça pour éviter d'utiliser un arduino et limiter au maximum la consommation.  
 
Pour cela, il faudra donc coder directement l'ESP8266 et j'ai choisi le firmware nodeMCU pour commencer.


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 02-01-2016 à 14:35:31    

drap

Reply

Marsh Posté le 02-01-2016 à 19:03:42    

drap !

Reply

Marsh Posté le 03-01-2016 à 09:33:46    

un projet qui commence vraiment de zéro sans préparatif, voilà un sujet intéressant :)

Reply

Marsh Posté le 03-01-2016 à 09:41:46    

J'ai envie de tenter ma chance aussi :)
 
en commençant par flasher le module : https://www.youtube.com/watch?v=mXJoLnuhWiE
 

Reply

Marsh Posté le 03-01-2016 à 10:16:08    

Ah cool la vidéo !

 

J'ai réussi à flasher le mien, mais j'ai eu pas mal de chance que ça marche du premier coup. D'autant que sur l'un de mes 2 autres modules, ça a foiré pour une raison inconnue.

 

Au final, quand tu cherches sur le net, il n'y a pas deux schémas de cablage identiques :/
Mais la vidéo explique bien tout ça. Allez, zou, first post.


Message édité par _pollux_ le 03-01-2016 à 10:19:09

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 03-01-2016 à 11:09:10    

:d la chaine d'u=ri est bien pour les noobs.

Reply

Marsh Posté le 03-01-2016 à 12:48:46    

Et dire que je commençais a me documenter sur ce chip !  :D  
 
Nickel pour faire de la domotique et consort tout çà !  :wahoo:

Reply

Marsh Posté le 03-01-2016 à 21:58:59    

j'ai réussi à flasher un de mes modules, mais pas du premier coup :D
 
j'ai suivi le tuto de la vidéo d'u=ri et j'ai modifié le baudrate a 115200 et j'ai utilisé la dernière version du firmware.
 
problème, une fois flashé, windows ne le reconnait pas et il est injoignable via les outils esplorer ou lualoader.
 
une idée?

Reply

Marsh Posté le 03-01-2016 à 21:58:59   

Reply

Marsh Posté le 03-01-2016 à 22:02:23    

autre truc, le module et le ftdi sont bouillants lorsque je sors du mode flashage, alors qu'ils sont "normaux" avec le câblage "flashage".

 

edit: une piste => http://rayshobby.net/magic-smoke-s [...] 6-modules/ :D


Message édité par Zaib3k le 03-01-2016 à 22:08:57
Reply

Marsh Posté le 03-01-2016 à 22:46:24    

drapal, j'étais justement en train de regarder ce bazar sur youtube :D
 
http://tronixstuff.com/2015/09/20/ [...] ing-blynk/
enfin bon, celui ci simplifie beaucoup les choses, mais passe par un serveur tiers.
cela dit je suis une bille en dev donc pourquoi pas :whistle:


---------------
galerie photo | thingiverse
Reply

Marsh Posté le 04-01-2016 à 00:16:08    

Zaib3k a écrit :

j'ai réussi à flasher un de mes modules, mais pas du premier coup :D

 

j'ai suivi le tuto de la vidéo d'u=ri et j'ai modifié le baudrate a 115200 et j'ai utilisé la dernière version du firmware.

 

problème, une fois flashé, windows ne le reconnait pas et il est injoignable via les outils esplorer ou lualoader.

 

une idée?


hum... remet toi bien à 9600 baud.

 

Perso, ça marche pas avec mon module USB uart, mais ça marche quand j'interface avec mon arduino... (les joies de la Chine :D).
Aussi, essaye d'alimenter avec une source 3.3V externe.


Message édité par _pollux_ le 04-01-2016 à 00:16:30

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 04-01-2016 à 10:03:52    

j'étais bien en 9600 bauds. Je tenterai avec un autre module :D
 
Faut que je fouille mais je ne suis pas sûr d'avoir une alim 3.3v.

Reply

Marsh Posté le 04-01-2016 à 14:34:28    

Plop interessant, quel ftdi recommanderiez vous ?  
 
Sinon [:kb208:3]  

Reply

Marsh Posté le 04-01-2016 à 17:53:09    

fabcool a écrit :

Plop interessant, quel ftdi recommanderiez vous ?  
 
Sinon [:kb208:3]


Pour le moment, ça ne marche qu'avec arduino chez moi, ça passe pas avec le FTDI, alors je ne sais trop quoi recommender. Et je ne parle même pas du flash, mais seulement de la communication...
 
C'est assez imprévisible pour le moment :/
 
Enfin, pour le moment, ça marche très bien pour moi après flash et alimentation/communication via arduino.
J'ai commencé à jouer un peu avec lua (création, écriture de fichier, contrôle du timing). Niveau wifi, ça marche sans problème.
 
L'étape suivante va être de gérer l'uart de l'esp8266 pour récupérer le flow de mon compteur.
Des gens s'y sont déjà attelé, avec divers problèmes -> voir ici : http://www.esp8266.com/viewtopic.php?f=21&t=3425
 
Problème sur la version 01 de l'ESP8266, je ne peux utiliser que les pins de communication initiaux je crois. Donc, faut que je code l'esp, que je le débranche de l'arduino pour le connecter au compteur, qu'il récupère des trames, les stocke et que je check si ça a bien fonctionné en rebranchant à l'arduino.
 
ça me fait un peu peur... surtout sur la partie conversion trames/bit, etc ... sachant que je n'y connais pas grand chose à la base :/
J'espère ne pas trop en chier sur la partie code [:totoz]


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 08-01-2016 à 16:21:12    

[:michrone]

Reply

Marsh Posté le 09-01-2016 à 16:05:01    

Reply

Marsh Posté le 09-01-2016 à 17:00:16    

j'arrête pour l'instant, j'ai encore passé trop de temps pour rien :D
 
impossible d'envoyer un mail ou faire une requête http. Je suis trop novice pour comprendre pourquoi ça ne marche pas.
 
à suivre :)

Reply

Marsh Posté le 09-01-2016 à 20:09:16    


Bravo !


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 10-01-2016 à 13:09:51    

j'avance bien sur mon mini projet.
 
un site simple et précis : http://esp8266.co.uk/tutorials/lua-basics/

Reply

Marsh Posté le 10-01-2016 à 13:56:41    

je suis presque au bout de mon projet, en version crados/breadboard :D
 
mais :o j'ai un souci de fiabilité (je crois).
 
je vous présente le principe du bidule :
Je veux envoyer un mail lorsque la trappe de ma boite aux lettres est ouverte.
J'ai donc écrit un truc qui se décompte comme cela :
1 - Fonction de debounce
2 - Fonction de callback
3 - Fonction d'envoi de mail
4 - Config Wifi
5 - Config GPIO
 
J'utilise un switch reed sur le GPIO2 et j'ai une interruption qui appelle la fonction callback lorsque le GPIO passe à UP.
 
Durant mes tests, chaque morceau fonctionne indépendamment, et cela fonctionne également "ensemble" parfois.
Je ne comprends pas pourquoi lorsque je pense avoir terminé, l'envoi de mail ne fonctionne plus (DNS failed). Je pense que je perds la connexion wifi.
 
Si je balance mon code, vous pourriez m'aider :D ?

Reply

Marsh Posté le 10-01-2016 à 14:07:52    

j'ai une piste :D
https://github.com/nodemcu/nodemcu-firmware/issues/37
 
il me faut donc une alternative pour mettre une tempo

Reply

Marsh Posté le 10-01-2016 à 14:18:05    

Je crois que c'est bon maintenant :D
 

Code :
  1. -- init.lua --
  2. print('\nBoite aux lettres - init\n')
  3. -- Global Variables (Modify for your network)
  4. ssid = "XXXXX"
  5. pass = "YYYYY"
  6. pinReed = 4 -- GPIO2
  7. lastmail = 0
  8. maildelay = 60000000 --pour éviter le flood (1 mail/min max)
  9. -- functions
  10. function debounce (func)
  11.     local last = 0
  12.     local delay = 200000
  13.     return function (...)
  14.         local now = tmr.now()
  15.         if now - last < delay then return end
  16.         last = now
  17.         return func(...)
  18.     end
  19. end
  20. function onChange ()
  21.     print('porte ouverte : '..gpio.read(pinReed))
  22.     SendMail()
  23. end
  24. function SendMail()
  25.     local now = tmr.now()
  26.     if now - lastmail < maildelay then return end -- anti flood
  27.    
  28.     lastmail = now
  29.     print('Envoi de mail ...')
  30.     conn = nil
  31.     conn=net.createConnection(net.TCP, 0)
  32.     -- show the retrieved web page
  33.    
  34.     conn:on("receive", function(conn, payload)
  35.                            success = true
  36.                            print(payload)
  37.                            end)
  38.    
  39.     -- when connected, request page (send parameters to a script)
  40.     conn:on("connection", function(conn, payload)
  41.                            print('\nConnected')
  42.                            conn:send("GET /arduino/actions.php?"
  43.                             .."action=10"
  44.                             --.."&message=tiptop"
  45.                             .."&cle=ZZZZZZZZ"
  46.                             .." HTTP/1.1\r\n"
  47.                             .."Host: www.monsite.frrn"
  48.                             .."Connection: close\r\n"
  49.                             .."Accept: */*\r\n"
  50.                             .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
  51.                             .."\r\n" )
  52.                            end)
  53.     -- when disconnected, let it be known
  54.     conn:on("disconnection", function(conn, payload) print('\nDisconnected') end)
  55.                                                
  56.     conn:connect(80,'www.monsite.fr')
  57. end
  58. -- functions end
  59. -- Configure Wireless Internet
  60. print('\nBoite aux lettres - config wifi\n')
  61. wifi.setmode(wifi.STATION)
  62. print('set mode=STATION (mode='..wifi.getmode()..')\n')
  63. print('MAC Address: ',wifi.sta.getmac())
  64. print('Chip ID: ',node.chipid())
  65. print('Heap Size: ',node.heap(),'\n')
  66. -- wifi config start
  67. wifi.sta.config(ssid,pass)
  68. -- Connect
  69. tmr.alarm(0, 1000, 1, function()
  70.    if wifi.sta.getip() == nil then
  71.       print("Connecting to AP...\n" )
  72.    else
  73.       ip, nm, gw=wifi.sta.getip()
  74.       print("IP Info: \nIP Address: ",ip)
  75.       print("Netmask: ",nm)
  76.       print("Gateway Addr: ",gw,'\n')
  77.       tmr.stop(0)
  78.    end
  79. end)
  80. -- wifi config end
  81. -- gpio config
  82. print('\nBoite aux lettres - config gpio\n')
  83. gpio.mode(pinReed,gpio.INT,gpio.PULLUP)
  84. gpio.trig(pinReed, 'up', debounce(onChange))
  85. -- gpio config end


 
 
des avis ?

Reply

Marsh Posté le 11-01-2016 à 00:06:56    

wow, t'avances plus vite que moi ! J'y ai pas touché depuis mardi :/
 
J'ai testé que mon circuit fonctionne bien côté réception des trames téléinfo.  
J'ai aussi testé le stockage de données dans un fichier sur l'ESP.
 
Me reste à faire l'interface uart avec l'ESP est ensuite, je me pencherai sur l'envoi des données.


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 11-01-2016 à 00:10:51    

Zaib3k a écrit :

Je crois que c'est bon maintenant :D


 
des avis ?Pas d'avis à ce stade... je ne maitrise encore pas assez lua :/


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 11-01-2016 à 06:37:41    

avant de ranger, j'ai tout débranché et rebranché : je crois que mon firmware est mort car j'ai de la bouillie en boucle au boot.
 
je suis pas sûr de savoir comment écrire l'init :D je verrai ca le we prochain :D

Reply

Marsh Posté le 11-01-2016 à 16:28:51    

_pollux_ a écrit :


Pour le moment, ça ne marche qu'avec arduino chez moi, ça passe pas avec le FTDI, alors je ne sais trop quoi recommender. Et je ne parle même pas du flash, mais seulement de la communication...
 
C'est assez imprévisible pour le moment :/
 
Enfin, pour le moment, ça marche très bien pour moi après flash et alimentation/communication via arduino.
J'ai commencé à jouer un peu avec lua (création, écriture de fichier, contrôle du timing). Niveau wifi, ça marche sans problème.
 
L'étape suivante va être de gérer l'uart de l'esp8266 pour récupérer le flow de mon compteur.
Des gens s'y sont déjà attelé, avec divers problèmes -> voir ici : http://www.esp8266.com/viewtopic.php?f=21&t=3425
 
Problème sur la version 01 de l'ESP8266, je ne peux utiliser que les pins de communication initiaux je crois. Donc, faut que je code l'esp, que je le débranche de l'arduino pour le connecter au compteur, qu'il récupère des trames, les stocke et que je check si ça a bien fonctionné en rebranchant à l'arduino.
 
ça me fait un peu peur... surtout sur la partie conversion trames/bit, etc ... sachant que je n'y connais pas grand chose à la base :/
J'espère ne pas trop en chier sur la partie code [:totoz]


 
 
Si je comprend ton bien ton problème, en fait il faut que l'arduino gère 2 liaisons séries alors qu'il n'en possède qu'une seule en hardware. La solution consiste à utiliser une liaison série logicielle qui utilisera d'autres ports de l'arduino.  
Du coup tu laisses l'esp8266 connecté à la liaison série matérielle et tu connecte ton compteur (moins exigeant je pense car 1200 bauds) sur le port de ton choix grâce à cette librairie : https://www.arduino.cc/en/Reference/SoftwareSerial
Etant donné que tu ne vas pas envoyer de valeur à ton compteur, tu peux initialisé la liaison série avec un 0 pour l’émission.  
 
Tu peux aussi utiliser un arduino leonardo qui possède 2 liaisons séries hardware mais je ne pense pas que cela te sois utile tant que tu n'es pas limité par la mémoire.

Reply

Marsh Posté le 11-01-2016 à 18:32:10    

JPlnx a écrit :


 
 
Si je comprend ton bien ton problème, en fait il faut que l'arduino gère 2 liaisons séries alors qu'il n'en possède qu'une seule en hardware. La solution consiste à utiliser une liaison série logicielle qui utilisera d'autres ports de l'arduino.  
Du coup tu laisses l'esp8266 connecté à la liaison série matérielle et tu connecte ton compteur (moins exigeant je pense car 1200 bauds) sur le port de ton choix grâce à cette librairie : https://www.arduino.cc/en/Reference/SoftwareSerial
Etant donné que tu ne vas pas envoyer de valeur à ton compteur, tu peux initialisé la liaison série avec un 0 pour l’émission.  
 
Tu peux aussi utiliser un arduino leonardo qui possède 2 liaisons séries hardware mais je ne pense pas que cela te sois utile tant que tu n'es pas limité par la mémoire.


ça, je connaissais.
 
En fait, je compte bien me passer complètement de l'arduino pour ne garder que l'ESP8266. Qui lui aussi n'a effectuviment d'une seule liaison série.
Peut-être que je pourrais faire de la série logicielle sur le seul autre pin d'entrée I/O, mais je vais me contenter de la liaison série de programmation.
 
Le seul problème, c'est de devoir programmer puis tester en aveugle à chaque fois.


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 12-01-2016 à 13:33:13    

vous avez un moyen de faire un RAZ total d'un esp8266-01 ? Je crois que j'ai écris de la merde dans le mien et j'arrive plus à le "booter".
 
j'ai pas envie de jouer la facilité et en prendre un autre tout neuf :o

Reply

Marsh Posté le 12-01-2016 à 14:50:49    

Zaib3k a écrit :

vous avez un moyen de faire un RAZ total d'un esp8266-01 ? Je crois que j'ai écris de la merde dans le mien et j'arrive plus à le "booter".
 
j'ai pas envie de jouer la facilité et en prendre un autre tout neuf :o


Ya moyen de faire un reset normalement.  
J'ai jamais essayé, mais je crois qu'il faut suivre le schéma suivant :
 
http://reho.st/self/ad4b2eeaf8e37f912d39f97e1dd44e63fffb409e.png


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 12-01-2016 à 14:52:07    

En gros, au moment où tu mets le jus, il faut que le RST soit à la terre.


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 12-01-2016 à 15:03:40    

j'ai fini par réussir. A base de reflsh, reset, et reflash et rereset,...
 
je ne sais pas ce qui a réussi mais j'ai repris la main.
 
Mon proto fonctionne, je dois maintenant tenter d'en faire un truc plus "intégré". J'ai jamais fait :o
 
j'ai des protoboard, comme ça http://www.aliexpress.com/item/Fre [...] 16.0sFPkQ. Ca s'utilise comment ?
 
Je plug l'esp, un connecteur à vis pour l’interrupteur, peut-être un autre pour la liaison série. Comment je relie les points ?
Je pense coller tout ça dans une boite de dérivation en PVC. Faut aussi que je trouve un moyen d'alimenter ça simplement.
 
Vous proposer quoi pour alimenter le bestiau ?

Reply

Marsh Posté le 12-01-2016 à 16:20:21    

C'est un détecteur d'ouverture de porte, avec mail d'annonce à l'ouverture ?

 

Si c'est ça, je conseille des piles :o
Faut juste t'assurer que la wifi est bien coupé tout le temps sauf au moment d'envoyer un mail.

 

En gérant bien le truc, il y a moyen de tenir des années... avec de simples piles AA.


Message édité par _pollux_ le 12-01-2016 à 16:21:08

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 12-01-2016 à 16:33:14    

tu crois que des piles suffisent ? 2 AA ?
 
faudrait que je déplace la connexion wifi dans ma fonction d'envoi de mail.

Reply

Marsh Posté le 12-01-2016 à 16:48:54    

:D
 
j'ai pas le niveau pour ce type de soudure : http://tim.jagenberg.info/2015/01/ [...] r-esp8266/

Reply

Marsh Posté le 13-01-2016 à 09:46:12    

Effectivement, c'est fin :o
Par contre, on voit que 2 AA permettent de tenir 3 ans théoriques en mode veille.

 

Et ça, c'est cool !


Message édité par _pollux_ le 13-01-2016 à 09:46:48

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 13-01-2016 à 09:48:59    

C'est le bordel, j'ignorais qu'il existait 2 version de la série 01 :o
Et qu'en soudant, on passe de l'une à l'autre... pour accéder au deep sleep mode :o


Message édité par _pollux_ le 13-01-2016 à 10:09:25

---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 13-01-2016 à 10:08:53    

Pour les infos génériques concernant les modes de veille : http://bbs.espressif.com/viewtopic.php?f=51&t=645
 
Le document en anglais est assez clair, je ne commenterai pas le chinois :o


---------------
Le topic du sport électronique@hfr : watch the l33t !
Reply

Marsh Posté le 13-01-2016 à 10:51:01    

Sinon il y a le airboard :D pas le même budget aussi, mais de conception française  :D http://www.theairboard.cc (il y a eu un kickstarter auquel j'ai participé)

 

cela dit projet interessant c'est un peu le genre de truc qui m’intéresse...


Message édité par fabcool le 13-01-2016 à 10:51:19
Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed