写一个433门控发送接收程序,小区的门不让进只好做一个遥控板

1.写一个接收测试程序


#include <RCSwitch.h>
RCSwitch mySwitch =RCSwitch();  //增加一个RC开关并且设置名称
const int FRR = 4;  //设置315无线模块接收管脚

void setup() {
  // put your setup code here, to run once:
  Serial.begin(115200);
  mySwitch.enableReceive(FRR);
  Serial.print("开始程序");
}

void loop() {
  // put your main code here, to run repeatedly:
  if(mySwitch.available())
  {
    Serial.print("读数据:  ");
    Serial.print(mySwitch.getReceivedValue() );  //接收到的值
    Serial.print("/  ");
    Serial.print(mySwitch.getReceivedBitlength() ); //获取数据长度
    Serial.print("bit 协议: ");
    Serial.print(mySwitch.getReceivedProtocol() ); //获取数据长度
    Serial.print("\r\n" ); //获取数据长度
    mySwitch.resetAvailable(); //重置可用的值
    }
}

2.再写一个发送程序

#include <RCSwitch.h>
RCSwitch myFa = RCSwitch();//定义发送端

unsigned long OFF = 6073416; //关闭门
unsigned long ON = 6073410; //打开门

const int sensorPin = 19; // 假设传感器连接到数字引脚2
const int sensorPin1 = 18; // 假设传感器连接到数字引脚2

void setup(){
   myFa.enableTransmit(4);//发送端接6号口(或其它口)
   Serial.begin(9600);//打开串口调试
    pinMode(sensorPin, INPUT);
    pinMode(sensorPin1, INPUT);
}
void loop(){


 // delay(1000);
  if(digitalRead(sensorPin)==0)
  {
    myFa.send(OFF, 24);//发送端发送数据,i为数字,24为最大位数。经测试,当数字的位数大于24时,就会停止发送。
    delay(100);
  }
    if(digitalRead(sensorPin1)==0)
  {
    myFa.send(ON, 24);//发送端发送数据,i为数字,24为最大位数。经测试,当数字的位数大于24时,就会停止发送。
    delay(100);
  }
}

3.再画一个板子

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样一个板子就完成了,板载画的发送天线有点短有效距离5 米左右,打开车库门足够了,不要学坏哦!

本人非专业人士,只是一个小小程序员,arduino纯属爱好,所发文章仅限于本人智商,如有问题,请大家指正。 近期对智能家居比较敢兴趣,其中存在几个无线传输的模块,起初选用的2.4G的nRL24L01模块,那个东西真是折腾死人,弄了一个星期都没找到问题点。最后在收拾元件箱子的时候,发现一套以前买的433Mhz模块,就想干脆用这个吧。在各种方式的search,找到了一个lib - RCSwitch,看了例子还比较好用,可以传输24bit的值。立刻装上测试。 315\433射频模块介绍: 当发射电压为3V时,空旷地传输距离约20~50米,发射功率较小,当电压5V时约100~200米,当电压9V时约300~500米,当发射电压为12V时,为最佳工作电压,具有较好的发射效果,发射电流约60毫安,空旷地传输距离700~800米,发射功率约500毫瓦。外接天线:10cm(发射模块天线:10cm,接收模块天线:30cm)多芯或单芯普通导线。 在实际测试中,随便接了跟电线,传输能达到5米,无丢包现象。这个射频模块的穿墙效果,应该会比2.4G的好很多。我家里以前一套315Mhz的报警器,全屋传输无压力。 接线很简单,只有三个脚,两个是电源,一个是数据。 发射端 VCC GND DATA- arduino 10脚(可以变更,在代码中调整) 接收端 VCC GND DATA- arduino 2脚(使用终端2则使用3脚,在代码中调整) 程序使用RCSwitch附带示例修改,传感器值使用随机数替代。 传输思路是将24bit的值分开,前12位为传感器ID,后12位为传感器值,12bit,可以到4096,应该够用了。 其他的控制编码器的例子还没有试,下次测试好了再来。 说明: 还忘了一个重要的东西,在lib中有个代码需要修改,不然会接受到4个重复的值。由于本人对中断不是很熟悉,不知道4个重复值造成的原因,只是测试出改了一个值,请各位大师给予解答。 [pre lang="arduino" line="1"]void RCSwitch::handleInterrupt() { if (repeatCount == 6) { // 需要将 2改为 6repeatCount == 2 if (receiveProtocol1(changeCount) == false){ if (receiveProtocol2(changeCount) == false){ if (receiveProtocol3(changeCount) == false){ //failed } } } repeatCount = 0; } }[/pre] RF射频模块发射端程序部分截图: RF射频模块接收程序部分截图:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小白文化

求大佬打赏;

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

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

打赏作者

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

抵扣说明:

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

余额充值