国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式

這篇具有很好參考價(jià)值的文章主要介紹了單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


0 前言

?? 這兩年開(kāi)始畢業(yè)設(shè)計(jì)和畢業(yè)答辯的要求和難度不斷提升,傳統(tǒng)的畢設(shè)題目缺少創(chuàng)新和亮點(diǎn),往往達(dá)不到畢業(yè)答辯的要求,這兩年不斷有學(xué)弟學(xué)妹告訴學(xué)長(zhǎng)自己做的項(xiàng)目系統(tǒng)達(dá)不到老師的要求。

為了大家能夠順利以及最少的精力通過(guò)畢設(shè),學(xué)長(zhǎng)分享優(yōu)質(zhì)畢業(yè)設(shè)計(jì)項(xiàng)目,今天要分享的是

?? 基于PID控制的智能平衡車(chē)設(shè)計(jì)與實(shí)現(xiàn)

??學(xué)長(zhǎng)這里給一個(gè)題目綜合評(píng)分(每項(xiàng)滿(mǎn)分5分)

  • 難度系數(shù):4分
  • 工作量:4分
  • 創(chuàng)新點(diǎn):3分

1 簡(jiǎn)介

基于STM32F103C8T6單片機(jī)的WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng)。

2 主要器件

  • STM32F103C8T6主控芯片
  • DHT11溫濕度傳感器
  • MQ-2煙霧傳感器
  • OLED顯示屏
  • ESP-01S ESP8622串口WIFI模塊

3 實(shí)現(xiàn)效果

DHT11傳感器采集環(huán)境中的溫度、濕度數(shù)據(jù)MQ-2傳感器采集環(huán)境中的煙霧濃度,OLED顯示屏顯示傳感器采集的數(shù)據(jù)

單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)

WIFI連接,TCP協(xié)議
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)

通過(guò)WIFI將數(shù)據(jù)傳輸?shù)绞謾C(jī)客戶(hù)端
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)

4 設(shè)計(jì)原理

4.1 DHT11溫濕度傳感器

簡(jiǎn)介
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
DHT11數(shù)字溫濕度傳感器是一款含有已校準(zhǔn)數(shù)字信號(hào)輸出的溫濕度復(fù)合傳感器。它應(yīng)用專(zhuān)用的數(shù)字模塊采集技術(shù)和溫濕度傳感技術(shù),確保產(chǎn)品具有極高的可靠性與卓越的長(zhǎng)期穩(wěn)定性。傳感器包括一個(gè)電阻式感濕元件和一個(gè)NTC測(cè)溫元件,并與一個(gè)高性能8位單片機(jī)相連接。因此該產(chǎn)品具有品質(zhì)卓越、超快響應(yīng)、抗干擾能力強(qiáng)、性?xún)r(jià)比極高等優(yōu)點(diǎn)。每個(gè)DHT11傳感器都在極為精確的濕度校驗(yàn)室中進(jìn)行校準(zhǔn)。校準(zhǔn)系數(shù)以程序的形式儲(chǔ)存在OTP內(nèi)存中,傳感器內(nèi)部在檢測(cè)信號(hào)的處理過(guò)程中要調(diào)用這些校準(zhǔn)系數(shù)。單線制串行接口,使系統(tǒng)集成變得簡(jiǎn)易快捷。超小的體積、極低的功耗,信號(hào)傳輸距離可達(dá)20米以上,使其成為各類(lèi)應(yīng)用甚至最為苛刻的應(yīng)用場(chǎng)合的最佳選則。產(chǎn)品為 4 針單排引腳封裝。連接方便,特殊封裝形式可根據(jù)用戶(hù)需求而提供。
接線
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
DHT11編碼步驟

  1. 單片機(jī)上點(diǎn)后1s內(nèi)不讀?。ú恢匾?/li>
  2. 主機(jī)(單片機(jī))發(fā)送起始信號(hào):
    • 主機(jī)先拉高data
    • 拉低data延遲18ms
    • 拉高data(通過(guò)此操作將單片機(jī)引腳設(shè)置為輸入)。
  3. 從機(jī)(DHT11)收到起始信號(hào)后進(jìn)行應(yīng)答:
    • 從機(jī)拉低data,主機(jī)讀取到data線被拉低持續(xù)80us后從機(jī)拉高data線, 持續(xù)80us,直到高電平結(jié)束,意味著主機(jī)可以開(kāi)始接受數(shù)據(jù)。
  4. 主機(jī)開(kāi)始接收數(shù)據(jù):
    • 主機(jī)先把data線拉高(io設(shè)置為輸入)
    • 從機(jī)把data線拉低,主機(jī)讀取data線電平,直到低電平結(jié)束(大約50us)
    • 從機(jī)拉高data線后,延遲40us左右(28~70us之間)主機(jī)再次讀取data線電平,如果為低電平,則為“0”,如果為高電平,則為“1”。
    • 繼續(xù)重復(fù)上述1,2步驟累計(jì)40次。

4.2 MQ-2煙霧傳感器

簡(jiǎn)介
MQ-2常用于家庭和工廠的氣體泄漏監(jiān)測(cè)裝置,適宜于液化氣、苯、烷、酒精、氫氣、煙霧等的探測(cè)。故因此,MQ-2可以準(zhǔn)確來(lái)說(shuō)是一個(gè)多種氣體探測(cè)器。
MQ-2的探測(cè)范圍極其的廣泛。它的優(yōu)點(diǎn):靈敏度高、響應(yīng)快、穩(wěn)定性好、壽命長(zhǎng)、驅(qū)動(dòng)電路簡(jiǎn)單。
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
二、MQ-2的工作原理
MQ-2型煙霧傳感器屬于二氧化錫半導(dǎo)體氣敏材料,屬于表面離子式N型半導(dǎo)體。處于200~300攝氏度時(shí),二氧化錫吸附空氣中的氧,形成氧的負(fù)離子吸附,使半導(dǎo)體中的電子密度減少,從而使其電阻值增加。當(dāng)與煙霧接觸時(shí),如果晶粒間界處的勢(shì)壘收到煙霧的調(diào)至而變化,就會(huì)引起表面導(dǎo)電率的變化。利用這一點(diǎn)就可以獲得這種煙霧存在的信息,煙霧的濃度越大,導(dǎo)電率越大,輸出電阻越低,則輸出的模擬信號(hào)就越大。
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)

MQ-2應(yīng)用電路

MQ-2常用的電路有兩種,一種使用采用比較器電路監(jiān)控,另一種為ADC電路檢測(cè)。

比較器電路
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
MQ-2的4腳輸出隨煙霧濃度變化的直流信號(hào),被加到比較器U1A的2腳,Rp構(gòu)成比較器的門(mén)檻電壓。當(dāng)煙霧濃度較高輸出電壓高于門(mén)檻電壓時(shí),比較器輸出低電平(0v),此時(shí)LED亮報(bào)警;當(dāng)濃度降低傳感器的輸出電壓低于門(mén)檻電壓時(shí),比較器翻轉(zhuǎn)輸出高電平(Vcc),LED熄滅。調(diào)節(jié)Rp,可以調(diào)節(jié)比較器的門(mén)檻電壓,從而調(diào)節(jié)報(bào)警輸出的靈敏度。
R1串入傳感器的加熱回路,可以保護(hù)加熱絲免受冷上電時(shí)的沖擊。

ADC轉(zhuǎn)換電路
MQ-2傳感器另外一個(gè)采集方法為AD信號(hào)采集,即將電壓信號(hào)轉(zhuǎn)化為數(shù)字信號(hào),進(jìn)而轉(zhuǎn)化為精確的煙霧濃度值。
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)MQ-2傳感器的4腳、6腳的電壓為輸出信號(hào),Rs為傳感器的本體電阻。其中若氣體濃度上升,必導(dǎo)致Rs下降。而Rs的下降則會(huì)導(dǎo)致MQ-2的4腳、6腳對(duì)地輸出的電壓增大。所以氣體濃度增大,其輸出的電壓也會(huì)增大,最終通過(guò)ADC0832轉(zhuǎn)換后數(shù)值增大。

4.3 ESP8266WIFI模塊

簡(jiǎn)介

ESP8266 系列模組是深圳市安信可科技有限公司開(kāi)發(fā)的一系列基于樂(lè)鑫ESP8266的低功耗UART-WiFi芯片模組,可以方便地進(jìn)行二次開(kāi)發(fā),接入云端服務(wù),實(shí)現(xiàn)手機(jī)3/4G全球隨時(shí)隨地的控制,加速產(chǎn)品原型設(shè)計(jì)。
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
尺寸、管腳定義
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)
ESP8266的指令介紹

AT指令可以細(xì)分四種類(lèi)型:
1.測(cè)試指令:AT+=?
該命令用于查詢(xún)?cè)O(shè)置指令的參數(shù)以及取值的范圍

2.查詢(xún)指令:AT+?
該命令用于返回參數(shù)的當(dāng)前值

3.設(shè)置指令:AT+=<’’’>
該命令用于設(shè)置用戶(hù)自定義的參數(shù)

4.執(zhí)行指令:AT+
該命令用于執(zhí)行受模塊內(nèi)部程序控制的變參數(shù)不可變的功能
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)ESP8266的指令測(cè)試
可以通過(guò)STM開(kāi)發(fā)板轉(zhuǎn)為電平轉(zhuǎn)換的功能連接上ESP8266模塊在通過(guò)串口顯示窗口在PC機(jī)上熱輸入AT指令來(lái)進(jìn)行操作。
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)

ESP8266的AT指令一覽
單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式,單片機(jī)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-827509.html

5 部分核心代碼

//DHT11溫濕度傳感器部分
#include "reg52.h"
#include "LCD1602.h"
#include "intrins.h"

//typedef unsigned char uchar;
//typedef unsigned int uint;
	
//定義變量
sbit Data=P3^6;
uchar rec_dat[13];//用于保存接收到的數(shù)據(jù)組

void DHT11_delay_us(uchar n)
{
    while(--n);
}

void DHT11_delay_ms(uint z)
{
   uint i,j;
   for(i=z;i>0;i--)
      for(j=110;j>0;j--);
}

void DHT11_start()
{
   Data=1;
   DHT11_delay_us(2);
   Data=0;
   DHT11_delay_ms(20);   //延時(shí)18ms以上
   Data=1;
   DHT11_delay_us(30);
}

uchar DHT11_rec_byte()      //接收一個(gè)字節(jié)
{
   uchar i,dat=0;
  for(i=0;i<8;i++)    //從高到低依次接收8位數(shù)據(jù)
   {          
      while(!Data);   //等待50us低電平過(guò)去
      DHT11_delay_us(8);     //延時(shí)60us,如果還為高則數(shù)據(jù)為1,否則為0 
      dat<<=1;           //移位使正確接收8位數(shù)據(jù),數(shù)據(jù)為0時(shí)直接移位
      if(Data==1)    //數(shù)據(jù)為1時(shí),使dat加1來(lái)接收數(shù)據(jù)1
         dat+=1;
      while(Data);  //等待數(shù)據(jù)線拉低    
    }  
    return dat;
}

void DHT11_receive()      //接收40位的數(shù)據(jù)
{
    uchar R_H,R_L,T_H,T_L,RH,RL,TH,TL,revise; 
    DHT11_start();
    if(Data==0)
    {
        while(Data==0);   //等待拉高     
        DHT11_delay_us(40);  //拉高后延時(shí)80us
        R_H=DHT11_rec_byte();    //接收濕度高八位  
        R_L=DHT11_rec_byte();    //接收濕度低八位  
        T_H=DHT11_rec_byte();    //接收溫度高八位  
        T_L=DHT11_rec_byte();    //接收溫度低八位
        revise=DHT11_rec_byte(); //接收校正位

        DHT11_delay_us(25);    //結(jié)束

        if((R_H+R_L+T_H+T_L)==revise)      //校正
        {
            RH=R_H;
            RL=R_L;
            TH=T_H;
            TL=T_L;
        } 
		
	
        /*數(shù)據(jù)處理,方便顯示*/
        rec_dat[0]=RH/10+'0';
        rec_dat[1]=(RH%10)+'0';
		rec_dat[2]='%';
        rec_dat[3]='R';
        rec_dat[4]='H';
        rec_dat[5]=' ';
		rec_dat[6]=' ';
        rec_dat[7]=(TH/10)+'0';
        rec_dat[8]=(TH%10)+'0';
		rec_dat[9]='^';
        rec_dat[10]='C';
    }
}

void main()
{
	//使用lcd1602顯示數(shù)據(jù)
	DHT11_receive();
	lcd1602(rec_dat);
}

// MQ-2煙霧傳感器

unsigned char GetYanWuValue(void)
{
		unsigned int sum=0;
		unsigned char m,value=0;
		for(m=0;m<20;m++)			//讀50次AD值
			sum = adc0832(0)+sum;		//讀到的AD值,將讀到的數(shù)據(jù)累加到sum
		value=(unsigned char)(sum/20);				//跳出上面的for循環(huán)后,將累加的總數(shù)除以50得到平均值value
	
		if(value > ADC_Zero) 
				value = value - ADC_Zero;              //首先減去零點(diǎn)漂移
			else
				value = 0;
	
		return value;

}


//wifi模塊部分
#include "esp8266.h"
#include "string.h"
#include "usart.h"
#include "usart3.h"
#include "stm32f10x.h"
#include "sys.h" 
#include "delay.h"
 
//ESP8266模塊和PC進(jìn)入透?jìng)髂J?/span>
void esp8266_start_trans(void)
{
	//設(shè)置工作模式 1:station模式   2:AP模式  3:兼容 AP+station模式
	esp8266_send_cmd("AT+CWMODE=1","OK",50);
	
	//讓W(xué)ifi模塊重啟的命令
	esp8266_send_cmd("AT+RST","ready",20);
	
	delay_ms(1000);         //延時(shí)3S等待重啟成功
	delay_ms(1000);
	delay_ms(1000);
	delay_ms(1000);
	
	//讓模塊連接上自己的路由
	while(esp8266_send_cmd("AT+CWJAP=\"111\",\"11111111\"","WIFI GOT IP",600));
	
	//=0:?jiǎn)温愤B接模式     =1:多路連接模式
	esp8266_send_cmd("AT+CIPMUX=0","OK",20);
	
	//建立TCP連接  這四項(xiàng)分別代表了 要連接的ID號(hào)0~4   連接類(lèi)型  遠(yuǎn)程服務(wù)器IP地址   遠(yuǎn)程服務(wù)器端口號(hào)
	while(esp8266_send_cmd("AT+CIPSTART=\"TCP\",\"xxx.xxx.xxx.xxx\",xxxx","CONNECT",200));
	
	//是否開(kāi)啟透?jìng)髂J? 0:表示關(guān)閉 1:表示開(kāi)啟透?jìng)?/span>
	esp8266_send_cmd("AT+CIPMODE=1","OK",200);
	
	//透?jìng)髂J较?開(kāi)始發(fā)送數(shù)據(jù)的指令 這個(gè)指令之后就可以直接發(fā)數(shù)據(jù)了
	esp8266_send_cmd("AT+CIPSEND","OK",50);
}
 
//ESP8266退出透?jìng)髂J?  返回值:0,退出成功;1,退出失敗
//配置wifi模塊,通過(guò)想wifi模塊連續(xù)發(fā)送3個(gè)+(每個(gè)+號(hào)之間 超過(guò)10ms,這樣認(rèn)為是連續(xù)三次發(fā)送+)
u8 esp8266_quit_trans(void)
{
	u8 result=1;
	u3_printf("+++");
	delay_ms(1000);					//等待500ms太少 要1000ms才可以退出
	result=esp8266_send_cmd("AT","OK",20);//退出透?jìng)髋袛?
	if(result)
		printf("quit_trans failed!");
	else
		printf("quit_trans success!");
	return result;
}
 
 
//向ESP8266發(fā)送命令
//cmd:發(fā)送的命令字符串;ack:期待的應(yīng)答結(jié)果,如果為空,則表示不需要等待應(yīng)答;waittime:等待時(shí)間(單位:10ms)
//返回值:0,發(fā)送成功(得到了期待的應(yīng)答結(jié)果);1,發(fā)送失敗
u8 esp8266_send_cmd(u8 *cmd,u8 *ack,u16 waittime)
{
	u8 res=0; 
	USART3_RX_STA=0;
	u3_printf("%s\r\n",cmd);	//發(fā)送命令
	if(ack&&waittime)		//需要等待應(yīng)答
	{
		while(--waittime)	//等待倒計(jì)時(shí)
		{
			delay_ms(10);
			if(USART3_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果
			{
				if(esp8266_check_cmd(ack))
				{
					printf("ack:%s\r\n",(u8*)ack);
					break;//得到有效數(shù)據(jù) 
				}
					USART3_RX_STA=0;
			} 
		}
		if(waittime==0)res=1; 
	}
	return res;
} 
 
 
//ESP8266發(fā)送命令后,檢測(cè)接收到的應(yīng)答
//str:期待的應(yīng)答結(jié)果
//返回值:0,沒(méi)有得到期待的應(yīng)答結(jié)果;其他,期待應(yīng)答結(jié)果的位置(str的位置)
u8* esp8266_check_cmd(u8 *str)
{
	char *strx=0;
	if(USART3_RX_STA&0X8000)		//接收到一次數(shù)據(jù)了
	{ 
		USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加結(jié)束符
		strx=strstr((const char*)USART3_RX_BUF,(const char*)str);
	} 
	return (u8*)strx;
}
 
//向ESP8266發(fā)送數(shù)據(jù)
//cmd:發(fā)送的命令字符串;waittime:等待時(shí)間(單位:10ms)
//返回值:發(fā)送數(shù)據(jù)后,服務(wù)器的返回驗(yàn)證碼
u8* esp8266_send_data(u8 *cmd,u16 waittime)
{
	char temp[5];
	char *ack=temp;
	USART3_RX_STA=0;
	u3_printf("%s",cmd);	//發(fā)送命令
	if(waittime)		//需要等待應(yīng)答
	{
		while(--waittime)	//等待倒計(jì)時(shí)
		{
			delay_ms(10);
			if(USART3_RX_STA&0X8000)//接收到期待的應(yīng)答結(jié)果
			{
				USART3_RX_BUF[USART3_RX_STA&0X7FFF]=0;//添加結(jié)束符
				ack=(char*)USART3_RX_BUF;
				printf("ack:%s\r\n",(u8*)ack);
				USART3_RX_STA=0;
				break;//得到有效數(shù)據(jù) 
			} 
		}
	}
	return (u8*)ack;
} 

5 最后

到了這里,關(guān)于單片機(jī)項(xiàng)目分享 Stm32 WIFI智能家居溫濕度和煙霧檢測(cè)系統(tǒng) - 單片機(jī) 物聯(lián)網(wǎng) 嵌入式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包