Envoi de données Arduino WIFI

Bonjour,

Je suis certain d’avoir la question bête, mais je ne trouve pas la réponse…

J’ai une carte ATmega328P sur laquelle est intégré un ESP8266. Je souhaiterai envoyer des données (Température) à mon Raspberry. Malheureusement je n’y arrive pas.

J’arrive à le faire directement des broches de ESP8266. Mais pas assez d’entrées pour le projet
J’arrive à récupérer les données sur mon Arduino.

Mais je n’arrive pas à envoyer ces données de l’Arduino au Raspberry via l’ESP8866.

Si j’ai bien compris le fonctionnement, je dois passer les données à l’ESP8266 via le port série. Vous confirmez ?

Je pense que j’ai un soucis de communication notament au niveau des Pin pour la fonction SerialSoftware car je ne connais pas le branchement interne de la carte. Peut-être aussi que ce n’est pas comme cela qu’il faut s’y prendre

Merci d’avance de votre aide.

Bonjour

Si j'ai bien compris le fonctionnement, je dois passer les données à l'ESP8266 via le port série. Vous confirmez ?

Peut être mais il faudrait en savoir plus sur la carte pour comprendre les liaisons possibles entre les deux microcontrolleurs selon le positionnement des switches :

-schéma de la carte (sans lui on reste dans le brouillard !)
-code actuellement présent dans la mémoire Flash associée à l'ESP8266 (code perso développpé sous IDE Arduino ou firmware AT ?)

Le vendeur de la carte ne fournit pas le schéma ? Un moteur de recherche avec la référence de la carte non plus ?
Il y a probablement la possibilité de relier par SoftSerial côté Mega328 et sur Rx/Tx côté ESP8266 pour établir une communication

J'ai une carte ATmega328P sur laquelle est intégré un ESP8266

C'est souvent la galère a vu des retours.... Sur ce forum les cartes dans ce genre n'ont pas très bonne presse , vu leur conception et le manque fréquent de documentation, on préfère en général les montages où les ESP8266 et ESP32 travaillent sans le fil à la patte d'un ATmega328 , d'un firmware AT.....!!

J'arrive à le faire directement des broches de ESP8266. Mais pas assez d'entrées pour le projet

des cartes NodeMCU, Wemos D1 MIni aux cartes à ESP32 on arrive en général à trouver son compte quitte parfpois à ajouter un composant pour 'démultiplier' les E/S

Merci de ta réponse. Voici les éléments.
1 / Doc de la carte : https://robotdyn.com/uno-wifi-r3-atmega328p-esp8266-32mb-flash-usb-ttl-ch340g-micro-usb.html. Cest quasiment la même. Seul le logo change.

En ce qui concerne le code, je ne l'ai pas sous la main mais pour tester j'ai juste joué avec des Serial Write et Read histoire décrire dans le moniteur une chaîne de caractères

il a déjà été question de cette carte et de ses copies sur le forum (utiliser la loupe en haut à droite pour retrouver les échanges) Pas mal de prises de tête....

Certains ont je crois réussi à en tirer quand même quelquechose, ils se manifesteront peut être !!

Au vu du schéma disponible sur la page Robodyn du produit il me semble (je peux me tromper) que la seule liaison possible entre les deux microcontrolleur se fasse par leur laison série matérielle et que les interrupteurs de la carte ne permettent malheureusement pas(sauf modif de la carte ?) de relier l'ESP8266 au Mega328 par une liaison SoftSerial() sur des pins quelconques, autres que les Rx /Tx du seul port série matériel. C'est dommage et sa restreint les utilisations.

Pour ma part sur ce type de carte hybride mal foutue je passe mon tour et ne prévois surtout pas d'en acheter une trouvant mon bonheur avec les cartes 'pur ESP' diverses (et les Raspberry Pi)

Merci pour cette analyse
Du coup, je ne peux pas envoyer les données de mon Arduino via le wifi ?

je ne suis pas aussi catégorique !!

Il y a sans doute une possibilité que certains içi sauront peut être indiquer, elle est peut être mentionnée dans un fil de discssion de ce forum.(Loupe)

ça consiste peut être à mettre un firmware AT dans l'ESP8266 puis à relier l'ESP8266 au port série matériel du Mega328 (RX/Tx) tout en déconnectant de dernier de la liaison USB vers l'ordinateur. Le Mega 328 pilotant alors l'ESP8266 par un séquence de commandes AT.

Merci encore

Je ne comprends pas trop pourquoi on s'emm... encore avec ces firmwares AT, alors qu'un ESP n'est pas plus difficile à programmer qu'un Arduino.
Bon c'est vrai qu'il faut avoir :

  • un adaptateur USB/série à qques €
  • des notions de réseau pour écrire le soft pour ESP. Mais je préfère investir là dedans que d'apprendre à parler en AT :cold_sweat:

Je ne souhaite pas utiliser l'AT.
Et pas besoin de l'adaptateur, le port USB de la carte communique bien avec l'esp. D'ailleurs j'ai bien la connexion Wi-Fi qui s'établit.
Par contre je n'arrive pas a récupérer mes données de l'arduino avec mon esp !

Une idée ?

biggil:
Je ne comprends pas trop pourquoi on s'emm... encore avec ces firmwares AT, alors qu'un ESP n'est pas plus difficile à programmer qu'un Arduino.
Bon c'est vrai qu'il faut avoir :

  • un adaptateur USB/série à qques €
  • des notions de réseau pour écrire le soft pour ESP. Mais je préfère investir là dedans que d'apprendre à parler en AT :cold_sweat:

peut-être parce que pour un novice c'est plus facile à appréhender ?
il faut lui laisser le temps ... que tu as forcément été obligé de prendre pour apprendre ce que tu sais ... et pas lui encore.

Je ne comprends pas trop pourquoi on s'emm... encore avec ces firmwares AT, alors qu'un ESP n'est pas plus difficile à programmer qu'un Arduino.

C'est la routine et le poids d'anciens tutoriels (et de leurs copies récentes) datant de l'arrivée sur le marché de l'ESP8266 , époque ou seul les ESP-01 avec de firmwares AT étaient disponibles et où l'extension ESP8266 pour IDE Arduino n'existait pas.

peut-être parce que pour un novice c'est plus facile à appréhender ?

au contraire , c'est 'primitif', plus difficile et plus contraint en terme de fonctionnalités.
Il est donc logique d'informer les arrivants de l'existence de solutions plus simples et plus performantes.

Je ne souhaite pas utiliser l'AT.
Et pas besoin de l'adaptateur, le port USB de la carte communique bien avec l'esp.

OK. mais le handicap imposé par cette carte tient au fait que (sans modifications) seul l'unique port série matériel du Mega328 peut être relié (via le bloc de 8 interrupteurs) à l'ESP8266 ....avec comme corollaire le fait de perdre la liaison USB si LA liaison série sert à la communicatioin des 2 puces.

Voir içi les configurations possibles :

Il faut donc procéder en trois temps :

  1. en configuration "CH340 connect to ESP8266" envoyer côté ESP un code développé avec l'IDE Arduino , code comprennant une entrée/sortie de données par le port série et la communication réseau par WiFi

  2. en configuration "CH340 connect to ATMega328" envoyer côté Mega328 un code Arduino assurant l'entrée/sortie de donées par l'unique port série matériel du Mega328

3)passer ensuite en configuration "Mega328 + ESP8266" pour établir la coopération entre les deux puces, en perdant la liaison USB vers le PC, LA laison série etant alors exclusivement réservée à la communication entre les 2 puces.

NB : en 'patchant' la carte , en lui ajoutant deux fils biens placés il est sans doute possible de relier en SoftSerial() le Mega328 et l'ESP8266 tout en maintenant la liaison USB /PC pour le Mega328.

Une idée ?

As-tu, Nouch77, fait quelques recherches avec le moteur du forum = LOUPE comme conseillé ?

mot clefs : Robotdyn Wifi
Forum Catégories : International
Forum Boards : Français

al1fch:
Il faut donc procéder en trois temps :

Et après, il y a le pi!

Je remplacerais la carte batarde par un pi 0W ou ESP32.

al1fch:
.
Il faut donc procéder en trois temps :

  1. en configuration "CH340 connect to ESP8266" envoyer côté ESP un code développé avec l'IDE Arduino , code comprennant une entrée/sortie de données par le port série et la communication réseau par WiFi

  2. en configuration "CH340 connect to ATMega328" envoyer côté Mega328 un code Arduino assurant l'entrée/sortie de donées par l'unique port série matériel du Mega328

3)passer ensuite en configuration "Mega328 + ESP8266" pour établir la coopération entre les deux puces, en perdant la liaison USB vers le PC, LA laison série etant alors exclusivement réservée à la communication entre les 2 puces.

Salut,
Cela s'éclaircit pour moi au fil des échanges et des recherches. La procédure décrite est effectivement ce que je fais. Par contre, je checkais toujours via le port série sur mon ordinateur alors que cela semble impossible. Ce qui m'a induit en erreur durant mes tests, c'est que le moniteur affichait des données provenant à la fois de l'Atmega et de l'esp. C'est étrange...

Je vais tester deux choses :

1/ Procéder a un échange de données entre les deux composants (Atmega/Esp) en me servant de mon Pi pour voir si les infos de l'Atmega arrivent. De cette façon, je libérerai ma liaison série avec l'ordinateur

Si cela ne fonctionne pas,

2/ Câbler les TX/RX de l'esp sur des bornes de l'Atmega et tester un Softserial.

Je suis confiant du résultat.

J'ai aussi cherché sur le forum des solutions. Je suis tombé sur le même souci dans un forum international. Mais la procédure de passage des données est un peu lourde pour des tests (manipulations d'objets JSON).
Est ce que je peux m'en sortir avec des Serial Read/Write sur le port série des Atmega et Esp ? L'initialisation des port (serial.begin) doit elle se faire des 2 côtés ?
Merci encore.

Il parait à priori possible de faire communiquer les deux micro-controlleurs par SoftSerial en utilisant pour cela de part et d'autre des pins libres pour jouer le rôle de RX et Tx supplémentaires et en les reliant par des fils
... ce qui permettrait a l'ordinateur de conservre un lien série par USB avec l'une des deux puces pour faciliter la mise au point.

Pour l'ESP8266 sous IDE Arduino une librairie SoftSerial adaptée existe :

Il faut initialiser SoftSerial des deux côtés

@al1fch

Merci pour ton aide. Le premier test que j'ai réalisé à fonctionné.
Les données sont maintenant transmises de lin Arduino à ma base de données via l'esp sans câblage supplémentaire et de façon assez simple.

Encore Merci

Bonjour Nouch77,

Je rencontre le même problème de compréhension du fonctionnement de cette carte.
Te serait-il possible de détailler un peu plus ta solution ?
Finalement utilises-tu le softSerial ?
Peux-tu me communiquer tes deux programmes Arduino et ESP ?

Merci.

Didier.

Bonjour Didier,

En fait c'est assez simple quand tu as les informations suivantes :

1/ Tu écris ton programme pour ta carte Arduino en gardant à l'esprit que les informations qui passeront dans ton esp sont celles qui s'affichent dans le moniteur.

2/ Tu téléverses dans la carte Arduino.

3/ Tu écris ton programme pour l'esp qui va, récupérer les données de ta carte Arduino (fonction Serial Read), gérer la connexion Wi-Fi et transférer tes données. Tu peux en profiter pour mettre en forme tes données ici avant de les envoyer.

4/ Tu téléverses dans l'esp

Jusqu'à là tu pouvais utiliser le moniteur pour afficher les informations des programmes durant leurs exécutions. C'est là que cela se complique.

5/ Tu places les jumper de la carte dans la position qui fait que la carte Arduino fonctionne avec l'esp mais pas de manière indépendante. Le moniteur série n'indique plus rien, c'est normal. Il est dévié pour assurer la liaison entre la carte et l'esp. Mais ça fonctionne.

De mon côté j'ai pu vérifier le résultat en observant les résultats de mes requêtes MQTT transférées sur un Raspberry. Ce fut une belle surprise :slight_smile:

J'espère que cela t'aidera. Si tu as des questions n'hésite pas.

Un grand merci pour cette réponse, qui m'aide beaucoup à comprendre de fonctionnement de cette carte.

5_cylindres:
peut-être parce que pour un novice c’est plus facile à appréhender ?

Je pense tout le contraire.

C’est la routine et le poids d’anciens tutoriels (et de leurs copies récentes) datant de l’arrivée sur le marché de l’ESP8266 , époque ou seul les ESP-01 avec de firmwares AT étaient disponibles et où l’extension ESP8266 pour IDE Arduino n’existait pas.

Oui, 2014.

Personnellement je ne trouve pas que les tutos bien faits abondent sur le WEB.

Celui-ci est plutôt complet (au passage chapeau à J-M-L, il faut un courage que je n’aurais pas eu).
https://forum.arduino.cc/index.php?topic=501923.msg3425152#msg3425152

Il n’y a qu’à charger le code pour se rendre vite compte de la quantité de code (400 lignes) qu’il faut pour gérer une page toute simple :
projet.png
Je pense que tout débutant devrait lire ce code avant d’envisager de monter un WEB server avec ARDUINO+ESP01.

Je pense qu’avec un ESP8266 ou un ESP32, en utilisant la classe WebServer, on pourrait diviser la quantité de code par au minimum 5, et plus encore en utilisant la librairie AsyncWebServer et ses templates.