Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输
通过本项目,我们掌握了如何使用 RadioHead 库中的 RH_ASK 驱动,实现两个 Arduino 之间通过 315MHz 或 433MHz ASK 模块的无线通信
·
本文将介绍如何使用 Arduino 和 RadioHead 库实现 315MHz(或 433MHz)ASK 无线通信。通过两个 Arduino 控制板,一个作为发射端,一个作为接收端,实现“按键控制 → 无线发送 → LED 控制”的基础通信功能,非常适合无线控制、遥控器替代等场景。
接收端接线,中间两个引脚,任意接一个即可
发射端接线
安装 RadioHead 库
打开 Arduino IDE → 工具 → 管理库
搜索 RadioHead
点击安装
发射端代码如下:
#include <RH_ASK.h>
#include <SPI.h> // 必须包含,即使不用 SPI
RH_ASK driver; // 默认使用 D12 发射(可改)
void setup() {
Serial.begin(9600);
if (!driver.init()) {
Serial.println("发射器初始化失败");
}
}
void loop() {
const char *msg = "Hello";
driver.send((uint8_t *)msg, strlen(msg));
driver.waitPacketSent();
Serial.println("已发送:Hello");
delay(1000);
}
接收端代码如下,这里接收到信息,板载led会亮,如果没有加装天线的话,两个模块需要靠的非常近才能进行信息传输
#include <RH_ASK.h>
#include <SPI.h>
RH_ASK driver;
const int ledPin = 13;
void setup() {
Serial.begin(9600);
pinMode(ledPin, OUTPUT);
if (!driver.init()) {
Serial.println("接收器初始化失败");
}
}
void loop() {
uint8_t buf[12];
uint8_t buflen = sizeof(buf);
if (driver.recv(buf, &buflen)) {
buf[buflen] = '\0'; // 添加字符串结束符
Serial.print("接收到:");
Serial.println((char *)buf);
if (strcmp((char *)buf, "Hello") == 0) {
digitalWrite(ledPin, HIGH);
delay(500);
digitalWrite(ledPin, LOW);
}
}
}
将发射端代码上传到 Arduino A
将接收端代码上传到 Arduino B
打开两个串口监视器(波特率 9600)
发射端每秒发送一次 “Hello”
接收端成功接收后会串口输出 “接收到: Hello”,并点亮 LED
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)