一种智能水体清洁系统及其控制方法

文档序号:29351627发布日期:2022-03-22 21:53阅读:152来源:国知局
一种智能水体清洁系统及其控制方法

1.本发明涉及水体清洁设备领域,尤其涉及一种智能水体清洁系统及其控制方法。


背景技术:

2.随着环境保护意识的提高,城市人口数量的增加,水体污染越来越受到人们的重视,水体中的污染主要为浮游生物繁殖以及漂浮的垃圾,通常难以清理,现在对池塘,浅层河道,景观水池等水体的清污是通过清理人员站在清洁船上使用抄网对水面漂浮的垃圾进行清理,这样工作效率非常的低,且存在一定的安全隐患。


技术实现要素:

3.本发明的目的在于提出一种智能水体清洁系统及其控制方法,以解决上述背景技术中的一个或多个技术问题。
4.为达此目的,本发明采用以下技术方案:一种智能水体清洁系统,包括水体清洁装置、无线网络设备和云平台;所述水体清洁装置包括控制器、过滤单元、电源模块和动力单元;所述控制器与所述无线网络设备通信连接,所述无线网络设备与所述云平台通信连接;所述控制器用于下载所述云平台发出的控制指令;用于根据控制指令控制所述过滤单元及所述动力单元的动作;用于上传设备状况和事件至云平台;所述电源模块用于对所述控制器、所述过滤单元及所述动力单元的供电;所述过滤单元用于过滤水体的杂质;所述动力单元用于驱动水体清洁装置在水体中行走。
5.优选的,所述过滤清洁单元包括过滤器和水泵,所述水泵的控制端与所述控制器电连接,所述水泵的输入端连接有抽水软管,所述水泵的输出端与所述过滤器的输入端通过软管相连。
6.优选的,所述过滤清洁单元还包括过滤继电器和水流量计,所述过滤继电器的输入端与所述控制器电连接,所述过滤继电器的输出端与所述水泵的控制端电连接,所述水流量计的进水端与所述水泵连通,所述水流量计的出水端与所述过滤器的输入端连通。
7.优选的,所述动力单元包括左螺旋桨和右螺旋桨,所述左螺旋桨和所述右螺旋桨分别与所述控制器电连接。
8.优选的,所述动力驱动单元还包括电机驱动模块,所述电机驱动模块的输入端与所述控制器电连接,所述电机驱动模块的输出端分别与所述左螺旋桨和所述右螺旋桨的控制端电连接,所述电机驱动模块采用l298n芯片。
9.优选的,所述控制器为树莓派控制器nanopi duo2。
10.本发明还公开了一种智能水体清洁装置的控制方法,该方法包括以下步骤:s1:水体清洁装置上电开机,电源模块对控制器、过滤单元和动力单元供电;s2:控制器与无线网络设备建立通信连接;
s3:云平台通过无线网络设备建立与控制器的通信连接,同时进行设备鉴权安全认证;s4:设备鉴权安全认证成功后,控制器对gpio口的初始化;s5:用户端将控制指令传送到云平台,云平台根据控制指令调整数据模板中的变量,控制器在云平台中接收数据模板中变量的变化,根据数据模板中变量的变化相应执行水泵控制程序、螺旋桨控制程序或水流计读取程序,以控制过滤单元和/或动力单元完成相应动作;s6:通过控制器将电源模块、过滤单元和动力单元产生的数据和事件状态上传至云平台;s7:延时等待用户端发出的下次控制指令,当用户端发出下次控制指令时,重复执行步骤s5-s7。
11.优选的,步骤s4中,gpio口的初始化包括定义全局时间变量、运行水流量计脉冲检测线程、执行gpio初始化函数、启动水流量脉冲中断检测线程以及程序运行前debug测试。
12.优选的,步骤s4和步骤s6中,当水流量计检测的水流量低于设定的阈值时,判定为过滤器容量已满,并通过控制器将事件发送到云平台上。
13.优选的,所述数据模板使用json格式数据模版,所述数据模板包括水泵电源控制数据模版、螺旋桨控制数据模版和水流量传感器数据模版;水泵电源控制数据模版的数据类型为布尔型,属性为读写,通过改变变量控制水泵的启动与关闭;螺旋桨控制数据模版的数据类型为整型,属性为读写,通过改变变量同时分别控制左螺旋桨以及右螺旋桨的运行或停止;水流量传感器数据模版的数据类型为布尔型,属性为只读,通过读取该变量值获取当前过滤器的容量状态。
14.本发明的有益效果为:本发明通过云平台远程连接水体清洁装置的控制器的方式,使用户在可远程对设水体清洁装置进行控制,通过控制过滤单元和动力单元的启停,从而实现对水体杂质过滤启停的控制以及驱动水体清洁装置在水体中行走,通过过滤单元将水中大颗粒杂质过滤,并把杂质运回河岸上,以达到清洁河道池塘等水池的目的。采用互联网控制的方式,实现对水体清洁装置的远距离、低延时、高效率的操作,解决了现有技术中通过人工入水进行清污不便捷的问题,消除了安全隐患。
附图说明
15.附图对本发明做进一步说明,但附图中的内容不构成对本发明的任何限制。
16.图1是本发明其中一个实施例的水体清洁装置的控制电路示意图;图2是本发明其中一个实施例的能水体清洁系统的拓扑结构图;图3是本发明其中一个实施例智能水体清洁系统的控制方法的流程图。
具体实施方式
17.下面结合附图并通过具体实施方式来进一步说明本发明的技术方案。
18.本实施例的一种智能水体清洁系统,参考附图1和2,包括水体清洁装置1、无线网
络设备2和云平台3;所述水体清洁装置包括控制器11、过滤单元、电源模块和动力单元;所述控制器与所述无线网络设备2通信连接,所述无线网络设备与所述云平台3通信连接;所述控制器用于下载所述云平台发出的控制指令;用于根据控制指令控制所述过滤单元及所述动力单元的动作;用于上传设备状况和事件至云平台;所述电源模块用于对所述控制器、所述过滤单元及所述动力单元的供电;所述过滤单元用于过滤水体的杂质;所述动力单元用于驱动水体清洁装置在水体中行走。
19.本实施例通过云平台远程连接控制器的方式,使用户在可远程对设水体清洁装置进行控制,通过控制过滤单元和动力单元的启停,从而实现对水体杂质过滤启停的控制以及驱动水体清洁装置在水体中行走,通过过滤单元将水中大颗粒杂质过滤,并把杂质运回河岸上,以达到清洁河道池塘等水池的目的。采用互联网控制的方式,实现对水体清洁装置的远距离、低延时、高效率的操作,解决了现有技术中通过人工入水进行清污不便捷的问题,消除了安全隐患。
20.优选的,所述过滤清洁单元包括过滤器和水泵12,所述水泵的控制端与所述控制器电连接,所述水泵的输入端连接有抽水软管,所述水泵的输出端与所述过滤器的输入端通过软管相连。
21.在过滤的过程中,通过水泵12从过滤器中抽水形成负压,再通过负压将水从水体中抽出经过过滤器中的过滤芯(如过滤海棉)过滤后由水泵12排向水体,实现过滤水中颗粒杂质的效果,同样的方式可以更换水泵12和过滤器为离子过滤器,离心机等高级设备以过滤更细小的颗粒,达到更好的水体清洁效果。
22.进一步的,过滤清洁单元还包括过滤继电器13和水流量计17,所述过滤继电器13的输入端与所述控制器11电连接,所述过滤继电器13的输出端与所述水泵12的控制端电连接,所述水流量计17的进水端与所述水泵12连通,所述水流量计17的出水端与所述过滤器的输入端连通。
23.采用开关数字变量的方式对水泵12进行控制,即采用控制器的gpio口的弱电来控制水泵的开关,并设置过滤继电器,通过将开关信号耦合到不同种电源规格的大功率水泵的继电器上,实现对不同规格的水泵12的控制,或通过采用pwm驱动板的方式,调节可调水泵的工作状态,同时做好防水隔离,以实现控制器与水泵电源的隔离又可以灵活控制开关的目的。
24.本实施例通过水泵中的水流量来监测过滤器中的剩余容量,当过滤器中污染物量较少时,水泵12在水体中抽取的污水在通过过滤器时阻力较小,此时水流量计17测得的水流量较大;而当过滤器中的污染物逐渐增多时,过滤器对水的阻力较大,水流量计17测得的水流量较小。由此,通过监测通过水流量计17中水流量大小,将模拟量转化为数字量,并设定一个水流量的阈值,当水流量计17中测得的水流量低于该阈值,则判定为过滤器容纳污染物的空间已满,再通过控制器将事件发送到用户端,及时反馈给使用者,提示使用者对过滤器进行清理。本实施例的水流量计17采用涡轮水流检测器,通过水流推动涡轮转动,再通过控制器检测涡轮旋转输出的脉冲数,从而达到流量检测的效果。
25.优选的,所述动力单元包括左螺旋桨14和右螺旋桨15,所述左螺旋桨14和所述右螺旋桨15分别与所述控制器电11连接。设置左螺旋桨14和右螺旋桨15,由此可通过控制左
螺旋桨14和右螺旋桨15的启闭实现水体清洁装置的停止、前进、后退、左转和右转,实现了驱动水体清洁装置在水体中行走,解决了现有技术中通过人工入水进行清污不便捷的问题,消除了安全隐患。
26.优选的,所述动力驱动单元还包括电机驱动模块16,所述电机驱动模块的输入端与所述控制器电连接,所述电机驱动模块的输出端分别与所述左螺旋桨和所述右螺旋桨的控制端电连接,所述电机驱动模块采用l298n芯片。
27.控制器通过网络连接接收的控制指令,利用gpio口通过pwm等控制技术控制l298n芯片的电机驱动模块,使得电源模块分别输出至左螺旋桨和右螺旋桨,通过控制电机驱动模块的不同的输出工作状态,可以灵活地控制设备的移动方向,并通过采用l298n芯片,实现了对左螺旋桨14和右螺旋桨15的转速控制。
28.优选的,所述控制器为树莓派控制器nanopi duo2。
29.智能水体清洁装置的控制方法,该方法包括以下步骤:s1:水体清洁装置上电开机,电源模块对控制器、过滤单元和动力单元供电;s2:控制器执行nmcli脚本,与无线网络设备建立通信连接;s3:云平台通过无线网络设备建立与控制器的通信连接,同时进行设备鉴权安全认证;s4:设备鉴权安全认证成功后,控制器对gpio口的初始化;s5:用户端将控制指令传送到云平台,云平台根据控制指令调整数据模板中的变量,控制器在云平台中接收数据模板中变量的变化,根据数据模板中变量的变化相应执行水泵控制程序、螺旋桨控制程序或水流计读取程序,以控制过滤单元和/或动力单元完成相应动作;s6:通过控制器将电源模块、过滤单元和动力单元产生的数据和事件状态上传至云平台;s7:延时等待用户端发出的下次控制指令,当用户端发出下次控制指令时,重复执行步骤s5-s7。
30.步骤s2中,通过在第一次调试时使控制器通过串口终端连接,在终端中使用nmcli管理网络接口、搜索和连接wi-fi,设定之后,nmcli脚本后续将自动初始化和连接上次记录的无线局域网,并断线之后将会不断重新连接,以保证网络连接的稳定性。
31.步骤s3中,设备鉴权安全认证的具体步骤为控制器自动执行程序将设备信息传输至云平台并依次执行云平台c-sdk中的_setup_connect_init_params函数和iot_template_start_yield_thread函数,与云平台连接成功后将会使用ssl加密继续后续的传输。
32.步骤s4中,步骤s4中,gpio口的初始化包括定义全局时间变量、运行水流量计脉冲检测线程、执行gpio初始化函数、启动水流量脉冲中断检测线程以及程序运行前debug测试。其具体设定为:// 定义全局时间变量static unsigned int
ꢀꢀ
millis_time;static unsigned int
ꢀꢀ
avr_traffic;static unsigned int
ꢀꢀ
rise_times;
// 水流量计脉冲检测线程pi_thread(wpi_isr){
ꢀꢀꢀꢀ
int flag = 0;
ꢀꢀꢀꢀ
while (1) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
if (digitalread(16) != flag) {
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
turbo_isr();
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
flag = !flag;
ꢀꢀꢀꢀꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
}}// gpio初始化函数static void _usr_init(void){
ꢀꢀꢀꢀ
log_d("add your init code here");
ꢀꢀꢀꢀ
log_d("
‑‑‑ꢀ
init code start
ꢀ‑‑‑
");
ꢀꢀꢀꢀ
int test_pin = 8;
ꢀꢀꢀꢀ
wiringpisetup();
ꢀꢀꢀꢀ
pinmode(15, output);
ꢀꢀ
// ma_en 左螺旋桨使能pin
ꢀꢀꢀꢀ
pinmode(14, output);
ꢀꢀ
// mb_en 右螺旋桨使能pin
ꢀꢀꢀꢀ
pinmode(13, output);
ꢀꢀ
// ma1 左螺旋控制pin
ꢀꢀꢀꢀ
pinmode(12, output);
ꢀꢀ
// ma2 左螺旋控制pin
ꢀꢀꢀꢀ
pinmode(3, output);
ꢀꢀ
// mb1 右螺旋控制pin
ꢀꢀꢀꢀ
pinmode(2, output);
ꢀꢀ
// mb2 右螺旋控制pin
ꢀꢀꢀꢀ
pinmode(8, output);
ꢀꢀ
// pump 水泵使能控制pin
ꢀꢀꢀꢀ
pinmode(16, input); // turbo
ꢀꢀꢀꢀ
pullupdncontrol(7, pud_up);
ꢀꢀꢀꢀ
// 启动水流量脉冲中断检测线程
ꢀꢀꢀꢀ
pithreadcreate(wpi_isr);
ꢀꢀꢀꢀ
// 程序运行前debug测试
ꢀꢀꢀꢀ
digitalwrite(test_pin, high);
ꢀꢀꢀꢀ
log_d("pin %d is %d!", test_pin, digitalread(test_pin));
ꢀꢀꢀꢀ
delay (500);
ꢀꢀꢀꢀ
digitalwrite(test_pin,
ꢀꢀ
low);
ꢀꢀꢀꢀ
log_d("pin %d is %d!", test_pin, digitalread(test_pin));
ꢀꢀꢀꢀ
delay (500);
ꢀꢀꢀꢀ
log_d("
‑‑‑ꢀ
init code end
ꢀ‑‑‑
");}。
33.步骤s5中,所述数据模板使用json格式数据模版,所述数据模板包括水泵电源控
制数据模版、螺旋桨控制数据模版和水流量传感器数据模版;水泵电源控制数据模版的数据类型为布尔型,属性为读写,通过改变变量控制水泵的启动与关闭,设定为0代表水泵关闭,1代表水泵启动;螺旋桨控制数据模版的数据类型为整型,属性为读写,通过改变变量同时分别控制左螺旋桨以及右螺旋桨的运行或停止;分别设定为0代表螺旋桨关闭,1代表螺旋桨前进,2代表螺旋桨后退,3代表螺旋桨向左转,4代表螺旋桨向右转;水流量传感器数据模版的数据类型为布尔型,属性为只读,通过读取该变量值获取当前过滤器的容量状态,分别设定为0代表容器未满,1代表容器已满。
34.本实施例的数据模版具体为:static void _init_data_template(void){
ꢀꢀꢀꢀ
// 水泵电源控制数据模版
ꢀꢀꢀꢀ
sg_productdata.pump_power_switch = 0;
ꢀꢀꢀꢀ
sg_datatemplate[0].data_property.data = &sg_productdata.pump_power_switch;
ꢀꢀꢀꢀ
sg_datatemplate[0].data_property.key = "pump_power_switch";
ꢀꢀꢀꢀ
sg_datatemplate[0].data_property.type = type_template_bool;
ꢀꢀꢀꢀ
sg_datatemplate[0].state = echanged;
ꢀꢀꢀꢀ
// 螺旋桨控制数据模版
ꢀꢀꢀꢀ
sg_productdata.motor = 0;
ꢀꢀꢀꢀ
sg_datatemplate[1].data_property.data = &sg_productdata.motor;
ꢀꢀꢀꢀ
sg_datatemplate[1].data_property.key = "motor";
ꢀꢀꢀꢀ
sg_datatemplate[1].data_property.type = type_template_enum;
ꢀꢀꢀꢀ
sg_datatemplate[1].state = echanged;
ꢀꢀꢀꢀ
// 水流量传感器数据模版
ꢀꢀꢀꢀ
sg_productdata.container_sensor = 0;
ꢀꢀꢀꢀ
sg_datatemplate[2].data_property.data = &sg_productdata.container_sensor;
ꢀꢀꢀꢀ
sg_datatemplate[2].data_property.key = "container_sensor";
ꢀꢀꢀꢀ
sg_datatemplate[2].data_property.type = type_template_enum;
ꢀꢀꢀꢀ
sg_datatemplate[2].state = echanged;}。
[0035]
步骤s5中,水泵控制程序是依照数据模版传输的布尔形变量pump_power_switch来配置水泵12使能控制端,水泵控制程序的具体设定为:
ꢀꢀꢀꢀ
if (pdata-》pump_power_switch) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(8, high);
ꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(8, low);
ꢀꢀꢀꢀ
}。
[0036]
左螺旋桨和右螺旋桨是依照数据模版传输的整形变量motor来配置的,螺旋桨控制程序具体设定为:
ꢀꢀꢀꢀ
switch (pdata-》motor) {
ꢀꢀꢀꢀ
case 1:
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(15, high);digitalwrite(14, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(13, high);digitalwrite(12, low);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(3, high);digitalwrite(2, low);break;
ꢀꢀꢀꢀ
case 2:
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(15, high);digitalwrite(14, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(13, low);digitalwrite(12, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(3, low);digitalwrite(2, high);break;
ꢀꢀꢀꢀ
case 3:
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(15, high);digitalwrite(14, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(13, low);digitalwrite(12, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(3, high);digitalwrite(2, low);break;
ꢀꢀꢀꢀ
case 4:
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(15, high);digitalwrite(14, high);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(13, high);digitalwrite(12, low);
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(3, low);digitalwrite(2, high);break;
ꢀꢀꢀꢀ
default:
ꢀꢀꢀꢀꢀꢀꢀꢀ
digitalwrite(15, low);digitalwrite(14, low);break;
ꢀꢀꢀꢀ
}。
[0037]
水流计读取程序的具体包括脉冲中断触发统计水流量函数和水流量推送函数,通过脉冲中断触发统计水流量函数计算水流量计的流量值,然后通过水流量推送函数将模拟量转换为数字量,其具体设定为:// 脉冲中断触发统计水流量函数static void turbo_isr(void){
ꢀꢀꢀꢀ
if (rise_times 《 sampling_period) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
rise_times++;
ꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀ
rise_times = 0;
ꢀꢀꢀꢀꢀꢀꢀꢀ
avr_traffic_l_min = (sampling_period * 1000) / (7.5 * (millis()
ꢀ‑ꢀ
millis_time))
ꢀꢀꢀꢀꢀꢀꢀꢀ
millis_time = millis()
ꢀꢀꢀꢀꢀꢀꢀꢀ
log_d("turbo_isr time %d", millis());
ꢀꢀꢀꢀꢀꢀꢀꢀ
log_d("avr_traffic %f l/min", avr_traffic_l_min);
ꢀꢀꢀꢀ
}}
// 水流量推送函数static void _refresh_local_property(void){
ꢀꢀꢀꢀ
int get_container_sensor = 0;
ꢀꢀꢀꢀ
if (avr_traffic_l_min 《= 2) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
get_container_sensor = 1;
ꢀꢀꢀꢀ
} else {
ꢀꢀꢀꢀꢀꢀꢀꢀ
get_container_sensor = 0;
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
if (get_container_sensor != sg_productdata.container_sensor) {
ꢀꢀꢀꢀꢀꢀꢀꢀ
sg_productdata.container_sensor = get_container_sensor;
ꢀꢀꢀꢀꢀꢀꢀꢀ
sg_datatemplate[2].state = echanged;
ꢀꢀꢀꢀ
}
ꢀꢀꢀꢀ
// add your local property refresh logic}。
[0038]
优选的,步骤s4和步骤s6中,当水流量计检测的水流量低于设定的阈值时,判定为过滤器容量已满,并通过控制器将事件发送到云平台上。当水流量计17中测得的水流量低于该阈值,则判定为过滤器容纳污染物的空间已满,再通过控制器将事件发送到用户端,及时反馈给使用者,提示使用者对过滤器进行清理。本实施例的水流量计17采用涡轮水流检测器,通过水流推动涡轮转动,再通过控制器检测涡轮旋转输出的脉冲数,从而达到流量检测的效果。
[0039]
以上结合具体实施例描述了本发明的技术原理。这些描述只是为了解释本发明的原理,而不能以任何方式解释为对本发明保护范围的限制。基于此处的解释,本领域的技术人员不需要付出创造性的劳动即可联想到本发明的其它具体实施方式,这些方式都将落入本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1