Communication ESP01

Vous avez réalisé ou vous voulez réaliser un truc impensable avec votre Raspberry Pi ? Cet endroit est pour vous...

Modérateur : Francois

Biovel
Messages : 3
Enregistré le : ven. 10 juin 2022 19:14

Communication ESP01

Message par Biovel » ven. 10 juin 2022 20:46

Bonjour,

je souhaiterai communiquer avec mon module ESP01 à travers la liaison série de mon Raspberry pi 3 modèle B. Dans la configuration de ce dernier, j'ai bien activé la liaison série (raspi-config)

Voici le branchement effectué :

ESP01 => Raspberry Pi

VCC (3.3V) => pin #1 (3.3V)
GND => pin #6 (GND)
TXD => pin #10 (RXD / BCM 15)
RXD => pin #8 (TXD / BCM 14)
CH_PD => pin #17 (3.3V)
RST => pin #3 (BCM 2)
GPIO 0 => pin #5 (BMC 5)
GPOI 2 => NC

Je démarre donc le module en mode "flash mode" avec ce programme :

#Demarre l'ESP en mode programmation

import RPi.GPIO as GPIO
import time

GPIO.setmode(GPIO.BOARD) # sets GPIO identification by physical pin numbers
resetPin = 3 # identify RPi physical pin connected to ESP8266 RST pin
flashPin = 5 # identify RPi physical pin connected to ESP8266 GPIO0 pin

GPIO.setup(resetPin, GPIO.OUT) # set reset pin as output
GPIO.setup(flashPin, GPIO.OUT) # set flash pin as output

GPIO.output(resetPin, GPIO.LOW) # drop voltage on RST pin
time.sleep(.2) # need for this waiting is speculative
GPIO.output(flashPin, GPIO.LOW) # drop voltage on GPIO0
time.sleep(.2) # need for this waiting is speculative
GPIO.output(resetPin, GPIO.HIGH) # start booting ESP8266
time.sleep(3) # wait for ESP8266 to boot
GPIO.output(flashPin, GPIO.HIGH) # restore voltage on

GPIO.cleanup() # reset pins on RPI to prevent future runtime warnings

J'utilise screen ("sudo screen /dev/serial0 115200") pour pouvoir communiquer avec mais rien ne se passe. Impossible d'envoyer de commande "AT".
Ce module m'a toujours résisté, j'avais essayé de communiquer avec en utilisant un arduino mais rien à faire je bloque toujours. Mon projet de domotique utilisant le wifi, je ne vois pas comment je peux m'en passer.

bon week end à vous,

Biovel

domi
Administrateur
Messages : 3233
Enregistré le : mer. 17 sept. 2014 18:12
Localisation : Seine et Marne

Re: Communication ESP01

Message par domi » ven. 10 juin 2022 20:52

Bonjour,
Ce problème n'étant pas du domaine des débutants, je déplace le sujet dans la rubrique "Utilisateurs avancés".
Passionné de Raspberry, Arduino, ESP8266, ESP32, et objets connectés :
Spécial débutant, concevez vous-même votre domotique DIY : https://www.youtube.com/c/DomoticDIY
Conception d'une station météo DIY, et envoi des infos à votre Domotique.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Communication ESP01

Message par Artemus24 » sam. 11 juin 2022 17:48

Salut à tous.

J'ai fait mes tests entre un esp-wroom-32 et mon ordinateur Windows.
J'ai utilisé ce convertisseur UART pour relier mon ESP32 à mon ordinateur windows.
Le cavalier est monté sur le 3V3. Ainsi, j'ai la même configuration que sur le Raspberry Pi.

Il faut configurer correctement les périphériques.
Ma console ESP32 se trouve sur COM6.
Ma console UARD se trouve sur COM3

Tous mes échanges se font en 115200.
Je dois vérifier :
a) la configuration dans le gestionnaire des périphériques / Port COM & LPT.
Le convertisseur se nomme "USB-SERIAL CH340 (COM3).
l'ESP32 se nomme "Silicon labs CP210x USB to UART Bridge (COM6).
Vérifier que la vitesse est bien en 115200.

b) pour mes consoles, j'utilise Putty. Dans connection / serial, mettre :
--> Speed (Baud) : 115200
--> Data Bits : 8
--> Stop Bits : 1
--> Parity : none
--> Flow Control : none

c) dans le sketch, mettre aussi 115200.

Ne pas se tromper dans le branchement de l'ESP32.
Comme j'utilise "Serial2", j'ai branché l'UART sur "RX2" & "TX2", ce qui donne :
--> RX2 vers TXD du convertisseur.
--> TX2 vers RXD du convertisseur.
--> GND vers GND du convertisseur.

L'esp32 est relié par son câble USB-B vers Mini USB à l'ordinateur.
Cela me permet d'envoyer le sketch et d'avoir la console COM6 de disponible.

Voici le sketch :

Code : Tout sélectionner

/**********************/
/*                    */
/*     ESP32 UART     */
/*                    */
/**********************/

#define RXD 16
#define TXD 17

char carac;

void setup()
{
	Serial.begin(115200);
	Serial.println("+------------+");
	Serial.println("| ESP32 UART |");
	Serial.println("+------------+");

	Serial2.begin(115200, SERIAL_8N1, RXD, TXD);
}

void loop()
{
	if (Serial.available())
		Serial2.write(Serial.read());

	if (Serial2.available())
		Serial.write(Serial2.read());
}
Quand je tape quelque chose dans le moniteur COM6, j'ai mes caractères qui s'affiche dans COM3, et vice-versa.
Si je donne ce bout de code, c'est pour comprendre comment se fait les échanges entre deux consoles.

Cordialement.
Artemus24.
@+
Modifié en dernier par Artemus24 le lun. 13 juin 2022 16:16, modifié 1 fois.
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

domos
Messages : 75
Enregistré le : lun. 9 mars 2015 19:17

Re: Communication ESP01

Message par domos » lun. 13 juin 2022 14:58

Bonjour,

Quelques questions:

1) Juste pour comprendre, Ton projet domotique ne peux pas utiliser le wifi du Raspberry-Pi ?

2) As tu désactivé la console système série sur le RPi sinon tu ne peux l'utiliser pour autre chose.
Cela se fait dans raspi-config (interface Options/Serial port)

3) Peux tu essayer avec un câblage simple comme ceci pour ne pas avoir à utiliser un script Python dans un 1ier temps:

Code : Tout sélectionner

RPi     ESP8266     Alim. 3.3V
TX      RX
RX      TX
Gnd     Gnd         Gnd
        VCC         3.3V
        CH_PD       3.3V
Pour ma part, j'utilise picocom comme terminal série avec le paramètre qui va bien pour gérer les fin de ligne.
Les commandes AT fonctionnent si l'ESP01 est toujours avec le firmware par défaut.

Code : Tout sélectionner

$ picocom --omap lfcrlf -b 115200 -d 8 -f n /dev/ttyACM0        # Utiliser CTRL-J pour CRLF:
picocom v1.7

Terminal ready
AT

OK

Ai-Thinker Technology Co. Ltd.

ready
AT+RST

Biovel
Messages : 3
Enregistré le : ven. 10 juin 2022 19:14

Re: Communication ESP01

Message par Biovel » mar. 14 juin 2022 11:27

Bonjour,

merci pour ta réponse.

1) Je n'ai pas de projet bien précis. C'est plutôt la curiosité qui m'a amené à utiliser l'ESP01. Du WiFi à si bas prix, il fallait que j'essaie :D.
Plus concrètement, j'emménage dans une nouvelle maison dans quelques semaines et j'aurais sûrement plein d'idée. Par exemple, pouvoir consulter des relevés de capteur (T°, humidité, etc.) dans une/des pièces de la maison de n'importe où. Ayant déjà travaillé avec du bluetooth et du 433 MHz, il me manquait le WiFi

2) Lorsque je désactive la console système série (raspi-config => interface Options => Serial Port => "Non" => "Non") et après un reboot du Rpi, le message "FATAL: cannot open /dev/serial0: No such file or directory" apparait dans picocom

3) J'ai déjà essayé avec un câblage plus simple et le problème est le même. Par contre, tu viens de me donner un piste avec le CRLF. En utilisant ctrl-J (au lieu d'ENTER), j'arrive à envoyer la commande AT mais l'ESP me répond "ERROR" :

picocom v3.1

port is : /dev/serial0
flowcontrol : none
baudrate is : 115200
parity is : none
databits are : 8
stopbits are : 1
escape is : C-a
local echo is : no
noinit is : no
noreset is : no
hangup is : no
nolock is : no
send_cmd is : sz -vv
receive_cmd is : rz -vv -E
imap is :
omap is :
emap is : crcrlf,delbs,
logfile is : none
initstring : none
exit_after is : not set
exit is : no

Type [C-a] [C-h] to see available commands
Terminal ready
AT
ERROR



@+

Biovel

domos
Messages : 75
Enregistré le : lun. 9 mars 2015 19:17

Re: Communication ESP01

Message par domos » mar. 14 juin 2022 14:58

Bonjour,

il me semble qu'en désactivant le port série système, il faut utiliser le device /dev/ttyACM0 pour accéder au port série GPIO.

Biovel
Messages : 3
Enregistré le : ven. 10 juin 2022 19:14

Re: Communication ESP01

Message par Biovel » mar. 14 juin 2022 22:44

RIen ne se passe avec /dev/ttyACM0 :

"FATAL: cannot open /dev/ttyACM0: No such file or directory"

Seulement avec serial0 et avec le port série d'activé, j'arrive à envoyer AT difficilement (plusieurs appui sur le clavier pour voir quelque chose)

destroyedlolo
Raspinaute
Messages : 1587
Enregistré le : dim. 10 mai 2015 18:44
Localisation : Dans la campagne à côté d'Annecy
Contact :

Re: Communication ESP01

Message par destroyedlolo » mer. 15 juin 2022 00:56

Salut,
Biovel a écrit :
mar. 14 juin 2022 11:27
1) Je n'ai pas de projet bien précis. C'est plutôt la curiosité qui m'a amené à utiliser l'ESP01. Du WiFi à si bas prix, il fallait que j'essaie :D.
Plus concrètement, j'emménage dans une nouvelle maison dans quelques semaines et j'aurais sûrement plein d'idée. Par exemple, pouvoir consulter des relevés de capteur (T°, humidité, etc.) dans une/des pièces de la maison de n'importe où. Ayant déjà travaillé avec du bluetooth et du 433 MHz, il me manquait le WiFi
L'ESP-01 est loin d'être le modèle le plus simple à utiliser pour faire de la domotique car il est incapable de sortir de lui-même du mode Deep-Sleep (ou d'un plantage) : il faut souder directement l'une de ses pattes comme je l'explique en bas de cette page.
De plus, Quel que soit le modèle d'ESP, il faut que tu t'assures d'avoir une alim très stable : en plus du répéteur WiFi, j'utilise aussi un ESP-201 pour mesurer des températures distantes (mon poulailler, l'eau de la piscine ...) : il n'y a AUCUNE protection quand a l'alimentation. Du coup, la sonde de ma piscine est alimenté par accus R6 + cellule photovoltaïque : sauf que si les accus sont déchargés (par exemple en fin de nuit) et n'envoient pas un minimum de 2.5v, il se plante et ne redémarrera JAMAIS jusqu'à ce que tu lui fasses un power-cycle.
L'ESP 32 a l'électronique qui va bient pour éviter ce genre de situation.

Biovel a écrit :
mar. 14 juin 2022 11:27
3) J'ai déjà essayé avec un câblage plus simple et le problème est le même. Par contre, tu viens de me donner un piste avec le CRLF. En utilisant ctrl-J (au lieu d'ENTER), j'arrive à envoyer la commande AT mais l'ESP me répond "ERROR" :
...
Terminal ready
AT
ERROR
J'en déduis donc que la console du PI est toujours active sur serial0, n'est-ce pas ?
Si c'est le cas, ca me parait assez logique que tu ais une erreur car avant de recevoir ta commande, l'ESP a du recevoir toute la soupe de la console. Il faut donc absolument que tu la désactives mais que tu gardes le port série (je te laisse chercher, n'ayant pas de framboise, j'en sais rien).

Ensuite, pour voir si la connection fonctionne ... le plus simple est de redémarrer l'ESP électriquement : tu devrais au moins voir ses messages de boot comme sur cette autre page.

De plus, ton ESP n'est pas forcément "gravé" avec le programme AT : ca dépend si le fournisseur a voulu s'embêter ou non (surtout s'il vient de Chine).

A+
  • BananaPI : Gentoo, disque SATA de 2 To
  • Domotique : 1-wire, TéléInfo, Tablette passée sous Gentoo, ESP8266
  • Multimedia par DNLA
  • Et pleins d'idées ... et bien sûr, pas assez de temps.
Un descriptif de ma domotique 100% fait maison.

Artemus24
Raspinaute
Messages : 1077
Enregistré le : ven. 15 sept. 2017 19:15

Re: Communication ESP01

Message par Artemus24 » ven. 17 juin 2022 19:49

Salut à tous.

Je n'ai pas fait le test avec la Raspberry Pi 4B/8GB mais avec windows 10 Pro, ce qui revient au même.
Je rappelle que j'ai un ESP-WrooM-32 et non un ESP-01 ou un ESP8266.

1) Installation de l'outil permettant de flasher mon ESP32.

J'ai ce lien qui donne toutes les explications de comment faire.
L'outil ce trouve dans la page ci-dessus que l'on peut aussi télécharger par ce lien.
Pour Windows, il s'agit de "Flash Download Tools" dont la version est V3.9.2, en date du 2021.11.10. (Je le décompresse).

Le module à flasher se nomme "flash_download_tool_3.9.2.exe".

2) le firmware AT (ou micrologiciel) à installer.

On trouve toutes les explications dans ce lien.
Je me rends dans cette page où je trouve le module à installer pour mon ESP-WrooM-32.
Il s'agit de la "Série ESP32-WROOM-32" et le binaire se nomme "v2.4.0.0 ESP32-WROOM-32_AT_Bin_V2.4.0.0.zip (recommandé)". (Je le décompresse).

3) je flash le firmware dans mon ESP32.

Je lance "flash_download_tool_3.9.2.exe".
Puis je sélectionne :
--> chip type : esp32.
--> workMode : develop.
--> loadModule : uart (il est grisé et donc non modifiable).
puis je clique sur "ok".

Dans la page qui s'affiche, je sélectionne (ou coche) les points suivants :
--> doNotChgBin.
--> COM : COM6
--> Baud : 115200.

J'installe le binaire qui se nomme "\ESP32_AT\ESP32-WROOM-32_AT_Bin_V2.4.0.0\ESP32-WROOM-32-V2.4.0.0\factory\factory_WROOM-32.bin".
C'est l'exemple que j'ai repris. L'adresse d'implantation "0x0" que je mets, est identique à l'exemple.
Je clique sur "start" ! Le téléchargement se fait.

4) Résultat du transfert.

Voici ce que j'ai dans la console :

Code : Tout sélectionner

L:\Arduino\Tools\ESP32_AT\ESP32-WROOM-32_AT_Bin_V2.4.0.0\ESP32-WROOM-32-V2.4.0.0\factory
L:\Arduino\Tools\ESP32_AT\ESP32-WROOM-32_AT_Bin_V2.4.0.0\ESP32-WROOM-32-V2.4.0.0\factory\factory_WROOM-32.bin
test offset :  0 0x0
case ok
.
Uploading stub...
Running stub...
Stub running...
FLASH_CRYPT_CNT 0
ABS_DONE_0 False
Compressed 4194304 bytes to 960513...

 is stub and send flash finish
Je suppose que le transfert a bien fonctionné.

Je lance la console COM6 et voici ce que j'obtiens :

Code : Tout sélectionner

ets Jun  8 2016 00:22:57

rst:0x1 (POWERON_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:2
load:0x3fff0030,len:7672
load:0x40078000,len:16432
load:0x40080400,len:3704
entry 0x4008067c
I (27) boot: ESP-IDF qa-test-v4.3.3-20220423 2nd stage bootloader
I (27) boot: compile time 11:11:52
I (27) boot: chip revision: 1
I (31) boot_comm: chip revision: 1, min. bootloader chip revision: 0
I (38) boot.esp32: SPI Speed      : 40MHz
I (42) boot.esp32: SPI Mode       : DIO
I (47) boot.esp32: SPI Flash Size : 4MB
I (51) boot: Enabling RNG early entropy source...
I (57) boot: Partition Table:
I (60) boot: ## Label            Usage          Type ST Offset   Length
I (68) boot:  0 phy_init         RF data          01 01 0000f000 00001000
I (75) boot:  1 otadata          OTA data         01 00 00010000 00002000
I (83) boot:  2 nvs              WiFi data        01 02 00012000 0000e000
I (90) boot:  3 at_customize     unknown          40 00 00020000 000e0000
I (97) boot:  4 ota_0            OTA app          00 10 00100000 00180000
I (105) boot:  5 ota_1            OTA app          00 11 00280000 00180000
I (113) boot: End of partition table
I (117) boot_comm: chip revision: 1, min. application chip revision: 0
I (124) esp_image: segment 0: paddr=00100020 vaddr=3f400020 size=295d8h (169432) map
I (194) esp_image: segment 1: paddr=00129600 vaddr=3ffbdb60 size=04474h ( 17524) load
I (201) esp_image: segment 2: paddr=0012da7c vaddr=40080000 size=0259ch (  9628) load
I (205) esp_image: segment 3: paddr=00130020 vaddr=400d0020 size=111630h (1119792) map
I (613) esp_image: segment 4: paddr=00241658 vaddr=4008259c size=1b568h (111976) load
I (660) esp_image: segment 5: paddr=0025cbc8 vaddr=400c0000 size=00064h (   100) load
I (660) esp_image: segment 6: paddr=0025cc34 vaddr=50000000 size=00010h (    16) load
I (680) boot: Loaded app from partition at offset 0x100000
I (680) boot: Disabling RNG early entropy source...
module_name:WROOM-32
max tx power=78,ret=0
2.4.0
C'est différent de ce que j'avais avant. A priori, le transfert a fonctionné.

5) le test d'une commande "AT".

Je branche mon convertisseur UART comme je l'ai indiqué dans mon message précédent.
Je constate que si je tape quelque chose, j'ai bien l'affichage des caractères dans la console et mon convertisseur clignote normalement.
Je tape la commande en majuscule "AT+GMR" mais je n'ai rien en retour, pas même un "ready".
J'ai bien vérifié que j'ai CR+LR quand je tape sur "enter".

Mon montage est conforme à ce lien.
J'utilise le branchement suivant :
--> ESP32 : TX2 vers RXD du convertisseur
--> ESP32 : RX2 vers TXD du convertisseur
--> ESP32 : GND vers GND du convertisseur
Je n'utilise pas le branchement 3V3 de l'ESP32 vers 3V3 du convertisseur.

Je me demande ce qui me manque pour tester une commande "AT".

Cordialement.
Artemus24.
@+
RPI4B/8GB + Argon FanHAt
Rpi3A+, Rpi3B+
RPi 2B + Joy-It I2C Serial 20x4 2004 LCD Module
RPi 2B + PIM273 Unicorn HAT HD 16x16 Leds RGB
RPi0v1.3, RPi0W + LibreElec/Kodi, Rpi0WH + Tuner TV HAT
NodeMCU ESP32

domos
Messages : 75
Enregistré le : lun. 9 mars 2015 19:17

Re: Communication ESP01

Message par domos » lun. 20 juin 2022 14:31

@Artemus24

As tu essayé juste une commande "AT" ou "ATI" par exemple ?
ou en envoyant juste un CR seul avec CTRL_M ou un LF seul avec CTRL_J en fin de ligne

Ca devrait retourner un OK ou READY si la commande est acceptée ou un ERROR sinon

Répondre

Retourner vers « Utilisateurs avancés »