轻松用Arduino开发远距离遥控产品

一直想做个像酒店一样的全屋灯光控制系统玩玩,可惜自己只会Arduino编程。而UNO,NANO的体积对于遥控灯而言还是大了些,而且外接无线接收模块还得自己焊线,想起就头大。
最近淘得CC_SMINI_433R的超微型 Arduino开发板,一下子解决了所有遥控的问题。好东西不能独享。
在这里插入图片描述
如图,这个开发板不含天线大小仅2.8*1.8cm,天线大概1.5CM.天线可以拉直,拉直后接收距离明显增加,拉直长度约17.5CM.
开发板采用了328PB芯片,焊在了板子背面,因此空间利用率非常高。
开发环境建议使用Arduno 2.0及以上,如果您没有安装MiniCore开发板,请在文件-首选项-其他开发板管理器地址 中添加 https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json,然后搜索MiniCore安装即可。安装好后,选择开发板为-MiniCore-ATMEGA328,然后在选择主频为16MHZ,芯片型号为328PB即可。
代码比较简单,直接使用了常用的RCSwitch.h 库,店家网盘有下载来直接使用即可;示范完整代码如下:

#include <RCSwitch.h>
RCSwitch mySwitch = RCSwitch();
#define PD_LED A0            //CC_433R模块板载的 LED指示灯
#define SHUT_PIN A7          //CC_433R模块 休眠控制引脚,高电平休眠,低电平启用
unsigned long RV433OLD = 0;  //最近接收到的433遥控码,在5秒内避免重复接收
unsigned long HMSOLD = 0;    //上次接收同样数据的开机毫秒数,以此判断是否重复接收
unsigned int RV_Rpt_Time=1000;// 同一个按键接收时间间隔,防止重复。如控制灯开关,建议设置为3000-5000,如需连续控制如电机转向,可设置为0

void setup() {
  Serial.begin(9600);       //启用到PC的串口
  pinMode(PD_LED, OUTPUT);  //LED
  digitalWrite(PD_LED, LOW);
  mySwitch.resetAvailable();
  mySwitch.enableReceive(0);  //中断0接收 接 D2脚代表使用的中断0,接D3脚代表中断1
  Serial.println("start.");
  pinMode(SHUT_PIN, OUTPUT);
  digitalWrite(SHUT_PIN, LOW);  //让433接收电路工作,433芯片启动时间3ms
}
void loop() {
  RV_433();  //处理接收到无线遥控数据
  delay(1);
}
void RV_433() {
  if (mySwitch.available()) {
    delay(10);                                         //延迟以防止重复接收
    if (mySwitch.getReceivedBitlength() == 24) {       //1527遥控编码数据为24 BIT,后面 4 bit为按键码
      unsigned long AA = mySwitch.getReceivedValue();  //接收解码出来会是一个很大的整数
      unsigned long TM1 = millis();

      //************防重复接收,这部分可以根据需求删除********************
      if ((TM1 - HMSOLD) <= RV_Rpt_Time && AA == RV433OLD) {  //设定的时间内收到重复的按键码则丢弃
        mySwitch.resetAvailable();
        return;
      }
      //**************************************************************
      RV433OLD = AA;  //记忆最新的接收数据
      HMSOLD = TM1;   //记忆最新的接收时间
      String YK_NUM = String(AA, HEX);
      YK_NUM.toUpperCase();
      Serial.println(YK_NUM);  //输出接收到的遥控器按键码
      digitalWrite(PD_LED, HIGH);
      delay(100);
      digitalWrite(PD_LED, LOW);  //闪一下指示灯
    }

    mySwitch.resetAvailable();
  }
}

以上代码最方便的是 RV_Rpt_Time 参数,可以在指定时间内去重。
经测试,遥控器的兼容性非常好,手里好几款433MHZ 1527编码格式的遥控器均能成功解码接收。下图是市面常见的433遥控器外形:
在这里插入图片描述
测了下功耗,整个电路3.3V供电环境下,工作电流仅仅14mA.接收电路休眠(SHUT_PIN 置高电平),电流仅11mA, 全电路休眠开启定时器唤醒最低电流仅3uA.
遥控距离实测:
1.为了得到最远效果,我们把原配的天线拉直成一条直线;
2.遥控器我们采用上图左边第4款3按键,带拉杆天线的,遥控器电池型号是12V23A,实测电池电压12.7V;
空旷地无人车阻挡情况最远距离达到了1000米,对于这样的小身板和这么低的功耗来说,确实非常强悍。
室内穿墙能力也出奇的好,三居室那是可以说毫无死角,全覆盖了。把天线放在窗户外面,32层楼高,整个小区中庭全覆盖了。呵呵,以后改个遥控路灯啥的,简直都不是啥事了。
开发板上引出了11个IO口,也就是说可以使用11按键的遥控板配这个开发板,实现11路遥控控制了。
在这里插入图片描述
如图所示,家里的家电都可以用这个开发板来轻松控制了。可以将遥控按键编码存储在开发板的EEPROM中,接收到按键后,在EEPROM中查找,找到匹配的就去操作相应的IO口。这样每一盏灯可以对应多个遥控器操作,实现类似酒店的灯控效果。在床头可以控制所有的灯,在洗漱间和客厅可以控制本区域的灯。
以下是我改造遥控电灯用到的材料,仅供参考:
CC_SMINI-433R 遥控开发板地址:https://item.taobao.com/item.htm?id=745055383210
220V转5V 模块地址:https://detail.tmall.com/item.htm?id=597773741262
继电器模块地址:https://item.taobao.com/item.htm?id=738837038343

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
远距离无人机遥控器的开发可以借助MultiWiiCopter(MWC)飞控平台。MWC飞控是一款典型的Arduino衍生产品,专为多旋翼开发的低成本飞控。它完整地保留了Arduino IDE开发Arduino设备升级和使用的方法。由于成本低、架构简单、固件成熟,因此在国内外有大量爱好者。MWC飞控的最大特点是支持多种飞行器类型,包括四、六、八旋翼以及奇特的飞行器类型,如三旋翼、阿凡达飞行器、Y4型多旋翼等。这使得MWC飞控的开发具有趣味性,容易受到大家的喜爱。\[1\] 另外,开源飞控APM也是一个值得考虑的选择。APM飞控是基于Arduino飞控的直接衍生产品,已经成为开源飞控成熟的标杆。APM飞控支持多种无人设备,包括多旋翼、固定翼、直升机和无人驾驶车等。对于多旋翼,APM飞控支持各种四、六、八轴产品,并且可以连接外置GPS传感器实现增稳、自主起降、自主航线飞行、回家、定高、定点等丰富的飞行模式。此外,APM还可以连接外置的超声波传感器和光流传感器,在室内实现定高和定点飞行。\[3\] 因此,如果你想开发远距离无人机遥控器,可以考虑使用MWC飞控平台或APM飞控平台作为基础。这些平台提供了丰富的功能和开发资源,可以满足你的需求。 #### 引用[.reference_title] - *1* *2* *3* [无人机——开源飞控简介](https://blog.csdn.net/u012814946/article/details/53040048)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^koosearch_v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

lihaMIMI

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

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

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

打赏作者

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

抵扣说明:

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

余额充值