ESP 32 WROOM - Serial
Table of Contents
Premessa
Facendo riferimento all'immagine seguente La comunicazione seriale e' una comunicazione asincrona, cioe' senza bisogno di clock, in cui il PIN TX di una scheda deve essere inviato al PIN RX dell'altra e la stesso incrocio lo si fa per il pIN RX. Lo standard UART sta per ricevitore / trasmettitore asincrono universale e nelle schede ESP32 esistono tre porte seriali predifinite tutte disponibili come metodi della libreria Arduino.h :
Figure 1: Schema PIN-OUT della board ESP32 WROOM
UART | Oggetto | RX IO | TX IO | CTS | RTS | Desc |
---|---|---|---|---|---|---|
UART0 | Serial | GPIO3 | GPIO1 | N / A | N / A | Porta USB della ESP32 |
UART1 | Serial1 | GPIO9 | GPIO10 | GPIO6 | GPIO11 | Porta persononalizzabile |
UART2 | Serial2 | GPIO16 | GPIO17 | GPIO8 | GPIO7 | Porta personalizzabile |
In pratica volendo utilizzare la porta UART2 il codice corrispondente potrebbe essere del tipo
/* * There are three serial ports on the ESP known as U0UXD, U1UXD and U2UXD. * * U0UXD is used to communicate with the ESP32 for programming and during reset/boot. * U1UXD is unused and can be used for your projects. Some boards use this port for SPI Flash access though * U2UXD is unused and can be used for your projects. * */ #define RXD2 16 #define TXD2 17 void setup() { // Note the format for setting a serial port is as follows: Serial2.begin(baud-rate, protocol, RX pin, TX pin); Serial.begin(115200); //Serial1.begin(9600, SERIAL_8N1, RXD2, TXD2); Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2); Serial.println("Serial Txd is on pin: "+String(TX)); Serial.println("Serial Rxd is on pin: "+String(RX)); } void loop() { //Choose Serial1 or Serial2 as required while (Serial2.available()) { Serial.print(char(Serial2.read())); } }
Mentre volendo personalizzare i PIN della ESP32 per la porta UART2 si puo' utilizzare il codice seguente
#include <SoftwareSerial.h> // la classe e' ottenuta installando la libreria EspSoftwareSerial by Dirk Kaar const byte rxPin = 9; const byte txPin = 10; Serial.setPins( rxPin, txPin); Serial.begin(9600);
L'inizializzazione della porta seriale Serial.begin(9600); di solito fatta in fase di setup() puo' essere fatta in qualunque parte del programma ma comunque sempre prima dell'utilizzo.