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 » ven. 20 mars 2015 10:51

Hello Veloce

J'ai transféré l'alim de PC sur l'ESP avec l'arduino.
Le problème, c'est que j'ai reflashé le firmware avec la version 21 des commandes AT. Cette version travaille avec un Baudrate de 115200, ce qui est incompatible avec le softserial de l'Arduino.

En plus, mes expériences sont interrompues par l'éclipse. :ugeek:
512.jpg
512.jpg (55.38 Kio) Vu 7338 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 » ven. 20 mars 2015 19:09

Avant de me souvenir que le nouveau firmware de l'ESP travaillait en 115200 Baud, j'ai fait un essai de connexion entre l'Arduino à 9600 Baud et l'ESP. Je me suis rendu compte rapidement de mon erreur et c'est à la suite de ça que j'ai posté le message ci-dessus.

Je ne sais pas si cette différence de vitesse de connexion est responsable mais en tout cas, je me suis trouvé devant un problème que j'ai eu du mal à résoudre. Le port COM de l'Arduino ne répondait plus. Le terminal ne donnait plus aucun écho de rien du tout. J'ai essayé de fermer le terminal, de faire des Reset de l'Arduino, de le débrancher électriquement, etc... Pas moyen ! J'ai essayé de reflasher le programme dans l'Arduino. Impossible. C'est là que l'ai vu le message de l'Arduino me disant que le Port COM était ouvert. J'ai essayé de relancer le PC : le port COM refonctionnait mais une seule fois. Dès que le terminal se déconnectait, on ne pouvait plus le relancer, ou plutôt on pouvait le relancer mais il restait silencieux. Même scénario en allant dans le gestionnaire de périphérique. En désactivant le Port COM pui en le réactivant, je pouvais utiliser le port une seule fois, après quoi il devenait silencieux..
J'ai finalement trouvé la solution: j'ai dû réinstaller l'IDE Arduino.

J'y ai finalement passé une bonne partie de l'après-midi.

Pour éviter de refaire la même connerie, j'ai échangé les ESP, c'est à dire que j'ai connecté l'Arduino à l'ESP qui avait encore son firmware original (V.0018) et j'ai alimenté cet ESP avec l'alim de PC.
Le problème du silence de 3 minutes a disparu ! Il y a encore parfois l'un ou l'autre raté avec "page web indisponible" mais en général ça marche bien et vite.

Où le problème se situait-il ?
En réalité, c'est difficile de répondre car il y a d'une part l'alimentation qui a changé et d'autre part, le firmware est V. 0018 alors que les essais avec 3 minutes d'attente utilisaient un Firmware V. 0019.
Il me reste à remettre l'ancienne alim, ce qui permettra de préciser ce paramètre.
Modifié en dernier par Jean-Marie le sam. 21 mars 2015 09:21, modifié 1 fois.

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

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » sam. 21 mars 2015 00:48

Jean-Marie a écrit : Le problème du silence de 3 minutes a disparu ! Il y a encore parfois l'un ou l'autre raté avec "page web indisponible" mais en général ça marche bien et vite.
Super, je suis bien content pour toi ! Maintenant je vais devoir améliorer le traitement des erreurs
et réduire un peu les temporisations si possible. ;)

J'ai eu des petits soucis également, mais moins bloquants: chez moi j'ai un port COM1 qui
est un vrai RS232, un modem sur le COM3 et l'Arduino sur le COM5.
(Pourquoi il n'y a que des numéros impairs je n'en sais rien, mais à la limite on s'en fout.)

Or, dans ma précipitation j'ai essayé de téléverser un programme alors que l'Arduino était en train
de causer, et il n'a pas du tout aimé ça: il m'a dit que COM5 était déjà occupé, et il a décrété que
l'Arduino devait donc être sur le COM3. J'ai dû bricoler les paramètre dans Option/Serial Port, mais
je crois que c'était tout ?

J'ai commencé un schéma sous Fritzing, mais je dois le vérifier avant de le publier.

Du coup, je me dis: tiens, puisque le schéma est fait, pourquoi pas faire un shield ? :P
Ce serait du simple face, et à part l'ESP8266, il n'y aurait que le régulateur 3,3V, des résistances,
des condensateurs, une diode, deux transistors...

Bref même moi je devrais arriver à faire le schéma du PCB en moins d'une demie journée. Et ça ferait plus propre.

Par contre c'est vrai qu'avec mon LM317 je suis limite-limite pour passer de 5V à 3,3V. Si je consomme plus de 200mA,
je devrais avoir une chute de tension supérieure à 1,7V et donc des impulsions parasites. C'est peut-être ça que je vois
sur mon oscillo...

Veloce :?

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 » sam. 21 mars 2015 10:07

Salut à tous

Je n'utilise pas le firmware des commandes AT mais j'ai vu que sur la version 21 on peut configurer l'UART.

Ce qui me semble bizarre c'est le choix de la méthode de synchronisation.
Voir mon message du Mer 18 Mar 2015 23:07 sur ce même sujet.

Il n'y a pas de synchro par Xon /Xoff de prévue (Synchronisation par envoi de caractères).
Le Xon/Xoff est bien pratique car un client peut demander par un Xoff à un serveur de se calmer et de ne plus envoyer des caractères jusqu'à la réception du Xon.

Il semblerait que en fil des versions la méthode de synchronisation change
http://bbs.espressif.com/viewtopic.php? ... +flow#p278

De plus d'après la documentation on peut utiliser une synchronisation Hard par CTS /RTS, mais il faut utiliser des GPIO en plus (Voir le commentaire dans le PDF de la version 21 sur MTCK et MDT0).
et voir également http://sigrok.org/wiki/Protocol_decoder:Esp8266
Ou sur certaines puces on trouve MTCK et MDT0.

Sur le BBS d'espressif http://bbs.espressif.com/
En posant une question sur CTS, il y a quelques réponses concernant la version 21 des commandes AT.

Tout ça me rappelle ma jeunesse on sur les communications RS232 avec des modems à 57Kbits il fallait maitriser :
RTS/CTS DSR/DTR RI et DCD.

A+
SMBA38.

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 » sam. 21 mars 2015 11:26

Hello Veloce

J'ai remis mon petit module de breadboard comme alimentation. Tout se passe très bien. Donc, il ne semble pas que l'alimentation était en cause.

Je crois qu'il ne reste plus qu'un seul paramètre: la version de commandes AT.
Ton programme fonctionne chez moi avec la version 18.
La version 19 était celle qui me donnait un délai de 3 minutes, probablement en raison d'une différence dans les réponses de l'ESP.
La version 21 native ne peut fonctionner en raison du Baudrate de 115200. Cependant, cette version a des commandes AT supplémentaires, entre autres la capacité de changer les paramètres de l'UART.

J'ai pensé à un truc. Tu me diras ce que tu en penses. Il y a peut-être moyen de supprimer carrément le SoftwareSerial du programme et communiquer avec l'ESP par la liaison série native de l'Atmega, c'est-à-dire par les pin 0 et 1 de l'Arduino. Cela simplifierait le programme.
Oui mais alors, comment savoir ce que l'Arduino et l'ESP se racontent ?
En sniffant ces deux pin grâce à un petit module USB-Serial externe monté avec des diodes. Evidemment, il faut déconnecter le Port COM du module pour programmer l'Arduino.
004.jpg
004.jpg (56.05 Kio) Vu 7316 fois
J'ai ajouté une diode pour pouvoir envoyer un ordre à l'ESP à partir du terminal mais ce n'est probablement pas un bonne idée car cela pourrait engendrer des courts-circuits si l'USB-Serial parle en même temps que l'Arduino, à moins d'ajouter encore une diode.

Hello smba, je découvre ton message au moment de poster le mien. Je le lis àprès avoir posté.

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

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » sam. 21 mars 2015 15:25

Jean-Marie a écrit : J'ai pensé à un truc. Tu me diras ce que tu en penses. Il y a peut-être moyen de supprimer carrément le SoftwareSerial du programme et communiquer avec l'ESP par la liaison série native de l'Atmega, c'est-à-dire par les pin 0 et 1 de l'Arduino. Cela simplifierait le programme.
Oui, je pense qu'on peut gagner en fiabilité en utilisant l'UART de l'Arduino pour communiquer avec l'ESP.
Mais au lieu de t'embêter avec des diodes, tu peux simplement échanger la liaison hardware et la liaison software,
comme dans l'exemple ci-dessous (j'ai juste échangé "dbg" et "esp") :

Code : Tout sélectionner

SoftwareSerial dbgSerial(10,11); // communication avec le moniteur de debug via l'interface USB-TTL
HardwareSerial & espSerial = Serial; // communication avec l'ESP via l'UART
Heu bien sûr il faut aussi échanger les fils et sans s'emmêler entre les RX et les TX.
Je dis ça mais ça arrive à des gens très bien. :mrgreen:

Je viens de recevoir une interface USB-TTL, que j'ai commandée le mois dernier:
si j'arrive à la faire marcher je pourrais l'essayer...

Veloce :roll:

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

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » sam. 21 mars 2015 15:39

Voilà le schéma :
Arduino_ESP.png
Arduino_ESP.png (159.87 Kio) Vu 7306 fois
Il manque une LED et une résistance de 220 ohms branchées sur la patte 13, mais on peut aussi regarder la LED qui est sur le circuit de la Uno.

En vrai l'ESP a les pattes plus rapprochées, pour pouvoir le brancher sur une planche d'essai je l'ai soudé sur une petite platine dont les pattes
ont l'écartement d'un CI en DIL8 (comme un NE555, un TL081 ou autres).

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 » dim. 22 mars 2015 12:18

Hello Veloce,

J'ai examiné ton shéma fait avec Fitzing. Ce type de représentation est utile pour voir comment implanter les fils sur une breadboard. Mais pour la compréhension du montage, j'ai préféré transposer tes connexions de la liaison série sur un schéma électronique classique en identifiant les broches des composants concernés:
008.JPG
008.JPG (17.8 Kio) Vu 7296 fois
Il est clair que la liaison fonctionne.
  • Pour la liaison à transistors: quand Tx ESP est bas. T1 est bloqué donc la base de T3 (tiens, pourquoi pas T2?) est haute. T3 est passant et Rx Arduino est bas. Quand Tx ESP est haut, T1 est passant, donc le collecteur de T1 et la base de T3 sont bas. T3 est bloqué et son collecteur est haut.
  • Pour la liaison à diode: quand Tx Arduino est haut, le 5V est bloqué par la diode mais Rx ESP a une résistance de pull up interne qui porte son potentiel à 3.3V. Quand Tx Arduino est bas, la diode est passante dans le sens Rx ESP-->Tx Arduino, donc Rx ESP passe à 0.7V (seuil de la diode).
Cependant, Je vois un risque. Imaginons que tu te trompes et que tu inverses les fils de l'Arduino. Dans ce cas Tx ESP est connecté à Tx Arduino par les deux transistors. Au repos, Tx est haut. Si ESP se met à parler, Tx ESP passe au niveau bas --> T3 devient passant, ce qui signifie que Tx Arduino (qui est à 5V) est directement connecté à GND à travers T3. This is not good.

Ne vaudrait-il pas mieux un montage comme celui-ci:
010.JPG
010.JPG (15.1 Kio) Vu 7296 fois
Dans chaque liaison, la cathode de la diode Zener ne peut jamais dépasser 3,3. Si on inverse les fils de l'Arduino et qu'on se retrouve avec 0V du côté ESP et 5V du côté Arduino, R1 devra absorber une chute de 3.3V. C'est mieux qu'un court-circuit direct. Qu'en penses-tu ? (Certains écrivent "quand penses-tu". J'ai toujours envie de répondre "quand je ne dors pas" :lol: )

P.S. Je crois que tu a oublié de raccorder l'ESP à GND dons ton shéma Fritzing.

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

Re: Serveur web avec Arduino et ESP8266

Message par Veloce » lun. 23 mars 2015 15:10

Jean-Marie a écrit : Cependant, Je vois un risque. Imaginons que tu te trompes et que tu inverses les fils de l'Arduino. Dans ce cas Tx ESP est connecté à Tx Arduino par les deux transistors. Au repos, Tx est haut. Si ESP se met à parler, Tx ESP passe au niveau bas --> T3 devient passant, ce qui signifie que Tx Arduino (qui est à 5V) est directement connecté à GND à travers T3. This is not good.
C'est vrai, ça ferait un court-circuit à la sortie de l'Arduino. On pourrait envisager de mettre une petite résistance, en protection.
Je vais regarder dans le datasheet quelle est l'intensité maximale que peut tolérer une sortie.
Jean-Marie a écrit : P.S. Je crois que tu a oublié de raccorder l'ESP à GND dons ton shéma Fritzing.
Oups, tu as raison. Bravo, il y en a au moins un qui suit ! :oops:

Tiens au fait j'ai acheté de quoi faire des circuits imprimés (2 tubes UV de 8w, du perchlo, des plaques pré-sensibilisées, des transparents pour imprimante...).
Si tout va bien, le W-E prochain je fais un Severino. C'est comme un Arduino Uno mais avec une liaison série. L'intérêt c'est que c'est du simple face !


Veloce :roll:

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. 23 mars 2015 18:09

Hello Veloce
C'est vrai, ça ferait un court-circuit à la sortie de l'Arduino.
Note que le danger de court-circuit n'existe théoriquement que pour les tests sur breadboard. En effet, une fois que tu fais le montage définitif sur PCB, j'imagine qu'il n'y aura plus de risque d'inversion des fils, à moins d'une erreur de conception du schéma ;)
j'ai acheté de quoi faire des circuits imprimés (2 tubes UV de 8w, du perchlo, des plaques pré-sensibilisées, des transparents pour imprimante...).
Super ! Pour l'utilisation du perchlorure de fer, tu as intérêt à travailler avec des gants et sur du papier journal de protection. Les transparents pour imprimante peuvent être remplacés par du papier calque. C'est ce que j'utilise et c'est moins cher.
Il faudra aussi que tu étalonnes ton insoleuse pour déterminer le temps d'exposition optimal.
Si tout va bien, le W-E prochain je fais un Severino. C'est comme un Arduino Uno mais avec une liaison série. L'intérêt c'est que c'est du simple face !
Tiens, tiens. Pourquoi veux-tu repasser à la programmation par liaison série au lieu d'utiliser l'USB ?

De mon côté, j'ai reçu aujourd'hui cinq ESP-12, de quoi faire quelques essais supplémentaires. Je vais aussi devoir graver l'une ou l'autre plaque supplémentaire mais cette fois, je ne vais plus souder les ESP directement sur la plaque mais plutôt souder des pin mâles sur les ESP pour les enficher sur des sockets femelles fixés sur l'adaptateur.

Répondre

Retourner vers « Et tout le reste »