基于STM32和S3C6410的无线节水滴灌自动控制系统

发布者:等风来88888最新更新时间:2021-06-23 来源: eepw关键字:STM32  S3C6410  自动控制系统 手机看文章 扫描二维码
随时随地手机看文章

为实现实时适量的精准滴灌,本文提出了一种基于S3C6410和STM32的无线节水滴灌自动控制系统的设计方案。该方案利用ZigBee无线传感器网络的自组网特点,采用星型网络拓扑结构,实时监控多块田地的土壤温湿度变化,通过反馈传感信号,对滴灌动作进行精准判断和控制。田间试验期间测得土壤湿度最小值为30%,最大值为70%,处于理想范围内。实验结果表明,该方案所设计的系统能够实现滴灌自动控制,且性能良好,具有灵活性强、安全可靠、低功耗、低成本。


0 引言


随着人口的增长和农业的发展,随着全球变暖造成的干旱问题日益严重,世界水资源的需求量越来越大,水资源紧缺已成为全世界人民共同关注的问题。滴灌技术是通过干管、支管和毛管上的滴头,在低压下向土壤经常缓慢滴水,可直接向土壤供应已过滤的水分、肥料或其他化学剂等的一种实用技术。大田自动滴灌技术具有大幅度提高水的利用率、减少土壤结构破坏、改善生态环境、提高经济效益的作用,是一种高效节水的新型灌溉技术,目前已经成为实施高效、精准灌溉的重要水资源管理技术措施。近年来,随着无线信息传输技术的发展,ZigBee 无线网络以其低成本、低功耗、低速率、近距离、短延时、高安全等特点,在现代农业发展中得到高度关注。本设计将传感器技术、STM32F103VET6单片机、 ZigBee无线通信技术相结合,提出了一种节水滴灌自动控制系统的设计方法,并开发了基于STM32的田间控制器。系统针对不同农作物在不同生长时期对水分的需求情况,依据土壤湿度与环境温度,能够与基于S3C6410开发平台的网关通过ZigBee无线网络进行通信,由田间控制器精准科学地控制灌水位置、灌水时间、灌水量、灌水质量,实现了农作物的适时自动滴灌,为作物生长提供良好的条件。系统为实现大面积农田的统一调度管理提供了基础,是一种理想节水滴灌解决方案。


1 系统总体设计


1.1 系统的拓扑结构


系统采用无线传感网自组网的星型网络拓扑结构,总体组成如图1所示,由上位机、S3C6410网关(网络协调器节点)、CC2530 无线收发模块(ZigBee 通信模块)、终端控制节点以及执行机构组成。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

采用一台式计算机作为上位机,负责接收传感器上传的数据、存储、分析并做出相应的智能滴灌决策。


S3C6410网关是整个网络的协调器,负责自动搜寻网络中的终端节点,组织无线网络,并从终端节点取得上位机需要的数据,实现终端节点与上位机之间的通信。网关与终端控制节点通过基于ZigBee的CC2530无线收发模块进行组网通信,由一个网络协调器用的主机模块和若干个从机终端模块组成。终端控制节点是基于STM32的田间控制器,田间控制器(1)放在主管道上,配有液位传感器、压力传感器及流量传感器,执行机构是调节水压大小的变频器。田间控制器(2)~田间控制器(n)完全相同,放在每块田地里,配有SHT11 土壤温湿度传感器,一个终端节点模块可以根据需要连接多个测温湿度的探头,执行机构是控制滴灌开闭的电磁阀。


另外,出于对农田的分散性和成本的考虑,由太阳能光伏供电系统对终端控制节点提供电源。


1.2系统的工作原理


上位机发送采集指令,经由S3C6410 网关,利用CC2530 无线收发模块将指令发送给基于STM32 的田间控制器;各传感器节点将检测到的数据上传到STM32 田间控制器,然后由它通过CC2530无线收发模块同样经由网关将数据发送到上位机中;上位机对接收到的数据进行智能处理和决策,例如对湿度值进行排序、得到湿度值较小的几块田地,并据此对STM32田间控制器发送开启这几块田地电磁阀的命令,从而实现自动滴灌。


在田块面积大,需要控制上百个电磁阀门的大规模灌溉区域,可将图1部分连接传感器的终端节点替换为路由节点,路由节点及终端节点均装备传感器。ZigBee无线传感网络将由一个网关协调器节点、适当数目的路由器节点和多个终端节点组成,路由器和终端通过内部程序进行设置,且在一定距离内均可与网关直接通信。统采用休眠唤醒机制,实现了低功耗运行。


2 系统的硬件设计


硬件是无线控制系统的关键和基础,它直接影响着整个系统的节能性、稳定性、控制和反馈的准确性。


2.1 S3C6410网关


基于ARM1176JZF -S 的16/32 位RSIC 微处理器S3C6410,是一款具有低成本、低功耗、高性能特点的应用处理器,它具有4 个UART 接口,支持DMA 和Inter?


rupt模式,按ZigBee协议实现无线传输功能和自组网功能。当网关系统上电时,作为协调器的ZigBee主节点启动和建立无线网络,当网络建立后,负责接收终端控制节点(STM32田间控制器)返回的信息,发送相应的控制信息到各个田间控制器中。


2.2 基于ZigBee的CC2530无线收发模块


ZigBee是基于IEEE 802.15.4协议的一个开放式的标准,具有低成本、低功耗、低速率的特点,可同时无线连接大量不同的电子设备。设计选用TI公司最新推出的CC2530芯片作为控制器的微处理器,它集成了一个高性能2.4 GHz直接序列扩频射频收发器、一个增强型单周期的8051 CPU 和一个DMA 控制器,具有8 KB 的SRAM、32/64/128 KB的片内FLASH存储器、 2个支持多种串行通信协议的USART、8通道8?14位ADC、定时器和21个可编程的I/O引脚,具有宽电压范围(2~3.6 V)、低功耗和电源电量可监控等特点。在ZigBee协议栈中UART 具有中断、DMA 两种模式,本文设计中均采用UART的中断模式。


ZigBee通信板原理图如图2所示。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

2.3 STM32田间控制器


由STMicroelectronics 的STM32 单片机与ZigBee 收发节点模块组成。采用STM32F103VET6 闪存32 位微控制器。它基于突破性的ARM Cortex?M3内核,工作频率为72 MHz,内部集成了高速存储器(高达128 Kb 闪存和20 Kb SRAM)、通过APB 总线连接丰富增强的外设和I/O,另外包含了2个12位的ADC、3个通用16位定时器和一个PWM 定时器,还包含标准和先进的通信接口:2个I2C和SPI、3个USART、一个USB和一个CAN.


由于设备集成了标准的通信接口,无需配置额外的组件,减少系统成本,为手持设备和一般类型应用提供了低价格、低功耗、高性能微控制器的解决方案。终端控制节点电路如图3所示。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

由于液位、压力、流量传感器均是4~20 mA模拟信号输出设备,需要用模/数转换器将模拟信号转换为数字信号,再由STM32 单片机进行处理。本设计需要采集液位、压力、流量等4~20 mA设备信息,所以设计4通道采集电路,如图4所示。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

3 系统的软件设计

系统软件主要任务是实现传感器工作的控制、无线网络的组网以及数据的无线收发。系统软件主要包括上位机软件与下位机软件。上位机软件设计,主要是基于Visual C++的参数设置、数据采集、自动灌溉及查询历史记录等的编程。下位机程序设计有两个关键点:一是对温湿度、液位、压力、流量的采集,通过控制变频器调节水泵或通过控制继电器使得电磁阀开启与闭合;二是ZigBee收发模块对控制信号的接收、发送与执行。


自动滴灌系统中,土壤湿度是一个重要变量。上位机通过无线方式向田间控制器发送采集命令,将接收到传感器返回信息进行显示并对湿度做排序处理、判断液位是否过限、将压力和流量传感器得到的数据进行融合来调节变频器,然后通过ZigBee通信板向田间控制器发送开启或关闭电磁阀的指令。上位机主程序流程图如图5所示。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

传感器节点上电后,首先进行系统的初始化,然后选择信道并加入现有的ZigBee无线网络,休眠等待接收信号,当接收到网关节点发出的查询信号后,进行数据的采集并发送回协调器节点。


S3C6410开发平台具有4 个UART 接口,在研究设计中,采用了MAX3232 芯片来解决ZigBee通信模块的CC2530芯片与该开发平台之间的串口通信电平转换。


ZigBee 无线收发模块软件开发采用IAR EmbeddedWorkbench(EW)平台完成。EW的C/C++交叉编译器和调试器是今天世界最完整的和最容易使用专业嵌入式应用开发工具。网关ZigBee程序流程图见图6.

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计基于STM32的田间控制器接收到上位机发来的采集命令,进而执行采集土壤湿度、空气温度、液位、压力、流量等信息并上传,等待上位机进行智能决策后,将控制命令,如电磁阀开启关闭以及变频器的调节,发送出来,STM32控制器予以接收并且执行。下位机程序流程图如图7所示。

一种基于STM32和S3C6410的无线节水滴灌自动控制系统设计

4 实验及结果分析


对各模块进行驱动测试,然后对系统整体进行协同工作实验。通过田间实验观测通信质量、滴灌效果及系统是否运行正常。


4.1 CC2530无线通信质量测试CC2530无线通信模块性能对系统整体性能起着至关重要的作用。CC2530通信模块的测试主要包括节点之间通信距离及数据包丢包率的测试。TI公司推出的通用数据包探测器(General Packet Sniffer)可以对未加密的通信过程进行监控,故可利用它进行通信和组网测试。


(1)空旷无障碍测试,观测通信质量及通信距离


测试地点:校园空旷处。


测试内容:协调器主节点上电,建立网络后,等待其他子节点加入。通过在协议栈中配置CC2530单芯片射频部分的输出功率寄存器,来使协调器和终端节点之间进行通信,按照规定的协议数据格式相互发送数据包,从而能够对CC2530通信模块的通信距离、数据包丢包率进行测试,得到一个合适的发射功率。


测试条件:硬件方面采用CC2530 协调器模块和CC2530 终端节点模块分别通过RS 232 协议与两台笔记本电脑进行串行通信;并使用到两条USB转串口数据线、电源、CC2530 仿真下载器。软件方面采用设计的CC2530串口透传程序能够进行数据透明、点对点数据传输,笔记本电脑端采用Visual Basic编程语言设计的数据包丢包率测试软件。


测试步骤:在搭建好硬件测试环境后,使用CC2530程序下载仿真器将在IAR Embedded Workbench集成开发环境下开发的CC2530 串行通信程序,分别下载到CC2530 协调器与CC2530 终端节点中。在笔记本电脑中分别安装VB数据包丢包率测试软件,通过对发送数据(十六进制),发送数据的速度以及通过对NV非易失性存储器的读/写操作对 CC2530 芯片的发射功率进行设置,收发1 000个数据包,对CC2530通信模块在不同的发射功率下的通信距离、丢包率等性能进行测试。


测试结果:在空旷场合采用默认功率输出时,通信距离为120 m左右时丢包率基本为0.0%,说明节点无线可靠通信距离可达120 m。


(2)在实验田中进行通信测试


测试地点:现场实验田;测试内容、测试条件、测试步骤:同(1);测试结果:采用默认功率输出时,节点无线通信有效传输距离可达80 m.


4.2 项目实验验证测试条件:将网关上ZigBee天线安置在室外空旷无遮掩处,使得能够接收到较强的信号。选取面积约为20 m×50 m的共12行的农作物田作为实验田,由于农作物的根系一般深度为10~20 cm,因此将土壤温湿度传感器探头埋入地下10 cm处,其中2行作为一组,每组选取两个距离较远的测试点,取两个测试点的平均值来代表这一行范围作物的环境状况。当采集到的湿度值低于30%时,电磁阀打开,水源通过电磁阀、压力传感器、流量传感器流入滴灌支管进行灌溉,滴灌进行中当土壤湿度值高于50%时,电磁阀关闭停止滴灌。


测试结果:在土壤湿度值低于作物要求下限(如30%)时系统能及时滴灌,当湿度达到作物要求上限(如50%)时系统能过做到适时停止滴灌,电磁阀开启成功率为96%.


5 结论


本文提出的一种无线节水滴灌自动控制系统的设计方案,方案中的STM32田间控制器能够实时监测作物土壤湿度和环境温度,将传感器信号通过无线发送到控制中心,控制中心能够准确实时地了解到当前系统中各个节点的工作状态,并及时启动自动滴灌,非常有利于农作物的生产。一旦出现通信中断、水压异常等,能够及时地反映到控制中心,通过语音报警等方式立即通知相关人员进行维修,提高了整个系统的可靠性。另外系统采用ZigBee技术,网络结构简单,田间布设灵活,提高了自动灌溉的实用性及对水的使用效率,减小了劳动量、导线和管路敷设费用,且无需人为操作,能够长期稳定地工作,方便大面积安装、维护和系统回收,为我国的精准农业工程提供了强有力的工具。


关键字:STM32  S3C6410  自动控制系统 引用地址:基于STM32和S3C6410的无线节水滴灌自动控制系统

上一篇:基于CAN总线的嵌入式设备状态监测平台设计
下一篇:初学STM32芯片的必备技能

推荐阅读最新更新时间:2024-11-17 14:29

stm32串口通信调试总结
本文分为两部分,即”以USART1为例的串口初始化”和“调试中遇到的问题” 以USART1为例的串口初始化 本程序调用了stm32自带的固件库,工程中具体的文件见下图: 一.GPIO及USART1初始化结构体变量定义 GPIO_InitTypeDef GPIO_InitStructure; USART_InitTypeDef USART_InitStructure; 二.串口时钟及GPIO端口时钟使能 USART1是挂在APB2总线上的外设。 TX,RX分别是PA9,PA10端口的复用。 要使用到端口复用,就要使能端口的时钟,并使能相应外设的时钟。这里可使用|同时使能这两个时钟。 RCC_APB2Pe
[单片机]
<font color='red'>stm32</font>串口通信调试总结
stm32串口通信流程图
1.写在前面 首先,你要知道STM32启动文件中启动流程,你就需要掌握一点汇编基础知识。 汇编语言属于机器语言,或者说低级语言,C语言属于高级语言,所以,汇编和C语言在语法上差异很大。 如果你学底层开发,汇编的一些基础知识需要掌握。不需要精通,但需要看懂常见的汇编代码。 2.说明 STM32的启动文件与编译器有关,不同编译器,它的启动文件不同。 虽然启动文件(汇编)代码各有不同,但它们原理类似,都属于汇编程序。 我们拿基于MDK-ARM的启动文件来举例,说一下要点内容。 3.分配堆栈 在基于MDK的启动文件开始,有一段汇编代码是分配堆栈大小的。 这里重点知道堆栈数值大小就行。还有一段AREA(区域),表示分配一段堆栈数
[单片机]
<font color='red'>stm32</font>串口通信流程图
STM32学习手记 -USART中断
/************************************ * 文件名: main.c * 内容简述: 本例程演示如何操作USART的接收程序(中断模式)。 * 用串口调试软件向开发板发送一字节,开发板会将该字节反发回PC */ #include "stm32f10x_lib.h" /*************************************************** * 函数名称 :void RCC_Configuration() * 功能描述 : 复位和时钟控制 配置 * 参数 : 无 * 返回值 : 无 * 全局变量 : 无 * 全局静态变量: 无 * 局部静态变量: 无 **
[单片机]
stm32烧录的程序为什么会丢失呢
第一次用stm32烧录程序的时候还是很正常的,但没过多久,我又按照以前的步骤再去烧录程序,发现stm32一但按复位,就会莫名其妙的消失,这是怎么回事啊? 小编最近看到有网友在疑惑stm32烧录的程序为什么会丢失呢?在此,小编将给大家分析一下stm32烧录程序丢失的原因。 首先,你要弄清楚自己的在线烧录是通过什么方法烧录的,只有先搞明白这个问题,你才好对症下药。 1、检查一下是不是光盘的质量或者是刻录软件出了问题。毕竟这个问题说大不大,说小不小,还是会影响到stm32烧录程序的。质量好一点的光盘是能够保证程序的稳定运行的。 2、如果你的程序烧写在flash中,那么stm32烧录的程序遇到复位或者掉电是都不会消失的。 3、stm3
[单片机]
STM32 入门教程 系统时钟 SysTick
(一) 背景介绍 在传统的嵌入式系统软件按中通常实现 Delay(N) 函数的方法为: for(i = 0; i = x; i ++); x --- 对应于 对应于 N 毫秒的循环值 对于STM32系 列微处理器来说,执行一条指令只有几十个 ns,进行 for 循环时,要实现 N 毫秒的 x 值非常大,而且由于系统频率的宽广,很难计算出延时 N 毫秒的精确值。针对 STM32 微处理器,需要重新设计一个新的方法去实现该功能,以实现在程序中使用 Delay(N)。 (二) STM32 SysTick 介绍 Cortex-M3 的内核中包含一个 SysTick 时钟。SysTick 为一个 24 位递减计数器
[单片机]
STM32寄存器列表 RCC时钟相关寄存器
RCC_CR(时钟控制寄存器) 25位:PLLRDY-PLL时钟就绪标志(PLL锁定后由硬件置1)定义:0(未锁定),1(锁定) 24位:PLLON-PLL使能(手动)定义:0(PLL关闭),1(PLL使能)。进入待机或停机模式时,该位由硬件清零当PLL用作系统始终时,该位不能被清零。 19位:CSSON时钟安全系统使能(由软件置1或清零)定义:0(时钟监测器关闭),1(如果外部4-16M振荡器就绪,时钟监测器开启) 18位:HSEBYP外部高速时钟旁路。定义:0(晶振4-16M),1(有源晶振25M)。调试模式下由软件控制。只有在4-16M振荡器关闭情况下,才能写入该位。 17位:HSERDY外部高速时钟就绪
[单片机]
STM32的GPIO有几种输出模式及其说明
GPIO的基本结构 第一:开漏输出模式(N-MOS打开,高电平时,IO端口电平取决于外部的上拉电阻;低电平时,IO端口为底) 在图的上半部,施密特触发器处于开启状态,这意味着CPU可以在“输入数据寄存器”的另一端,随时监控I/O端口的状态;通过这个特性,还实现了虚拟的I/O端口双向通信:只要CPU输出逻辑“1”,由于编号3的N-MOS管处于关闭状态,I/O端口的电平将完全由外部电路决定,因此,CPU可以在“输入数据寄存器”读到外部电路的信号,而不是它自己输出的逻辑“1”。 当CPU在左边的编号1端通过位设置/清除寄存器,或输出数据寄存器写入数据后,该数据位将通过编号2的输出控制电
[单片机]
<font color='red'>STM32</font>的GPIO有几种输出模式及其说明
stm32 内存管理
分块式内存管理 分块式内存管理 1 举例 #define MEM1 0 //内部SRAM #define MEM2 1 //外部SRAM #define MEM1_BLOCK_SIZE 32 //内存块大小 32字节 #define MEM2_BLOCK_SIZE 32 #define MEM1_MAX_SIZE 10 * 1024 //10K #define MEM2_MAX_SIZE 40 * 1024 #define MEM1_TABLE_SIZE MEM1_MAX_SIZE / MEM1_BLOCK_SIZE #define MEM2_TABLE_SIZE MEM2_
[单片机]
<font color='red'>stm32</font> 内存管理
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved