其中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 实例初始化与计算机的通信,消息已发送。
我正在尝试做一个小项目,其中涉及使用 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 实例初始化与计算机的通信,消息已发送。