我是靠谱客的博主 时尚大门,最近开发中收集的这篇文章主要介绍基于STM32F407、QT上位机的电子元器件仓库环境检测系统,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

设计以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();

 }

欢迎大家批评指正!

最后

以上就是时尚大门为你收集整理的基于STM32F407、QT上位机的电子元器件仓库环境检测系统的全部内容,希望文章能够帮你解决基于STM32F407、QT上位机的电子元器件仓库环境检测系统所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(40)

评论列表共有 0 条评论

立即
投稿
返回
顶部