手把手教你开发IOT设备

本文手把手教你使用rt-thread实时操作系统开发IoT设备,包括以太网连接、继电器输出、开关量输入、温湿度检测等功能设计。硬件采用STM32F405RE主控,软件框架基于rt-thread搭建,详细讲解了通讯协议设计与实现,以及MQTT、TCP、UDP的通讯方式。
摘要由CSDN通过智能技术生成

手把手教你开发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方式

此方式用于局域通讯配置或者控制,不支持数据上报

      

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值