大学生个人网站怎么做,网络工程好就业吗,预约型网站模板源码,html网页设计怎么写代码基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计
1 系统功能介绍
本系统是一款基于STM32单片机的智能粮仓环境监测与控制装置#xff0c;核心目标是通过传感器实时采集粮仓内的温度和湿度信息#xff0c;并结合蓝牙通信模块将数据传输至手机端#xff0c;实现对粮仓环境…基于STM32单片机的智能粮仓温湿度检测蓝牙手机APP设计
1 系统功能介绍
本系统是一款基于STM32单片机的智能粮仓环境监测与控制装置核心目标是通过传感器实时采集粮仓内的温度和湿度信息并结合蓝牙通信模块将数据传输至手机端实现对粮仓环境的智能化监控与控制。
系统主要具备以下功能使用STM32单片机作为主控核心协调传感器采集、数据处理和通信交互。通过DS18B20温度传感器和土壤湿度传感器分别实现温度与湿度的精准采集。通过OLED液晶显示屏实时显示当前温度、湿度以及阈值信息方便用户现场查看。通过蓝牙模块与手机APP进行无线通信能够在手机串口调试助手或定制APP中查看数据。手机端支持命令控制可对温度和湿度报警阈值进行设置命令包括
temp add增加温度阈值temp down降低温度阈值dh add增加湿度阈值dh down降低湿度阈值当监测值超过阈值时STM32控制继电器动作用于启动风机、除湿设备或其他执行机构同时手机APP提示报警。该系统不仅适用于粮仓温湿度检测还可拓展应用于智能农业、仓储管理、冷链监控等场景。2 系统电路设计
系统电路由STM32F103C8T6最小系统电路、传感器电路、显示电路、蓝牙通信电路、继电器电路以及电源电路组成。
2.1 STM32最小系统电路
STM32F103C8T6单片机作为主控芯片运行频率高、接口丰富。最小系统包括
电源电路通过AMS1117-3.3稳压芯片将5V转化为3.3V为STM32和外设供电。时钟电路外接8MHz晶振提供系统主频并使用内部PLL倍频至72MHz。复位电路由按键和电阻电容构成保证单片机上电复位。
2.2 DS18B20温度传感器电路
DS18B20是一款单总线数字温度传感器测量精度高工作范围宽。其数据线通过一个4.7kΩ上拉电阻接到STM32的GPIO口。
2.3 土壤湿度传感器电路
土壤湿度传感器输出为模拟电压信号需通过STM32的ADC通道进行采集和处理。为了减少干扰可在输出端加滤波电容。
2.4 OLED显示电路
OLED屏幕采用I2C接口SCL与SDA分别连接STM32的PB6和PB7引脚。OLED可显示温度、湿度、阈值和报警状态界面简洁直观。
2.5 蓝牙模块电路
蓝牙模块选用HC-05或HC-06通过串口与STM32通信。
TXD → STM32 RXDRXD → STM32 TXDVCC → 5VGND → GND
模块默认波特率为9600bps适用于与手机进行数据交换。
2.6 继电器电路
继电器通过三极管驱动受STM32控制。当温湿度超过阈值时继电器闭合驱动风机或加热设备。
2.7 电源电路
系统电源由5V直流电源供给经过稳压电路得到3.3V分别为STM32、OLED、蓝牙模块提供稳定电源。3 程序设计
程序设计采用模块化思想主要分为主控系统、传感器数据采集模块、显示模块、蓝牙通信模块和继电器控制模块。
3.1 主程序设计
主程序负责各模块初始化并在循环中实现数据采集、数据处理、显示与通信。
#include stm32f10x.h
#include ds18b20.h
#include oled.h
#include bluetooth.h
#include relay.h
#include adc.hfloat temperature;
uint16_t humidity;
float temp_threshold 30.0;
uint16_t dh_threshold 50;int main(void) {SystemInit();OLED_Init();DS18B20_Init();ADC1_Init();USART1_Init(9600);Relay_Init();while(1) {temperature DS18B20_GetTemp();humidity ADC1_ReadChannel(0);OLED_ShowString(0,0,Temp:);OLED_ShowNum(40,0,(int)temperature,2,16);OLED_ShowString(0,2,Hum :);OLED_ShowNum(40,2,humidity,3,16);Bluetooth_ReceiveCommand(temp_threshold, dh_threshold);if(temperature temp_threshold || humidity dh_threshold) {Relay_On();Bluetooth_Send(Warning! Threshold exceeded!);} else {Relay_Off();}delay_ms(500);}
}3.2 DS18B20温度采集程序
温度采集函数通过单总线协议读取传感器数据。
float DS18B20_GetTemp(void) {uint8_t tempL, tempH;short temp;float t;DS18B20_Start();DS18B20_WriteByte(0xCC);DS18B20_WriteByte(0x44);delay_ms(750);DS18B20_Start();DS18B20_WriteByte(0xCC);DS18B20_WriteByte(0xBE);tempL DS18B20_ReadByte();tempH DS18B20_ReadByte();temp (tempH 8) | tempL;t temp * 0.0625;return t;
}3.3 湿度采集程序
湿度采集通过STM32的ADC模块完成。
uint16_t ADC1_ReadChannel(uint8_t channel) {ADC_RegularChannelConfig(ADC1, channel, 1, ADC_SampleTime_55Cycles5);ADC_SoftwareStartConvCmd(ADC1, ENABLE);while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC));return ADC_GetConversionValue(ADC1);
}3.4 OLED显示程序
OLED模块通过I2C接口进行驱动主要用于数据显示。
void OLED_ShowData(float temp, uint16_t hum, float t_th, uint16_t h_th) {OLED_ShowString(0,0,Temp:);OLED_ShowNum(50,0,(int)temp,2,16);OLED_ShowString(0,2,Hum :);OLED_ShowNum(50,2,hum,3,16);OLED_ShowString(0,4,T_thr:);OLED_ShowNum(60,4,(int)t_th,2,16);OLED_ShowString(0,6,H_thr:);OLED_ShowNum(60,6,h_th,3,16);
}3.5 蓝牙通信程序
蓝牙模块与手机APP交互通过命令调整阈值。
void Bluetooth_ReceiveCommand(float *t_th, uint16_t *h_th) {char cmd[20];if(USART_ReceiveString(cmd)) {if(strcmp(cmd,temp add)0) (*t_th);else if(strcmp(cmd,temp down)0) (*t_th)--;else if(strcmp(cmd,dh add)0) (*h_th);else if(strcmp(cmd,dh down)0) (*h_th)--;}
}3.6 继电器控制程序
void Relay_On(void) {GPIO_ResetBits(GPIOB, GPIO_Pin_12);
}void Relay_Off(void) {GPIO_SetBits(GPIOB, GPIO_Pin_12);
}4 总结
本系统基于STM32单片机结合温湿度传感器、OLED显示、蓝牙通信和继电器控制构建了一个完整的粮仓环境监测与控制方案。通过硬件与软件的协同工作实现了温湿度采集、数据显示、阈值设置、报警控制和手机远程交互等功能具有结构简单、成本低廉、功能实用的优点。
系统不仅适用于粮仓还可以应用于农作物种植、实验室环境监控、仓储物流等场景具备较高的实用价值与推广意义。