【1】环境温度和湿度检测:系统采用SHT30温湿度传感器,能够实时监测大棚内的温度和湿度,并将数据传输给单片机进行处理。
【2】光照强度检测:系统采用BH1750光照传感器,能够实时监测大棚内的光照强度,并将数据传输给单片机进行处理。
【3】报警阀值设置:系统支持按键操作,用户可以通过按键调整报警阀值,以适应不同的农业环境需求。
【4】报警声音提示:当温度、湿度或光照强度超过设定的阀值时,系统将触发报警,通过连接的蜂鸣器发出声音提示,提醒用户注意。
【5】数据显示和管理:利用Qt开发的Android手机APP能够接收通过蓝牙传输模块从单片机端传递过来的数据,并在手机上进行实时显示和管理。用户可以通过手机APP查看当前的温度、湿度和光照强度数据,同时也可以设置报警阀值。
通过上述设计,该智慧农业大棚检测系统能够为农业生产提供实时的环境监测和报警功能,帮助农民有效管理大棚环境,提高农作物的产量和质量。同时,通过手机APP的使用,用户可以方便地查看和管理数据,实现远程监控和控制,提高农业生产的便捷性和智能化水平。
该方案实现了温湿度、光照强度的实时检测和数据传输,并提供了报警功能。通过这个智慧农业大棚检测系统,农民可以方便地监测大棚内的环境状况,及时调控和管理,提高农作物的生长效果和产量。
本项目的硬件电路设计主要涉及主控芯片STM32F103RCT6的连接及传感器模块的接口设计。以下是项目的硬件电路设计概述:
STM32F103RCT6作为主控芯片,负责整个系统的控制和数据处理。它与其他模块通过引脚连接进行数据的接收和发送。需要为主控芯片提供适当的电源供电,包括正常工作电压和逻辑电压。
温湿度传感器SHT30通过I2C总线连接到主控芯片。主控芯片上的I2C接口引脚(如SDA和SCL)与传感器的对应引脚相连,以实现数据的读取和控制。
光照传感器BH1750通过I2C总线连接到主控芯片。主控芯片上的I2C接口引脚与传感器的对应引脚相连,以实现数据的读取和控制。
报警蜂鸣器通过一个GPIO引脚与主控芯片相连。当报警条件触发时,主控芯片控制该引脚输出高电平信号,以激活蜂鸣器发出声音提示。
HC05蓝牙模块用于实现单片机与Android手机APP之间的数据传输。它通过串口通信与主控芯片相连,主控芯片上的对应串口引脚(如UART_TX和UART_RX)与蓝牙模块的对应引脚相连。
主控芯片(如STM32F103RCT6)负责整个系统的控制和数据处理。它与其他硬件模块相连接,接收传感器数据,进行数据处理和报警判断,并控制蜂鸣器的发声。
温湿度传感器(如SHT30)通过I2C总线与主控芯片相连,负责实时监测大棚内的温度和湿度。传感器模块将采集到的数据传输给主控芯片进行处理。
实现代码如下:
以下是STM32标准库驱动SHT30传感器读取温湿度,并将数据通过串口打印出来:
代码设计流程介绍:
【1】引入头文件:
【2】定义宏和函数:
#defineSHT30_ADDR0x44定义了SHT30传感器的I2C地址为0x44。
voidI2C1_Init(void);voidI2C1_Start(void);voidI2C1_Stop(void);voidI2C1_WriteByte(uint8_tbyte);uint16_tI2C1_ReadByteAck(void);uint16_tI2C1_ReadByteNack(void);定义了一系列用于控制I2C总线的函数。
voidSHT30_Init(void);voidSHT30_Measure(float*temperature,float*humidity);定义了初始化SHT30传感器和测量温湿度的函数。
voidUSART1_Init(void);voidUSART1_SendChar(charch);intfputc(intch,FILE*f);定义了初始化USART1串口和发送字符的函数,以及重定向标准输出流的函数。
voiddelay_ms(uint32_tms);定义了延时函数,用于在实现中添加延时。
【3】初始化函数:
【4】I2C总线控制函数:
voidI2C1_Start(void)voidI2C1_Stop(void)voidI2C1_WriteByte(uint8_tbyte)uint16_tI2C1_ReadByteAck(void)uint16_tI2C1_ReadByteNack(void)这些函数用于控制I2C总线的起始、停止、写数据和读数据操作。具体实现可以参考STM32的标准库函数。
【5】SHT30传感器初始化和测量函数:
SHT30_Measure函数用于测量温湿度数据。在函数中,发送测量指令给传感器,然后延时等待传感器完成测量。接着从传感器读取温湿度数据,并通过指针参数返回给主程序。
【6】串口控制函数:
voidUSART1_SendChar(charch)intfputc(intch,FILE*f)USART1_SendChar函数用于通过USART1串口发送一个字符。在函数中,通过轮询USART状态寄存器的空闲标志位,判断发送缓冲区是否为空,然后把字符写入数据寄存器进行发送。
fputc函数是C库函数的重定向函数,用于将标准输出的字符发送到USART1串口。这里对于每个调用printf函数输出的字符,都会通过USART1_SendChar函数发送出去。
【7】延时函数:
voiddelay_ms(uint32_tms)这个函数用于实现毫秒级的延时。在函数中,通过循环等待的方式实现了延时。
【8】主函数:
intmain(void)在主函数中,调用I2C1_Init和USART1_Init函数初始化I2C总线和USART1串口。然后调用SHT30_Init函数初始化SHT30传感器。
进入主循环后,通过循环调用SHT30_Measure函数测量温湿度数据,并通过printf函数打印出来。最后通过delay_ms函数延时1秒。
光照传感器(如BH1750)通过I2C总线与主控芯片相连,负责实时监测大棚内的光照强度。传感器模块将采集到的数据传输给主控芯片进行处理。
使用STM32标准库编写代码驱动BH1750读取环境光照强度。
【3】I2C1_Start()函数用于发送I2C总线的起始信号。调用I2C_GenerateSTART函数发送起始信号,并使用I2C_CheckEvent函数等待起始信号发送完成。
【4】I2C1_Stop()函数用于发送I2C总线的停止信号。调用I2C_GenerateSTOP函数发送停止信号。
【5】I2C1_WriteByte()函数用于向I2C设备发送一个字节的数据。通过I2C_SendData函数发送数据,并使用I2C_CheckEvent函数等待发送完成。
【8】USART1_SendChar()函数用于发送一个字符到USART1串口。使用USART_SR寄存器的USART_FLAG_TXE标志位检查发送缓冲区是否为空,然后通过USART_SendData函数发送字符数据。
【9】fputc()函数重定向了输出流,使得通过printf函数打印的字符可以发送到USART1串口。在该函数中调用USART1_SendChar函数发送字符数据,并返回该字符。
【10】delay_ms()函数用于进行延时,单位为毫秒。该函数使用嵌套循环实现了简单的延时功能,不同的系统时钟频率可能需要适当调整。
【11】在main()函数中,依次调用I2C1_Init()和USART1_Init()函数进行初始化操作。然后,通过printf函数向串口发送初始信息。
【12】在主循环中,通过调用BH1750_ReadData()函数读取光照强度数据,并使用printf函数将其打印到串口。然后通过delay_ms函数进行1秒的延时,等待下一次读取。
报警蜂鸣器通过一个GPIO引脚与主控芯片相连。当报警条件满足时,主控芯片控制该引脚输出高电平信号,以激活蜂鸣器发出声音提示。
使用STM32F103标准库编写的蜂鸣器控制代码:
#include"stm32f10x.h"#defineBEEP_GPIO_PORTGPIOA#defineBEEP_GPIO_PINGPIO_Pin_8voidBEEP_Init(void){GPIO_InitTypeDefGPIO_InitStructure;//使能GPIOA时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//配置蜂鸣器引脚为推挽输出模式GPIO_InitStructure.GPIO_Pin=BEEP_GPIO_PIN;GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;GPIO_Init(BEEP_GPIO_PORT,&GPIO_InitStructure);}voidBEEP_On(void){GPIO_SetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);}voidBEEP_Off(void){GPIO_ResetBits(BEEP_GPIO_PORT,BEEP_GPIO_PIN);}intmain(void){BEEP_Init();while(1){//控制蜂鸣器开启和关闭BEEP_On();Delay_ms(500);BEEP_Off();Delay_ms(500);}}在代码中,使用了GPIOA的第8个引脚作为蜂鸣器的控制引脚。BEEP_Init函数用于初始化蜂鸣器引脚,将其配置为推挽输出模式。BEEP_On和BEEP_Off函数分别用于开启和关闭蜂鸣器。
在main函数中,通过循环控制蜂鸣器以500ms的间隔进行开启和关闭操作。
HC05蓝牙模块通过串口通信与主控芯片相连,负责实现与Android手机APP之间的数据传输和通信。它接收主控芯片发送的数据,并通过蓝牙与手机APP进行交互。
使用STM32标准库编写代码,用于通过串口2驱动HC05模块,并进行配置和数据通信:
代码设计思路介绍:
#defineAT_CMD_MODE"AT+CMODE=0\r\n"#defineAT_CMD_PW"AT+PSWD=1234\r\n"voidUSART2_Init(void);voidUSART2_SendChar(charch);voidUSART2_SendString(char*str);charUSART2_Receive(void);定义了用于配置HC05模块的AT指令,以及用于初始化USART2串口、发送字符和字符串、接收字符的函数。
【3】USART2串口初始化函数:
【4】发送字符和字符串函数:
voidUSART2_SendChar(charch)voidUSART2_SendString(char*str)这些函数用于通过USART2串口发送字符和字符串。对于USART2_SendChar函数,它会等待发送缓冲区为空,然后将字符写入数据寄存器进行发送。对于USART2_SendString函数,它会遍历字符串中的每个字符,并调用USART2_SendChar函数进行发送。
【5】接收字符函数:
charUSART2_Receive(void)该函数用于从USART2串口接收一个字符。它会等待接收缓冲区非空,然后读取数据寄存器的值并返回接收到的字符。此函数在主循环中可以用于接收HC05模块发送的数据。
【6】主函数:
intmain(void)在主函数中,调用USART2_Init函数初始化USART2串口。然后使用USART2_SendString函数依次发送配置指令AT_CMD_MODE和AT_CMD_PW给HC05模块。发送完指令后,通过循环调用USART2_Receive函数接收HC05模块发送的数据。
在项目设计完成后,进行测试和调试是非常重要的,以确保系统的正常运行和功能的有效性。
下面是本项目的测试和调试过程流程:
【1】硬件集成:将主控芯片、传感器模块、蓝牙模块和蜂鸣器等多个硬件模块进行正确的连接和集成是一个挑战。需要仔细设计电路连接、通信协议和接口定义,确保各个模块能够正常协同工作。
【2】数据处理与算法:在主控芯片的固件程序中,需要对传感器采集到的数据进行处理和分析,判断是否触发报警条件。这可能涉及到数据滤波、阈值判定、异常检测等算法的设计和实现。
【3】蓝牙通信:与手机APP之间的蓝牙通信是一个难点。需要实现稳定可靠的数据传输和通信协议,确保数据的准确性和实时性。
【1】实时监测和报警功能:该项目能够实时监测大棚内的温度、湿度和光照强度,并在超过设定阀值时触发报警。这对于农业生产者来说非常实用,能够帮助他们及时发现问题并采取措施,以保证大棚内环境的稳定和作物的健康生长。
【2】远程监控和管理:通过与手机APP的蓝牙通信,用户可以远程监控大棚内的数据并进行管理。他们可以随时查看温湿度和光照强度的实时数据,设置报警阀值,接收报警通知,并对大棚环境进行远程调整和控制。
【3】自动化和智能化:该项目利用传感器和自动化控制技术,实现了对大棚环境的智能监测和控制。这不仅提高了农业生产的效率和质量,还减轻了人工管理的负担,具有较高的实用性和应用价值。
【1】传感器选择和集成:选择适合的温湿度传感器和光照强度传感器,并合理集成到硬件设计中。需要考虑传感器的精度、响应速度以及与主控芯片的通信协议等因素。
【2】数据采集和处理算法:设计合适的数据采集和处理算法,确保从传感器获取的数据准确可靠,并能够根据设定的阈值判断是否触发报警条件。
【3】报警机制:设计报警机制,根据设定的阈值和实时采集的数据进行比较,当达到报警条件时,触发报警提示,如声音、震动或弹窗等方式。
【4】蓝牙通信:确保蓝牙模块能够与主控芯片稳定通信,并能够成功传输采集的数据到Android手机APP上。需要考虑通信的稳定性、数据传输的速率和安全性等因素。
【5】Android手机APP设计:设计用户友好的界面,在手机APP上实时显示大棚内的温湿度和光照强度数据,并提供设置界面,允许农民设置报警阈值。同时,实现报警提示的功能,保证报警条件的准确性和报警方式的有效性。
本项目的目的是设计实现对农业大棚环境的智能监测和管理,通过传感器采集数据、主控芯片处理和判断、蓝牙通信与手机APP交互,以及报警蜂鸣器的控制,实现了对温度、湿度和光照强度等参数的实时监测和报警功能。
在项目开发过程中,也遇到了一些挑战和难点,比如:硬件的连接和集成、数据处理算法的设计和实现,以及与手机APP之间的蓝牙通信。通过细致的计划和分工,最终也是成功地克服了这些困难,得以完成了整个系统的开发。
在实施过程中,深刻认识到模块化设计的重要性。通过将系统划分为多个硬件模块和软件模块,能够更好地管理和调试每个模块,并且在需要时进行模块的替换和升级,提高了系统的可扩展性和可维护性。
在测试阶段,也意识到用户体验的重要性。通过与潜在用户的沟通和反馈,不断优化和改进系统的界面设计和功能实现,力求使用户能够轻松使用和管理该系统。这种用户导向的设计理念提高了系统的实用性和用户满意度。
总的来说,本项目的设计与实施过程对软硬件的协同工作、数据处理与算法设计、用户体验等方面有了更深入的理解。通过克服挑战和不断优化,成功地将智能农业大棚监测系统带入实际应用,并为农业生产者提供了一种方便、高效且可靠的解决方案。相信随着技术的不断发展,智慧农业将在未来发挥更大的作用,为农业生产带来更多的创新和改进。