基于STM32的智能农场管理系统的设计
2020-10-09郭赛球刘乐
郭赛球 刘乐
摘 要 针对传统农业受自然条件影响较大且难于管理与监控等缺点,设计一种基于STM32的智能农场管理系统。该系统利用光敏电阻检测当前的光照强度,LED灯根据接收到的光照信息输出不同强度的灯光进行调节;采用温度传感器和湿度传感器检测空气温度和土壤湿度;利用LCD显示屏,显示当前检测的状态信息以及系统工作信息;采用自带FIFO的摄像头,提高了显示帧率;该系统能够实现对农场的自动化管理与监控为农作物提供了一个良好的正常生长环境。
关键词 STM32 智能农场 传感器 远程管理
中图分类号:TP391文献标识码:A
我国是一个农业大国,农业是社会发展的基础产业。而传统农业需要大量劳动力的投入,而且受气候环境的影响较大。为提高我国农业生产效率,将当代物联网技术与传统农业相融合,用远程管理代替农民劳作,用自动调节弥补自然环境的不足,利用低成本,高稳定性的传感器对农作物进行实时监控,打造一个实用、简单、高效的智能农场管理系统是解决我国传统农业发展缓慢的最有效方案。
1总体设计方案
本设计采用STM32F103芯片作为主控芯片。总体框架由数据采集部分、调节部分、数据传输部分、状态显示部分、管理与操作部分组成,其中数据采集与调节部分由传感器、继电器等IO设备组成,负责检测当前农场环境状态并实时进行处理。主控芯片将传感器采集到的数据通过LCD屏幕进行显示,然后通过以太网将数据传送到网页,通过网页操作和红外遥控可以对系统的调节部分进行控制。
2硬件设计
2.1主控芯片相关说明
本设计采用的MCU是STM32F103ZET6,该芯片是具有高性能、低功耗、低成本的特点。芯片采用32位ARM CortexTM_M3内核,具有72M的工作频率,在存储器的0等待周期访问时可达1.25DMips/MHz,具备512K内部Flash和高达64K的SAM。
2.2光照调节模块
本设计采用的光敏传感器即光敏二极管,它对光非常敏感。当受到光照时,PN结上形成空穴—电子对,随着光照强度的增加,空穴—电子对也不断增加,这时二极管电阻减小,電流增大。当光照强度变化时,光敏二极管两端的电压也会随之变化,利STM32F103的ADC检测二极管两端的电压,就能够判断外部光线的强弱。
使用定时器TIM3产生PWM输出到LED。我们使用 TIM3的CH2输出PWM的占空比来控制LED的亮度,PWM原理当 CNT 值小于CCRx的时候,IO输出低电平,当CNT 值大于等于CCRx 的时候,IO输出高电平。
2.3温度调节模块
DS18B20温度传感器采用单总线与主机通讯。它的测量温度范围为-55~+125℃,精度为?.5℃。工作电压 3~5.5V。在使用时,主机先输出一个低电平产生复位脉冲。然后再进入接收应答模式,接着在发送相关指令。DS18B20的单总线不仅可以读还可以写,首先要给它发送读存储器的指令,才能接收到温度值。加热装置采用继电器控制。
2.4土壤湿度调节模块
土壤湿度传感器两个信号输出端,DO和AO。DO输出高低电平,AO输出模拟信号,本设计采用的是AO端口。该传感器的比较器采用 LM393芯片,工作稳定,工作电压 3.3V-5V。
传感器适用于土壤的湿度检测,传感器控制板有一个AO端,通过它与STM32F1的ADC相连,通过AD转换,可以获得土壤湿度精确的数值。浇水装置利用继电器控制电机实现。土壤湿度传感器原理图,
2.5摄像头模块
OV7725是OV(OmniVision)公司生产的图像传感器。够和单片机完美兼容且具备影像设备的基本功能。OV7725摄像头的像素时钟(PCLK)较高,最高可达24Mhz,而我们的 STM32F103ZET6处理速度较低,如果IO口直接抓取,是非常困难的,也十分耗费CPU。OV7725相机,不自己抓取来自OV7725的图像,而是通过FIFO读取。该OV7725摄像头模块自带了一个FIFO芯片(AL422B),可以暂存图像数据,摄像头捕获画面后,就会将画面存入FIFO中,我们再从FIFO中读取画面,读完之后再允许FIFO的写入。
TFLCD显示模块的接口为16位的并口,16位并口传输的速度较快,远胜于8位的传输方式,该显示屏要传输彩色数据,其数据量是非常大的。本设计中我们使用STM32F1的FSMC接口来驱动TFTLCD显示屏。
2.6红外遥控模块
红外线遥控通过红外线传输信号,而红外延直线传播,不能避过障碍物,所以一般不会出现干扰现象。红外遥控价格低廉,功耗低,而且对环境没有影响,目前在家用领域已经非常普及。本设计中我们利用 STM32F1的输入捕获,将捕获的电平对照协议进行解码,并将解码后的键值 对应一个系统功能,实现遥控操作的目的。
2.7以太网模块
DM9000是本设计网络模块的以太网芯片,它具有性价比高、低功耗、引脚少、集成度高等特点。
DM9000是通16位数据总线,挂在STM32的FSMC上面,DM9000的片选由FSMC_NE2 控制,CMD则由FSMC_A7控制。这个连接方法,类似于TFTLCD显示,总共用到了22个IO口。
3软件设计
3.1主程序流程及相关说明
系统上电后首先进行各个模块的初始化配置,包括GPIO口的初始化配置和相关寄存器的初始化配置。在主循环中通过传感器检测的不断获得各项数据,刷新LCD显示屏显示数据。如果收到来自红外遥控或网页发来的指令,则执行响应指令。如果系统处于手动模式,则无操作,进入循环,重新检测数据。如果系统处于自动模式,则根据当前环境值调节LED、加热及灌溉装置,使光照、温度、土壤湿度始终处于稳定中,进入循环,重新检测数据。
3.2光照自动调节模块
Lsens_Init函数用于初始化光敏传感器,设置PF8为模拟输入,然后通过Adc3_Init函数初始化ADC3_CH6。Lsens_Get_Val函数用于获取当前光照强度,该函数通过Get_Adc3得到ADC3_CH5转换的电压值,每次获取光照强度的时候,为使数值准确可靠,每次获取10次电压值,并求出平均值,STM32的ADC为12位,ADC3->DR寄存器所返回的值最大为65535,经过简单量化后,处理成0~100的光照值。0对应最暗,100对应最亮。
3.3温度自动调节模块
在初始化DS18B20时,先初始化GPIO口,随即使用DS18B20_Rst函数复位一次。在需要获取温度时,使用DS18B20_Get_Temp函数进行采集。首先通过单总线发送指令,开始温度转换;然后为避免错误,进行复位;然后等待DS18B20的回应;检测到DS18B20的存在,即收到回应后;再向DS18B20发送读取温度的指令,此时DS18B20就会通过单总线发送出具体温度值。
3.4湿度自动调节模块
本模块通过STM32F1的ADC11检测土壤湿度传感器的电压值,从而获取湿度值。首先进行ADC初始化,然后进行ADC转化,得到湿度值。
3.5摄像头模块
OV7725_Init函数先初始化OV7725相关的IO口,包括ov7725_init_reg_tbl函数完成OV772的寄存器序列初始化。
摄像头捕获画面后产生帧中断,帧中断到来后,判断ov_sta是否为0,如果是0,说明可以往FIFO里面写入数据,执行复位FIFO写指针,并允许FIFO写入,此时,AL422B 将从地址0开始,存储新一帧的图像数据。然后ov_sta++,标记新的一帧数据正在存储中。如果ov_sta不为0,说明之前存储在FIFO里面的一帧数据还未被读取过,直接禁止FIFO写入,STM32 只需要判断ov_sta是否大于0,来读取FIFO里面的数据,读完一帧后,设置 ov_sta为0,以免重复读取,同时还可以使能FIFO新帧的写入。
3.6显示模块
开机后通过LCD_Init函数对TFTLCD进行初始化,初始化的第一步是将LCD所连接的GPIO口进行初始化,然后再配置STM32知道的FSMC,因为我们是通过FSMC向TFTLCD寫入数据,然后进行显示。配置好PSMC后再进行TFTLCD模块的配置。通过向LCD的控制器写入由厂家提供的初始化序列,即可初始化成功。
3.7红外遥控模块
首先用Remote_Init函数初始化 IO 口,并配置TIM4_CH4为输入捕获,当红外接收头接收到信号后,就会触发定时器4产生中断。在中断函数中捕获到信号后,将其解析后将值传给RmtRec。
3.8 web server模块
在移植好LWIP后,使用lwip_comm_init函数进行初始化,包括LWIP和DM9000以太网模块的初始化,使用httpd_init开启web server模式。在主循环中用lwip_periodic_handle和lwip_pkt_handle这两个函数轮询任务和接收数据。
采用CGI技术和SSI技术进行网页控制。使用CGI,首先要定义ppcURLs数组,该数组定义了我们在html插入的标签。编写CGI_Handler处理函数,接收到数据后进行相应的处理。使用SSI,也要定义SSI的Tag数组,该数组定义了我们在html插入的标签。编写SSIHandler处理函数,在函数中处理准备加到html中的数据。最后在使用时我们需要调用httpd_cgi_init函数和httpd_ssi_init函数进行CGI句柄初始化和SSI句柄初始化。
4测试结果与分析
基于STM32的智能农场管理系统的实验样机用户可通过网页端以及红外遥控进行操控。在实验过程中通过模拟农场自然环境对系统的功能及性能进行测试,测试结果如下:
(1)自动模式下,功能测试时系统反应灵敏,系统可根据设定值与自然环境变化进行自动调节;
(2)通过浏览器登录网页系统可看到各传感器检测的数值,数据刷新率为3s刷新一次,可同时多用户访问web服务器,网页控制正常;
(3)红外遥控控制有效距离为5m,系统接收数据后蜂鸣器发出响声作为回应;
(4)摄像头画面刷新率为15帧左右,帧率稍慢,可通过调整分辨率以及提高硬件性能进行优化。
经过以上测试及分析得出,该系统各功能模块运行正常,传感器数据较准确,系统反应灵敏,控制无误,基本符合系统设计需求。
5结束语
本次设计的智能农场系统考虑到实际应用的基本条件和环境,因此具有很强的使用新以及很高的应用价值。本设计采用的STM32芯片应用场景广泛,具有高效低耗的特点,在实际应用中表现出色。本系统不仅拥有自动模式,能够实现空气温度自动调节、土壤湿度自动调节、光照强度自动调节;而且还有手动模式,能够在特殊条件下进行手动控制;而且还可以远程管与控制。
参考文献
[1] 赵巍,冯娜.单片机基础及应用[M].北京:清华大学出版社,2009:94-103.
[2] 高慧芳.单片机原理及系统设计[M].杭州:杭州电子科技大学,2008:124-174.
[3] 祖一康,徐妙婧.基于STM32的温湿度采集系统设计[J].黄冈师范学院学报,2015,35(06):60-63.
[4] 周江.STM32单片机原理及硬件电路设计研究[J].数字技术与应用,2015(11):1.
[5] 郭俊杰,朱洪应,蔡超敏,黄培鑫,陈如麒.基于STM32单片机的视频遥控小车[J].大学物理实验,2015,28(04):47-50.
[6] 黄志伟,徐苏楠,韦一,唐莹.STM32的多传感器融合姿态检测[J].华侨大学学报(自然科学版),2015,36(04):422-426.
[7] 赵星.STM32基于FSMC的SRAM扩展技术[J].工业控制计算机,2015,28(06):102-103.
[8] 尤卫卫,冒建亮,叶桦.基于STM32和CPLD的TFT-LCD显示控制器设计[J]. 液晶与显示,2015,30(03):444-450.