概述
手把手教你开发IOT设备
1.概述
IOT设备的开发是基于rt-thread rtos实现。rt-thread是一个国产RTOS,它是一个RTOS,但又不仅仅是RTOS,支持大量的芯片,驱动,还包含大量的软件包,为开发者提供非常大的便利,这也是我喜欢rt-thread的原因之一。统一的驱动接口,为上层应用开发也带来很大的便利。本次所讲的IOT设备基本都是采用rt-thread提供的软件包。下面我来将,如何开发IOT设备
如有疑问或者有其他想法的可以发邮件给我:hijxyz@163.com
2.功能设计
2.1.以太网连接(MQTT/TCP/UDP)
MQTT模式 远程连接物联网平台,支持设备参数设置和获取,支持数据上报
TCP SERVER 模式支持本地局域网连接IOT设备,支持3个客户端连接,初版不支持TCP SERVER,这个功能暂时不实现
UDP SERVER 模式支持本地局域网内发现IOT设备和基础参数配置,但不支持数据主动上报
2.2.路继电器输出
远程控制继电器的闭合 断开,并记录动作时间以及动作
2.3.路开关量输入
远程采集开关量的值
2.4.温湿度检测
定期采集温湿度,并与设置的上限值和下限值对比,如果超限则上报,并实时记录采集的温湿度
2.5.RS485透传采集
2.6.实时时间及掉电运行
2.7.远程OTA
3.硬件框架
硬件框架
框图说明
主控芯片采用的是STM32F405RE
以太网芯片采用ENC28J60,用于联网
RS485 采用 max485,用于透传
UART 用于打印调试信息
2路开关量输入,光耦隔离
2路继电器输出,10A
时钟是采用STM32 内部RTC模块
温湿度传感器 SHT20
FLASH存储 W25Q64
4.软件框架
软件框架
整个软件框架是基于rt-thread RTOS来实现的,其中包含内核,BSP,组件软件包都是基于rt-thread的。在这个框架下我们来快速搭建开发产品
5.IOT通讯协议设计及实现
协议结构说明
通讯协议在通讯中是非常重要的,是连接两个终端的交互方式。所以通讯协议设计也是至关重要的。下面来看看我设计的通讯协议
协议结构
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 10~n | n+1 |
起始字节 | 长度 | 校验字节 | 协议参数 | 消息ID | 数据内容 | 结束字节 | |||||
0x3E | 0xNNNN | CRC16 | 0xNN | 0xNNNNNNNN | dlenght | 0x0A |
协议说明
起始字节:表示该消息的开始
长度:从长度的第一字节开始 到 数据的最后一个字节,不包含起始字节和结束字节
校验字节:用于校验该消息的准确性,确保消息没有被修改过,从协议参数开始 到数据结束
协议参数:
第1位:表示方向帧,0:请求,1:应答
消息ID:表示消息的唯一性标识符,消息ID的生成方式是
数据内容:JSON格式消息
结束字节:表示消息结束
发送顺序:
先发送低字节,再发送高字节
用途:
用于MQTT/TCP/UDP通讯方式中
接口说明
获取IOT设备信息
接口名称:
get_iot_dev_info
请求参数
无
返回结果
dev_sn | 设备序列号 |
JSON包
请求JSON包
{
"function":"get_iot_dev_info",
"data":{
}
}
回应JSON包
{
"function":"get_iot_dev_info"
“result”:0,
"data":{
“dev_sn”:124151514141
“ip”:”192.168.1.112”
}
}
设置MQTT信息
接口名称:
set_mqtt_info
请求参数
dev_sn | 设备序列号 |
username | Mqtt用户名 |
password | Mqtt密码 |
clientid | 客户端ID |
|
|
返回结果
无
JSON包
请求JSON包
{
"function":"set_mqtt_info"
"data":{
“dev_sn”:13141413,
“username”:””xxx,
“password”:”11111”,
“clientid”:”123131”
}
}
回应JSON包
{
"function":" set_mqtt_info",
“result:0,”
"data":{
}
}
6.通讯设计
联网通讯有3种方式:MQTT 、TCP SERVER、UDP SERVER
1.MQTT通讯设计
topic设计
服务器 请求 IOT设备的主题:iot_dev/<username>/svr_resquest_dev
IOT设备 回应 服务器的主题:iot_dev/<username>/dev_respond_svr
IOT设备 请求 服务器的主题:iot_dev/<username>/dev_report_svr
服务器 回应 IOT设备的主题:iot_dev/<username>/svr_reply_dev
Mqtt的工作流程
2.TCP SERVER方式
tcp server 分为三部分
1.监听流程
2.tcp socket数据接收
3.tcp socket 状态管理
3.UDP SERVER方式
此方式用于局域通讯配置或者控制,不支持数据上报
最后
以上就是笑点低发箍为你收集整理的手把手教你开发IOT设备手把手教你开发IOT设备6.通讯设计的全部内容,希望文章能够帮你解决手把手教你开发IOT设备手把手教你开发IOT设备6.通讯设计所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复