[Résolu] Ajouter un port série sur ESP8266-12.

Bonsoir,

J'ai fait mes premiers essais avec l 'ESP8266-01 et ESP8266-12 à l'aide de l'IDE Arduino.
Je commence à y voir clair mais j'ai encore des difficultés pour faire correspondre les bornes.

Ma question :
Pour raccorder mon compteur EDF Linky (1200 7N1),
je voudrais ajouter un port série sur ESP8266-12.
a) Suffit-il d'ajouter la librairie : #include SoftwareSerial.h ? confirmer svp
b) Comment nommer TX et RX et
c) quelles bornes utiliser ?
Quelque chose comme : mySerial = new SoftwareSerial(GPIOx, GPIOz); ?
mySerial->begin(1200);

Si quelqu'un avait un exemple ce serait parfait.

Merci

bonsoir
J'ai fait un test avec cette lib il y a qq temps juste "pour voir" :grin:
de memoire = pas de soucis

+1
La librairie indiquée par Artouste figure dans le 'liste officielle' des librairies de l'IDE Arduino pour ESP8266

SoftwareSerial

An ESP8266 port of SoftwareSerial library done by Peter Lerup (@plerup) supports baud rate up to 115200 and multiples SoftwareSerial instances. See GitHub - plerup/espsoftwareserial: Implementation of the Arduino software serial for ESP8266 if you want to suggest an improvement or open an issue related to SoftwareSerial.

Elle est installée avec le 'paquet ESP8266' pour Arduino avec son exemple swsertest.ino
Par contre le 7N1 n'est probablement pas natif avec cette librairie , il faudra peut être jouer avec le 8e bit pour qu'il soit considéré comme un second bit de stop (8N1 vu comme 7N1+1)

La finalité étant la lecture d'informations sur un port série,il serait quand même plus logique d'utiliser le port matériel pour l'application et le port logiciel pour le debug.

Bonjour à tous, Artouste, al1fch, fdufnews et merci pour vos réponses.

Actuellement j'étudie la question et je me prépare. (1er tests dans 15/30 jours)
En principe, possède la librairie car je l'ai déjà utilisée pour Uno et Nano. mais ...
Il semblerait qu'elle soit différente ? mais je pense l'avoir quand même dans le pack ESP8266.

J'ai vu le fichier swsertest.ino. 2 choses me chagrinent quand même :
#include SoftwareSerial.h
SoftwareSerial swSer(14, 12, false, 256);
a) Les bornes 14 et 12 ? Sur l'ESP8266-12 il n'y a pas de bornes 12 14
donc cela voudrait dire GPIO12 et GPIO14 ? (l'objet du sujet)

b) false et 256 ? A quoi cela correspond ? C'est la 1ère fois que je vois cela.
Voici ce que j'ai trouvé pour ceux que cela intéresse.
SoftwareSerial::SoftwareSerial(int receivePin, int transmitPin, bool inverse_logic, unsigned int buffSize)
ça me semble clair.

@al1fch : (8N1 vu comme 7N1+1) OK j'y ferai attention.
@fdufnews : Effectivement cette remarque me semble intéressant . Je n'y avait pas pensé.
Je pense que je "m'en tirer" ainsi.

Merci à tous.

a) Les bornes 14 et 12 ? Sur l'ESP8266-12 il n'y a pas de bornes 12 14
donc cela voudrait dire GPIO12 et GPIO14 ? (l'objet du sujet)

oui

l semblerait qu'elle soit différente ? mais je pense l'avoir quand même dans le pack ESP8266.

Sous Windows elle est installée d'office en :

c:\users***\Appdata\Local\Arduino15\packages\hardware\esp8266\2.3.0\libraries\

pour a) par défaut Arduino va référencer les N° GPIO si vous utilisez un chiffre directement

pour b) vous avez tout bon :slight_smile:

vous avez un ESP “brut de fonderie”

ou alors pris un NodeMCU et l’utilisez en mode Arduino ? (GPIO 12 et 14 correspondraient alors à D6 et D5)

Re bonjour,

C’est ça que j’ai : qui correspond à la 1ère image (brut de fonderie)

(Je ne sais pas afficher l’image directement)

C'est donc un esp12 'nu' , il faudra l'habiller un peu (régulateur, pulls-ups, pul-down, bp ou contacts pour amorcer le mode flashage) !!

OUI, J'ai déjà fait et testé l'envoi de SMS. Merci
ça marche !

OK - donc vous avez un mapping direct the GPIO et il faudra effectivement "l'habiller un peu" comme dit al1fch

Bonjour à tous,

Impossible de compiler l’exemple “swsertest.ino”

La situation :
J’ai 4 librairies pour #include <SoftwareSerial.h>

  • 2 pour Arduino (dont une modifiée) PRESQUE sans rapport avec mon problème.
  • 2 librairies pour ESP8266 :
    a) celle chargée avec le package ESP8266 dont les fichiers xxxx.h et xxxx.cpp datent du 07/03/2016
    b) celle chargée sur le site donné par Artouste dont les fichiers xxxx.h et xxxx.cpp datent du 24/01/2017
    GitHub - plerup/espsoftwareserial: Implementation of the Arduino software serial for ESP8266
    Ces 2 version a) et b) comportent quelques petites différences.
    Les fichiers exemple “swsertest.ino” sont rigoureusement identiques

Le problème : Impossible de compiler. Les détails :
J’obtiens de nombreuses lignes d’erreurs …

ATTENTION : la bibliothèque SoftwareSerial prétend être exécutable
etc …
Multiple libraries were found for “SoftwareSerial.h”
Used: C:\Documents and Settings…\libraries\SoftwareSerial
Not used: C:\Documents and Settings…\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial
no matching function for call to ‘SoftwareSerial::SoftwareSerial(int, int, bool, int)’

ce qui m’a conduit à mettre dans le fichier d’exemple “swsertest.ino”

#include <C:\Documents and Settings…\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial\SoftwareSerial.h>

J’ai essayé les versions a) et b) : impossible de compiler.

messages d’erreurs : en mettant le chemin complet de “SoftwareSerial.h”

serveur0.cpp.o:(.text.startup._GLOBAL__sub_I_swSer+0x4): undefined reference to SoftwareSerial::SoftwareSerial(int, int, bool, unsigned int)' serveur0.cpp.o: In function __static_initialization_and_destruction_0’:
C:\Program Files\arduino-1_6_5/serveur0.ino:4: undefined reference to SoftwareSerial::SoftwareSerial(int, int, bool, unsigned int)' serveur0.cpp.o:(.text.exit._GLOBAL__sub_D_swSer+0x0): undefined reference to SoftwareSerial::~SoftwareSerial()’
serveur0.cpp.o: In function _GLOBAL__sub_D_swSer': C:\Program Files\arduino-1_6_5/serveur0.ino:27: undefined reference to SoftwareSerial::~SoftwareSerial()’
serveur0.cpp.o:(.text.setup+0x10): undefined reference to SoftwareSerial::begin(long)' serveur0.cpp.o:(.text.setup+0x14): undefined reference to SoftwareSerial::write(unsigned char)’
serveur0.cpp.o: In function HardwareSerial::begin(unsigned long)': C:\Documents and Settings\geryko\Application Data\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\cores\esp8266/HardwareSerial.h:75: undefined reference to SoftwareSerial::begin(long)’
serveur0.cpp.o: In function setup': C:\Program Files\arduino-1_6_5/serveur0.ino:8: undefined reference to SoftwareSerial::write(unsigned char)’
C:\Program Files\arduino-1_6_5/serveur0.ino:15: undefined reference to SoftwareSerial::read()' C:\Program Files\arduino-1_6_5/serveur0.ino:15: undefined reference to SoftwareSerial::available()’
serveur0.cpp.o: In function loop': C:\Program Files\arduino-1_6_5/serveur0.ino:19: undefined reference to SoftwareSerial::read()’
C:\Program Files\arduino-1_6_5/serveur0.ino:21: undefined reference to SoftwareSerial::available()' C:\Program Files\arduino-1_6_5/serveur0.ino:20: undefined reference to SoftwareSerial::write(unsigned char)’
collect2.exe: error: ld returned 1 exit status
Erreur lors de la compilation.

J’ai passé 2 jours là dessus sans trouver de solution. Merci de bien vouloir me donner un avis.
(Je pense que le fichier xxxx.cpp utilisé est celui d’Arduino et non celui de ESP8266 ?)

Bonjour,

J'ai réussi à faire fonctionner en forçant le dossier ESP8266.
Il fallait renommer des dossiers et fichiers "Arduino" pour forcer l'IDE à prendre celui de ESP8266
mais à chaque fois il faut fermer l'IDE et recharger le fichier "swsertest.ino" .

Je pense que ça va aller.

Merci

geryko:
Bonjour,

J'ai réussi à faire fonctionner en forçant le dossier ESP8266.
Il fallait renommer des dossiers et fichiers "Arduino" pour forcer l'IDE à prendre celui de ESP8266
mais à chaque fois il faut fermer l'IDE et recharger le fichier "swsertest.ino" .

Je pense que ça va aller.

Merci

bonsoir
je pense que tu a une gestion des librairies "compliquée"

pour test
si j'utilise l'exemple swsertest en definissant comme carte NODEMCU 1.0
la compile est ok
le compilateur indique en debut

Utilisation de la bibliothèque SoftwareSerial prise dans le dossier : C:\Users\COMPAQ HOME\AppData\Roaming\Arduino15\packages\esp8266\hardware\esp8266\2.3.0\libraries\SoftwareSerial

si j'utilise un prog utilisant softwareserial avec un UNO
la compile est OK
le compilateur indique en debut

Utilisation de la bibliothèque SoftwareSerial prise dans le dossier : C:\Users\COMPAQ HOME\AppData\Roaming\Arduino15\packages\arduino\hardware\avr\1.6.5\libraries\SoftwareSerial

juste pour voir :wink: j'ai suivi les traces de geryko et compliqué volontairement les choses :

la librairie espsoftwareseriel de plerup (dernière version) a été ajoutée dans le répertoire libraries.
Elle fait donc double emploi avec l'autre version amenée avec le compléemnt ESP8266 pour IDE Arduino.
Aucun problème de compilation de l'un ou l'autre exemple swsertest.ino

Bonsoir,

Tout cela n’est pas très clair dans mon PC. Je sais que c’est je bazar.

Heureusement, en cas de doublon de librairie, l’IDE signale celle qui a été chargée et celle non utilisée.
(bon à savoir pour ceux qui ne savent pas)

Il faudrait que je réinstalle tout, y compris le SE, mais pour l’instant je n’ai pas le temps.
Je suis retraité donc débordé.

Merci à tous

Bonsoir,

Je crois que j'ai trouvé la solution "normale".
Il tout simplement à l'ouverture de l'IDE, aller dans le menu "Fichiers/Préférences" et indiquer l'emplacement du carnet de croquis.
(C:\Documents and Settings\geryko\Application Data\Arduino15 dans mon cas)

et ça fonctionne enfin !

Qu'on se le dise.

geryko:
Je suis retraité donc débordé.

:slight_smile: :slight_smile: