基于单片机的智慧农业大棚检测系统的设计与实现

2024-05-19 14:11张鹏
电脑知识与技术 2024年9期
关键词:智慧农业传感器环境

张鹏

摘 要: 随着科技进步及农业生产的需求,越来越多的农业大棚开始引入智能化监测系统,这些系统通过各类传感器实时获取监测大棚内的环境参数,如温度、湿度、光照等,并将获取到的数据传输到单片机控制系统进行分析和处理。同时,农民通过无线终端设备相关App软件远程查看大棚各环境参数,高效帮助其进行农业大棚管理和决策。智慧农业大棚检测系统的应用可以大大提高农作物的产量和质量,减少资源的浪费,快速提高农业生产的效益。

关键词:智慧农业;传感器;环境;系统

中图分类号:TP311     文献标识码:A

文章编号:1009-3044(2024)09-0053-04

开放科学(资源服务)标识码(OSID)

0 引言

随着人口的增加和资源的有限性,传统的农业生产方式已经无法满足人们对食品的需求,因此,引入智能化技术来监测和控制农业生产过程,成为解决这一问题的有效途径。本论文旨在设计一种基于单片机的智慧农业大棚检测系统,通过传感器采集环境参数,并通过单片机进行数据处理和控制,实现人为对大棚环境的实时监测和调控。该系统具有实时性、精确性和自动化的特点,可以提高农作物的生长质量和产量,并减少资源的浪费。通过本论文的研究,将为智慧农业的发展提供有力的技术参考。

1 系统设计主要目标

本项目是基于单片机芯片设计一款智慧農业大棚检测系统,以实时监测大棚环境的关键参数,进而更好地管理农业大棚植物生长。具体功能如下[1]:

1) 环境温度和湿度检测:系统采用SHT30温湿度传感器,能够实时监测大棚内的温度和湿度,并将数据传送给单片机进行处理。

2) 光照强度检测:系统采用BH1750光照传感器,能够实时监测大棚内的光照强度,并将数据传送给单片机进行处理。

3) 报警阀值设置:系统支持按键操作,用户可以通过按键调整报警阀值,以适应不同的农业环境需求。

4) 报警声音提示:当温度、湿度或光照强度超过设定的阀值时,系统将触发报警,连接的蜂鸣器发出声音,提醒用户注意。

5) 数据显示和管理:系统从单片机端通过蓝牙模块将数据接收,用户通过智能手机特定App软件查看当前的温度、湿度和光照强度数据,同时也可以设置报警阀值,在手机上进行实时监控和管理。

2 硬件电路设计

2.1 整体设计流程

2.2 主控芯片连接

STM32F103RCT6是一款高性能、低功耗的32位嵌入式集成单片机芯片,本设计将其作为主控芯片负责整个系统的控制和数据处理,并与其他模块通过相关引脚进行数据的接收和发送。

2.3 温湿度传感器连接

主控芯片上的I2C接口引脚(SDA和SCL) 与温湿度传感器SHT30上I2C总线对应引脚相连。

2.4 光照传感器连接

主控芯片上的I2C接口引脚与光照传感器BH1750上I2C总线对应引脚相连。

2.5 报警蜂鸣器连接

报警蜂鸣器通过一个GPIO引脚与主控芯片相连。当报警条件触发时,主控芯片控制该引脚输出高电平信号,以激活蜂鸣器发出声音提示。

2.6 HC05蓝牙模块连接

HC05蓝牙模块用于实现单片机与Android手机App之间的数据传输。它通过串口通信与主控芯片相连,主控芯片上的对应串口引脚(UART_TX和UART_RX) 与蓝牙模块的对应引脚相连[2]。

3 软件程序设计

主控芯片(STM32F103RCT6) 负责整个系统的控制和数据处理,它与其他硬件模块相连接,接收传感器数据,进行数据处理和报警判断。

3.1 温湿度传感器模块

温湿度传感器(SHT30) 通过I2C总线与主控芯片相连,负责实时监测大棚内的温度和湿度,并将采集到的数据传输给主控芯片进行处理。

以下是驱动SHT30传感器读取温湿度主要程序设计,并将数据通过串口打印出来。

1) 定义宏和函数:

#define SHT30_ADDR 0x44;

void I2C1_Init(void);void I2C1_Start(void);void I2C1_Stop(void);

void I2C1_WriteByte(uint8_t byte);uint16_t I2C1_ReadByteAck(void);

以上三行定义地址和用于控制I2C总线的函数。

void SHT30_Init(void);

void SHT30_Measure(float *temperature, float *humidity);

以上两行定义SHT30传感器初始化和测量温湿度的函数。

void USART1_Init(void);void USART1_SendChar(char ch);

int fputc(int ch, FILE *f);

以上两行定义初始化USART1串口和发送字符的函数,以及重定向标准输出流的函数。

2) 初始化函数:

void I2C1_Init(void)

该函数用于初始化I2C1总线和相关的引脚,使能I2C1和GPIOB的时钟,并配置I2C1的引脚,包括引脚的速度、模式、占空比、从机地址等参数。

void USART1_Init(void)

该函数用于初始化USART1串口和相关的引脚,使能USART1和GPIOA的时钟,配置USART1的引脚,包括引脚的速度和模式等,在USART1配置中包括波特率、字长、停止位、校验位等参数。

3) I2C总线控制函数:

void I2C1_Start(void);void I2C1_Stop(void);

void I2C1_WriteByte(uint8_t byte);uint16_t I2C1_ReadByteAck(void);

以上两行函数定义用于控制I2C总线的起始、停止、写数据和读数据操作。

4)SHT30传感器初始化和测量函數:

void SHT30_Init(void);

void SHT30_Measure(float *temperature, float *humidity);

SHT30_Init函数用于初始化SHT30传感器,在该函数中,首先需要发送软件复位指令给传感器,再延时一段时间等待传感器重置。SHT30_Measure函数用于测量温湿度数据,在该函数中,发送测量指令给传感器,再延时等待传感器完成测量,最后从传感器读取温湿度数据,并通过指针参数返回给主程序。

5) 串口控制函数:

void USART1_SendChar(char ch);int fputc(int ch, FILE *f)

USART1_SendChar函数用于通过USART1串口发送一个字符,在该函数中,通过轮询USART状态寄存器的空闲标志位,判断发送缓冲区是否为空,再把字符写入数据寄存器进行发送。fputc函数是C库函数的重定向函数,用于将标准输出的字符发送到USART1串口。说明,对于每个调用printf函数输出的字符,都通过USART1_SendChar函数发送出去。

3.2 光照传感器模块

光照传感器(BH1750) 通过I2C总线与主控芯片相连,负责实时监测大棚内的光照强度。如下是主要程序设计,用以驱动BH1750读取环境光照强度[3]。

1) 定义BH1750的地址BH1750_ADDR为0x23(默认地址)。

2) 调用I2C1_Init()函数,并初始化I2C1总线和相关的GPIO引脚。其中,通过RCC_APB1PeriphClockCmd和RCC_APB2PeriphClockCmd函数使能I2C1和GPIOB时钟,然后配置GPIOB的引脚输出模式。其次,使用I2C_Init函数初始化I2C1,并设置其工作模式、占空比、禁止应答、地址模式以及通信速率。最后,通过I2C_Cmd函数使能I2C1。

3) 调用I2C1_Start()函数用于发送I2C总线的起始信号,同时,调用I2C_GenerateSTART函数和I2C_CheckEvent函数共同作用发送起始信号和等待起始信号完成发送。

4) 调用I2C1_Stop()函数用于发送I2C总线的停止信号,同时,调用I2C_GenerateSTOP函数发送停止信号。

5) 调用I2C1_WriteByte()函数用于向I2C设备发送一个字节的数据,同时,通过I2C_SendData函数发送数据,并使用I2C_CheckEvent函数等待发送完成。

6) BH1750_ReadData()函数用于读取光照强度数据,该函数发送启动测量指令和模式设置指令(连续高分辨率测量模式),并通过两次读取数据寄存器的方式获取光照强度数据,将其拼接为一个16位的无符号整数。

7) USART1_Init()函数用于初始化USART1串口和相关的GPIO引脚,同时,使用RCC_APB2PeriphClockCmd函数使能USART1和GPIOA时钟,并配置GPIOA的引脚9为复用推挽输出模式(GPIO_Mode_AF_PP) 。在调用USART_Init函数中需要初始化USART1,设置波特率、数据位长度、停止位、奇偶校验、硬件流控制。

8) USART1_SendChar()函数用于发送一个字符到USART1串口,同时,使用USART_SR寄存器的USART_FLAG_TXE标志位检查发送缓冲区是否为空,再通过USART_SendData函数发送字符数据。

9) 调用fputc()函数重定向输出流,并用printf函数打印字符发送到USART1串口,在该函数中同时调用USART1_SendChar函数发送字符数据,并返回该字符。

10) 最后在main()函数中,依次调用I2C1_Init()和USART1_Init()函数进行初始化操作,并通过printf函数向串口发送初始信息。

3.3 报警蜂鸣器模块

报警蜂鸣器通过一个GPIO引脚与主控芯片相连。当报警条件满足时,主控芯片控制该引脚输出高电平信号,以激活蜂鸣器发出声音提示。

如下是主要程序设计,使用STM32F103标准库编写的蜂鸣器控制代码。

1) 定义BEEP_Init函数用于初始化蜂鸣器引脚,将其配置推挽输出模式。

2) 定义BEEP_On和BEEP_Off函数分别用于开启和关闭蜂鸣器。

3) 最后调用main函数,通过循环控制蜂鸣器以500ms的间隔进行开启和关闭操作。

3.4 HC05蓝牙模块

HC05蓝牙模块通过串口通信与主控芯片相连,负责实现与智能手机App之间的数据传输和通信,它接收主控芯片发送的数据,并通过蓝牙与智能手机App进行交互。

如下是主要程序设计,通过串口驱动HC05模块,进行配置和数据通信。

1) 定义宏和函数:

#define AT_CMD_MODE     "AT+CMODE=0\r\n"

#define AT_CMD_PW       "AT+PSWD=1234\r\n"

void USART2_Init(void);

void USART2_SendChar(char ch);  void USART2_SendString(char* str);

char USART2_Receive(void);

以上五行定義用于配置HC05模块的AT指令,以及用于初始化USART2串口、发送字符和字符串、接收字符的函数。

2) USART2串口初始化函数:

void USART2_Init(void)

该函数用于初始化USART2串口和相关引脚,其中,包括使能USART2和GPIOA的时钟,配置USART2的引脚。同时,还需要USART2进行配置,包括波特率、数据位长度、停止位、奇偶校验位等参数,最后使能USART2串口。

3) 发送字符和字符串函数:

void USART2_SendChar(char ch);void USART2_SendString(char* str)

以上两个函数定义用于通过USART2串口发送字符和字符串。对于USART2_SendChar函数,它会等待发送缓冲区为空,然后将字符写入数据寄存器进行发送。对于USART2_SendString函数,它会遍历字符串中的每个字符,并调用USART2_SendChar函数进行发送。

4) 接收字符函数:

char USART2_Receive(void)

该函数用于从USART2串口接收一个字符。其功能是等待接收缓冲区非空时,读取数据寄存器的值并返回接收到的字符。说明,此函数在主循环中可以用于接收HC05模块发送的数据。

4 程序调试测试

4.1 硬件测试

1) 检查主控芯片STM32F103RCT6、传感器模块SHT30和BH1750以及蓝牙模块HC05的是否连接正确,并使用示波器或多用途测试仪检测各个模块的电源供应和信号线连接是否正常。

2) 测试温湿度传感器(SHT30) 和光照强度传感器(BH1750) 是否能够正确采集环境数据[4]。

3) 测试蜂鸣器是否能够发出合适的声音提示。

4.2 固件程序测试

1) 在STM32开发环境中编译程序,将固件程序烧录到主控芯片STM32F103RCT6上,并使用串口调试助手等工具,与STM32建立通信连接,检查数据的传输和接收是否正常。

2) 对温湿度传感器和光照强度传感器进行数据采集测试,观察是否能够准确读取传感器数据。

3) 设置阈值并测试报警功能,确保报警触发条件和报警提示的准确性。

4.3 智能手机App测试

1) 打开App,并与蓝牙模块进行连接,观察是否能够成功建立通信。

2) 测试数据的传输和接收功能,确保从STM32接收到的数据能够在App界面上正确显示。

3) 设置阈值并触发报警测试,确认报警提示是否按照设定的条件正常工作。

5 结束语

本项主要通过传感器采集数据、主控芯片处理和判断、蓝牙通信与智能手机App交互,以及报警蜂鸣器的控制,实现了对温度、湿度和光照强度等参数的实时监测和报警功能。总的来说,本项目的设计与实施过程对软硬件的协同工作、数据处理、用户体验等方面有了更深入的理解,成功地将智能农业大棚监测系统带入实际应用,并为农业生产者提供了一种方便、高效且可靠的解决方案。

参考文献:

[1] 李海,朱雁锋,李媛琼,等.智慧农场环境温湿度信标智能检测系统[J].信息记录材料,2019,20(8):193-194.

[2] 孙继梅.浅谈土壤墒情的及时监测预报对农业生产的意义[J].农业与技术,2019,39(23):112-113.

[3] 马佳力,谢娅娅.基于物联网的智慧农业大棚系统的研究与实现[J].信息通信,2019,32(1):134-135.

[4] 刘岑松,罗小巧,洪习欢.基于物联网的智能浇花系统[J].电子测量技术,2020,43(1):176-180.

【通联编辑:朱宝贵】

猜你喜欢
智慧农业传感器环境
康奈尔大学制造出可拉伸传感器
长期锻炼创造体内抑癌环境
一种用于自主学习的虚拟仿真环境
孕期远离容易致畸的环境
简述传感器在物联网中的应用
“传感器新闻”会带来什么
跟踪导练(三)2
环境
北斗卫星对智慧农业的作用与应用探讨
延边地区“互联网+农业”发展研究