Forum des utilisateurs de Blockly(s)

Blockly@rduino => HHEEELLLPPP !!! => Discussion démarrée par: draeguob le Décembre 18, 2017, 04:34:49 PM

Titre: Envoyer des données avec esp8266
Posté par: draeguob le Décembre 18, 2017, 04:34:49 PM
Bonjour à tous,

je souhaiterai envoyer des données (températures par exemple) sur le site ThingSpeak avec le module esp8266 connectée à une Arduino Uno.

Avez-vous déjà essayer ? Si oui, j'aimerai bien un petit coup de main n'étant pas expert sur ce type de configuration.

J'ai trouvé des choses sur le net mais rien de concluant.

Par avance, merci pour vos réponses
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 18, 2017, 05:57:53 PM
Salut,
tu as vu ce qu'il y avait dans le menu "carte esus" ?
J'aimerais bien l'utiliser aussi mais je n'ai pas eu le temps de tester le module. Je voudrais l'utiliser via une carte UNO mais je n'ai pas encore compris comment fonctionnait toutes les commandes AT et surtout la différence entre les modes STATION, ACCES POINT et BOTH.
Il y a quelques sites en français comme celui-ci http://julien.coron.free.fr/?p=928 mais les autres sont en anglais.
Pour info j'essaie de faire des blocs pour le module esp-01. Je partagerais quand ce sera au point (mais si tu veux tester et que tu as le esp-01 je t'envoie ce j'ai fait pour l'instant ?)
A +
Titre: Re : Envoyer des données avec esp8266
Posté par: draeguob le Décembre 18, 2017, 06:55:49 PM
Oui, ce sera avec plaisir.
Je poursuis mes investigations.

J'ai vu que l'on pouvait faire un test avec "COMserie.find("text")" mais je ne l'ai pas trouvé dans les blocs Communication logicielle.
A voir si cela est utile...

Merci pour ta réponse
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 18, 2017, 07:32:21 PM
Salut,

Sujet intéressant , je m'y suis mis il y a quelques temps avec un "vieux" module esp 01 et un plus recent esp 06 ... j'ai aussi un esp 13 mais lui, il fait de la résistance avec les commandes AT.

Pour les modes, j'utilise seulement STATION (mode1) et pas l'autre (AP) car je me connecte déjà à des points d'accés.

Sinon, pour envoyer des données via un ESP, ça marche très bien en mode client, je n'ai pas encore testé en mode serveur, mais j'ai beaucoup avancé depuis...Je l'ai fait avec un méga et l'ESP01 en mode AT, c'est assez bas niveau, je regarde en ce moment du coté de cette bibliothèque https://github.com/bportaluri/WiFiEsp  qui me parait assez intéressante, si tous mes tests fonctionnent bien, je ferais surement quelques blocs pour cette librairie ( je n'aurais que quelques modifs à faire sur les blocs que j'ai déjà faits car la syntaxe ressemblera beaucoup)

J'utilise le méga pour ne pas a avoir à implémenter une liaison série logicielle tout en ayant accés à la console d'arduino, mais en baissant le bitrate à 9600 , ça devrait marcher, les quelques essais pour le moment semblent corrects.

Si vous avez besoin de mes sources pour les commandes AT , je peux les envoyer sans soucis, c'est par contre de l'arduino pur pour le moment (pas de blocs avant 2018).

A+




Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 18, 2017, 08:54:02 PM
voila ce que j'ai pour l'instant.
ce n'est pas encore testé.
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 18, 2017, 09:08:55 PM
Merci pour le lien bzhtitude, pour les sources en ino je veux bien.
Ce que je voulais faire avec les commandes AT c'est d'initialiser le module en mode 1, se connecter sur un ssid avec un password et d'attribuer une adresse ip fixe pour faire serveur (donner la température ou l'état d'un bouton)
question :
comment utiliser AT+CWDHCP et AT+CIPSTA ?
A+
Titre: Re : Envoyer des données avec esp8266
Posté par: draeguob le Décembre 18, 2017, 09:17:35 PM
Merci à vous deux

2018, c'est pour bientôt...

Je vais tester demain, et vous rends compte

A +
Titre: Re : Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 19, 2017, 12:01:12 AM
Citation de: fontaine.jp le Décembre 18, 2017, 09:08:55 PM
Ce que je voulais faire avec les commandes AT c'est d'initialiser le module en mode 1, se connecter sur un ssid avec un password et d'attribuer une adresse ip fixe pour faire serveur (donner la température ou l'état d'un bouton)

Pour la configuration du mode et diverses options (vitesse du serial ...) je fais ça avec le programme 1 directement sur la console de l'IDE, les réglages sont enregistrés dans l'ESP, pas besoin de revenir dessus une fois que c'est fait. J'utilise aussi cette doc http://bbs.espressif.com/download/file.php?id=450 (http://bbs.espressif.com/download/file.php?id=450) et celle ci http://www.espressif.com/sites/default/files/4b-esp8266_at_command_examples_en_v1.3.pdf (http://www.espressif.com/sites/default/files/4b-esp8266_at_command_examples_en_v1.3.pdf).

Pour l'IP fixe... je ne m'en sers pas, le DHCP me retourne toujours la même IP dans l'établissement (de toute façon, je n'ai pas la possibilité de le "bidouiller")  et à la maison, j'ai accès à ma box pour "fixer" l'IP. Je fais travailler l'ESP en DHCP, ça évite des manipulations inutiles à mon avis.

Le programme 2 est un programme que j'avais fait pour un MOOC de chez FUN. C'est un envoi en mode client sur un site externe d'un PATCH avec un fichier JSON ... il est trop compliqué à l'heure actuelle et ne répond pas vraiment à ta demande pour un serveur mais ça te donne des pistes pour la connection à un AP et la connection à un serveur distant. Je vais surement me replonger dedans mercredi après midi et proposer une version beaucoup plus simple, ainsi qu'un programme en mode serveur hébergeant une "petite" page HTML maison avec envoi de paramètres (potentiomètre ou autre).
L'utilisation de la librairie me parait beaucoup plus simple, mais je n'ai pas encore vraiment testé.

J'y pense, le module wifi demande pas mal de jus ( plus de 200mA d'après divers forum lors de la connexion). J'ai eu quelques soucis avec ça, j'ai donc mis une alim externe sur le méga pour que ça fonctionne bien, l'alimentation par le cable USB "peut" suffire mais je ne mise plus dessus après une grosse frayeur avec un DD externe et des manips sur l'ESP...

Citation de: draeguob le Décembre 18, 2017, 09:17:35 PM
Merci à vous deux

2018, c'est pour bientôt...

Je vais tester demain, et vous rends compte

A +

Il se peut que ce soit avant... mais il reste encore pas mal de boulot et de tests et la fin d'année approche vite ;)

A+


#include "SoftwareSerial.h"

SoftwareSerial esp8266(10, 11); // RX, TX

void setup()
{
  Serial.begin(9600);
  esp8266.begin(9600); // à régler à 115000 au départ
  delay(1000);
  Serial.println("BZH commandes AT");
  Serial.println("Envoyer cr+ln gràce à la console.");
}
void loop()
{
  while (Serial.available()) { 
    esp8266.write(Serial.read());   
  }
 
  while (esp8266.available()) {
   Serial.write(esp8266.read());   
  }
}


Edit : le programme est trop gros pour passer en balise "code", je le joins en .txt
[/code]
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 19, 2017, 07:39:56 PM
Bonsoir,

Résultats des test de la bibliothèque : Concluant !

Ca fonctionne parfaitement, J'ai repris le code de demo pour le serveur embarqué, je n'ai eu qu'à très légérement le modifier et j'ai envoyé le tout dans l'arduino...

Résultats sans appel, aucun soucis, ça a fonctionner du 1er coup, sans avoir à trainer les commandes AT et les calculs de longueurs de chaines etc... Les modifications pour les blocs déjà existants sera assez simple vu que cette librairie reprends les mnémoniques utilisés par la bibiothèque standart. Bref, de mon point de vue, que du bonheur. Je ne testerai pas le mode client ce soir, mais vu la première impression, je n'ai pas trop de doute pour la suite.

Ci joint le code et des captures d'écran pour vous montrer les résultats ...


Bon courage pour vos tests.
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 19, 2017, 07:41:37 PM
Bzhtitude
Merci pour les fichiers.
Donc si j'ai bien compris, tu paramètres (avec le programme 1) le module avec les commandes at et elles restent en mémoire après mise hors tension ?
La vitesse de liaison est de 115200 par défaut, pourquoi passer ensuite à 9600 ?
Comme le module fonctionne en 3.3 V as-tu adapté les signaux Rx/Tx vers l'esp-01 ?
Pour l'alimentation c'est noté.

draeguob
Tu peux utiliser mon site http://lesormeaux.net/blockly@rduino/ pour ne pas avoir à tout réécrire.
Si jamais tu ne trouves pas un bloc spécifique, tu as la possibilité de le remplacer par le bloc "code arduino" car tu peux y écrire ce que tu veux.
Merci pour les tests, en général je le fais pendant les vacances car c'est le seul moment où j'ai un peu de temps devant moi.
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 19, 2017, 07:50:38 PM
Génial c'est exactement ce que je voulais faire :)
par contre le mot de passe de ton wifi est visible
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 19, 2017, 07:57:28 PM
Citation de: fontaine.jp le Décembre 19, 2017, 07:41:37 PM
Bzhtitude
Merci pour les fichiers.

Avec plaisir,

Citation de: fontaine.jp le Décembre 19, 2017, 07:41:37 PM
Donc si j'ai bien compris, tu paramètres (avec le programme 1) le module avec les commandes at et elles restent en mémoire après mise hors tension ?
La vitesse de liaison est de 115200 par défaut, pourquoi passer ensuite à 9600 ?
Comme le module fonctionne en 3.3 V as-tu adapté les signaux Rx/Tx vers l'esp-01 ?

Oui , je fais toute la config avec le programme 1 , ça reste en mémoire, il y a plusieurs commandes AT en deprecated ou pas, les 2 fonctionnent jusqu'à présent, J'ai même l'impression que le dernier AP ainsi que le MDP est gardé en mémoire.... d'ailleur je vais modifier la PJ pour changer le MDP (trop tard mais j'ai confiance).... mais bon à moins de venir dans le jardin, ce sera dur de pirater ma box.

Pour le changement de vitesse ... je suis très prudent avec la "haute vitesse" et mes câblages assez...euh ... approximatifs , et puis vu la quantité d'infos que je transmet , la vitesse "traditionnelle" à 9600 va bien , mais je n'ai pas vraiment d'autres explications techniques, si de ton côté, ça fonctionne bien en 115200 , je ne vois aucune raison de modifier,

Pour le changement de niveau, j'ai la mini-carte qui fait l'adaptation pour l' ESP01, et le module ESP06 est équipé lui aussi en double alim 5/3.3 donc je ne me suis pas penché sur les soucis de changement de  niveaux. A mon avis les schémas avec diviseurs de tensions sont bien suffisants, mais le top est quand même les adaptateurs de tensions intégrés.

Le lien vers le Shield utilisé pour les tests --> http://wiki.seeed.cc/Grove-UART_Wifi/

a+
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 19, 2017, 08:36:30 PM
juste une dernière question, quelle mini-carte utilises-tu pour adapter l'esp-01 ?
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 19, 2017, 08:42:23 PM
C'est cette carte là, http://www.dx.com/fr/p/esp-01-esp8266-serial-wi-fi-wireless-module-adapter-module-3-3v-5v-compatible-for-arduino-404644

Je l'ai acheté sur ce site , faut pas être trop pressé, je ne sais pas si on peut la trouver ailleurs, mais comme c'était vendu avec l'ESP01... j'ai pas vraiment hésité.
Titre: Re : Envoyer des données avec esp8266
Posté par: fontaine.jp le Décembre 19, 2017, 09:29:02 PM
Merci,
Je vais reprendre tout ça à tête reposée et je posterai le résultat ici une fois le projet terminé.
A+
Titre: Re : Envoyer des données avec esp8266
Posté par: SebCanet le Décembre 21, 2017, 01:24:33 AM
Bonjour tout le monde,
je débarque un peu, mais je vois que tout cela est très riche !
Pour l'ESP8266 je n'ai pas assez joué avec de cette façon pour vous aider.
Pour le serveur je penchais plutôt intégrer Blynk pour éviter que les données soient dans des compte sur des serveurs on sait pas où. Peu importe c'est un détail.

Merci pour le boulot engagé !
Titre: Re : Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Décembre 21, 2017, 06:43:22 PM
Citation de: SebCanet
Pour l'ESP8266 je n'ai pas assez joué avec de cette façon pour vous aider.

Tu joues comment avec ? directement sans Arduino ? si tu as quelques pistes ça m'intéresserais mais je ne vois pas comment faire.

Citation de: SebCanet
Pour le serveur je penchais plutôt intégrer Blynk pour éviter que les données soient dans des compte sur des serveurs on sait pas où. Peu importe c'est un détail.

C'est une autre option, ou alors se faire un petit hébergement ... il y a tellement de possibilité que je pense que l'essentiel est de pouvoir presque "tout faire" avec quelques briques.

Vu mon planning, je pense sortir quelques blocs la semaine avant la rentrée.Je vais avoir des élèves qui auront besoin de ça pour leur projet.

A+,
Titre: Re : Envoyer des données avec esp8266
Posté par: draeguob le Décembre 22, 2017, 06:42:19 PM
Avec un temps de décalage, merci pour toutes ces réponses.

Mon Esp est quelque peu HS donc je vais suivre vos conseils après en avoir racheté un autre.

Bonnes vacances (bien méritées) et Joyeux Noel à tous
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Janvier 02, 2018, 04:43:26 PM
J'ai fini les quelques blocs qui manquaient pour pleinement utilisé l'ESP8266 en mode AT avec blockly, (début 2018 comme promis)

Il me reste à les mettre sur le github... bientôt.

Ci joint, un exemple d'algo permettant d'implémenter un serveur utilisant le wifi et envoyant juste une page html.
- 2 liaison séries
- pas de renvoi sur la console mais c'est possible (surtout lors des 1ers tests avec une adresse IP non connue)
- pas de page HTML inclue dans le blockly, je bloque toujours à ce niveau.

Bonne Année à tous
Titre: Re : Re : Re : Envoyer des données avec esp8266
Posté par: SebCanet le Janvier 02, 2018, 04:51:02 PM
Merci encore pour l'excellent boulot !

Citation de: Bzhtitude le Décembre 21, 2017, 06:43:22 PM
Citation de: SebCanet
Pour l'ESP8266 je n'ai pas assez joué avec de cette façon pour vous aider.

Tu joues comment avec ? directement sans Arduino ? si tu as quelques pistes ça m'intéresserais mais je ne vois pas comment faire.

Je me suis servi d'un WemosD1 pour ce projet : http://fablabo.net/wiki/Zygos_Masques (http://fablabo.net/wiki/Zygos_Masques)
Je suis parti d'un code utilisant des envois par une connexion websocket. Je te joins le zip du code à téléverser dans la carte et de l'index.html à ouvrir en local.

Il faut que je regarde comment envoyer de l'html comme une chaîne de caractère pour de l'IoT.

Bons tests.
Titre: Re : Re : Re : Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Janvier 30, 2018, 11:10:59 PM
Salut,

Bon, j'ai enfin mis à jour les biblio ethernet sur Github, il reste au grand Manitou à valider tout ça (il y a bien 6 ou 7 PULL) . J'y ai mis aussi un petit parseur de requête pour serveur embarqué si ça peut vous servir.

Juste à temps pour le début d'année; mais j'avais quelques occupations avec l'agreg et une visite PPCR...

Citation de: SebCanet le Janvier 02, 2018, 04:51:02 PM
Il faut que je regarde comment envoyer de l'html comme une chaîne de caractère pour de l'IoT.

La méthode que j'utilise est très sale. Un copier coller de la page HTML dans la chaîne de caractère... Très très moche mais ça fonctionne presque bien en prenant quelques précautions.
J'essaierai de revoir ça si je trouve une solution.

Titre: Re : Envoyer des données avec esp8266
Posté par: SebCanet le Janvier 31, 2018, 12:23:30 AM
Super !!!  Merci beaucoup pour tout ce travail de développement.
Et puis toutes mises à jour et oublis   ;) te prennent du temps.

Pour le HTML j'ai trouvé un petit truc en Java "convertHtml.jar" qui transforme ton fichier HTML en .h pour l'inclure. C'est le genre de moulinette qui pourrait être sympa.
Pour tes blocs, je ne sais plus s'il y avait une raison, mais peux tu uniformiser la langue pour éviter d'avoir du français et de l'anglais ? Merci.
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Janvier 31, 2018, 01:38:42 PM
Je vais regarder le "convertHtml" ça semble une bonne idée, surtout si on peut passer aussi un css ce serait vraiment bien... La place reste limité bien sûr mais ça permettra une bien meilleur lisibilité du code.

Pour le franglais , oui c'est sans trop de raison , juste un peu de flegme de chercher une traduction "crédible" pour les blocs. Je vais modifier un de ces jours...  C'est souvent la dernière partie du travail. Faut avouer que quand on lit la documentation sur le sujet c'est essentiellement en anglais, donc les "mots" deviennent naturels.
Titre: Re : Envoyer des données avec esp8266
Posté par: g.reich le Août 24, 2018, 12:38:22 AM
Désolé, je déterre un peu le sujet mais je compte faire une activité "connexion à une API de météo" avec mes élèves donc comprendre le fonctionnement des blocs existants pourraient m'aider à gagner du temps. Il faudra très certainement en créer de nouveaux pour la connexion à l'API mais je m'en chargerai sans soucis.

un exemple de connexion à une API tiré d'un site anglais : https://medium.com/@cgrant/using-the-esp8266-wifi-module-with-arduino-uno-publishing-to-thingspeak-99fc77122e82

Serait-il possible Bzhtitude que tu postes ici une capture de la version définitive de ton programme exemple un peu plus haut ? Car j'ai l'impression qu'il y a eu des changements au niveau des blocs depuis et je ne suis pas sûr d'arriver au même résultat. Si tu peux éventuellement aussi préciser de quels menus viennent les blocs, notamment si certains ne sont pas dans "ethernet" ou "communication logicielle".

Merci d'avance ;)
Titre: Re : Envoyer des données avec esp8266
Posté par: Bzhtitude le Août 25, 2018, 10:49:04 AM
Salut,

Citation de: g.reich
Désolé, je déterre un peu le sujet mais je compte faire une activité "connexion à une API de météo" avec mes élèves donc comprendre le fonctionnement des blocs existants pourraient m'aider à gagner du temps. Il faudra très certainement en créer de nouveaux pour la connexion à l'API mais je m'en chargerai sans soucis.

L'exemple que j'avais mis et que je viens de remettre à jour, utilise l'esp en mode serveur, je n'ai pas fait les blocs correspondant au mode client (ce que tu cherches à faire) il faudra donc les faire (il devrait y en avoir 2 ou 3) je veux bien m'en charger mais je n'ai pas l'esp sous la main  (il est resté au bahut). C'est pour quel niveau de classe ? les blocs que je conçois sont souvent assez bas niveau pour des élèves de TSTI2D et TSSI.

Citation
un exemple de connexion à une API tiré d'un site anglais : https://medium.com/@cgrant/using-the-esp8266-wifi-module-with-arduino-uno-publishing-to-thingspeak-99fc77122e82

Ce site utilise les commandes AT, pourquoi pas, mais ce n'est pas le moyen que j'utilise (à par pour configurer l'esp). J'utilise plutôt la bibliothèque  wifiesp.h qui permet de gérer l'esp sans passer directement par les commandes AT.
On pourrait aussi envisager une lecture de flux RSS http://pigo.free.fr/projet-mini-projet-web-extraction-des-donnees-integrees-a-un-fil-rss.html pour récupérer les données météo mais ça demande surement plus de travail au niveau du traitement.

Citation
Serait-il possible Bzhtitude que tu postes ici une capture de la version définitive de ton programme exemple un peu plus haut ? Car j'ai l'impression qu'il y a eu des changements au niveau des blocs depuis et je ne suis pas sûr d'arriver au même résultat. Si tu peux éventuellement aussi préciser de quels menus viennent les blocs, notamment si certains ne sont pas dans "ethernet" ou "communication logicielle".

Il n'y a pas souvent de définitif avec moi, je cisèle mes blocs au fur et à mesure des besoins et des retours élèves et collègue. L'ensemble des blocs spécifiques sont dans le menu ethernet. Tous les blocs en rouge ne te seront pas utile en mode client (quoique). Ces blocs font appel à une bibliothèque maison que l'on a développée et qui se trouve sur le github de blockly@rduino.

Bon courage dans tes développements et tiens moi au courant si tu veux que je fasse les blocs manquants (ça ne devrait pas être bien long) mais il me faudrait un cahier des charges en fonction de ce que tu attends comme "niveau" pour ces blocs.

a +


PS : je profite du retour sur ce fil pour signaler que maintenant les appels aux fichiers HTML se font grâce à un fichier .h externe, ce qui est beaucoup plus simple.
Titre: Re : Envoyer des données avec esp8266
Posté par: SebCanet le Août 25, 2018, 03:23:47 PM
Salut, bon ben ça bosse à fond !
Je ne suis pas sur Blcokly@rduino en ce moment, mis sur la ré écriture de BlocklyDuino afin de faciliter les mises à jour depuis Blockly.
Comme je changerai l'architecture de Blockly@rduino pour simplifier les montées de version, nombreuses car Blockly sert de base au futur Scratch3.

Bzhtitude j'ai inséré ton pdf dans le dossier documentation. Je regarderai pour le pb du switch dès que j'ai du temps.
Titre: Re : Re : Envoyer des données avec esp8266
Posté par: g.reich le Août 25, 2018, 04:08:58 PM
Citation de: Bzhtitude
L'exemple que j'avais mis et que je viens de remettre à jour, utilise l'esp en mode serveur, je n'ai pas fait les blocs correspondant au mode client (ce que tu cherches à faire) il faudra donc les faire (il devrait y en avoir 2 ou 3) je veux bien m'en charger mais je n'ai pas l'esp sous la main  (il est resté au bahut). C'est pour quel niveau de classe ? les blocs que je conçois sont souvent assez bas niveau pour des élèves de TSTI2D et TSSI.

Effectivement, je suis sur de l'utilisation en mode client dans mon cas. Les élèves visés par cette activité étant des 4e, l'idéal serait des blocs à "moyen" niveau pour reprendre tes termes. Malheureusement, comme toi, j'ai laissé l'esp au boulot donc faudra attendre la rentrée pour que je me penche réellement dessus.

Citation de: Bzhtitude
Ce site utilise les commandes AT, pourquoi pas, mais ce n'est pas le moyen que j'utilise (à par pour configurer l'esp). J'utilise plutôt la bibliothèque  wifiesp.h qui permet de gérer l'esp sans passer directement par les commandes AT.

Il est vrai que l'utilisation des AT n'est pas forcément pratique mais je ne connais pas la bibliothèque wifiesp.h, faudrait que je regarde un peu comment elle fonctionne.

Merci pour l'aide proposée en tout cas. Dès que je remets la main sur l'esp et que j'ai fait quelques tests, je reviendra vers toi.