Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
RT-Thread活动
自定义协议的智能家居节点实现
发布于 2022-08-10 20:40:39 浏览:650
订阅该版
[tocm] # 前言 本文是作为“基于RT-Thread+RA6M4的智能家居网关”的一个补充。链接如下: [基于RT-Thread+RA6M4的智能家居网关](https://club.rt-thread.org/ask/article/d4a6d17536e6ae7e.html "基于RT-Thread+RA6M4的智能家居网关") 在简易智能家居网关的实现中,网关会给多个节点分配唯一的地址,从而管理多个设备节点。为了达到这个目的,网关需要对节点的加入建立连接,在建立连接的过程确认唯一地址。网关会保存已加入网络的所有设备节点,只有加入到网络中的节点才能收发网关数据。另外,为了保证网络中节点的实时性,加入了心跳机制。 在本文中,主要是针对该简易网关实现了一个可加入网络的节点程序。该程序基于stm32f103c8t6实现,只有8k ram,因此使用RT-Thread Nano版本。同时,搭载了aht10温湿度传感器或bh1750光感。 # 软件实现 由于节点程序实现较为简单,本文只介绍几个关键的点: 1. 建立连接 在“基于RT-Thread+RA6M4的智能家居网关”中,已经介绍了建立连接的过程流程图,在建立连接的过程,节点会先随机初始化一个16位地址,并携带该地址发送连接的请求给网关。若该地址在网络中已存在,则网关会发送重新连接的命令返回,此时,节点则需要重新初始化一个随机地址,再重新发送连接请求给网关,不断循环这样的过程,直到地址唯一。 这里需要注意的一点是,当检测到地址冲突时,实际上意味着此时有2个lora节点地址是冲突的,此时2个lora节点都能收到重新初始化的命令。为了解决这一点,当lora节点配置地址成功并接入网络时,需标志自身加入网络成功,加入网络成功后则不会再处理重新连接的命令。 由于加入网络成功后不会再进行重新连接,因此,如果网关在某一时候突然断电,则此时节点也需重新上电。 2. 心跳机制 心跳是由节点每隔一定时间发出的,当网关超过一定时间没收到该节点心跳时,会判定该节点离线。心跳的间隔时间需要通过调试确定。 3. 驱动健壮性 lora模块驱动可能会存在并发问题。例如中断、多线程间的并发。需要通过互斥量进行同步控制。 # 代码地址 https://gitee.com/bigbear2021/rt-thread_stm32_lora_node
0
条评论
默认排序
按发布时间排序
登录
注册新账号
关于作者
大目熊
业余开发者
文章
3
回答
13
被采纳
3
关注TA
发私信
相关文章
1
(苏州站)RT-Thread物联网开发者沙龙【已结束】
2
(成都站)RT-Thread物联网开发者沙龙
3
(深圳站)RT-Thread物联网开发者沙龙
4
(西安站)RT-Thread物联网开发者沙龙
5
成都站2018 RT-Thread开发者沙龙回顾及PPT下载
6
2018 RT-Thread物联网开发者沙龙(北京站)
7
2018 RT-Thread物联网开发者沙龙(南京站)
8
第十三届研电赛RT-Thread企业专项奖发布通知
9
RT-Thread应用作品征集大赛开始啦!
10
你的投票将决定RT-Thread官网应该优先准备的文档是哪些
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
线程
RT-Thread Nano
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
编译报错
Debug
SFUD
msh
rt_mq_消息队列_msg_queue
keil_MDK
ulog
MicroPython
C++_cpp
本月问答贡献
出出啊
1517
个答案
342
次被采纳
小小李sunny
1443
个答案
289
次被采纳
张世争
807
个答案
174
次被采纳
crystal266
547
个答案
161
次被采纳
whj467467222
1222
个答案
148
次被采纳
本月文章贡献
出出啊
1
篇文章
4
次点赞
小小李sunny
1
篇文章
1
次点赞
张世争
1
篇文章
1
次点赞
crystal266
2
篇文章
2
次点赞
whj467467222
2
篇文章
1
次点赞
回到
顶部
发布
问题
投诉
建议
回到
底部