相关连接
【STM32】【HAL库】遥控关灯0 概述
【STM32】【HAL库】遥控关灯1主机
【STM32】【HAL库】遥控关灯2 分机
【STM32】【HAL库】遥控关灯3 遥控器
需求
主机需要以下功能:
- 接收来自物联网平台的命令
- 发送RF433信号给从机
- 接收RF433信号和红外信号
- 驱动舵机动作
方案设计
使用双MCU方案,ESP32C3负责物联网相关通信,STM32负责发送信号给从机和接收RF433的信号,还有舵机控制
本单使用ESP32即可,但手头的RF433的遥控器的协议不是常见的,没找到相关的解码库
而ESP32本人不算熟悉,经过测试没法成功解码,因此使用双MCU方案,后续可能会改进
ESP32与STM32直接使用串口通信
使用巴法云平台作为物联网平台,使用MQTT协议连接
硬件设计
433接收
使用XL700芯片(淘宝)(单价0.52)
电路是数据手册的参考电路,天线使用弹簧天线
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YYm9ZLzX-1676130327907)(picture/1.png)]](https://img-blog.csdnimg.cn/4a2ba296a6044f93b59eb274c7d91344.png)
433发射
使用XL4456(淘宝)(单价0.47)
电路是数据手册的参考电路,天线使用弹簧天线
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-F40M8GrJ-1676130327908)(picture/2.png)]](https://img-blog.csdnimg.cn/a97d148593a749f9ba3d1d292cafebe9.png)
esp32
使用ESP32C3(单价10)(也可以使用esp8266模块,但手头无货,故使用这个芯片)
烧录时同时按下两个按键,先松开EN按键 2s以上后在松开Io9按键
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-z0vMwBYL-1676130327910)(picture/3.png)]](https://img-blog.csdnimg.cn/fe85ab88d2d7463ab8ea190375a82946.png)
stm32
最小系统设计
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1lQqcCy7-1676130327912)(picture/4.png)]](https://img-blog.csdnimg.cn/7b774afb5e1a4264ac23d2bc821a2dc8.png)
电源
使用5v电源适配器
只需要在这里转3,3v即可
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iWvjBAGo-1676130327912)(picture/5.png)]](https://img-blog.csdnimg.cn/48fc394552754caa8924f33f2b6fd03a.png)
其余接口
包括控制舵机的接口和红外接口
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ePYwmzg1-1676130327913)(picture/6.png)]](https://img-blog.csdnimg.cn/be631d18b7aa495299ee0215494dc3ae.png)
软件设计
协议
功能 |
esp32串口输出代码 |
物联网平台代码 |
stm32动作 |
主屋开 |
0xac0000 |
H_ON |
操作舵机开灯 |
主屋关 |
0xac00ff |
H_OFF |
操作舵机关灯 |
北屋开 |
0xac1100 |
N_ON |
将串口代码通过RF433发射 |
北屋关 |
0xac11ff |
N_OFF |
将串口代码通过RF433发射 |
南屋开 |
0xac2200 |
S_ON |
将串口代码通过RF433发射 |
南屋关 |
0xac22ff |
S_OFF |
将串口代码通过RF433发射 |
西屋开 |
0xac3300 |
W_ON |
将串口代码通过RF433发射 |
西屋关 |
0xac33ff |
W_OFF |
将串口代码通过RF433发射 |
全开 |
0xacff00 |
ALL_ON |
分别发送各屋开灯代码 |
全关 |
0xacffff |
ALL_OFF |
分别发送各屋关灯代码 |
esp32
环境
这里使用Arduino框架
请自行查询arduino的环境搭建
这里使用了一个第三方库(PubSubClient)来建立MQTT连接
这里提供zip文件(成品的github连接中),自行导入即可
如下图选择添加zip库,添加即可
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1oUTd77Z-1676130327914)(picture/7.png)]](https://img-blog.csdnimg.cn/f2edb70d0f44447ba1813121a1e85979.png)
wifi连接
将esp32设置为sta模式,接入其他wifi
根据wifi的ssid和password接入
如下所示
const char *ssid = "";
const char *password = "";
void setupWifi() {
WiFi.mode(WIFI_STA);
esp_wifi_set_mac(WIFI_IF_STA, newMACAddress);
Serial.println(WiFi.macAddress());
Serial.print("Connecting to ");
Serial.println(ssid);
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("");
Serial.println("WiFi connected.");
Serial.println("IP address: ");
Serial.println(WiFi.localIP());
}
MQTT
云平台设置
使用的是巴法云的mqtt服务
巴法云设置,传送门
一般的MQTT有这么几个要素
设备id(mqtt_devid),产品id(mqtt_pubid),密钥信息(mqtt_password),主题名(mqtt_topic)
在巴法云中只用了设备ID和主题名(产品ID和密钥为空即可)
#define mqtt_devid "********" //设备ID
#define mqtt_pubid " " //产品ID
#define mqtt_password " " //鉴权信息
const char *mqtt_topic = "ESP32HomeRFLight2";
设备ID是巴法云控制台中的这个红圈里的私钥
主题则是自己建立的主题名
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BxBbVn7e-1676130327915)(picture/8.png)]](https://img-blog.csdnimg.cn/77888e7a09064cb4ac10171eabaf1995.png)
程序
连接函数
巴法云的MQTT连接地址是(bemfa.com),端口号是 9501
MQTT连接,传入链接地址端口,在传入设备信息,主题信息即可
注意设置回调函数(接收到信息时触发)(client.setCallback(callback)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)