基于STM32的温湿度及光强度检测系统-带蓝牙监控

 本设计的硬件构成:

本设计由STM32单片机核心板+光敏感应电+OLED显示屏电路+DHT11温湿度传感器+继电器电路+散热风扇驱动电路+蜂鸣器电路+蓝牙模块电路+按键电路+电源电路组成。

功能介绍:

1、采用OLED12864显示屏作为显示屏,用于显示当前温度、湿度、及光照强度;显示各个参数的设定值;

2、光照强度使用光敏电阻对环境光进行感应;温度、湿度采用DHT11数字温度传感器对环境温度、湿度进行采集。

3、光照强度有上限值和下限值,当环境光强超出设定值时,蜂鸣器导通报警;如在设定值以内,蜂鸣器关闭;用户可通过按键对光照强度的上限值和下限值进行调整。

4、当温度和湿度均有上限值和下限值;散热风扇用于对温度或湿度进行调节;当温度或者湿度高于设定的上限值时,散热风扇电路导通,风扇工作,加热继电器关闭,蜂鸣器导通报警;

5、当温度或者湿度低于设定的下限值时,加热继电器开启,加热丝工作,风扇关闭,蜂鸣器导通报警;

6、当温度和湿度均在上下限值以内,散热风扇、加热继电器、蜂鸣器均关闭不工作;

7、设有三个按键,按键1为设置键,按键按下进入设置状态;按键2为在设置状态下的加一键(非设置状态下无效);按键3为在设置状态下的减一键(非设置状态下无效);

8、系统的蓝牙模块可实现与手机APP的连接;连接后,手机可实时获取系统的状态

主要物料清单及型号:

显示屏:OLED-0.96寸;

单片机:STM32F103C8T6;

温湿度传感器:DHT11;

蜂鸣器:5V有源蜂鸣器;

热敏电阻:5512;

继电器:SRD-05VDC;

蓝牙模块:HC-05/06;

部分程序源码:

int main(void)
{ 
   u8 key=0;
   u8 buffer[5],i=10;
  
  delay_init();         //延时函数初始化    
  uart_init(9600);     //串口初始化为9600
  KEY_Init();      //初始化按键
  OLED_Init();
  OLED_ColorTurn(0);//0正常显示,1 反色显示
  OLED_DisplayTurn(0);//0正常显示 1 屏幕翻转显示
   DHT11_Init();
   LED_Init();
    Adc_Init();
  delay_ms(200);
   
   TIM3_Int_Init(49,7199);//50ms 
   OLED_Clear();

  OLED_ShowString(0,0,"    ",16);
   OLED_ShowChinese(32,0,12,16);//温湿度
   OLED_ShowChinese(48,0,13,16);//温湿度
   OLED_ShowChinese(64,0,14,16);//温湿度
   OLED_ShowChinese(80,0,15,16);//温湿度
   OLED_ShowString(96,0,"    ",16);

  OLED_ShowChinese(0,16,16,16);//温湿度
  OLED_ShowChinese(16,16,17,16);
  OLED_ShowString(32,16,": 00.0",16);
  OLED_ShowChinese(80,16,21,16);
  
  
  OLED_ShowChinese(0,32,18,16);//温湿度
  OLED_ShowChinese(16,32,17,16);
  OLED_ShowString(32,32,": 00.0%",16);
  
  OLED_ShowChinese(0,48,19,16);//温湿度
  OLED_ShowChinese(16,48,20,16);
  OLED_ShowString(32,48,": 0000Lux",16);
  
  OLED_Refresh();
  buzzer=0;
    delay_ms(500);
  buzzer=1;
  while(1)
  { 
    key=KEY_Scan(0);
    key_handle(key);
    if(disFlag==1)     //显示标志
    {
      disFlag = 0;
      DHT11_Read_Data(&temp,&humi);//
      light=Get_Adc_Average(9,10);
      if(light>350)
        light=(light-350)*1.1;
      else
        light=0;
      if((temp>settemp)||(humi>sethumi))
      {
        buzzer=0;
        fan=0;
        heat=1;
      }
      else if((temp<settemp2)||(humi<sethumi2))
      {
        buzzer=0;
        fan=1;
        heat=0;
      }
      else if((light>setlight))
      {
        buzzer=0;
      }
      else if((light<setlight2))
      {
        buzzer=0;
      }
      else 
      {
        buzzer=1;
        fan=1;
        heat=1;
      }
      if(set==0)
        Display_State();
    }  
    
    if(appFlag==1)
    {
      appFlag=0;
      printf("当前温度: ");
      SendData(temp/10+0x30);
      SendData(temp%10+0x30);
      printf(".0℃\r\n");
      printf("当前湿度: ");
      SendData(humi/10+0x30);
      SendData(humi%10+0x30);
      printf(".0 % \r\n");
      printf("当前光强: ");
      SendData(light/1000+0x30);
      SendData(light%1000/100+0x30);
      SendData(light%100/10+0x30);
      SendData(light%10+0x30);
      printf("Lux\r\n");
      printf("\r\n");
      
      printf("温度上限: ");
      SendData(settemp/10+0x30);
      SendData(settemp%10+0x30);
      printf("℃\r\n");
      printf("湿度上限: ");
      SendData(sethumi/10+0x30);
      SendData(sethumi%10+0x30);
      printf("% \r\n");
      printf("光强上限: ");
      SendData(setlight/1000+0x30);
      SendData(setlight%1000/100+0x30);
      SendData(setlight%100/10+0x30);
      SendData(setlight%10+0x30);
      printf("Lux\r\n");
      printf("\r\n");
      
      printf("温度下限: ");
      SendData(settemp2/10+0x30);
      SendData(settemp2%10+0x30);
      printf("℃\r\n");
      printf("湿度下限: ");
      SendData(sethumi2/10+0x30);
      SendData(sethumi2%10+0x30);
      printf("% \r\n");
      printf("光强下限: ");
      SendData(setlight2/1000+0x30);
      SendData(setlight2%1000/100+0x30);
      SendData(setlight2%100/10+0x30);
      SendData(setlight2%10+0x30);
      printf("Lux\r\n");
      printf("\r\n");
    
    }
  }                          
}

资料

  • 10
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于STM32温湿度检测与报警系统的设计。温湿度检测与报警系统是一种用于监测环境温湿度并及时报警的设备。基于STM32的设计能够提高系统的可靠性和稳定性。 首先,系统需要通过传感器获取环境温度和湿度数据。可以选择市场上常用的温湿度传感器,如DHT11或DHT22。通过STM32的GPIO接口连接传感器,使用相应的引脚进行数据采集。 其次,通过STM32的模数转换器(ADC)将传感器采集到的模拟信号转换为数字信号。可以使用STM32的内置ADC模块,通过编程配置ADC通道和采样频率,实现将模拟信号转换为数字值。 然后,使用STM32的串行通信接口(例如UART)将温湿度数据发送给外部设备,如计算机或显示屏。可以通过编程配置UART串口的波特率和数据格式,实现与外部设备的通信。 最后,设计温湿度报警功能。通过对比获取的温湿度数据与预设的报警阈值,判断是否触发报警。当温度或湿度超过预设的阈值时,STM32将触发报警信号。可以使用STM32的GPIO接口连接蜂鸣器或LED灯,实现报警的声音或灯光提示。 此外,可以进一步完善系统的功能。例如,可以添加数据存储功能,将获取的温湿度数据保存在闪存中,以备后续分析和查询。还可以添加通信模块(如以太网或WiFi模块),实现对温湿度数据的远程监测和控制。 综上所述,基于STM32温湿度检测与报警系统设计包括传感器的选择和连接、ADC的使用、UART的通信配置以及报警功能的实现。该系统能够实时监测环境温湿度,并根据预设的阈值及时报警,具有较高的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值