基于鸿蒙系统的农业监测器的研究*
2022-04-21沈周锋郑慧珍
沈周锋 郑慧珍
(漳州职业技术学院电子工程学院 福建漳州 363000)
当前国际形势复杂多变,科技领域合作时常因为各种因素异常中止。我国急需更多自主可控的核心技术,并应用到重要领域当中。华为鸿蒙系统是一款全新的面向全场景的分布式操作系统,创造一个超级虚拟终端互联的世界,将人、设备、场景有机地联系在一起。各大厂商纷纷加入鸿蒙生态,为其存活和发展注入了强大动力。
农业种植领域关系到经济和民生,其智慧化和智能化是我国大力发展的领域之一。该领域接入鸿蒙生态,既可以进一步促进农业自动化的发展,又可以保证核心技术自主可控和大数据安全。文献[1-2]提出了一种基于LoRa WAN技术的农业监控系统;文献[3]设计了一种带有视频监控功能的温室大棚;文献[4]提出了一种无线控制系统实现水果的半自动化采摘,但是未提及终端设备的电路设计方案;文献[5]提出了基于5G网络的农业科技园区智能化平台的建设方案,未细化到具体的终端设计和通信。目前,将鸿蒙系统引入智慧农业领域的案例寥寥无几,是鸿蒙系统的推广工作急需解决的任务。
文章以华为海思推出的Hi3861微控制器为主控核心,设计了一种土壤综合参数和光照度监测的物联网传感器系统。通过Hi3861芯片内置的WiFi单元接入以太网,将土壤温湿度、电导率、pH值、氮磷钾以及光照度等参数上传至华为IOT平台。远端服务器可下发控制命令,开启和关闭灌溉系统。
1 基本思想
农场中一般划分多个地块,各个地块的土壤综合参数各不相同。如果采用单点测试的话,无法真实反映各个地块土壤的状态。多个传感器分布在不同地块,与CPU连线多、且传输距离远,极大影响了数据采集的可靠性。因此采用RS485通信接口,该接口支持总线结构,多个传感器接口直接并联,通过RS485转RS232模块接入CPU[6]。原理框架如图1所示。
图1 原理框架图
图1显示,土壤综合传感器1~n通信端口直接并联,接入RS485转RS232模块,然后送入CPU。CPU作为主控核心,同时连接光照度检测电路并采集数据。土壤综合参数和光照度参数在CPU中打包后,通过CPU内部集成的WiFi单元发射至以太网,根据目标IP地址和端口号,传输至华为云服务器中。当需要施肥或者灌溉时,华为云服务器命令,通过以太网传输至CPU,CPU开启相应地块的灌溉和施肥端口,实现远程监测和管理的效果。
CPU和华为云服务器的通信采用MQTT协议。MQTT协议是ISO标准下基于发布/订阅范式的消息协议。MQTT协议工作在TCP/IP协议族之上,是为硬件性能低下的远程设备以及网络状况糟糕的情况下而设计的消息协议。以协议自身轻量、简单、开放和易于实现等优点,广泛的应用于M2M(机器与机器)通信和物联网(IOT)中。[7]
2硬件电路设计
2.1土壤综合传感器电路
土壤综合传感器采用精讯畅通公司推出的多合一传感器,该传感器适用于测量土壤温度、水分、土壤总盐量(电导率)、土壤pH以及氨磷钾。采用国际上新一代FDR测量方法,可达到3%以内的测量精度。精度高、响应速度快,输出稳定,适用于各种土质。由于传输数据量小、速率低,RS485通信接口完全满足通信需求。每个传感器采用两对双绞线,即可实现供电和数据通信,实现较高的抗干扰性能和高达1200m的传输能力。土壤综合传感器如图2所示[8]。
图2 土壤综合传感器电路
S1~Sn为土壤综合参数传感器,采用12V供电,VDD和GND采用一对双绞线连接。A和B端子为RS485的差分数据线,同样采用双绞线连接。R7、R8和R9为终端电阻,一般连接在双绞线两端,用于消除电缆中由于阻抗不连续导致的信号反射。D2和D3为钳位二极管,用于保护RS485总线,避免受外界干扰。U3采用ADM2483芯片,实现RS485接口转换为RS232串口。由于RS232为全双工接口,RS485为半双工接口,DE和RE端子短路,作为发送和接收切换端子,高电平为发送、低电平为接收。TxD和RxD端子连接CPU的UART引脚。多个传感器共用信号线与CPU通信,采用轮询方式,分时共享总线。CPU为通信发起方,发送含有传感器地址码的问询帧。传感器接收到问询帧后,检测传感器地址码是否与本地地址码一致。若是则回复测量数据帧,若否则不回应。CPU轮流问询各传感器,分时传输数据,避免冲突。
2.2光照度检测电路
农作物光合作用是生长的重要因素之一,因此实时检测光照度,具有一定的现实意义。本设计采用BH1750传感器[9]。它是16位数字输出型,环境光强度传感器集成电路。采用IIC接口与主控芯片通信,集成度高,外围电路简单,光源依赖性弱,受红外线影响很小,而且运行功耗低,电路图如图3所示。VCC和GND连接3.3V电源,C16与电源并联,实现电源去耦合。ADDR端子为IIC地址设置端口,输入低电平时器件地址为“0100011”,输入高电平时器件地址为“1011100”,使IIC接口可同时连接多个BH1750传感器。SCL为IIC接口的时钟端口,SDA为IIC接口的数据端口,分别用R2和R3电阻上拉,连接至主控芯片对应的IIC单元引脚。DVI端子作为SDA和SCL的端口参考电压,同时是内部寄存器的异步重置端口。因此,在上电时该引脚需要保持至少1us的低电平,然后保持高电平。合理R4和C17参数,使充放电时间常数远大于1us,即可保证DVI端子足够的上电低电平时间。BH1750传感器作为IIC接口从机,在CPU发起读操作时,及时上报光照度值。
图3 光照度检测电路
2.3 Hi3861电路和负载控制电路
主控芯片除了控制外围电路的运行,还需提供稳定可靠的联网服务,因此采用华为海思公司出品的Hi3861芯片。该芯片是高集成度的2.4GHz WiFi SoC芯片,集成IEEE 802.11b/g/n基带和RF电路,支持20MHz标准带宽和5MHz/10MHz窄带宽。内部集成了高性能32bit微处理器、硬件安全引擎以及丰富的外设接口,包括IIC、UART、GPIO等单元,完全满足本设计的应用需求。内部可运行华为自研的鸿蒙操作系统,达到超高的兼容性。Hi3861最小系统电路如图4所示。芯片采用3.3V供电,IO控制单元、射频RF单元和VBAT单元采用不同引脚供电,分别用C1、C2、C3、C6和C8去耦,实现不同单元供电电路的有效隔离。引脚8连接WiFi天线。引脚15和16连接片外40MHz晶振,为芯片提供系统时钟。R1和C7组成复位电路。J1为程序烧录和调试接口,通过CH430或者PL2303之类的USB转TTL模块连接电脑,即可实现程序烧录或者软件调试信息的输出。使用引脚17和18的UART1复用功能,读取土壤综合参数。使用引脚2和3的IIC1复用功能,读取光照度传感器的数值。引脚27设置为普通GPIO口,控制外围继电器的断开和闭合。控制负载较多时,可以启用其他的GPIO口。
图4 Hi3861电路
负载控制电路如图5所示。采用继电器控制交流电磁阀的开启和关闭,从而实现自动灌溉和施肥。继电器线圈电流较大,不能直接用Hi3861的IO口驱动。因此,采用9013三极管搭建共射电路。Control节点为高电平则三极管导通,继电器吸合;反之,则三极管截止,继电器断开。R5为基极限流电阻。R6下拉电阻保证三极管上电瞬间默认为截止状态,同时用于屏蔽工频干扰,避免继电器误动作。D1作为继电器线圈的反向泄流电阻,防止三极管截止瞬间,继电器线圈产生反向电动势,击穿三极管。
图5 负载控制电路
3软件部分设计
Hi3861中载入鸿蒙操作系统,系统初始化时,创建任务并进行部分初始化工作,流程如图6所示。芯片上电后,进行鸿蒙系统初始化,然后进入程序员定制的初始化程序。首先创建消息队列,用于多个任务和回调函数之间的通信。然后创建主任务,主要用于网络连接的建立和管理、数据上传和控制负载。接着创建传感器读数据任务,用于建立Hi3861与传感器的数据传输通道,读取测量参数。最后对负载控制IO口进行初始化。然后进入系统自带的任务调度环节。
主任务流程如图7所示。首先进行WiFi单元初始化和连接以太网。然后根据华为云服务器的地址和端口号,建立TCP连接。与服务器握手成功后,进行MQTT协议的初始化。设置MQTT消息接收回调函数入口地址,然后进行MQTT连接,并订阅指定主题的MQTT消息。每次接收到来自服务器的MQTT消息,操作系统自动调用回调函数,向操作系统申请消息存储空间并存储,然后将服务器消息发送至消息队列,供主任务读取。主任务接着进入死循环,不断询问消息队列。当消息队列不为空时,判断消息类型。若消息要求上传测量数据,则解析出消息中的土壤参数和光照度数值,进行数据拼装,然后调用WiFi单元上传。若消息要求控制负载,则设置相应IO口电平值,打开或者关闭灌溉施肥执行单元。
图6 软件流程图
图7 主任务流程图
传感器读取任务流程如图8所示。首先初始化UART单元,用于读取土壤传感器。然后初始化芯片内的IIC通信单元,用于读取光照度传感器。接着程序进入死循环,轮询各个土壤传感器测量值,并保存。调用IIC单元读取光照度传感器测量值。接着使用结构体链表,将多个测量值存储至链表中,然后发送至消息队列,供主任务读取。接着调用sleep函数,将任务挂起5min。该任务优先级高于主任务,因此操作系统每5min执行一次读取传感器任务。在该任务挂起期间,操作系统运行主任务,实现数据上传和服务器命令响应。主任务中,每次响应队列消息后,释放消息存储空间,避免芯片内存泄露。
图8 传感器读取任务流程图
4整机测试
对监测器进行近端测试和远端测试。设置两个土壤综合传感器,分别用于检测两个地块的土壤参数。另外,设置一个光照度传感器和四个负载控制,两个用于灌溉,两个用于施液态肥料。经过24h全天候运行,监测器每隔五分钟检测一次参数并上传。服务器端能够稳定的接收到监测器消息。通过PC机操作服务器页面,下发灌溉和施肥命令,监测器指定地块的相应继电器能够实时动作。
5结语
以Hi3861芯片作为主控芯片,控制传感器和负载驱动电路运行。采用土壤综合传感器和光照度传感器检测农作物环境参数,集成负载控制电路实现自动灌溉和施肥。Hi3861芯片内部采用鸿蒙操作系统,稳定的实现了参数上传和服务器命令下发。测试表明:监测器能够稳定的运行,实现农业种植的自动化和数字化。核心技术完全采用自主可控的国产技术。该研究的不足在于服务器端未开发APP,满足移动端的控制需求,这也为未来的设计和研究提供了一个方向。