UP | HOME

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 :

ESP32.jpg

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.

Esempio

Link Utili

BLOG Sezione ARI Montecatini Terme

ARI ( Associazione Radioamatori Italiani)

PTLUG ( Linux User Group Pistoia )

ARAL ( Associazione Radiamatori Monte Amiata / Monte Labbro )

Author: ARI people

Created: 2023-06-05 lun 23:07

Validate