女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32項目分享:智能鞋柜

機智云 ? 2025-05-27 18:04 ? 次閱讀

項目成品圖片:


edc154c0-3ae1-11f0-986f-92fbcf53809c.jpg


項目簡介


1.功能詳解


STM32智能鞋柜

功能如下:


DHT11檢測鞋柜溫濕度,溫度低于閾值開啟加熱,濕度高于閾值開啟加熱和通風;

PM2.5傳感器檢測粉塵濃度,當粉塵濃度值大于設置最大值,進行通風

MQ-135檢測鞋柜空氣質量,過高時啟動紫外線殺菌

光電紅外傳感器檢測柜門狀態,關閉時,自動打開消毒燈,打開時,消毒燈關閉

光敏傳感器檢測光照值,光照值低于閾值且鞋柜門打開時,開啟燈光

按鍵可調節閾值

顯示屏顯示當前測量值

藍牙模塊將測量數據發送到手機端,并可以控制加熱、除濕、通風、消毒、照明以及模式切換


2.材料清單

STM32F103C8T6單片機

OLED 屏幕

DHT11溫濕度傳感器

PM2.5粉塵傳感器

MQ-135空氣質量傳感器

光電紅外傳感器

光敏傳感器

BT04A藍牙模塊

加熱片

風扇模塊

UV消毒燈

照明燈

有源蜂鳴器


02


原理圖設計


ede7edb0-3ae1-11f0-986f-92fbcf53809c.png


03

PCB硬件設計


PCB圖

ee2300d0-3ae1-11f0-986f-92fbcf53809c.pngee51acd2-3ae1-11f0-986f-92fbcf53809c.png


04

程序設計

#include"sys.h"#include"stdio.h"#include"usart.h"#include"stdlib.h"#include"math.h"#include"delay.h"#include"gpio.h"#include"key.h"#include"oled.h"#include"usart.h"#include"dht11.h"#include"adc.h"#include"pm25.h"

/**********************************變量定義**********************************/uint8_tkey_num =0;//按鍵掃描標志位uint8_tflag_display =0;//顯示界面標志位uint32_ttime_num =0;//10ms計時chardisplay_buf[32];//顯示緩存區
_Bool flag_mode =0; //模式標志位intjr_flag =0;intxd_flag =0;inttf_flag =0;intzm_flag =0;
u16 humi_value =0;//鞋柜濕度值u16 humi_max =70;//鞋柜濕度最大值u16 temp_value =0;//鞋柜溫度值u16 temp_min =10; //最小溫度變量
u16 light_value =0;//光照值u16 light_min =50; //光照最小值
u16 pm25_value =0; //粉塵值u16 pm25_max =250; //粉塵最大值
u16 nh_value =0; //氨氣值u16 nh_max =80; //氨氣最大值
externuint8_tusart1_buf[256];//串口1接收數組

/**********************************函數聲明**********************************/voidKey_function(void);//按鍵函數voidMonitor_function(void);//監測函數voidDisplay_function(void);//顯示函數voidManage_function(void);//處理函數

/***********主函數*****/intmain(void){Delay_Init(); //延時初始化 Gpio_Init(); //IO初始化Key_Init(); //按鍵初始化Oled_Init(); //OLED初始化Oled_Clear_All();//清屏Usart1_Init(9600); //串口1初始化Adc_Init();//ADC初始化PM25_Init();//PM2.5初始化 while(DHT11_Init());//DHT11初始化Delay_ms(1000);Delay_ms(1000);
while(1){Key_function();//按鍵函數Monitor_function();//監測函數Display_function();//顯示函數Manage_function();//處理函數
time_num++;//計時變量+1Delay_ms(10); if(time_num %10==0) LED_SYS = ~LED_SYS;if(time_num >=5000){time_num =0;}}}
/***********按鍵函數*****/voidKey_function(void){key_num =Chiclet_Keyboard_Scan(0);//按鍵掃描if(key_num !=0)//有按鍵按下{switch(key_num){case1://按鍵1:切換界面flag_display++; if(flag_display >=6) flag_display =0;Oled_Clear_All();//清屏break;
case2://按鍵2:加鍵switch(flag_display){case0://界面0:
break;
case1://界面1:溫度最小值+1if(temp_min case2://界面2:濕度最大值+1if(humi_max case3://界面3:粉塵最大值+1if(pm25_max case4://界面4:氨氣最大值+1if(nh_max case5://界面5:光照最小值+1if(light_min
default:break;}break;
case3://按鍵3:減鍵switch(flag_display){case0://界面0:自動模式flag_mode =0;break;
case1://界面1:溫度最小值-1if(temp_min >0)temp_min--;break;
case2://界面2:濕度最大值-1if(humi_max >0)humi_max--;break;
case3://界面3:粉塵最大值-1if(pm25_max >0)pm25_max--;break;
case4://界面4:氨氣最大值-1if(nh_max >0)nh_max--;break;
case5://界面5:光照最小值-1if(light_min >0)light_min--;break;
default:break;}break;
default:break;}}}
/***********監測函數*****/voidMonitor_function(void){if(flag_display ==0)//測量界面{if(time_num %10==0){Dht11_Get_Temp_Humi_Value(&temp_value,&humi_value);//獲取溫濕度值light_value =100-30*(Get_Adc_Average(0,3)*3.3/4096.0);//獲取光照強度
pm25_value =Pm25_Get_Value(3);//獲取PM2.5
if(NH ==0)nh_value =90*(Get_Adc_Average(4,3)*3.3/4096.0);//獲取氨氣值elsenh_value =0;
if(time_num %30==0)//發送測量數據{UsartPrintf(USART1,"\r\n溫度:%d.%dC 濕度:%d.%d%%",temp_value/10,temp_value%10,humi_value/10,humi_value%10);UsartPrintf(USART1,"\r\n粉塵:%d 空氣質量:%d",pm25_value,nh_value);UsartPrintf(USART1,"\r\n光照:%d ",light_value);
if(DOOR ==1)UsartPrintf(USART1," 柜門:關");elseUsartPrintf(USART1," 柜門:開");
if(flag_mode ==0)UsartPrintf(USART1,"\r\n模式:自動");elseUsartPrintf(USART1,"\r\n模式:手動");}}
if(USART1_WaitRecive() ==0){if(usart1_buf[0] =='A')flag_mode =0; //切換自動模式elseif(usart1_buf[0] =='B'){flag_mode =1; //切換手動模式jr_flag++;if(jr_flag%2==1){RELAY_JR=1; //開加熱}elseRELAY_JR =0;}
elseif(usart1_buf[0] =='C'){flag_mode =1; //切換手動模式tf_flag++;if(tf_flag%2==1){RELAY_TF=1; //開通風}elseRELAY_TF =0;}
elseif(usart1_buf[0] =='D'){flag_mode =1; //切換手動模式xd_flag++;if(xd_flag%2==1){RELAY_XD =1; //開消毒}elseRELAY_XD =0;}
elseif(usart1_buf[0] =='E'){flag_mode =1; //切換手動模式zm_flag++;if(zm_flag%2==1){RELAY_ZM =1; //開照明}elseRELAY_ZM =0;
}

USART1_Clear();}}}
/***********顯示函數*****/voidDisplay_function(void){switch(flag_display)//根據不同的顯示模式標志位,顯示不同的界面{case0://界面0:測量界面,顯示測量值及模式Oled_ShowCHinese(1,0,"溫");sprintf(display_buf,":%d.%dC ",temp_value/10,temp_value%10);Oled_ShowString(1,2, display_buf);
Oled_ShowCHinese(1,4,"濕");sprintf(display_buf,":%d.%d%% ",humi_value/10,humi_value%10);Oled_ShowString(1,10, display_buf);
Oled_ShowCHinese(2,0,"粉");sprintf(display_buf,":%d ",pm25_value);Oled_ShowString(2,2, display_buf);
Oled_ShowCHinese(2,4,"氣");sprintf(display_buf,":%d ",nh_value);Oled_ShowString(2,10, display_buf);
Oled_ShowCHinese(3,0,"光");sprintf(display_buf,":%d ",light_value);Oled_ShowString(3,2, display_buf);
Oled_ShowCHinese(3,4,"柜門");Oled_ShowString(3,12,":");
if(DOOR ==1)Oled_ShowCHinese(3,7,"關");elseOled_ShowCHinese(3,7,"開");
if(flag_mode ==1)Oled_ShowCHinese(4,2,"手動模式");elseOled_ShowCHinese(4,2,"自動模式");
break;
case1://界面1:顯示設置溫度最小值Oled_ShowCHinese(1,0,"設置溫度最小值");if(time_num %5==0){sprintf(display_buf,"%d ",temp_min);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
case2://界面2:顯示設置濕度最大值Oled_ShowCHinese(1,0,"設置濕度最大值");if(time_num %5==0){sprintf(display_buf,"%d ",humi_max);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
case3://界面3:顯示設置粉塵最大值Oled_ShowCHinese(1,0,"設置粉塵最大值");if(time_num %5==0){sprintf(display_buf,"%d ",pm25_max);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
case4://界面4:顯示設置氨氣最大值Oled_ShowCHinese(1,0,"空氣質量最大值");if(time_num %5==0){sprintf(display_buf,"%d ",nh_max);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
case5://界面5:顯示設置光照最小值Oled_ShowCHinese(1,0,"設置光照最小值");if(time_num %5==0){sprintf(display_buf,"%d ",light_min);Oled_ShowString(2,7, display_buf);}if(time_num %10==0){Oled_ShowString(2,7," ");}break;
default:break;}}
/***********處理函數*****/voidManage_function(void){if(flag_display ==0)//測量界面{if(flag_mode ==0){if(DOOR ==1) //如果鞋柜門是關閉的,關照明燈,如果氨氣超高,開消毒燈 { RELAY_ZM =0;if(nh_max < nh_value){RELAY_XD =?1;
} else{RELAY_XD =0;} } else //如果鞋柜門是打開的,關消毒,如果光照低于最小值開照明燈 { RELAY_XD =0; if(light_value < light_min)? ? ? ? {? ? ? ? ? RELAY_ZM =?1;? ? ? ? }? ? ? ? else? ? ? ? {? ? ? ? ? RELAY_ZM =?0;? ? ? ? }? ? ? }
if(temp_value < temp_min*10?|| humi_value > humi_max*10) { //如果溫度低于最小值或濕度大于最大值,那么打開加熱 RELAY_JR =1; } else { RELAY_JR =0; }
if(humi_value > humi_max*10||pm25_value > pm25_max){//如果是濕度大于最大值或粉塵大于最大值開通風RELAY_TF =1;}else{RELAY_TF =0;}

if(nh_max < nh_value||pm25_value > pm25_max){BEEP=1;}elseBEEP=0;
}}else//設置界面,關閉所有繼電器{RELAY_ZM =0; RELAY_TF =0; RELAY_JR =0; RELAY_XD =0;}}


05

實驗效果

ee85a5be-3ae1-11f0-986f-92fbcf53809c.jpgeea74462-3ae1-11f0-986f-92fbcf53809c.jpg


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 單片機
    +關注

    關注

    6061

    文章

    44910

    瀏覽量

    646477
  • pcb
    pcb
    +關注

    關注

    4350

    文章

    23403

    瀏覽量

    406482
  • STM32
    +關注

    關注

    2289

    文章

    11010

    瀏覽量

    362167
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    誠接stm32項目

    誠接stm32項目價格私聊
    發表于 05-17 10:20

    stm32項目搭建基礎

    初學者吧stm32項目搭建基礎好吧進入主題,我們現在要搭建一個stm32項目我還是把問題寫在最開始把1. 注冊keil你的keil需要注冊當你編寫了幾行類似于helloworld的小
    發表于 08-23 08:47

    如何在IAR for ARM中創建STM32項目

    如何在IAR for ARM中創建STM32項目
    發表于 11-30 07:16

    STM32項目開發中超級實用技巧分享

    STM32項目開發中超級實用技巧一. 利用軟啟動打補丁二. 優化等級盡量選擇不優化三. 合理利用開關總中斷所有的熱愛都要不遺余力,真正喜歡它便給它更高的優先級,和更多的時間吧!關于STM32其它
    發表于 01-21 06:22

    CubeMX如何創建stm32項目

    CubeMX如何創建stm32項目
    發表于 02-14 06:24

    基于HAL庫的STM32項目問題描述

    問題描述最近在做的一個基于HAL庫的STM32項目需要從多個SPI總線設備讀取數據并通過DMA從串口發送,程序如下:(RxData為從SPI總線讀取到的數據)sprintf(tempt, "
    發表于 02-28 11:25

    STM32項目設計:基于STM32F4的mp3、wav音樂播放器 (UCOSIII操作系統、GUI控件)

    STM32項目設計:基于STM32F4的mp3、wav音樂播放器 (UCOSIII操作系統、GUI控件)
    發表于 11-15 15:21 ?50次下載
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>設計:基于<b class='flag-5'>STM32</b>F4的mp3、wav音樂播放器 (UCOSIII操作系統、GUI控件)

    ADF2022項目開源

    電子發燒友網站提供《ADF2022項目開源.zip》資料免費下載
    發表于 07-05 09:42 ?2次下載
    ADF2022<b class='flag-5'>項目</b>開源

    STM32項目分享:智能家居(機智云)系統

    STM32項目分享:智能家居(機智云)系統
    的頭像 發表于 07-28 08:10 ?2961次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>分享:<b class='flag-5'>智能</b>家居(機智云)系統

    STM32項目實戰:基于STM32F4的智能燈光控制系統(LVGL),附項目教程/源碼

    智能燈光控制系統_STM32F4》項目完整文檔、項目源碼,私信小雯老師免費領取。STM32項目
    的頭像 發表于 10-17 16:16 ?1639次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>F4的<b class='flag-5'>智能</b>燈光控制系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目實戰:基于STM32U5的智能燈光控制系統(LVGL),附項目教程/源碼

    智能燈光控制系統_STM32U5》項目完整文檔、項目源碼,點擊免費領取。項目資料領取:https://s.c1ns.cn/F5XyU
    的頭像 發表于 11-07 18:50 ?2067次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的<b class='flag-5'>智能</b>燈光控制系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目實戰:基于STM32U5的火災報警系統(LVGL),附項目教程/源碼

    《火災報警系統_STM32U5》項目完整文檔、項目源碼,點擊下方鏈接免費領取。項目資料領取https://s.c1ns.cn/F5XyUSTM32
    的頭像 發表于 11-13 14:18 ?1563次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的火災報警系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目實戰:基于STM32U5的智能大棚溫控系統(LVGL),附項目教程/源碼

    智能大棚溫控系統_STM32U5》項目完整文檔、項目源碼,點擊下方鏈接免費領取。項目資料領取https://s.c1ns.cn/F5XyU
    的頭像 發表于 11-13 17:08 ?1581次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>實戰:基于<b class='flag-5'>STM32</b>U5的<b class='flag-5'>智能</b>大棚溫控系統(LVGL),附<b class='flag-5'>項目</b>教程/源碼

    STM32項目分享:智能臺燈系統

    01—項目簡介1.功能詳解基于STM32智能臺燈系統。功能如下:亮度控制:按鍵控制照明燈的亮度(5擋亮度)計時功能:按鍵啟動計時,累
    的頭像 發表于 11-29 01:02 ?1871次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>分享:<b class='flag-5'>智能</b>臺燈系統

    STM32項目分享:STM32智能語音臺燈

    項目簡介1.功能詳解STM32智能語音臺燈功能如下:1.STM32F103C8T6單片機系統板作為主控單元2.按鍵切換模式,支
    的頭像 發表于 03-15 10:02 ?1019次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>項目</b>分享:<b class='flag-5'>STM32</b><b class='flag-5'>智能</b>語音臺燈