徐 磊 涂 強
(江西科技師范大學 江西 南昌 330100)
智能家居照明系統(tǒng)設計
徐 磊 涂 強
(江西科技師范大學 江西 南昌 330100)
智能家居是以居民住宅為平臺,結合當今的物聯(lián)網(wǎng)技術。使人們的家用電器可以通過手機等移動終端進行控制,并且隨著科學技術的發(fā)展,智能家居會朝著更便捷、更舒適、更綠色、更節(jié)能的方向發(fā)展。智能家庭照明系統(tǒng),是通過設計并制作一整套控制系統(tǒng),使人們的家具照明朝著更人性化的方向發(fā)展。使用這個智能家庭照明系統(tǒng),人們可以用手機遠程對自己家中的照明實現(xiàn)控制,也可以監(jiān)察照明情況。
智能家居;照明;物聯(lián)網(wǎng)
基于STC15W404AS的智能家居照明系統(tǒng)設計的研究是為了適應現(xiàn)在物聯(lián)網(wǎng)技術與生活越來越緊密的潮流。通過設計這個智能家居照明系統(tǒng)去學習關于物聯(lián)網(wǎng)相關的技術,同時也為了方便人們的生活,如果本次研究結果達到預期目標,我們將會在智能家居上有重大突破,為將來做其他的智能家居方面的研究奠定一個夯實的基礎。
另一方面,我們都十分向往想科幻電影之中人們的生活情景,而這個研究與其有一定的相似之處,我們認為這項研究將會為實現(xiàn)科幻電影中的生活方式有一定的幫助,希望通過自己的努力來見證這一切的實現(xiàn)。
本系統(tǒng)用Atemga328p單片機做為控制器,通過外部按鈕來切換使用局域網(wǎng)和互聯(lián)網(wǎng)兩種模式,局域網(wǎng)模式只能在很小的范圍對LED燈的亮度進行調(diào)控,當超出范圍后便不能控制;互聯(lián)網(wǎng)模式只有有網(wǎng)絡信號的地區(qū)都能對LED燈進行控制。LED燈亮度通過手機APP向單片機發(fā)送指令改變PWM波占空比大小來控制。
(一)硬件電路總體框圖
說明:本系統(tǒng)用Atemga328p單片機做為控制器,通過外部按鈕來切換使用局域網(wǎng)和互聯(lián)網(wǎng)兩種模式,局域網(wǎng)模式只能在很小的范圍對LED燈的亮度進行調(diào)控,當超出范圍后便不能控制;互聯(lián)網(wǎng)模式只有有網(wǎng)絡信號的地區(qū)都能對LED燈進行控制。
(二)微處理器的選擇。單片機采用Atemga328p,速度是傳統(tǒng)51的20倍,體積小巧,擁有16k rom 1k Ram。
20多個IO口。這款單片機有足夠的內(nèi)存來存儲通信協(xié)議,同時它的運行速度也遠超傳統(tǒng)的51單片機,而價格也差不多。
(三)WIFI模塊。WIFI模塊我們采用的是ESP8266。它是一款超低功耗的UART-WiFi透傳模塊,擁有很小封裝尺寸和超低能耗技術,專為移動設備和物聯(lián)網(wǎng)應用設計,可將用戶的物理設備連接到WiFi無線網(wǎng)絡上,進行互聯(lián)網(wǎng)或局域網(wǎng)通信,實現(xiàn)聯(lián)網(wǎng)功能。支持AT+控制指令集。
(四)路由器。任意一款可以聯(lián)網(wǎng)的無線路由度能滿足需求。
(一)主程序框架
說明:
(二)算法
void keyHandle()
{
unsigned char stat;
unsigned long ntimer,ntimer2;
stat = key_1.keyscan();
if(stat == KEY_DOWING)
{
ntimer = millis();
}
else if(stat == KEY_DOWN)
{
if((millis()-ntimer)<=500)
{
myGizwits.setBindMode(WIFI_SOFTAP_MODE);
}
else if((millis()-ntimer)>= 3000)
{
myGizwits.setBindMode(WIFI_AIRLINK_MODE);
}
}
stat = key_2.keyscan();
if(stat == KEY_DOWING)
{
ntimer2 = millis();
}
else if(stat == KEY_DOWN)
{
if((millis()-ntimer)<=500)
{
myGizwits.setBindMode(WIFI_PRODUCTION_TEST);
}
else if((millis()-ntimer)>= 3000)
{
myGizwits.setBindMode(WIFI_RESET_MODE);
}
}
}
void setup(){
// put your setup code here,to run once:
Serial.begin(9600);
pinMode(LED,OUTPUT);
pinMode(KEY1,INPUT_PULLUP);
pinMode(KEY2,INPUT_PULLUP);
myGizwits.begin();
key_1.setpin(14);
key_2.setpin(15);
}
bool varR_LED = 0;
unsigned long varR_LED_NUM = 0;
void loop(){
keyHandle();
//Configure network
//if(XXX)//Trigger Condition
//myGizwits.setBindMode(0x02);//0x01:Enter AP Mode;0x02:Enter Airlink Mode
if(myGizwits.hasBeenSet(EVENT_LED_NUM))
{
myGizwits.read(EVENT_LED_NUM,&varR_LED_NUM);//Address for storing data
}
if(myGizwits.hasBeenSet(EVENT_LED))
{
myGizwits.read(EVENT_LED,&varR_LED);
}
if(varR_LED == 1)
{
//analogWrite(LED,(unsigned char)varR_LED_NUM);
//myGizwits.write(VALUE_LED_NUM,VALUE_TYPE_MAX);
analogWrite(LED,varR_LED_NUM);
}
else
{
analogWrite(LED,0);
}
myGizwits.process();
}
本次研究最終得以完全實現(xiàn)預期的功能,實現(xiàn)了在局域和遠程控制LED燈的亮度,通過本課題的學習,我們學會了遠程操控的方法,相信本次的研究成果可以運用到許多需要用到遠程控制的項目之中!
徐磊(1995.07-),男,漢族,江西南昌人,大學本科,江西科技師范大學;涂強(1994.08-),男,漢族,江西人,大學本科,江西科技師范大學。