电机外设加入应急联网预警工程
引言
本文的讲解步骤
在之前应急处理加联网的基础上, 相当于多加了一个fun, 我们单独调试fun都没问题, 我们仅仅是把这个fun当作小灯一样, 加入到应急系统里面了。开启逻辑和led一样, 为了避免重复开启,还会判断fun状态,然后控制器件切换.
为了提高系统的可用性,还有锻炼器件逻辑交互功能,我们加入手动按下按键,也可以开启风扇。但是这里就会存在问题,预警系统,会把正常状态下的风扇关闭, 所以我们要给人工操作加入一个管理员标识符,告诉预警系统,这是人为开启的,无需关闭。当且仅当,管理员将标识符置空,预警系统才能关闭风扇。这样预警系统就不会关闭风扇了。
控制风扇转速 , 把Speed转速上传, 服务器控制转速下发
误差演示, 整体逻辑分析,误差判断. 风扇状态显示. 器件状态检测。
工程源码以及引导:
温湿度应急联网工程源码:
https://ww0.lanzoul.com/iNSJp26rom7e
对应博客链接:
https://blog.csdn.net/qq_57484399/article/details/140965755
电机解耦单独测试源码:
https://ww0.lanzoul.com/iZauM26zyrni
对应博客链接:
https://blog.csdn.net/qq_57484399/article/details/141071234
本博客加入fun的测试源码:
https://ww0.lanzoul.com/iZ1hu273aovi
本博客加入fun和转速联网控制的源码工程:
https://ww0.lanzoul.com/iIprx2764l9a
测试视频:
更改温湿度,查看小灯和电机转动
电机加入预警工程
(1)在测试完温湿度预警的Onenet联网工程的基础上, 加入fun, 我们现在就把fun当作小灯一样, 加入工程, 只是启动fun的时候,底层配置可能会多一些而已.
(2)下载好应急处理加联网工程 和 电机解耦功能, 下面我们把他们组装起来
(3)解压, 我们开始在预警系统上, 加入fun的工程文件, 首先我们把电机解耦工程里面的Motor文件夹复制, 然后加入 到 预警系统的Source_code里面
(4)在预警工程里面, 在品字里面, 把此文件夹名字加入, 并且加入其中的所有文件
(5)打开锤子 -> C/C++ -> Include Paths , 然后包含次Motor文件夹, 然后点击空白处, 点击ok
(6)通过观察电机解耦工程, 看看, 还需要包含哪些头文件, 只包含fun.h就可以, 因为我们是预警系统, 自动开启风扇,无需人工了, 后续我们再加入key
(7)添加转速 变量, 为后续控制风扇转速铺路, 然后初始化风扇,设置转速Speed暂时为 20, 后面就是在预警的时候开启风扇了.
(8)接下来, 我们分析
温度异常, 红灯亮, 开风扇
湿度异常,蓝灯亮,开风扇
温湿度都正常, 关所有灯, 关风扇
(9)下面进行模拟实操
温湿度预警部分,请看以下博客:
https://blog.csdn.net/qq_57484399/article/details/140952653
(10)我们在器件处理地方进行加入fun处理
void ararm_deal(int alarm_mode)
{
switch(alarm_mode)
{
case 0:
humi_led_Set(blue_led_OFF);
temp_led_Set(red_led_OFF);
Fun_Set(FUN_OFF);
break;
case 1: humi_led_Set(blue_led_ON);
temp_led_Set(red_led_OFF);
Fun_Set(FUN_ON);
break;
case 2: humi_led_Set(blue_led_OFF);
temp_led_Set(red_led_ON);
Fun_Set(FUN_ON);
break;
case 3:
humi_led_Set(blue_led_ON);
temp_led_Set(red_led_ON);
Fun_Set(FUN_ON);
break;
default:break;
}
}
(11)遇到问题, 编译失败, 是因为我们fun是使用pwm驱动, 从而控制转速, 所以我们需要配置TIM, 我们也可以看我们的解耦工程
(12)再次编译还是出错, 说明我们需要清理一下工程, 然后重新编译, 我们通过 使用江协科技的bat文件,
https://blog.csdn.net/qq_57484399/article/details/141097391
(13)然后我们通过手机设置热点, 名称abc , 密码abc123456, 类型2.4g, 就可以让系统联网, 我们通过在onenet上进行调试温湿度阈值, 就可以查看系统的预警
具体演示视频,请看
https://www.bilibili.com/video/BV1JsY7exELi?vd_source=1de4617d8462b141bb53b6be82555d31
转速联网变量控制
(1)f12进入Onenet上传变量函数
(2)接着f12
(3)复制一个temp的上传变量的模块, 然后改一改
(4)加入一下代码
memset(text, 0, sizeof(text));
sprintf(text, "\"Speed\":{\"value\":%d},", Speed);
strcat(buf, text);
(5) 同时别忘了, 引入速度变量
extern int8_t Speed; //定义速度变量
(6)同时下发拆包, 我们也要加入
在main.c里面, 接着f12
(7)模仿温湿度, 也加入变量
(8)接着操作
(9)提取数据, 本地修改
(10)同时Onenet服务器也要加入, 我们转速控制在 -100 -100,
(11)下面就是见证奇迹的时候了, 我们记得在fun里面, 把开fun设置转速里面, 把Speed加入进入, 同时我们也可以把转速显示在Oled上, 还有预警信息返回的模式, 也显示出来, 通过结合服务器阈值判断, 从而调试项目.
判断我们预警器件是否运行正确.
演示视频:
fun联网调控阈值测试