Arduino 无线通信实战:使用 RadioHead实现 315MHz 433M模块数据传输

本文将介绍如何使用 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悸尢

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值