“12.2:初步实现esp8266处理响应数据,暂不完善。”

This commit is contained in:
2025-12-02 20:19:38 +08:00
parent 948c1324e1
commit bd85b7395e
19 changed files with 811 additions and 580 deletions

View File

@@ -21,21 +21,21 @@
创建了LED状态灯、Wi-Fi初始化、向子节点传输数据、从子节点接收数据、MQTT上发、MQTT下发6个任务。<br>
### 二、自定义传输协议:
自定义传输协议仿照了ModBus传输协议其完善性相比有欠缺但是可满足非大型项目的基本使用。在自定义传输协议中使用十六进制数字进行传输分别由网关节点和子节点。
自定义传输协议仿照了ModBus传输协议其完善性相比有欠缺但是可满足非大型项目的基本使用。在自定义传输协议中使用十六进制数字进行传输分别由网关节点和子节点。<br>
**1、节点**<br>
*规则:*
**规则:**
子节点的传输协议主要分为帧头、传感器ID、传感器数据、执行器ID、执行器指令和帧尾。其中帧头也是节点ID用于声明自己是哪个节点上发的数据传感器ID用于声明自己是什么传感器传感器数据如DHT11温湿度数据执行器ID也是同理用于声明自己是什么执行器执行器指令一般是0或10为关、1为开用于在执行网关节点下发的控制指令后的返回结果告诉网关节点是开了还是关了是否成功若失败了是什么原因最后一个是帧尾为帧头倒写添加帧头和帧尾的目的是在网关接收多个节点的数据是验证其数据是否完整不会被其他上传的数据打断。<br>
*节点ID*
**节点ID**
D1为子节点1D2为子节点2以此类推。<br>
*传感器ID*
**传感器ID**
EA为DHT11温湿度传感器EB为MQ2烟雾浓度传感器、EC为火焰传感器、ED为光敏传感器。<br>
*传感器数据:*
**传感器数据:**
如17、3517为温度数据、35为湿度数据将其转化为10进制分别为23℃、湿度53%。<br>
*执行器ID*
**执行器ID**
FA为LED灯、FB为小风扇、FC为加湿器、FD为蜂鸣器、FE为舵机、FF为加热片。<br>
*执行器指令*
**执行器指令**
0为关、1为开。<br>
*帧尾:*
**帧尾:**
D1倒过来就是1D以此类推。<br>
| 目标地址 | 目标信道 | 帧头也是节点ID | 传感器ID | 传感器数据 | 执行器ID | 执行器指令 | 帧尾(为帧头倒写) |
@@ -43,10 +43,9 @@ D1倒过来就是1D以此类推。<br>
| 03 E9 | 17 | D1 | EA | 17 35 | FA | 01 | 1D |
**2、网关**
*规则:*
网关的传输协议主要分为帧头、执行器ID、执行器指令和帧尾。其中帧头也是节点ID用于声明控制的是哪个节点的设备执行器ID同理一般是0或1用于声明控制的是哪个设备执行器指令用于声明执行器是开还是关最后一个是帧尾为帧头倒写。
*节点ID、执行器ID与上面相同。*
*执行器指令:*
**规则:**
网关的传输协议主要分为帧头、执行器ID、执行器指令和帧尾。其中帧头也是节点ID用于声明控制的是哪个节点的设备执行器ID同理一般是0或1用于声明控制的是哪个设备执行器指令用于声明执行器是开还是关最后一个是帧尾为帧头倒写。*节点ID、执行器ID与上面相同。*<br>
**执行器指令:**
一共有两种一种是常规的0和1另外一种是温控模式用于控制温度范围若超过这个范围就会触发执行器的指令。温控模式默认常开控制字为02后面跟的是温控的数据也就是限定的温湿度数值如17 20 35 50就是温度在23~26度之间湿度在53%~80%之间。
*常规模式*
@@ -73,12 +72,12 @@ void vTask(void *<参数>);
```c
TaskHandle_t xTaskHandler;
xTaskCreate(
(TaskFunction_t ) vTask,
(char * ) "<定义一个任务名称>",
(configSTACK_DEPTH_TYPE) 1024,
(void * ) NULL,
(UBaseType_t ) <>
(TaskHandle_t * ) &xTaskHandler);
(TaskFunction_t ) vTask,
(char * ) "<定义一个任务名称>",
(configSTACK_DEPTH_TYPE) 1024,
(void * ) NULL,
(UBaseType_t ) <>
(TaskHandle_t * ) &xTaskHandler);
```
- 启动任务调度函数:
```c
@@ -95,8 +94,8 @@ QueueHandle_t xQueueHandler;
- 创建队列:
```c
xQueueHandler = xQueueCreate(
(UBaseType_t) <>,
(UBaseType_t) <>);
(UBaseType_t) <>,
(UBaseType_t) <>);
```
- 发送队列也就是将数据存入队列等待接收接收时长从0到portMAX_DELAY如下所示。
```c