久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
基于STM32的多模態家居環境監控系統設計與實現程序
[打印本頁]
作者:
YeHuAHua
時間:
2025-5-29 16:04
標題:
基于STM32的多模態家居環境監控系統設計與實現程序
本項目為本人設計項目以此來記錄和分享,涉及使用的硬件有STM32F103系列,然后用到BH1750光照度傳感器、LCD、超聲波測距傳感器、MQ2一氧化碳傳感器、MQ7煙霧傳感器、DHT11溫濕度傳感器、ESP8266-01sWiFi模塊。實現了簡單的家居環境的遠程監測。遠程監控我們使用的是OneNet云平臺,檢測到的數據通過OneJson的數據模式由ESP8266-01s模塊以MQTT協議去發送給OneNet平臺。以此實現遠程監控。
BH1750:
SCL----PB6
SDA---PB7
ADDR---GND
LCD:
SCL----PB13
SDA---PB12
RES----PB11
DC-----PB15
CS-----PB14
BL-----PB10
超聲波:
Trig----PA7
Echo----PA6
一氧化碳MQ2:
AO----PA0
煙霧MQ7:
AO----PA1
DHT11:
DA----PA4
ESP8266:
RX---PA2
TX---PA3
風扇:PA11
LED: PA9
執行——風扇和報警
溫度大于30,濕度大于70,一氧化碳大于50,煙霧大于50
執行——燈
光照小于15
具體的執行機構還需要改正,樓主這里只是簡單示范,可以根據項目開發的實際情況來拓展執行器。
Wifi-數據傳輸主要部分:
單片機源程序如下:
#include <string.h>
#include "sys.h"
#include "onenet.h"
#include "esp8266.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "LCD.h"
#include "dht11.h"
#include "adc_dma.h"
#include "mq2.h"
#include "mq7.h"
#include "timer.h"
#include "bh1750.h"
#include "gui.h"
#include "LCD.h"
#include "hc_sr501.h"
#include "hc_sr04.h"
#include "TFT_demo.h"
#include "pwm.h"
#include "key.h"
#include "beep.h"
uint32_t time = 0; // ms 計時變量
DHT11_Data_TypeDef DHT11_Data;
float value_light = 0.0; //光照度
float value_mq2 = 0.0; //煙霧濃度
float value_mq7 = 0.0; //一氧化碳濃度
float value_sr04 = 0.0; //超聲波距離
u8 status_sr501 = 0; //人體紅外檢測到的值
int max_mq7 = 50; //一氧化碳濃度閾值
int max_mq2 = 50; //煙霧濃度閾值
int min_light = 15; //光照閾值
u8 LED_Light; //PWM燈光亮度
//硬件初始化
void Hardware_Init(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設置中斷優先級分組為組2:2位搶占優先級,2位響應優先級
delay_init(); //延時函數初始化
LCD_Init(); //液晶屏初始化
LCD_Clear(GRAY0);
Gui_DrawFont_GBK16(3,10,BLUE,GRAY0,(u8 *)"系統正在初始化");
Usart1_Init(115200); //串口1初始化為115200
Usart2_Init(115200); //串口2,驅動ESP8266用
LED_Init(); //LED初始化
SR501_Init(); //紅外熱釋電
Hcsr04Init(); //超聲波測距
ADCx_Init(); //ADC DMA初始化
DHT11_GPIO_Config(); //DHT11溫濕度傳感器初始化
BH1750_Init(); //光照
KEY_Init();
BEEP_Init();
PWM_TIM_Init(); //PWM頻率=72000K/20*180=20Khz
TIM_SetCompare3(TIM3,0);
Gui_DrawFont_GBK16(4,30,RED,GRAY0,(u8*)"設備初始化完成");
Gui_DrawFont_GBK16(4,50,RED,GRAY0,(u8*)"正在連接網絡。。。");
}
void Net_Init()
{
ESP8266_Init(); //初始化ESP8266
while(OneNet_DevLink()) //接入OneNET
delay_ms(500);
LED1 = 0; //入網成功
Gui_DrawFont_GBK16(4,70,RED,GRAY0,(u8*)"網絡連接完成");
delay_ms(2000);
}
int main(void)
{
unsigned char *dataPtr = NULL;
unsigned short timeCount = 0; //發送間隔變量,初始化為0
char str[50]; // 擴大數組大小以避免緩沖區溢出
Hardware_Init(); //初始化外圍硬件
Net_Init(); //網絡初始化
GENERAL_TIM_Init(); //1MS系統定時
LCD_Clear(BLACK);
Gui_DrawFont_GBK16(25,4,BLACK,GRAY0,(u8 *)" 系統監控 ");
GUI_DrawRectangle(1, 1, 128-2, 128-2, WHITE); //邊框
while(1)
{
delay_ms(10);
timeCount ++;
//接收數據
dataPtr = ESP8266_GetIPD(0);
if(dataPtr != NULL)
{
OneNet_RevPro(dataPtr);
}
if(timeCount >= 300) //發送間隔5s
{
/* 溫濕度傳感器獲取數據*/
if( Read_DHT11(&DHT11_Data)==SUCCESS)/*調用Read_DHT11讀取溫濕度,若成功則輸出該信息*/
{
sprintf(str, "溫度:%d.%d ℃ ",DHT11_Data.temp_int,DHT11_Data.temp_deci);
Gui_DrawFont_GBK16(4,30,RED,BLACK,(u8 *)str);
sprintf(str, "濕度:%d.%d %c ",DHT11_Data.humi_int,DHT11_Data.humi_deci,'%');
Gui_DrawFont_GBK16(4,50,RED,BLACK,(u8 *)str);
}
else
{
printf("Read DHT11 ERROR!\r\n");//讀取數據失敗,串口打印:Read DHT11 ERROR.
Gui_DrawFont_GBK16(4,30,RED,BLACK,(u8 *)"ERROR!");
Gui_DrawFont_GBK16(4,50,RED,BLACK,(u8 *)"ERROR!");
}
value_sr04 = Hcsr04GetLength();/*超聲波測距獲取距離(CM)*/
status_sr501 = SR501_Check();/*人體檢測*/
value_light = LIght_Intensity();/*光照度傳感器獲取數據*/
sprintf(str, "光照:%.1flx ",value_light);
Gui_DrawFont_GBK16(4,70,YELLOW,BLACK,(u8 *)str);
value_mq2 = MQ2_GetPPM();/*MQ2傳感器獲取煙霧數據*/
sprintf(str, "煙霧:%.1f ppm ",value_mq2);
Gui_DrawFont_GBK16(4,90,BLUE,BLACK,(u8 *)str);
value_mq7 = MQ7_GetPPM();/*MQ7傳感器獲取一氧化碳數據*/
sprintf(str, " CO :%.1f ppm ",value_mq7);
Gui_DrawFont_GBK16(4,110,GREEN,BLACK,(u8 *)str);
OneNet_SendData(); //發送數據
timeCount = 0;
ESP8266_Clear();
}
if((DHT11_Data.temp_int > 30) || (DHT11_Data.humi_int > 70) || ((int)value_mq2 >= max_mq2) || ((int)value_mq7 >= max_mq7))
{
BEEP = 0; //蜂鳴器報警
}
else
{
BEEP = 1; //蜂鳴器關閉
}
if(value_light < min_light)
{
LED2 = 0; //外接燈亮
}
else
{
LED2 = 1; //外接燈滅
}
}
}
復制代碼
原理圖: 無
仿真: 無
代碼:
程序.7z
(253.71 KB, 下載次數: 0)
2025-5-31 05:25 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
55556hm
時間:
2025-6-10 12:02
東西很好
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91大神在线资源观看无广告
|
中文天堂网
|
国产免费一区二区
|
国产视频福利在线观看
|
久久蜜桃av一区二区天堂
|
青草久久免费视频
|
亚洲欧美日韩网站
|
日韩和的一区二在线
|
古典武侠第一页久久777
|
久久精品视频在线免费观看
|
中文字幕av第一页
|
国产一区亚洲
|
日日骑
|
wwww.xxxx免费
|
欧美成人手机在线
|
午夜成人免费视频
|
成人福利在线
|
精品久久久久久亚洲综合网站
|
在线国产欧美
|
国产精品美女
|
国产精品成人一区二区
|
久久在线
|
91看片网址
|
精品国产区
|
久久小视频
|
三级黄视频在线观看
|
密室大逃脱第六季大神版在线观看
|
国产成人精品综合
|
在线免费观看黄色网址
|
久久久资源
|
日韩在线观看一区
|
在线国产视频观看
|
成人免费在线观看
|
国产精品久久久久久妇女6080
|
成人国产精品色哟哟
|
日本成人在线网址
|
日韩不卡视频在线
|
99re国产精品
|
久久99精品久久久久
|
午夜欧美日韩
|
日日骚网
|