注意事项/前要
在本项目中,我们将使用乐鑫ESP32开发板和RCSwitch库来实现两个ESP32之间315MHz频段的无线通信。
一个ESP32将作为发送端,另一个ESP32将作为接收端。该项目演示了如何使用RCSwitch库进行简单的无线数据传输。
- 两块乐鑫ESP32开发板
- 315MHz无线发射模块
- 315MHz无线接收模块
- 若干连接线
315MHz模块与开发板接线
发送模块引脚 | Arduino ESP32 引脚 |
DATA | GPIO 17 |
接收模块引脚 | Arduino ESP32 引脚 |
DATA | GPIO 16 |
VCC | 3.3V |
GND | GND |
完整代码-发送端
RCSwitch库:此库用于处理无线遥控信号的发送和接收,库文件可以在Arduino IDE的库管理器中直接下载。
通过串口输入数据,ESP32 会读取该数据并通过315MHz发射模块发送出去。
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int TRANSMIT_PIN = 17; // 发送引脚定义
void setup() {
Serial.begin(9600);
mySwitch.enableTransmit(TRANSMIT_PIN); // 设置发送引脚
Serial.println("羡林i: 315MHz发射模块初始化完成");
Serial.println("羡林i: 请输入要发送的数据 (整数类型): ");
}
void loop() {
if (Serial.available() > 0) {
String input = Serial.readStringUntil('\n'); // 读取串口输入直到换行符
unsigned long data = input.toInt(); // 将输入转换为整数
mySwitch.send(data, 24); // 发送24位数据
Serial.print("已发送数据 '");
Serial.print(data);
Serial.println("'");
Serial.println("请输入要发送的数据 (整数类型): ");
}
}
完整代码-接收端
RCSwitch库:此库用于处理无线遥控信号的发送和接收,库文件可以在Arduino IDE的库管理器中直接下载。
程序会持续接收射频信号,接收到不为0的数据则会打印到串口
#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
const int RECEIVE_PIN = 16; // 接收引脚定义
void setup() {
Serial.begin(9600);
mySwitch.enableReceive(RECEIVE_PIN); // 设置接收引脚
Serial.println("羡林i: 315MHz接收模块初始化完成");
}
void loop() {
if (mySwitch.available()) {
int value = mySwitch.getReceivedValue();
if (value == 0) {
Serial.println("接收到无效数据");
} else {
Serial.print("接收到数据: ");
Serial.println(value);
}
mySwitch.resetAvailable(); // 重置接收状态
}
}
开发环境:Arduino IDE、ESP32 Dev Module
代码辅助:ChatGPT-4o
作者:羡林i