一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

stm32單片機(jī)畢業(yè)設(shè)計(jì)——物聯(lián)網(wǎng)智能家居源代碼原理圖

機(jī)智云 ? 2024-11-30 01:03 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

一、設(shè)計(jì)簡(jiǎn)介

本畢業(yè)設(shè)計(jì)項(xiàng)目是基于STM32單片機(jī)物聯(lián)網(wǎng)機(jī)智云智能家居系統(tǒng),包含原理圖PCB手機(jī)APP。智能家居系統(tǒng)以STM32C8T6單片機(jī)為核心,結(jié)合多種傳感器和執(zhí)行器,通過(guò)ESP8266實(shí)現(xiàn)與機(jī)智云平臺(tái)的通信,用戶可通過(guò)手機(jī)APP進(jìn)行遠(yuǎn)程監(jiān)控和管理。系統(tǒng)具有網(wǎng)絡(luò)化、數(shù)字化和智能化的特點(diǎn),能夠?qū)崿F(xiàn)對(duì)家居環(huán)境的全方位監(jiān)視和智能調(diào)節(jié)。

二、功能設(shè)計(jì)

溫濕度監(jiān)控模塊

使用DHT11溫濕度傳感器采集室內(nèi)溫濕度數(shù)據(jù)。

數(shù)據(jù)通過(guò)STM32單片機(jī)處理后,在0.96寸OLED顯示屏上實(shí)時(shí)顯示。

當(dāng)溫濕度超過(guò)設(shè)定閾值時(shí),觸發(fā)蜂鳴器和LED報(bào)警燈進(jìn)行警示。

氣體檢測(cè)模塊

使用MQ-2、MQ-7和MQ-135氣體傳感器檢測(cè)室內(nèi)可燃?xì)怏w、有害氣體等。

當(dāng)檢測(cè)到有害氣體濃度超標(biāo)時(shí),系統(tǒng)通過(guò)蜂鳴器和LED報(bào)警燈進(jìn)行警示,并通過(guò)ESP8266將報(bào)警信息上傳至機(jī)智云平臺(tái)。

氣壓監(jiān)測(cè)模塊

使用BMP290氣壓傳感器監(jiān)測(cè)室內(nèi)氣壓變化。

數(shù)據(jù)通過(guò)STM32單片機(jī)處理后,可在OLED顯示屏上顯示,或上傳至機(jī)智云平臺(tái)進(jìn)行遠(yuǎn)程監(jiān)控。

光照強(qiáng)度監(jiān)測(cè)模塊

使用光敏電阻ADC檢測(cè)室內(nèi)光照強(qiáng)度。

當(dāng)光照強(qiáng)度低于設(shè)定閾值時(shí),系統(tǒng)可自動(dòng)開啟LED照明燈,或通過(guò)ESP8266發(fā)送報(bào)警信息至手機(jī)APP。

舵機(jī)控制模塊

使用SG90舵機(jī)控制窗簾、窗戶等家居設(shè)備的開關(guān)。

用戶可通過(guò)手機(jī)APP發(fā)送控制指令至機(jī)智云平臺(tái),再通過(guò)ESP8266將指令傳輸至STM32單片機(jī),最終控制舵機(jī)的動(dòng)作。

智能報(bào)警模塊

當(dāng)系統(tǒng)檢測(cè)到異常情況(如溫濕度超標(biāo)、有害氣體濃度超標(biāo)等)時(shí),觸發(fā)蜂鳴器和LED報(bào)警燈進(jìn)行本地警示。

同時(shí),通過(guò)ESP8266將報(bào)警信息上傳至機(jī)智云平臺(tái),用戶可通過(guò)手機(jī)APP接收?qǐng)?bào)警信息。

遠(yuǎn)程監(jiān)控模塊

用戶可通過(guò)機(jī)智云手機(jī)APP實(shí)時(shí)查看家居環(huán)境的溫濕度、氣壓、光照強(qiáng)度等數(shù)據(jù)。

可通過(guò)手機(jī)APP發(fā)送控制指令至機(jī)智云平臺(tái),再通過(guò)ESP8266將指令傳輸至STM32單片機(jī),實(shí)現(xiàn)對(duì)家居設(shè)備的遠(yuǎn)程控制。

三、所需硬件連接

STM32最小系統(tǒng)板

ESP8266 Wi-Fi模塊

BMP280氣壓傳感器

MQ-2煙霧傳感器

MQ-7、MQ-135氣體傳感器

DHT11溫濕度傳感器

光敏電阻ADC

SG90舵機(jī)

蜂鳴器、LED報(bào)警

0.96OLED顯示屏

繼電器模塊

四、軟件環(huán)境

Keil5 MDK:stm32單片機(jī)源代碼程序編寫及下載代碼

ST-Link 驅(qū)動(dòng)程序:用于下載程序到 STM32。

機(jī)智云手機(jī)APP

五、所需硬件以及傳感器模塊

1.1 stm32f103c8t6(1個(gè))

STM32F103C8T6單片機(jī)是一款非常用的單片機(jī)型號(hào),可以方便靈活的進(jìn)行嵌入式系統(tǒng)開發(fā)。首先,它的處理器基于Cortex-M3內(nèi)核,最高工作頻率達(dá)72MHz。STM32F103C8T6擁有64KB閃存和20KB SRAM,非常適合中小型單片機(jī)開發(fā)項(xiàng)目。

具有非常豐富的外設(shè)接口,如串口USART、SPI通信、I2C通訊、CAN通訊和USB,在與單片機(jī)外設(shè)通信方面非常方便。有多個(gè)GPIO通用IO口,定時(shí)器,中斷系統(tǒng),靈活配置為輸入,輸出、模擬輸入或PWM輸出,可以連接各類傳感器和模塊。

內(nèi)部集成的12位逐次逼近型ADC和DAC,支持高精度模擬信號(hào)處理。STM32F103C8T6還支持低功耗模式,適合電池供電的應(yīng)用場(chǎng)景。結(jié)合強(qiáng)大的STM32開發(fā)生態(tài),包括庫(kù)函數(shù)和工具鏈,可以讓開發(fā)者很方便的完成單片機(jī)項(xiàng)目的開發(fā)。

ccfffae8-ae73-11ef-8084-92fbcf53809c.png

cd11ad88-ae73-11ef-8084-92fbcf53809c.png

1.2 wifi模塊ESP8266(ESP01s)(1個(gè))

ESP-01S是安信可出品的一款功能強(qiáng)大的Wi-Fi模塊采用ESP8266處理器,ESP-01S模塊需要與主控制器(如Arduino、STM32等)進(jìn)行連接,通過(guò)串口通信UART接口與單片機(jī)進(jìn)行數(shù)據(jù)傳輸。ESP-01S是一款功能強(qiáng)大、易于使用的Wi-Fi模塊,適用于各種物聯(lián)網(wǎng)和智能家居應(yīng)用。

Wi-Fi功能:支持標(biāo)準(zhǔn)的IEEE802.11 b/g/n協(xié)議和完整的TCP/IP協(xié)議棧,可以方便地與其他設(shè)備或網(wǎng)絡(luò)進(jìn)行通信。

工作模式:支持STA模式和AP模式。在STA模式下,可以通過(guò)路由器連接到互聯(lián)網(wǎng),使手機(jī)或電腦能夠?qū)崿F(xiàn)對(duì)設(shè)備的遠(yuǎn)程控制。在AP模式下,可以作為熱點(diǎn),使其他設(shè)備能夠連接到它。

AT指令支持:初始情況下,ESP-01S通常預(yù)裝了Espressif提供的AT指令固件,這意味著可以通過(guò)發(fā)送簡(jiǎn)單的AT指令來(lái)控制模塊的Wi-Fi連接和數(shù)據(jù)傳輸。

cd22f1ba-ae73-11ef-8084-92fbcf53809c.jpgcd2ad7e0-ae73-11ef-8084-92fbcf53809c.png

二、軟件配置

固件燒錄:用戶可以根據(jù)需要進(jìn)行固件燒錄和配置,以滿足特定的應(yīng)用需求。

串口通信參數(shù):通常ESP-01S默認(rèn)波特率為115200,數(shù)據(jù)位為8位,停止位為1位,無(wú)校驗(yàn)。

1.3MQ系列傳感器(3個(gè))

MQ-2、MQ-7和MQ-135都是MQ系列的氣體傳感器模塊,

MQ-2氣體傳感器所使用的氣敏材料是在清潔空氣中電導(dǎo)率較低的二氧化錫(SnO2)。當(dāng)傳感器所處環(huán)境中存在可燃?xì)怏w時(shí),傳感器的電導(dǎo)率隨空氣中可燃?xì)怏w濃度的增加而增大。利用簡(jiǎn)單的電路即可將電導(dǎo)率的變化轉(zhuǎn)換為與該傳感器氣體濃度相對(duì)應(yīng)的輸出信號(hào)。MQ-2氣體傳感器對(duì)液化氣、丙烷、氫氣的靈敏度高,對(duì)天然氣和其他可燃蒸汽的檢測(cè)也很理想。這種傳感器可檢測(cè)多種可燃性氣體,是一款適合多種應(yīng)用的低成本傳感器。

cd34dbdc-ae73-11ef-8084-92fbcf53809c.png

cd3959e6-ae73-11ef-8084-92fbcf53809c.png

引腳說(shuō)明

VCC:電源正極接口,可外接3.3~5V供電電源。

GND:電源負(fù)極接口,可外接電源負(fù)極或地線(GND)。

DO:數(shù)字信號(hào)輸出接口(0和1),可外接單片機(jī)的GPIO。

AO:模擬信號(hào)輸出接口,可外接單片機(jī)的ADC采樣通道。

MQ-7是一氧化碳傳感器模塊,屬于氣敏傳感器檢測(cè)報(bào)警模塊。它能夠靈敏地檢測(cè)一氧化碳?xì)怏w的濃度,并輸出相應(yīng)的電信號(hào)。MQ-7一氧化碳傳感器模塊廣泛應(yīng)用于家庭用氣體泄漏報(bào)警器、工業(yè)用可燃?xì)怏w報(bào)警器等領(lǐng)域,用于監(jiān)測(cè)一氧化碳?xì)怏w的濃度

1.4BMP280氣壓傳感器(3個(gè))

BMP280是一款由博世公司推出的數(shù)字氣壓傳感器,它采用了先進(jìn)的APSM(Advanced Porous Silicon Membrane)工藝,具有小封裝、低功耗的特點(diǎn):

cd475596-ae73-11ef-8084-92fbcf53809c.jpg

cd4e8ca8-ae73-11ef-8084-92fbcf53809c.png

一、外觀與引腳

BMP280傳感器通常具有六個(gè)引腳,具體名稱與功能如下

(VCC):3.3V供電,切記不可以接5V,以避免燒毀。

(GND):接地。

(SCL):I2C通信模式時(shí)鐘信號(hào)。

SDA):I2C通信模式數(shù)據(jù)信號(hào)。

(CSB):SPI通信模式下用到的引腳,片選引腳,拉低后啟用。

(SDO):傳感器地址控制位。

有些BMP280傳感器版本可能有8個(gè)引腳,但常用的仍是上述6個(gè)引腳。

二、功能與參數(shù)

BMP280傳感器能夠測(cè)量環(huán)境溫濕度和大氣壓強(qiáng),其主要參數(shù)如下:

溫度測(cè)量

測(cè)量范圍:-40~85°C。

測(cè)量誤差:±0.5℃。

分辨率:0.1℃。

測(cè)量范圍:0%~100%。

濕度響應(yīng)時(shí)間:大于1秒。

濕度測(cè)量誤差:±2%。

分辨率:0.8%。

測(cè)量范圍:300~1100hPa(百帕斯卡)。

測(cè)量誤差:±1hPa。

分辨率:0.18Pa。

相對(duì)精度:±0.12hPa(相當(dāng)于±1米)。

三、通信方式

BMP280支持I2C和SPI兩種通信方式

I2C通信:通過(guò)SCL(時(shí)鐘線)和SDA(數(shù)據(jù)線)進(jìn)行數(shù)據(jù)傳輸,SDO用于設(shè)置傳感器的I2C地址。

SPI通信:通過(guò)SCL(時(shí)鐘線)、SDI(數(shù)據(jù)輸入線,三線模式下為雙向數(shù)據(jù)線)和SDO(數(shù)據(jù)輸出線,三線模式下無(wú)用)進(jìn)行數(shù)據(jù)傳輸,CSB用于片選。

四、工作模式

BMP280傳感器有三種工作模式

睡眠模式:傳感器不工作,功耗最低。

觸發(fā)模式:執(zhí)行單次測(cè)量后,傳感器進(jìn)入睡眠狀態(tài),以節(jié)省資源。

正常模式:傳感器在活動(dòng)測(cè)量周期和非活動(dòng)待機(jī)周期之間自動(dòng)循環(huán)。

五、應(yīng)用與特點(diǎn)

BMP280傳感器廣泛應(yīng)用于無(wú)人機(jī)定高、天氣監(jiān)控、增強(qiáng)GPS導(dǎo)航、室內(nèi)導(dǎo)航、戶外休閑和體育應(yīng)用、天氣預(yù)報(bào)、醫(yī)療保?。ㄈ绶位盍繙y(cè)定)等領(lǐng)域。其特點(diǎn)包括:

六、使用注意事項(xiàng)

在使用BMP280傳感器時(shí),需要注意供電電壓不能超過(guò)3.3V,以避免損壞傳感器。

在進(jìn)行數(shù)據(jù)采集之前,需要對(duì)傳感器進(jìn)行初始化,包括讀取補(bǔ)償參數(shù)、設(shè)置工作模式、配置過(guò)采樣參數(shù)等。

在讀取數(shù)據(jù)時(shí),需要按照數(shù)據(jù)手冊(cè)中的說(shuō)明進(jìn)行寄存器操作,以確保數(shù)據(jù)的正確性和穩(wěn)定性。

六、原理圖及設(shè)計(jì)流程圖

cd651680-ae73-11ef-8084-92fbcf53809c.png

cd6a1b94-ae73-11ef-8084-92fbcf53809c.png

七、程序代碼

#include "sys.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "ADC.h"
#include "usart3.h"
#include "key.h"
#include "oled.h"
#include "math.h"
#include "dht11.h"
#include "bmp280.h"
#include "gizwits_product.h"

u32 STM32_xx0=0X4E4C4A;
u32 STM32_xx1=0X364B1322;
u32 STM32_xx2=0X132D13 ;

#define FLASH_SAVE_ADDR 0x08010000

u8 buff[30];//參數(shù)顯示緩存數(shù)組
u8 count;
dataPoint_t currentDataPoint;//云端數(shù)據(jù)點(diǎn)
u8 wifi_sta;//wifi連接狀態(tài)標(biāo)志
u8 mode=0;//模式控制自動(dòng)和手動(dòng)
u8 NTP_sta=0;//網(wǎng)諾時(shí)間獲取狀態(tài)
u8 display_contrl=0;
u8 curtain_flag=0;
u8 last_curtain_flag=0;

extern u8 DHT11_Temp,DHT11_Hum;//溫濕度
u16 Pre;//氣壓檢測(cè)值
u16 gz_value;//光照檢測(cè)值
u16 m2_value;//煙霧檢測(cè)值
u16 m7_value;//一氧化碳檢測(cè)值
u16 m135_value;//空氣質(zhì)量檢測(cè)值

u16 A_DHT11_Temp=35;//溫度閾值 高于閾值時(shí)報(bào)警
u16 A_DHT11_Hum=20;//濕度閾值 低于閾值時(shí)報(bào)警
u16 A_pre=1500;//氣壓閾值 低于閾值時(shí)報(bào)警
u16 A_gz_value=1000;//光照強(qiáng)度閾值 低于閾值時(shí)打開窗簾和照明燈
u16 A_m2_value=4000;//煙霧閾值 高于閾值時(shí)報(bào)警
u16 A_m7_value=4000;//一氧化碳閾值 高于閾值時(shí)報(bào)警
u16 A_m135_value=1500;//空氣質(zhì)量閾值 低于閾值時(shí)報(bào)警

//協(xié)議初始化
void Gizwits_Init(void)
{
TIM3_Int_Init(9,7199);//1MS系統(tǒng)定時(shí)
usart3_init(9600);//WIFI初始化
memset((uint8_t*)¤tDataPoint, 0, sizeof(dataPoint_t));//設(shè)備狀態(tài)結(jié)構(gòu)體初始化
gizwitsInit();//緩沖區(qū)初始化
}

//數(shù)據(jù)采集
void userHandle(void)
{
currentDataPoint.valueLED=!LED0;
currentDataPoint.valueCurtain=curtain_flag;
currentDataPoint.valueTemp=DHT11_Temp;
currentDataPoint.valueHum=DHT11_Hum;
currentDataPoint.valuePre=Pre;
currentDataPoint.valueGZ_Value=gz_value;
currentDataPoint.valueMQ2_Value=m2_value;
currentDataPoint.valueMQ7_Value=m7_value;
currentDataPoint.valueMQ135_Value=m135_value;
}

void Get_Data(u16 count);//獲取傳感器數(shù)據(jù)
void WIFI_Contection(u8 key);//WiFi連接控制
void Canshu_Change(u8 key);//系統(tǒng)參數(shù)調(diào)節(jié)
void Mode_Change(u8 key);//模式切換
void BUJING_Cotrol(u8 mode,u16 time,u16 count);

int main(void)
{
u8 t=0;
int key_value;//按鍵值
uart_init(115200); //串口初始化為115200
delay_init(); //延時(shí)函數(shù)初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置中斷優(yōu)先級(jí)分組為組2:2位搶占優(yōu)先級(jí),2位響應(yīng)優(yōu)先級(jí)
Adc1_Channe_Init();//ADC通道初始化
KEY_Init();//按鍵引腳初始化
bmp280Init();
while(DHT11_Init());
LED_Init(); //初始化與LED連接的硬件接口
OLED_Init();//OLED初始化
OLED_Clear();//OLED清屏
Gizwits_Init();
BEEP = 0;
//STMFLASH_Write(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);//開機(jī)讀取溫度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);//開機(jī)讀取濕度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+14,&A_pre,2);//開機(jī)讀取氣壓閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+18,&A_gz_value,2);//開機(jī)讀取光照強(qiáng)度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+20,&A_m2_value,2);//開機(jī)讀取煙霧閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+22,&A_m7_value,2);//開機(jī)讀取一氧化碳閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+24,&A_m135_value,2);//開機(jī)讀取空氣質(zhì)量閾值

//STMFLASH_Read(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);//開機(jī)讀取溫度閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);//開機(jī)讀取濕度閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+14,&A_pre,2);//開機(jī)讀取氣壓閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+18,&A_gz_value,2);//開機(jī)讀取光照強(qiáng)度閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+20,&A_m2_value,2);//開機(jī)讀取煙霧閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+22,&A_m7_value,2);//開機(jī)讀取一氧化碳閾值
//STMFLASH_Read(FLASH_SAVE_ADDR+24,&A_m135_value,2);//開機(jī)讀取空氣質(zhì)量閾值

while(1)
{
Get_Data(0);
if(gz_value<=A_gz_value&&mode==0)
{
LED0=0;
curtain_flag=0;
}else if(gz_value>A_gz_value&&mode==0){
LED0=1;
curtain_flag=1;
}
if(last_curtain_flag!=curtain_flag&&mode==0)
{
BUJING_Cotrol(curtain_flag,3,270);
last_curtain_flag = curtain_flag;
}
if(last_curtain_flag!=currentDataPoint.valueCurtain&&mode==1)
{
BUJING_Cotrol(currentDataPoint.valueCurtain,3,270);
curtain_flag = currentDataPoint.valueCurtain;
last_curtain_flag = currentDataPoint.valueCurtain;
}
if(mode==1)
{
LED0=!currentDataPoint.valueLED;
}
if(DHT11_Temp>=A_DHT11_Temp||DHT11_Hum<=A_DHT11_Hum||Pre>=A_pre||m135_value<=A_m135_value||m2_value>=A_m2_value||m7_value>=A_m7_value)
{
//BEEP=!BEEP;
}else BEEP = 0;



key_value = KEY_Scan(0);

if(key_value==4)
{
display_contrl++;
}
if(display_contrl%2==0&&t>=10)
{
OLED_ShowCHinese(0,0,0);
OLED_ShowCHinese(16,0,2);
sprintf((char*)buff,":%2dC",DHT11_Temp);
OLED_ShowString(32,0,buff,16);//顯示溫度
OLED_ShowCHinese(64,0,1);
OLED_ShowCHinese(82,0,2);
sprintf((char*)buff,":%2d%%",DHT11_Hum);
OLED_ShowString(96,0,buff,16);//顯示濕度

OLED_ShowCHinese(0,2,3);
OLED_ShowCHinese(16,2,4);
sprintf((char*)buff,":%2dhpa ",Pre);
OLED_ShowString(32,2,buff,16);//顯示氣壓

OLED_ShowCHinese(0,4,5);
OLED_ShowCHinese(16,4,6);
OLED_ShowCHinese(32,4,7);
OLED_ShowCHinese(48,4,8);
sprintf((char*)buff,":%4dppm",gz_value);
OLED_ShowString(64,4,buff,16);//顯示光照強(qiáng)度

OLED_ShowCHinese(0,6,21);
OLED_ShowCHinese(16,6,22);
OLED_ShowCHinese(32,6,23);
OLED_ShowCHinese(48,6,24);
//sprintf((char*)buff,":%4dppm",m135_value);
//OLED_ShowString(64,6,buff,16);//顯示空氣質(zhì)量
OLED_ShowString(64,6,":",16);
}else if(display_contrl%2==1&&t>=10)
{
OLED_ShowCHinese(0,0,13);
OLED_ShowCHinese(16,0,14);
OLED_ShowCHinese(32,0,15);
OLED_ShowCHinese(48,0,16);
sprintf((char*)buff,":%4dppm",m2_value);
OLED_ShowString(64,0,buff,16);//顯示M2數(shù)據(jù)

OLED_ShowCHinese(0,2,17);
OLED_ShowCHinese(16,2,18);
OLED_ShowCHinese(32,2,19);
OLED_ShowCHinese(48,2,20);
sprintf((char*)buff,":%4dppm",m7_value);
OLED_ShowString(64,2,buff,16);//顯示M7數(shù)據(jù)

OLED_ShowCHinese(0,4,5);
OLED_ShowCHinese(16,4,6);
OLED_ShowCHinese(32,4,7);
OLED_ShowCHinese(48,4,8);
sprintf((char*)buff,":%4dppm",gz_value);
OLED_ShowString(64,4,buff,16);//顯示光照強(qiáng)度

OLED_ShowCHinese(0,6,21);
OLED_ShowCHinese(16,6,22);
OLED_ShowCHinese(32,6,23);
OLED_ShowCHinese(48,6,24);
// sprintf((char*)buff,":%4dppm",m135_value);
// OLED_ShowString(64,6,buff,16);//顯示M135數(shù)據(jù)

}
if(t>10)
{
if(m135_value>100)
{
OLED_ShowCHinese(80,6,23);//有人
OLED_ShowCHinese(96,6,24);
//報(bào)警
BEEP=!BEEP;
}
else
{
OLED_ShowCHinese(80,6,25);//無(wú)人
OLED_ShowCHinese(96,6,24);
BEEP = 0;
}
}

userHandle();//用戶數(shù)據(jù)采集
WIFI_Contection(key_value);//WiFi連接控制
gizwitsHandle((dataPoint_t *)¤tDataPoint);//機(jī)智云協(xié)議處理

Canshu_Change(key_value);

t++;
delay_ms(100);
}
}

void WIFI_Contection(u8 key)//WiFi連接控制
{
if(key==2)
{
printf("WIFI進(jìn)入AirLink連接模式\r\n");
gizwitsSetMode(WIFI_AIRLINK_MODE);//Air-link模式接入
}
if(key==3)
{

printf("WIFI復(fù)位,請(qǐng)重新配置連接\r\n");
gizwitsSetMode(WIFI_RESET_MODE);//WIFI復(fù)位
}
}

void Canshu_Change(u8 key)
{
u8 obj=7;
if(key==1)
{
BEEP=0;
OLED_Clear();
while(1)
{
key = KEY_Scan(0);
if(key==1)
{
obj++;
if(obj>=8)
{
obj=0;
}
}
sprintf((char *)buff,"Working md:%4d",mode);
OLED_ShowString(8,0,buff,12);
sprintf((char *)buff,"A_Temp :%4d",A_DHT11_Temp);
OLED_ShowString(8,1,buff,12);
sprintf((char *)buff,"A_Hum :%4d",A_DHT11_Hum);
OLED_ShowString(8,2,buff,12);
sprintf((char *)buff,"A_pre :%4d",A_pre);
OLED_ShowString(8,3,buff,12);
sprintf((char *)buff,"A_gz_val :%4d",A_gz_value);
OLED_ShowString(8,4,buff,12);
sprintf((char *)buff,"A_m2_val :%4d",A_m2_value);
OLED_ShowString(8,5,buff,12);
sprintf((char *)buff,"A_m7_val :%4d",A_m7_value);
OLED_ShowString(8,6,buff,12);
sprintf((char *)buff,"A_m135_val:%4d",A_m135_value);
OLED_ShowString(8,7,buff,12);
if(obj==0)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1,">",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==1)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2,">",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==2)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3,">",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==3)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4,">",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==4)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5,">",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==5)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6,">",12);
OLED_ShowString(0,7," ",12);
}
if(obj==6)
{
OLED_ShowString(0,0," ",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7,">",12);
}
if(obj==7)
{
OLED_ShowString(0,0,">",12);
OLED_ShowString(0,1," ",12);
OLED_ShowString(0,2," ",12);
OLED_ShowString(0,3," ",12);
OLED_ShowString(0,4," ",12);
OLED_ShowString(0,5," ",12);
OLED_ShowString(0,6," ",12);
OLED_ShowString(0,7," ",12);
}
if(obj==0)
{
if(key==3)
{
A_DHT11_Temp+=1;
}
if(key==2)
{
A_DHT11_Temp-=1;
}
}
if(obj==1)
{
if(key==3)
{
A_DHT11_Hum+=1;
}
if(key==2)
{
A_DHT11_Hum-=1;
}
}
if(obj==2)
{
if(key==3)
{
A_pre+=20;
}
if(key==2)
{
A_pre-=20;
}
}
if(obj==3)
{
if(key==3)
{
A_gz_value+=50;
}
if(key==2)
{
A_gz_value-=50;
}
}
if(obj==4)
{
if(key==3)
{
A_m2_value+=50;
}
if(key==2)
{
A_m2_value-=50;
}
}
if(obj==5)
{
if(key==3)
{
A_m7_value+=50;
}
if(key==2)
{
A_m7_value-=50;
}
}
if(obj==6)
{
if(key==3)
{
A_m135_value+=50;
}
if(key==2)
{
A_m135_value-=50;
}
}
if(obj==7)
{
if(key==3)
{
mode+=1;
}
if(key==2)
{
mode-=1;
}
if(mode >= 2) mode = 0;
}
if(key==4)
{
//STMFLASH_Write(FLASH_SAVE_ADDR+10,&A_DHT11_Temp,2);//開機(jī)讀取溫度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+12,&A_DHT11_Hum,2);//開機(jī)讀取濕度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+14,&A_pre,2);//開機(jī)讀取氣壓閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+18,&A_gz_value,2);//開機(jī)讀取光照強(qiáng)度閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+20,&A_m2_value,2);//開機(jī)讀取煙霧閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+22,&A_m7_value,2);//開機(jī)讀取一氧化碳閾值
//STMFLASH_Write(FLASH_SAVE_ADDR+24,&A_m135_value,2);//開機(jī)讀取空氣質(zhì)量閾值
OLED_Clear();
break;
}

}
}
}

void Get_Data(u16 count)//獲取傳感器數(shù)據(jù)
{
static float bmp280_press,bmp280;//氣壓

DHT11_Read_Data(&DHT11_Temp,&DHT11_Hum);

bmp280GetData(&bmp280_press,&bmp280,&bmp280);
Pre = bmp280_press;

gz_value = 4096 - get_Adc_Value(0x04);

m2_value = get_Adc_Value(0x07);

m7_value = get_Adc_Value(0x05);

m135_value = 4096 - get_Adc_Value(0x06);
}
//void Mode_Change(u8 key)
//{
//if(key==2)
//{
//mode++;
//if(mode>=2) mode = 0;
//}
//if(mode==0) OLED_ShowString(0,0,"MODE:Auto",12); //HM
//if(mode==1) OLED_ShowString(0,0,"MODE:H_M_",12); //HM
//}

void BUJING_Cotrol(u8 mode,u16 time,u16 count)
{
if(mode==0)
{
while(count--)
{
BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
delay_ms(time);
BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
delay_ms(time);
BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
delay_ms(time);
BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
delay_ms(time);
}
}
if(mode==1)
{
while(count--)
{
BUJ1=0; BUJ2=0; BUJ3=0;BUJ4=1;
delay_ms(time);
BUJ1=0; BUJ2=0; BUJ3=1;BUJ4=0;
delay_ms(time);
BUJ1=0; BUJ2=1; BUJ3=0;BUJ4=0;
delay_ms(time);
BUJ1=1; BUJ2=0; BUJ3=0;BUJ4=0;
delay_ms(time);
}
}
}

八、實(shí)物圖片

cd7d7694-ae73-11ef-8084-92fbcf53809c.jpg

九、資料內(nèi)容清單

cd885528-ae73-11ef-8084-92fbcf53809c.png

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 單片機(jī)
    +關(guān)注

    關(guān)注

    6067

    文章

    44973

    瀏覽量

    650022
  • STM32
    +關(guān)注

    關(guān)注

    2293

    文章

    11031

    瀏覽量

    364448
  • 智能家居
    +關(guān)注

    關(guān)注

    1934

    文章

    9796

    瀏覽量

    190452
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    【Tisan聯(lián)網(wǎng)申請(qǐng)】基于Tisan的聯(lián)網(wǎng)智能家居設(shè)計(jì)

    申請(qǐng)理由:1,在校學(xué)生,聯(lián)網(wǎng)專業(yè)。熟悉單片機(jī)開發(fā),和聯(lián)網(wǎng)開發(fā)。2,本學(xué)期正在著手一個(gè)CDIO項(xiàng)目,項(xiàng)目為
    發(fā)表于 11-06 09:50

    怎樣去設(shè)計(jì)一種基于單片機(jī)智能家居語(yǔ)音控制系統(tǒng)

    基于單片機(jī)智能家居語(yǔ)音控制系統(tǒng),該系統(tǒng)可通過(guò)語(yǔ)音控制家用電器或其它電器的開啟與關(guān)閉;(內(nèi)附有原理圖單片機(jī)源代碼,開題報(bào)告,語(yǔ)音芯片
    發(fā)表于 07-20 06:59

    基于51單片機(jī)實(shí)現(xiàn)智能家居產(chǎn)品

    ?51單片機(jī)也可以實(shí)現(xiàn)一個(gè)小小的智能家居√(smart-home)開源所有代碼?文章目錄?51單片機(jī)也可以實(shí)現(xiàn)一個(gè)小小的智能家居√(smar
    發(fā)表于 09-08 06:21

    求一種基于單片機(jī)的藍(lán)牙智能家居設(shè)計(jì)方案

    畢業(yè)設(shè)計(jì)】【單片機(jī)俱樂(lè)部】基于單片機(jī)的藍(lán)牙智能家居的設(shè)計(jì)【仿真設(shè)計(jì)】設(shè)計(jì)簡(jiǎn)介:項(xiàng)目名:基于單片機(jī)的藍(lán)牙
    發(fā)表于 03-01 06:55

    單片機(jī),智能家居設(shè)計(jì)

    跪求基于單片機(jī)STM32F103ZET6的智能家居控制系統(tǒng)設(shè)計(jì)(包含燈光,傳感器,報(bào)警,驅(qū)動(dòng)電路設(shè)計(jì)原理圖
    發(fā)表于 03-29 08:34

    STM32單片機(jī)實(shí)現(xiàn)智能家居控制系統(tǒng)的方案

    詳細(xì)介紹的是使用STM32單片機(jī)實(shí)現(xiàn)智能家居控制系統(tǒng)的方案介紹和源代碼等資料合集
    發(fā)表于 09-25 06:23

    智能家居管理系統(tǒng)設(shè)計(jì)資料

    智能家居管理系統(tǒng)設(shè)計(jì)(原理圖+APP+源代碼等)使用51單片機(jī)作為主控 提供完整源碼 可實(shí)現(xiàn)智能家居控制網(wǎng)上下載的資源 侵權(quán)刪!
    發(fā)表于 10-07 08:22

    使用STM32單片機(jī)實(shí)現(xiàn)智能家居控制系統(tǒng)的方案介紹和源代碼等資料

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用STM32單片機(jī)實(shí)現(xiàn)智能家居控制系統(tǒng)的方案介紹和源代碼等資料合集免費(fèi)下載。
    發(fā)表于 04-08 08:00 ?48次下載
    使用<b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)<b class='flag-5'>智能家居</b>控制系統(tǒng)的方案介紹和<b class='flag-5'>源代碼</b>等資料

    使用STM32單片機(jī)實(shí)現(xiàn)無(wú)人機(jī)的源代碼原理圖資料合集

    本文檔的主要內(nèi)容詳細(xì)介紹的是使用STM32單片機(jī)實(shí)現(xiàn)無(wú)人機(jī)的源代碼原理圖資料合集免費(fèi)下載。
    發(fā)表于 07-30 08:00 ?118次下載
    使用<b class='flag-5'>STM32</b><b class='flag-5'>單片機(jī)</b>實(shí)現(xiàn)無(wú)人機(jī)的<b class='flag-5'>源代碼</b>和<b class='flag-5'>原理圖</b>資料合集

    基于單片機(jī)智能小車畢業(yè)設(shè)計(jì)

    基于單片機(jī)智能小車畢業(yè)設(shè)計(jì)免費(fèi)下載。
    發(fā)表于 06-18 09:39 ?103次下載

    基于ESP8266智能家居自學(xué)習(xí)紅外遙控設(shè)計(jì) 單片機(jī)源代碼+PCB電路

    基于ESP8266智能家居自學(xué)習(xí)紅外遙控設(shè)計(jì) 單片機(jī)源代碼+PCB電路(51單片機(jī))-基于ESP8266
    發(fā)表于 07-22 15:11 ?89次下載
    基于ESP8266<b class='flag-5'>智能家居</b>自學(xué)習(xí)紅外遙控設(shè)計(jì) <b class='flag-5'>單片機(jī)</b><b class='flag-5'>源代碼</b>+PCB電路<b class='flag-5'>圖</b>

    800多套單片機(jī)畢業(yè)設(shè)計(jì)

    、停車場(chǎng)管理系統(tǒng)、萬(wàn)年歷、智能插座等不同方向的典型設(shè)計(jì)實(shí)例,每個(gè)實(shí)例都提供了設(shè)計(jì)報(bào)告、源代碼、電路等全部設(shè)計(jì)資料,這些設(shè)計(jì)資料有利于即將畢業(yè)的同學(xué)分析、理解并進(jìn)行
    發(fā)表于 11-11 11:36 ?123次下載
    800多套<b class='flag-5'>單片機(jī)</b><b class='flag-5'>畢業(yè)設(shè)計(jì)</b>

    【畢設(shè)狗】【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)的藍(lán)牙智能家居的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+原理圖+軟件設(shè)計(jì)流程

    【畢設(shè)狗】【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)的藍(lán)牙智能家居的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+原理圖+軟件設(shè)計(jì)流程+硬件清單+視頻講解)
    發(fā)表于 11-12 20:51 ?30次下載
    【畢設(shè)狗】【<b class='flag-5'>單片機(jī)</b><b class='flag-5'>畢業(yè)設(shè)計(jì)</b>】基于<b class='flag-5'>單片機(jī)</b>的藍(lán)牙<b class='flag-5'>智能家居</b>的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+<b class='flag-5'>原理圖</b>+軟件設(shè)計(jì)流程

    【畢設(shè)狗】【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)智能密碼鎖的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+原理圖+軟件設(shè)計(jì)流程

    【畢設(shè)狗】【單片機(jī)畢業(yè)設(shè)計(jì)】基于單片機(jī)智能密碼鎖的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+原理圖+軟件設(shè)計(jì)流程+硬件清單+視頻講解)
    發(fā)表于 11-13 09:06 ?34次下載
    【畢設(shè)狗】【<b class='flag-5'>單片機(jī)</b><b class='flag-5'>畢業(yè)設(shè)計(jì)</b>】基于<b class='flag-5'>單片機(jī)</b>的<b class='flag-5'>智能</b>密碼鎖的設(shè)計(jì)(實(shí)物+proteus仿真+源碼+<b class='flag-5'>原理圖</b>+軟件設(shè)計(jì)流程

    STM32畢業(yè)設(shè)計(jì)項(xiàng)目

    STM32畢業(yè)設(shè)計(jì)項(xiàng)目文章目錄STM32畢業(yè)設(shè)計(jì)項(xiàng)目1、基于STM32單片機(jī)大棚環(huán)境參數(shù)無(wú)線藍(lán)牙
    發(fā)表于 12-24 19:19 ?112次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>畢業(yè)設(shè)計(jì)</b>項(xiàng)目