Serveur web avec Arduino et ESP8266

Parce que les applications du Raspberry Pi sont illimités...

Modérateur : Francois

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Serveur web avec Arduino et ESP8266

Message par Jean-Marie » lun. 16 mars 2015 21:23

Veloce a écrit :Hello, désolé j'étais malade comme un chien ce week end, mais me revoilà !
La suite du début de semaine précédente ? J'espère que cette fois tu es quitte de ta grippe !
tu utilises bien le moniteur série de l'IDE Arduino pour le debug ?
J'utilisais mon Terminal habituel (Bray's Terminal) mais je viens de réessayer avec le Terminal de l'IDE Arduino et il n'y a aucune différence. De plus, mon Terminal affiche en HEX dans une colonne de droite tous les octets reçus, qu'ils soient affichables ou invisibles et pendant le long temps d'attente, il n'y a strictement rien qui entre au Terminal.
J'ai donc fait un convertisseur à base de 2 transistors NPN et de 4 résistances.
De mon côté j'utilise un petit module convertisseur de niveau logique.
502.jpg
502.jpg (24.34 Kio) Vu 7412 fois

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Serveur web avec Arduino et ESP8266

Message par Jean-Marie » mar. 17 mars 2015 12:39

Hello Veloce

Lorsque je Reset l'Arduino, voici ce que je vois au moniteur:
> AT+RST
127 < AT+RST

OK
bB׆AùSbNgÏ Fã8âc[b± RJˆ¥C$â Ä@5jùÖ

Vendor:www.ai-thinker.com

SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014,
> AT+CWMODE=1
37 < 21:50:58
ready
AT+CWMODE=1

OK

> AT+CWJAP="Wifi Collette",""
24 < AV]) ÒºeÖ‹ YK‘

OK

> AT+CIPMUX=1
19 < AT+CIPMUX=1

OK

> AT+CIPSERVER=1,80
22 < AV%AM’eUIõ1,80

OK

www :0,CONNECT
www :
www :+IPD,0,361:GET / HTTP/1.1
ch:0
len:361
pb:GET / HTTP/1.1 flushing :Host: 192.168.0.50
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
DNT: 1
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4


OK

www : H¨A½rŠI Ò©¨]Yº-òÁ• ¢ë‹ ,XYOªF-8Þ¹¹¥ ëkÖ¨tÜѵ* ’EÕÊúEˆù¢¢ÅÊJVAT+CIPCLOSE=0busy s...
www :
www :SEND OK
J'ai fait ressortir en bleu les commandes AT envoyées par l'Arduino.
C'est après la dernière ligne que plus rien ne se passe pendant ~3 minutes.
A la troisième dernière ligne, est-ce normal de voir ce "AT+CIPCLOSE" ?

Après 3 minutes, voici les nouvelles lignes qui apparaissent au moniteur:
www :1,CLOSED
www :0,CONNECT
www :0,CONNECT
www :
www :+IPD,0,301:GET /favicon.ico HTTP/1.1
ch:0
len:301
pb:GET /favicon.ico HTTP/1.1 flushing :Host: 192.168.0.50
Connection: keep-alive
Accept: */*
DNT: 1
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36
Accept-Encoding: gzip, deflate, sdch
Accept-Language: fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4


OK

www : H¨A½rŠI Ò©¨]Yº-òÁ• ¢ë W­'´¹etÿUTZ½¹¹ ÅëkÖnʹÑb ’BÕÊúADx%Q*
www :UAT+CIPCLOSE=0busy s...
www :
www :SEND OK
On repère à nouveau le "AT+CIPCLOSE" vers la fin.
Au total, la page web a mis plus de 3 minutes à s'afficher.

Peut-être que ces copies du moniteur t'aideront à comprendre ce qui se passe pendant le silence radio de 3 minutes.

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » mar. 17 mars 2015 14:28

Jean-Marie a écrit : Peut-être que ces copies du moniteur t'aideront à comprendre ce qui se passe pendant le silence radio de 3 minutes.
Peut-être bien : ton Arduino ne comprend pas les caractères qu'il reçoit, et donc il attend la fin du timeout.
Et comme j'ai eu la main lourde sur les délais, si on cumule tout ça peut faire les 3 minutes.

Normalement dans l'exemple ci-dessous, le module devrait répéter l'ordre qu'il a reçu, puis sauter 2 lignes (ou CR+LF je ne sais pas) puis OK.
> AT+CIPSERVER=1,80
22 < AV%AM’eUIõ1,80

OK
Normalement il devrait répondre "AT+CIPSERVER=1,80", mais là il a bien compris le "A", et le "1,80", mais entre les deux c'est de la bouillie.
D'ailleurs il manque un caractère, ce qui tendrait à indiquer que le SoftwareSerial s'est emmêlé les pinceaux.
Est-ce que le convertisseur est bien branché ? Tu prends le 5V sur l'Arduino ? Ton module est bien à 9600 bauds ?
Plus ça va, plus je me dis qu'on devrait utiliser l'UART pour communiquer avec le module, et SoftwareSerial pour communiquer avec le terminal de debug.

Veloce :(

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » mar. 17 mars 2015 14:37

Au fait oui, le CIPCLOSE est normal: dès que j'ai fini de poster mon formulaire, je ferme la connexion.

C'est normal, c'est comme ça que font les serveurs web, à l'inverse des serveurs Telnet ou SSH. Dès qu'ils ont fini
de transmettre la page, ils coupent la connexion. Ça complique la gestion des sessions, mais ça permet de traiter
beaucoup plus d'utilisateurs en parallèle.

Veloce

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Serveur web avec Arduino et ESP8266

Message par Jean-Marie » mer. 18 mars 2015 19:00

Hello Veloce
Est-ce que le convertisseur est bien branché ? Tu prends le 5V sur l'Arduino ? Ton module est bien à 9600 bauds ?
Voici mes connections:
505.jpg
505.jpg (101.71 Kio) Vu 7356 fois
ton Arduino ne comprend pas les caractères qu'il reçoit
J'ai essayé de connecter le Tx de l'ESP directement à la pin 10 de l'Arduino: le résultat est le même.

J'ai ensuite tenté l'expérience "pass through" de l'Arduino. Dans cette expérience, l'Arduino est utilisé comme s'il était simplement un convertisseur USB - TTL.
Il fonctionne avec la pin Reset connectée à GND. Voici les autres connexions:
Arduino --------- ESP
  • pin 0-----pin Rx
    pin 1-----pin Tx
Evidemment, dans cet état, l'Arduino n'exécute pas son programme. Par contre, il transmet les messages entre le moniteur et l'ESP.
J'envoie donc les commandes manuellement et voici ce que j'obtiens :
AT+RST

OK
@f¬8¤ÿ('bcFÊ<âgVÊ1”ŒàÐ@@Ïÿ

Vendor:www.ai-thinker.com

SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014, 21:50:58
ready
AT+CWMODE=1

OK
AT+CWJAP="Wifi Co|let|eb,"b

ERROR
Les commandes AT+RST et AT+CWMODE=1 passent bien.
Par contre la commande AT+CWJAP="Wifi Collette","" est déformée en AT+CWJAP="Wifi Co|let|eb,"b et la réponse est évidemment ERROR.

Cette fois, je remplace l'Arduino "Pass Through" par mon adaptateur USB-TTL à base du chip CP2102 et je relance les mêmes commandes (à travers mon convertisseur 5V<-->3.3V):
AT+RST

OK
ü!¤ž1ä)
ôØÕ)äŒd!:ÄßÄ×!¾ùj
Vendor:www.ai-thinker.com

SDK Version:0.9.5(b1)
Compiled @:Dec 25 2014, 21:50:58
ready
AT+CWMODE=1

OK
AT+CWJAP="Wifi Collette",""

OK
Cette fois, la commande AT+CWJAP="Wifi Collette","" a été bien comprise et la réponse est OK.

Conclusion: l'erreur vient de mon Arduino. Il s'agit du modèle UNO R3 d'origine chinoise. J'utilise l'IDE 1.6.1
Le programme est celui que tu as posté dans ton premier message. Je n'ai adapté que la commande AT+CWJAP="Wifi Collette","".
Modifié en dernier par Jean-Marie le jeu. 19 mars 2015 21:44, modifié 1 fois.

Avatar du membre
dbrion0606
Raspinaute
Messages : 164
Enregistré le : ven. 30 janv. 2015 15:51

Re: Serveur web avec Arduino et ESP8266

Message par dbrion0606 » mer. 18 mars 2015 19:53

Excusez moi -j'espère que ma question ne va pas génèrer de la confusion- mais j'ai regardé, ma curiosité étant stimulée par la qualité de ce sujet, ce qu'en dit Lady Ada (qui a une bibliothèque faisant appel à F pour gérer les strings en flash ; le port de debug est mis à 57600 bauds -restreignant les temps pendant lesquels la génération de bits diffère les interruptions, me semble-t-il -) .
Selon http://www.adafruit.com/product/2282,
This module is very low cost, but very simple. It doesn't support SSL, or communcation over SPI - just UART! It doesn't have 5V to 3V logic level shifting so you'll probably want to pick up a logic level shifter, it also doesn't have a regulator on board and it can use big spikes of 300mA or more current at 3.3V so if using with an Arduino, an external 3V regulator is essential!
il y a des pics de courant atteignantrt 300 mA. Si votre Arduino est alimenté par une alimentation extérieure, son régulateur lowdrop supporte jusqu'à 1 A et n'est donc pas un facteur limitant.... S'il est alimenté par l'USB, j'ai demandé à wikipédia http://fr.wikipedia.org/wiki/Universal_ ... 9lectrique ce qu'elle en pensait : "Le bus USB peut alimenter en énergie les périphériques, dans une certaine limite de courant consommé (2 A pour une application haute puissance, 100 mA pour une application normale18).
Il se peut que, au moment d'émettre -sinon, je vois mal l'origine de pics de courant-, vous demandiez trop à votre Arduino, qui peut être perturbé par des chutes de tension -même si le MEGA32 peut descendre à 3.3v, ce qui n'est pas standard à sa vitesse d'horloge.....

smba38
Modérateur
Messages : 193
Enregistré le : mar. 24 févr. 2015 09:28
Localisation : Bourgoin

Re: Serveur web avec Arduino et ESP8266

Message par smba38 » mer. 18 mars 2015 22:07

Bonsoir,
Je viens d'écrire sur le sujet de Jean-Marie " tous les capteurs reliés au RPI" page 14 un message sur la version N° 21 du 23/01/2015 du firmware des commandes AT.

Cette nouvelle version fonctionne à 115200 bauds et on peut modifier les paramètres de l'UART.
UART AT.JPG
UART AT.JPG (63.42 Kio) Vu 7379 fois
A voir si cette version peut résoudre vos problèmes de lenteur ?.

A+
SMBA38

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » jeu. 19 mars 2015 14:27

Sur ton schéma la broche CH_PD n'est pas reliée au +3,3V, mais tu l'as bien fait sur ton montage ?

Veloce :?

Veloce
Messages : 79
Enregistré le : sam. 24 janv. 2015 20:12

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » jeu. 19 mars 2015 14:41

dbrion0606 a écrit :Excusez moi -j'espère que ma question ne va pas génèrer de la confusion- mais j'ai regardé, ma curiosité étant stimulée par la qualité de ce sujet, ce qu'en dit Lady Ada (qui a une bibliothèque faisant appel à F pour gérer les strings en flash ; le port de debug est mis à 57600 bauds -restreignant les temps pendant lesquels la génération de bits diffère les interruptions, me semble-t-il -) .
Selon http://www.adafruit.com/product/2282,
This module is very low cost, but very simple. It doesn't support SSL, or communcation over SPI - just UART! It doesn't have 5V to 3V logic level shifting so you'll probably want to pick up a logic level shifter, it also doesn't have a regulator on board and it can use big spikes of 300mA or more current at 3.3V so if using with an Arduino, an external 3V regulator is essential!
il y a des pics de courant atteignantrt 300 mA. Si votre Arduino est alimenté par une alimentation extérieure, son régulateur lowdrop supporte jusqu'à 1 A et n'est donc pas un facteur limitant.... S'il est alimenté par l'USB, j'ai demandé à wikipédia http://fr.wikipedia.org/wiki/Universal_ ... 9lectrique ce qu'elle en pensait : "Le bus USB peut alimenter en énergie les périphériques, dans une certaine limite de courant consommé (2 A pour une application haute puissance, 100 mA pour une application normale18).
Il se peut que, au moment d'émettre -sinon, je vois mal l'origine de pics de courant-, vous demandiez trop à votre Arduino, qui peut être perturbé par des chutes de tension -même si le MEGA32 peut descendre à 3.3v, ce qui n'est pas standard à sa vitesse d'horloge.....
Ne t'excuse pas, on est là pour discuter. Et tu as plein de bonnes idées:

- mettre le port de debug à 57600, ou même plus vite, bonne idée, si ça libère du temps pour SoftwareSerial pour discuter avec le module.

- Pour les pics de courant, je confirme, quand je branche mon oscillo sur n'importe quelle broche du module je vois des impulsions négatives très régulières.
Pourtant j'ai mis un régulateur LM317T avec des condensateurs de 1000uF devant et 47uF+100nf derrière. Je pourrais encore améliorer, mais je crois que Jean-Marie utilise une alimentation de PC, capable de sortir une vingtaine d'ampères sans cligner un cil. Donc je ne pense pas que ce soit ça.

- La bibliothèque de Lady Ada pour gérer les données en flash m'intéresse. Les exemples que j'ai vus sur son site sont extrêmement bien écrits.

Merci pour ces infos.

Veloce ;)

Avatar du membre
Jean-Marie
Raspinaute
Messages : 240
Enregistré le : sam. 24 janv. 2015 18:01
Localisation : Arlon, Belgique
Contact :

Re: Serveur web avec Arduino et ESP8266

Message par Jean-Marie » jeu. 19 mars 2015 21:41

Hello Veloce
Sur ton schéma la broche CH_PD n'est pas reliée au +3,3V, mais tu l'as bien fait sur ton montage ?
Zut, c'est un oubli sur le dessin. Mais CH_PD est effectivement connecté au +3.3V dans le montage. Je viens de corriger le dessin.

J'ai un ESP alimenté par une ancienne alim de PC et l'autre alimenté par un petit module d'alimentation de breadboard. Jusqu'ici, l'Arduino a été connecté à ce deuxième ESP. Je vais essayer de connecter l'Arduino au premier. Mais mes expériences me font plutôt croire que c'est l'Arduino qui est responsable. J'attends mes Attiny85. Ils sont alimentables par du 3.3V. Vu la mémoire flash limitée à 8k, je compte les programmer en assembleur, ce qui est beaucoup moins gourmand que le C est les librairies arduino.

Répondre

Retourner vers « Et tout le reste »