王法杰
(西安航空職業(yè)技術學院 電子工程學院, 西安 710089)
隨著智能家居的快速發(fā)展與廣泛應用,對晾衣架的智能化也提出了更高的要求。基于單片機的智能晾衣架系統(tǒng)有手動和自動兩種模式,手動模式與傳統(tǒng)晾衣架功能一樣,自動模式能自動識別白天和夜晚,雨天與晴天,使衣物在干燥晴天得到晾曬,夜晚或陰雨天自動收回,也可在一定距離范圍內通過遙控來控制晾衣架伸縮,通過限位開關將晾衣架的伸縮控制在合理的范圍之內[1]。該晾衣架系統(tǒng)結構簡單,功能豐富,可以滿足不同用戶的需求,具有一定的推廣使用價值。
智能晾衣架設計采用STC89C52RC為主控芯片,利用光敏電阻檢測光照強度,利用溫濕度傳感器檢測環(huán)境的濕度,超過閾值則晾衣架的電機進行動作實現(xiàn)晾衣架的智能化,濕度的測量值可通過兩位一體共陰極數(shù)碼管進行顯示,直觀方便,同時,通過遙控器按鍵也可控制晾衣架動作。用紅黃藍三種顏色LED小燈指示晾衣架的工作狀態(tài),紅燈用于工作模式選擇指示,紅燈滅時,表示手動遙控模式,通過遙控按鍵控制晾衣架的伸縮功能;紅燈亮時,表示自動模式,當濕度大于80%RH或者光敏電阻檢測到是夜晚時,黃燈亮,電機反轉,執(zhí)行晾衣架收回功能,當藍燈亮時,說明濕度小于80%RH并且光敏電阻檢測到是白天,電機正轉執(zhí)行晾衣架伸出功能[2]。通過模式選擇開關按鍵進行模式切換,模式切換或者按下伸縮限位開關時,蜂鳴器報警提示,其原理框圖如圖1所示。
圖1 智能晾衣架原理框圖
濕度檢測模塊主要采用溫濕度傳感器DHT11來檢測,其濕度量程為20%-90%RH, 溫濕度傳感器2腳是輸出引腳,接5 K上拉電阻,與單片機P2.0相連接,定義為“sbit DATA=P2^0;”。由于用光敏電阻對光照進行檢測,所以溫濕度傳感器主要用其濕度控制功能。DHT11采用單總線方式,即數(shù)據(jù)的讀寫都占用同一根總線,所以編寫操作程序都必須嚴格按照時序進行,即單片機發(fā)送一次開始信號后,DHT11從低功耗模式轉換到高速模式,等待主機開始信號結束后,DHT11發(fā)送響應信號,送出40 bit數(shù)據(jù),高位在先,并觸發(fā)一次信號采集,用戶可選擇讀取部分數(shù)據(jù)。數(shù)據(jù)格式為“8 bit濕度整數(shù)數(shù)據(jù)+8 bit濕度小數(shù)數(shù)據(jù)+8 bit溫度整數(shù)數(shù)據(jù)+8 bit溫度小數(shù)數(shù)據(jù)+8 bit校驗和”[3],由DHT11時序得知,主機先發(fā)送復位信號給從機,主機拉低總線至少18 ms,通過執(zhí)行語句“DATA=0;delay_ms(20);”拉低20 ms,然后再拉高總線,由上拉電阻拉高延時20 us-40 us,程序編寫可取中間值30 us(“DATA=1;delay_us(30);”),主機發(fā)送完復位信號,DHT11發(fā)送響應信號,檢測到復位信號后,觸發(fā)一次采樣,并拉低總線80 us表示響應信號,通知主機數(shù)據(jù)已準備好,如果有低電平響應,則接著判斷從機DHT11是否拉高總線80 us,如果拉高80 us,之后開始傳輸數(shù)據(jù)進入數(shù)據(jù)接收狀態(tài)[4]。為了防止中斷干擾總線時序,操作前先關總中斷(“EA=0”),操作完畢再打開(“EA=1”)。DHT11進行溫濕度數(shù)據(jù)采集的流程圖如圖2所示:
判斷DHT11響應的主要代碼如下:
if(!DATA) //判斷從機是否有低電平響應
{ U8FLAG=2;
while((!DATA)&&U8FLAG++);//等待DHT11拉低總線80US
U8FLAG=2;
while((DATA)&&U8FLAG++);//等待DHT11釋放總線80US
COM();//讀濕度函數(shù)
U8RH_data_H_temp=U8comdata;//濕度整數(shù)部分COM();
U8RH_data_L_temp=U8comdata;//濕度小數(shù)部分COM();
U8T_data_H_temp=U8comdata;//溫度整數(shù)部分COM();
U8T_data_L_temp=U8comdata;//溫度小數(shù)部分COM();
U8checkdata_temp=U8comdata;//校驗八位
DATA=1;
U8temp=(U8T_data_H_temp+U8T_data_L_temp+U8RH_data_H_temp+U8RH_data_L_temp);//數(shù)據(jù)校驗
圖2 DHT11溫濕度采集流程圖
如果數(shù)據(jù)校驗正確則有返回值(“return 1”),否則DHT11傳感器不響應(“return 0”)。其中“COM”函數(shù)為濕度讀取函數(shù),設計思路是,當50US低電平后,拉高總線,判斷高電平持續(xù)時間,如果是“26-28US”表示數(shù)據(jù)“0”,“70US”則為數(shù)據(jù)“1”,然后按照高位在先的順序傳送數(shù)據(jù)。
數(shù)據(jù)發(fā)射時,按鍵分別和SC2262-IR的數(shù)據(jù)端11腳、12腳和13腳連接,實現(xiàn)模式切換、晾衣架伸出和收縮功能。
數(shù)據(jù)發(fā)射模塊的工作頻率為315M,采用315M無線發(fā)射板,按鍵按下,SC2262-IR編碼芯片的17腳和發(fā)送模塊315M的3腳相連,通過315M模塊發(fā)送數(shù)據(jù),SC2272-m4和315M無線接收模塊組合電路將接收到信號進行解碼,解碼的數(shù)據(jù)通過SC2272-m4的11腳、12腳和13腳輸出,再經過三極管反相后送到單片機P1.1、P1.2和P1.3端口,單片機處理后從P3.0和P3.5輸出控制繼電器的吸合與關斷,從而控制電機轉動方向。在仿真圖里直接用按鍵開關接到單片機的相應端口[5]。P1.1是進行自動手動模式切換功能,當該位位“0”時,說明切換模式已選擇,同時設置切換標志位(“change_flag”),當切換標志位為“1”時,執(zhí)行手動模式選擇,即無線遙控操作,當切換標志位為“0”時,切換到自動模式。遙控模式時,進一步判斷伸出按鍵是否按下,當伸出按鍵按下并且沒有按下伸出限位開關時,晾衣架伸出,同時,單片機的P3.0輸出為低電平,經與三極管Q1相連的繼電器吸合,電機正轉,伸出指示燈(P1.5)點亮,再按一次則停止伸出,伸出指示燈熄滅,操作完成后通過語句“while(!in_go);”釋放伸出按鍵開關[6]。主要代碼如下:
else if(change_flag==1)//手動模式選擇
{ if((in_go==0)&&(limit_go==1))//伸出按鍵是否按下
{ delay(50); //延時去抖
if((in_go==0)&&(limit_go==1))//再次判斷按鍵狀態(tài)
{ buzz=0;
delay(200); //按鍵音,蜂鳴器提示
buzz=1;
out_back=1; //禁止收回
out_go=~out_go; //按一下伸出,再按下,停止動作
led_back=1; //收回指示燈滅
led_go=out_go; //晾衣架伸出時,伸出指示燈亮
flag_shan1=0;}
while(!in_go);//釋放伸出按鍵}
同樣思路,可以編寫遙控按鍵收回、按下伸出限位開關和按下收回限位開關程序。
程序編譯時從主函數(shù)開始執(zhí)行,主函數(shù)里設置開機默認為自動模式(“l(fā)ed_zhishi=0;”),在程序開始定義為“sbit led_zhishi=P1^7;”,初始化定時器,在“while”語句里調用工作模式切換函數(shù)和數(shù)碼管顯示函數(shù),用“if”語句判斷,當濕度轉換完成時,只讀取濕度的整數(shù)部分(“humidity = U8RH_data_H;”),并且設定濕度閾值為80%RH,數(shù)碼管上只顯示數(shù)值[7]。
數(shù)碼管顯示函數(shù)主要實現(xiàn)對濕度整數(shù)部分進行個位和十位的顯示,個位顯示語句為“P0=table[humidity%10];”,十位顯示語句為“P0=table[humidity/10];”,通過P0口進行段選顯示。位選由P2.2和P2.1控制,P2.2接數(shù)碼管個位位選引腳,個位顯示時P2.2為低電平,P2.1接數(shù)碼管十位位選引腳,十位顯示時P2.1為低電平,由于動態(tài)顯示速度快,所以看上去是同時點亮。
電路仿真時,為了形象直觀,用按鍵開關直接控制單片機來驅動電機的轉動。無線發(fā)送模塊的硬件連接部分如圖3所示。
圖3 無線發(fā)送模塊
發(fā)送模塊主要由SC2262-IR和315M發(fā)射模塊分組成,對應的接收模塊電路主要由SC2272-m4和315M接收模塊組成,接收到的信號由SC2272-m4的11,12和13引腳輸出經三極管反相后送給單片機P1.1,P1.2和P1.3端口[8]。仿真圖如圖4所示。
圖4 智能晾衣架仿真電路圖
仿真部分直接用按鍵開關連接到了單片機的P1.1,P1.2和P1.3,省略了遙控部分,效果與實物制作一致,當前仿真圖顯示自動模式狀態(tài),光敏電阻顯示為白天并且濕度小于閾值時(“if(light==1&&flag_HH==0)”),其中,定義光敏電阻經三極管輸出接單片機P1.0,聲明語句為“sbit light=P1^0;”,變量“flag_HH”在主函數(shù)設置濕度閾值時賦值,超過閾值置1,不超過閾值清零,圖中仿真為晾衣架伸出狀態(tài),通過調整光敏電阻的滑動端和DHT11的調節(jié)按鍵可以仿真出不同天氣條件下晾衣架的工作狀態(tài)[9]。實物制作如圖5所示。
其中左邊為系統(tǒng)控制板,右邊為遙控電路,實物制作安裝了無線接收與發(fā)送模塊,可以實現(xiàn)遠距離控制,實用性更強,實物圖中當前狀態(tài)顯示超過閾值范圍黃燈亮,電機反轉,晾衣架收回功能[10]。
圖5 智能晾衣架實物制作
基于STC89C52RC單片機的智能晾衣架,可以通過無線遙控控制晾衣架的伸縮,到一定程度按下限位開關時電機停轉,蜂鳴器報警,能夠自動根據(jù)環(huán)境的光線和周圍環(huán)境濕度調整電機轉動來控制晾衣架的伸縮,晾衣架伸縮時,或工作模式切換時,對應指示燈分別點亮指示[11]。經仿真與實驗驗證,該智能晾衣架系統(tǒng)設計優(yōu)良、使用方便、功能豐富,具有一定的推廣和實用價值。