其中2个之间的ESP32串口通信

ESP32 serial communucation between 2 of them

我正在尝试做一个小项目,其中涉及使用 ESP32 测量温度,通过串行连接将其发送到另一个 ESP32,并使后者在与我的计算机的串行连接上写入。我正在使用一些 LED 进行监控。

发件人的代码是:

#include <Wire.h>
#include <LiquidCrystal_I2C.h>
#include "DHT.h"
#include <HardwareSerial.h>

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set Global variables

/////////////////////////////////////////////////////////////////////////////////////
// set the LCD number of columns and rows
#define LED1 32
#define RXD2 16
#define TXD2 17
#define DHTPIN 33     // Digital pin connected to the DHT sensor
#define DHTTYPE DHT11

int lcdColumns = 16;
int lcdRows = 2;
LiquidCrystal_I2C lcd(0x27, lcdColumns, lcdRows);  

/////////////////////////////////////////////////////////////////////////////////////
// Serial Communication
HardwareSerial Sender(2); // use Sender

/////////////////////////////////////////////////////////////////////////////////////
DHT dht(DHTPIN, DHTTYPE);

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Setup function
void setup() {
  Wire.begin();
  Sender.begin(19200,SERIAL_8N1, RXD2, TXD2);
  lcd.init();
  lcd.backlight();
  lcd.print("Finished loading");
  pinMode(LED1, OUTPUT);
  dht.begin();
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Loop function
void loop() {
  float t1 = dht.readTemperature();
  float h = dht.readHumidity();
  
  Sender.print(String(t1));
  lcd.setCursor(0,0);
  lcd.print("Temp1(C): " + String(t1) + "\n");
  lcd.setCursor(0,1);
  lcd.print("Humid: " + String(h));
  //lcd.print("Temp2(C): " + String(t2) + "\n");

  digitalWrite(LED1, HIGH);
  delay(200);
  digitalWrite(LED1, LOW);
  delay(200);
}

接收者的代码是:

#include <HardwareSerial.h>

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Set Global variables

/////////////////////////////////////////////////////////////////////////////////////
// set the Serial Port Data
#define RXD2 16
#define TXD2 17
HardwareSerial Receiver(2); // use Receiver

/////////////////////////////////////////////////////////////////////////////////////
// set other relevant variables
#define LED 33
String message;

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Setup function
void setup() {
  
  // Setup the Serial communication
  Receiver.begin(19200,SERIAL_8N1, RXD2, TXD2);

  // LED check
  pinMode(LED,OUTPUT);
  digitalWrite(LED, HIGH);
  delay(200);
  digitalWrite(LED,LOW);
}

///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Loop function
void loop() {
  
  while(Receiver.available())
  {
    message = Receiver.read();
    Serial.println("Message received: " + message);
    digitalWrite(LED, HIGH);
    delay(200);
    digitalWrite(LED,LOW);
    delay(200);
  }
}

我检查了传感器是否正确测量和变化,但接收器没有正确接收信息,或者至少无法将其发送到串行连接。

通过使用另一个 HardwareSerial 实例而不是默认的 Serial 实例初始化与计算机的通信,消息已发送。