新闻  |   论坛  |   博客  |   在线研讨会
夏天热急得直跺脚?送它给女友,竟能轻轻松松获得清凉?
智能物联研习社 | 2021-03-01 19:01:19    阅读:1125   发布文章

夏天想开空调找不到遥控器!遥控器找到之后,想要调节温度又要起身拿遥控器!

如何摆脱麻烦?

红外遥控,远程操作,随心开启、调节、关闭空调,全靠它!

红外遥控和舵机控制通过 涂鸦智能 App 下发 打开空调 指令控制红外****模块****指令打开格力空调,下发 开/关门 指令控制舵机实现开关门功能。

本教程内容均为涂鸦开发者 @时浩文 提供,经其授权编辑发布。

物料清单

硬件 (4) 软件 (1)

  • 涂鸦三明治 Wi-Fi MCU 通信板(WB3S) 数量:1

适用于涂鸦 IoT 自定义方案中,照明、台灯、灯 丝灯、调光器、照明遥控器、排插、开关、家电、运动健康、传感类产品原型。

  • 涂鸦三明治红外遥控功能板 数量:1

一款无线****与接收装置,能学习中心频率为37.9KHz 的红. 外信号,通过控制红外****管的通断来达到控制红外设备的目的。

  • Arduino 开发板 数量:1

一个开发各类设备,让您比台式电脑更能充分感知和控制物理世界的生态系统。查看详情

  • STM32f103C8t6 数量:1

适用于电机驱动、应用控制、医疗和手持设备、PC 和游戏外设、GPS 平台、工业应用、PLC、变频器、打印机、扫描仪、报警系统、视频对讲和 HVAC 等应用。

步骤WB3S模组的 Wi-Fi 板(测试)
  1. 在 涂鸦 IoT 平台 上创建一款 万能遥控器 产品,开发方案选择自定义方案。

  2. 输入产品名称,型号,选择 Wi-Fi +蓝牙+IR方案,标准功耗。

  3. 创建产品后,添加功能定义。由于要控制舵机开锁,需要添加一个布尔型功能点,填写一个较规范的标识符。因为是通过标识符控制功能的实现。说明:定时功能是云端实现,不需要写代码,可添加可不添加,我是想实现定时关闭空调所以添加了定时功能。

  1. 在 硬件开发,选择 WB3S Wi-Fi &BLE 双协议模组。在开发资料下载区域,下载开发资料。MCU SDK:涂鸦的 MCU 开发代码包。可以移植到 Arduino Uno/Nano 最小系统。Uno 和 Nano 使用一样的芯片,代码一样,只是在 Arduino 下载的时候选择对应的开发板即可。同样,MCU SDK 也被移植到 STM32f103c8t6 最小系统板,并采用 Keil 开发。在 STM 32 和 Arduino 都成功与模组通信后,按下设备按键进入配网模式。涂鸦模组调试助手:可以模拟 MCU 和模拟模组。功能点调试文件:以 .json 结尾的文件。可以使用涂鸦模组调试助手需导入 DP 文件,即为这个文件。

  2. 在下载资料中安装 涂鸦模组调试助手。我的电脑是 Windows 10 直接安装即可,如果是 Windows 7 系统,则需安装 NET4.6.1 框架。使用方式详情请参考 涂鸦模组调试助手 。我拿到的是三明治开发板里的 TYDE5-WB3S-MCU-1 Wi-Fi 板,涂鸦已经把 MCU 通用对接的固件已经烧录好了,无需再烧录固件。所以直接在调试助手里选择 MCU模拟,选择串口端口号(端口号查看:右键我的电脑->设备管理器->端口),波特率选择 115000。导入之前下载的 功能点调试文件

  3. 点开 初始化配置,点击 开始调试 按钮。即可看到在调试窗口的模组心跳信息。

  4. 之后就可在 操作 栏,使用相关指令。本小节简单描述下配网操作。点击 AP配网,在调试窗口就可看到 Wi-Fi 模组进入AP配网模式。在手机端打开 涂鸦智能 APP,点右上角 + 号,选择自动发现,就可添加到 Wi-Fi 模组,按提示配网即可。成功配网后,在涂鸦模组调试助手里查看 Wi-Fi 模组是否已成功连接路由器,且连接到涂鸦 IoT 云端。在涂鸦智能 App 里尝试操作设备,然后在调试助手里查看是否有 MQTT 协议的云端下发数据。

Arduino控制舵机(注意事项)

舵机,故名思议,像船尾的舵那样,只能转动固定的角度,一般的舵机最大转角约为 180 度。也有一些舵机能达到 300 度的。使用 Arduino Uno 控制板控制舵机之前您可以参考以下资料。

  • 认识 Ardinuo 控制板

  • Ardinuo实验室

舵机原理


将PPM信号,经信号线传输。 PPM信号的频率是50HZ。宽度从0.5MS到2.5MS。具体用到的代码如下所示:

//引入头文件#include <Servo.h>    //调用舵机函数库Servo myservo;//初始化舵机控制脚为D6myservo.attach(6);            //定义数字第6脚为舵机控制引脚//写入舵机角度,0~180度myservo.write(120); //写入舵机角度
Arduino红外****控制格力空调
  • 红外****参考链接:https://www.yiboard.com/thread-910-1-1.htmlhttps://www.cnblogs.com/hgxh/p/4109012.htmlhttps://www.arduino.cn/thread-1220-1-1.htmlArduino控制格力空调:http://bbs.mydigit.cn/read.php?tid=2103622

  • 红外接收代码,此代码不能用于控制空调:

//本例来自于红外接收模组的IRremote自带范例//已经作出了修改/*电路连接
*红外接收器的VOUT接在数字引脚3上
*效果,当遥控器按下按键时电脑的串口会出现按键的命令编码.
*/#include <IRremote.h>        //加载头文件,红外的库需自己导入int RECV_PIN = 3;             //定义红外接收器的引脚为3int a=0;IRrecv irrecv(RECV_PIN);
decode_results results;void setup(){
    Serial.begin(115200);       //串口波特率115200
    irrecv.enableIRIn();         //初始化红外接收器}void loop() {if (irrecv.decode(&results))
{
    Serial.print("IR DATA IS:"); 
    Serial.println(results.value); 
    irrecv.resume(); // 接收下一个值}
delay(100);
}
  • 使用上述代码,读出空调遥控器红外码,开空调:2425357322,关空调:2156921866。

  • 红外控制空调上述代码适合普通红外解码和发送,不适合空调,多数空调遥控器编码都是100位以上,甚至200位。再看看 IRremote 库能接收多少位,在 IRremote.h 文件中你可以找到如下语句:

// [mw_shl_code=cpp,true]'#define RAWBUF 100// Length of raw duration buffer[/mw_shl_code] 设置成 100 位过于偏低,可以修改成[mw_shl_code=cpp,true]#define RAWBUF 255[/mw_shl_code]


  • 红外控制空调代码主要参考下面的链接。已测试可以成功打开格力空调,但关闭空调部分的代码有问题。Arduino控制格力空调:http://bbs.mydigit.cn/read.php?tid=2103622

Arduino 与涂鸦 WB3S 模组通信
  • MCU SDK移植

  • MCU快速开始

在涂鸦创建产品后,有生成 MCU SDK 包,在 Arduino 中导入 MCU SDK 包,然后按下方更改即可。

//(1)#error "请将MCU串口发送函数填入该函数,并删除该行"Serial.write(value);//(2)#error " 请在main函数中添加wifi_protocol_init()完成wifi协议初始化,并删除该行"//添加wifi_protocol_init();void setup() {
  wifi_protocol_init();  //wifi协议初始化  }//(3)#error "请在串口接收中断中调用uart_receive_input(value),串口数据由MCU_SDK处理,用户请勿再另行处理,完成后删除该行"
   //创建serialEvent()函数,实现串口接收void serialEvent() {  if (Serial.available()) 
  {     unsigned char ch = (unsigned char)Serial.read();
     uart_receive_input(ch);
  }
}//在setup()函数里调用serialEvent();void setup() {
  serialEvent();           //串口接收处理   }//(4)#error "请直接在main函数的while(1){}中添加wifi_uart_service(),调用该函数不要加任何条件判断,完成后删除该行"//添加wifi_uart_service();void loop() {
  wifi_uart_service();     // Wi-Fi 串口}//(5)还需要在变量申明处去掉const ,否则会报错//const DOWNLOAD_CMD_S download_cmd[] =DOWNLOAD_CMD_S download_cmd[] =
{
  {DPID_OPENSW, DP_TYPE_BOOL},
  {DPID_OPENKT, DP_TYPE_BOOL},
};

上述工作完成后,基本问题已解决。可在涂鸦模组调试助手测试。测试界面如下:导入 DP 文件(即 .JSON 文件),波特率设置为 115200。

看完是不是很心动~心动不如行动

https://auth.tuya.com/?from=https%3A%2F%2Fiot.tuya.com%2F&_source=5da300e50745947aec50c44f209c5367

涂鸦物联网开发平台为开发者提供了便捷的 IoT 开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力。


https://auth.tuya.com/register?from=http%3A%2F%2Fiot.tuya.com%2F&_source=e74d60a1928993e1892f7e5efbaa5467

涂鸦物联网开发平台为开发者提供了便捷的 IoT 开发工具与服务,助力开发者更高效的完成设备接入,并为开发者提供物联网应用开发及场景服务能力

*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客