基于STM32F407、QT上位机的电子元器件仓库环境检测系统

本文介绍了使用STM32开发板配合QT上位机,设计了一套系统来实时监测仓库环境参数,如温湿度、光照强度。系统具备报警、调节功能,可通过按键操作,且上位机能远程控制环境设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计以STM32开发板为硬件基础,QT作为上位机实现电子元器件仓库环境的实时采集,并将采集的数据实时上传至上位机。具体功能如下:

(1)实时监测仓库的空气温湿度、光照强度等参数。

(2)能够将采集的参数上传至上位机。

(3)具有报警功能,当超出设定参数值时,蜂鸣器报警,并伴有灯光闪烁。

(4)通过按键关闭报警。

(5)能够调节仓库环境,当温度超过设置的阈值,风扇开启,达到通风降温的效果。

(6)显示屏显示环境数据信息。

(7)上位机可以控制下位机调整温度、湿度等环境参数值,具有一键关闭报警功能。

 QT界面:

 

 

光敏传感器代码:

void Lsens_Init(void)//光敏传感器初始化
{
  GPIO_InitTypeDef  GPIO_InitStructure;
  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
  GPIO_Init(GPIOF, &GPIO_InitStructure);  
 
	Adc3_Init();
}

u8 Lsens_Get_Val(void)//获取光敏传感器数值
{
	u32 temp_val=0;
	u8 t;
	for(t=0;t<LSENS_READ_TIMES;t++)
	{
		temp_val+=Get_Adc3(ADC_Channel_5);	
		delay_ms(5);
	}
	temp_val/=LSENS_READ_TIMES;
	if(temp_val>4000)temp_val=4000;
	return (u8)(100-(temp_val/40));
}

DHT11.c:

#include "dht.h"
void DHT11_IO_IN (void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOF,GPIO_Pin_0);
	
}

void DHT11_IO_OUT (void)
{
	GPIO_InitTypeDef GPIO_InitStructure;
	
	RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOF, ENABLE);
	GPIO_InitStructure.GPIO_Pin =  GPIO_Pin_0;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_OUT;
  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;
  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  GPIO_Init(GPIOF, &GPIO_InitStructure);
	
	GPIO_SetBits(GPIOF,GPIO_Pin_0);

}

void DHT11_Rst(void)
{
	DHT11_IO_OUT();
	DHT11_DQ_Low;
	delay_ms(20);
	DHT11_DQ_High;
	delay_us(30);

}

u8 DHT11_Check(void)
{
	u8 retry=0;
	DHT11_IO_IN();
	
	while ((GPIO_ReadInputDataBit(GPIO_DHT11,IO_DHT11)==1)&&retry<100)
	{
		retry++;
		delay_us(1);
	};
	
	if(retry>=100)
		return 1;
	else retry=0;
	
	while ((GPIO_ReadInputDataBit(GPIO_DHT11,IO_DHT11)==0)&&retry<100)
	{
		retry++;
		delay_us(1);
	};	
	if(retry>=100)
		return 1;
		return 0;
	
}

u8 DHT11_Read_Bit(void)
{
	u8 retry=0;
	while ((GPIO_ReadInputDataBit(GPIO_DHT11,IO_DHT11)==1)&&retry<100)
	{
		retry++;
		delay_us(1);
	};
	retry=0;
	while ((GPIO_ReadInputDataBit(GPIO_DHT11,IO_DHT11)==0)&&retry<100)
	{
		retry++;
		delay_us(1);
	};	
	delay_us(50);
	if(GPIO_ReadInputDataBit(GPIO_DHT11,IO_DHT11)==1)
	return 1;
	else 
	return 0;

}

u8 DHT11_Read_Byte(void)
{
	u8 i,dat;
	dat=0;
	for (i=0;i<8;i++)
	{
		dat<<=1;
		dat|=DHT11_Read_Bit();
	}
	return dat;
}

u8 DHT11_Read_Data(u8 *temp,u8 *humi)
{
	u8 buf[5];
	u8 i;
	DHT11_Rst();
	if(DHT11_Check()==0)
	{
		for (i=0;i<5;i++)
		{
			buf[i]=DHT11_Read_Byte();		
		}
		if((buf[0]+buf[1]+buf[2]+buf[3])==buf[4])
		{
			*temp=buf[2];
			*humi=buf[0];
		}		
	}
	else return 1;
	return 0;
}

void DHT11_Init(void)
{
	DHT11_Rst();
	DHT11_Check();
}

部分QT上位机代码:

 void send::ReadData()  
 
 {
     QByteArray buf;  //提供一个字节数组,QByteArray可用于存储原始字节
    buf = serial->readAll();
    QString str;
    int i=0;
    int j=0;
    for(i=0;i<6;i++)
{
        if(!recData[i].isEmpty())
{  
            recData[i].clear(); 
}
    foreach(str,buf)
{  
        if(str=="~")
{
            j++;
            continue;
        }
        recData[j].append(str);
    }

    for(int i=0;i<6;i++){
           if(!recData[i].isEmpty()){
               qDebug()<<recData[i]; 
           }
       }
    if(!recData[0].isEmpty())
{

     ui->lineEdit->setText(recData[1]);//显示温度
      ui->lineEdit_5->setText(recData[2]);//显示湿度
      ui->lineEdit_6->setText(recData[0]);//显示光敏
      ui->lineEdit_2->setText(recData[4]);//温度预设值
      ui->lineEdit_3->setText(recData[5]);//湿度预设值
      ui->lineEdit_4->setText(recData[3]);//光照强度预设值
      }





    buf.clear();

 }

欢迎大家批评指正!

qt环境监测系统是一个基于Qt框架的监测系统,主要用于实时采集和监测电子元器件仓库环境数据。该系统的设计基于STM32开发板作为硬件基础,通过与上位机的通信,将采集的数据实时上传至上位机系统的设计主要分为两个部分:下位机和上位机。下位机使用Zigbee与上位机进行通信,负责采集环境数据并发送给上位机上位机使用Qt作为人机交互界面的设计,接收下位机发送的数据并进行实时监测和显示。 在系统运行前,需要按照文档提供的说明配置好环境,并将毕设项目中的源码进行编译和运行,确保系统能够正常工作。下载的资源中的源码经过专业老师审定,基本能够满足学习和使用的需求。 该系统具有以下功能: 1. 实时采集环境数据:通过STM32开发板采集仓库中的环境数据,包括温度、湿度、气压等指标。 2. 数据上传至上位机:下位机通过Zigbee与上位机建立通信,将采集到的环境数据实时上传至上位机。 3. 数据监测和显示:上位机使用Qt作为人机交互界面,接收并显示上位机发送的数据,实时监测仓库环境的变化。 4. 环境报警功能:根据设定的阈值,当环境数据超过预设范围时,系统能够及时发出警报,提醒用户注意仓库环境的异常情况。 通过以上设计,qt环境监测系统能够实现电子元器件仓库环境的实时监测和数据采集,为用户提供一个可视化的监测界面,方便用户了解和管理仓库环境的状况。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [毕设项目:基于CTP和Qt的可视化期货监控系统.zip](https://download.youkuaiyun.com/download/qq_35831906/88258944)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [基于Zigbee与Qt的室内环境检测系统——详细介绍QT部分](https://blog.youkuaiyun.com/qq_43961980/article/details/100414550)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [基于STM32F407QT上位机电子元器件仓库环境检测系统](https://blog.youkuaiyun.com/Serendipity__vic/article/details/127851979)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值