項(xiàng)目說(shuō)明
樓宇照明在日常生活舉足輕重,樓宇照明控制系統(tǒng)在一定程度上實(shí)現(xiàn)對(duì)能源的節(jié)約及便利管理者的使用和控制。本次設(shè)計(jì)以STM32F103C8T6為核心處理器,紅外線傳感器與光敏電阻傳感器模塊作為檢測(cè)裝置,用于檢測(cè)光照強(qiáng)度及人員經(jīng)過(guò)情況;繼電器作為控制裝置,通過(guò)繼電器狀態(tài)改變實(shí)現(xiàn)自動(dòng)控制;ESP8266無(wú)線通信模塊作為通信裝置,實(shí)現(xiàn)遠(yuǎn)程通信功能,將相關(guān)數(shù)據(jù)上傳至云平臺(tái),并且接收云平臺(tái)下發(fā)控制命令。照明系統(tǒng)可通過(guò)傳感器檢測(cè)、單片機(jī)系統(tǒng)控制、終端控制三種方式進(jìn)行,且終端可以對(duì)相關(guān)信息實(shí)現(xiàn)監(jiān)控功能。傳感器檢測(cè)方面,在光照強(qiáng)度較弱的情況下,若檢測(cè)到有人經(jīng)過(guò),自動(dòng)開(kāi)啟燈光照明,并延時(shí)熄滅。
實(shí)物圖:
一、緒論
1.1 研究背景
當(dāng)今社會(huì)飛速發(fā)展,投入生產(chǎn)生活的能源與日俱增,為實(shí)現(xiàn)可持續(xù)發(fā)展,我國(guó)倡導(dǎo)綠色發(fā)展理念。每個(gè)建筑物中都有大量的照明工具,樓宇照明作為日常生活中必不可少的一部分,為我們的生活提供許多便利,然而在提供便利的同時(shí),其消耗的能源也是巨大的。傳統(tǒng)照明方式一般采取定時(shí)開(kāi)關(guān)或人工手動(dòng)開(kāi)關(guān)燈光的方式,燈具徹夜保持工作狀態(tài)依然會(huì)消耗大量能源,并且減少燈具的使用壽命。在惡劣天氣下,若管理者疏忽,則業(yè)主照明需求無(wú)法及時(shí)滿足,在浪費(fèi)能源的同時(shí)也為管理者工作和業(yè)主使用帶來(lái)不必要的麻煩。
1.2 研究意義
使用樓宇智能照明系統(tǒng)可以最大化實(shí)現(xiàn)燈光方面節(jié)能減排,利用最少的能源保證要求的照明水平。所以在控制時(shí),只需要在每個(gè)照明回路的開(kāi)關(guān)上安裝一個(gè)節(jié)點(diǎn)控制器就可以了。這樣既可以滿足建筑物中各種照明需求,又能節(jié)約能源。
智能照明控制系統(tǒng)依據(jù)當(dāng)前環(huán)境光照強(qiáng)度進(jìn)行判斷,在光照較弱的情況下,通過(guò)傳感器檢測(cè)人員經(jīng)過(guò)情況進(jìn)行自動(dòng)開(kāi)關(guān)燈控制,實(shí)現(xiàn)“人來(lái)燈亮,人走燈滅”最大限度減少能源消耗。另外在主控制器設(shè)置控制按鈕,管理者可以通過(guò)按鈕控制燈光亮滅;與此同時(shí),管理者也可以通過(guò)網(wǎng)頁(yè)實(shí)現(xiàn)對(duì)燈光照明情況的監(jiān)控,并可以實(shí)現(xiàn)對(duì)每層樓燈光的控制,對(duì)于管理方面更為快捷高效。
1.4 研究?jī)?nèi)容
本次設(shè)計(jì)完成樓宇照明系統(tǒng)設(shè)計(jì),能夠?qū)崿F(xiàn)燈光自動(dòng)照明以及遠(yuǎn)程控制,該系統(tǒng)以STM32F103C8T6單片機(jī)為核心處理器,在光照情況較弱時(shí),利用傳感器檢測(cè)是否由人員經(jīng)過(guò),從而實(shí)現(xiàn)對(duì)樓層照明燈光控制,以求實(shí)現(xiàn)照明系統(tǒng)的高效性及節(jié)省能源。無(wú)線通信模塊可以實(shí)現(xiàn)對(duì)照明系統(tǒng)工作情況的遠(yuǎn)程檢測(cè)和控制,方便管理者工作。
具體工作如下:
(1)使用繼電器作為照明系統(tǒng)的控制開(kāi)關(guān),實(shí)現(xiàn)對(duì)照明系統(tǒng)的自動(dòng)控制;
(2)當(dāng)傳感器檢測(cè)到人員經(jīng)過(guò)時(shí),照明系統(tǒng)自動(dòng)開(kāi)啟,并延時(shí)熄滅;
(3)利用光敏電阻判斷環(huán)境光照情況,確定自動(dòng)照明控制系統(tǒng)是否開(kāi)啟;
(4)管理者可在終端監(jiān)控不同樓層小燈的亮滅情況;
(5)管理者可以在終端控制不同樓層小燈分別亮滅。
二、系統(tǒng)方案設(shè)計(jì)
本課題基于STM32微處理器平臺(tái),實(shí)現(xiàn)對(duì)樓宇照明系統(tǒng)進(jìn)行不同樓層經(jīng)過(guò)人員檢測(cè)、自動(dòng)控制以及遠(yuǎn)程監(jiān)控與控制等功能。在系統(tǒng)設(shè)計(jì)中,實(shí)現(xiàn)微處理器系統(tǒng)電路、信息檢測(cè)電路、遠(yuǎn)程通信電路、繼電器控制電路、按鍵控制電路以及電源電路等系統(tǒng)硬件設(shè)計(jì),并對(duì)檢測(cè)人員、控制、監(jiān)控等功能進(jìn)行代碼化編程,實(shí)現(xiàn)系統(tǒng)軟件設(shè)計(jì)。包括以下幾部分:
(1)微控制器:樓宇智能照明系統(tǒng)采用STM32F103C8T6作為控制核心;
(2)信息檢測(cè)模塊:使用光敏電阻傳感器模塊實(shí)現(xiàn)對(duì)光照強(qiáng)度閾值限制,并在低于閾值(即光照強(qiáng)度較弱)的情況下,使用紅外線傳感器作為對(duì)人員經(jīng)過(guò)檢測(cè)工具;
(3)自動(dòng)控制模塊:利用繼電器作為自動(dòng)控制開(kāi)關(guān),根據(jù)紅外線傳感器輸入信號(hào)進(jìn)行判斷,控制繼電器的吸合實(shí)現(xiàn)對(duì)燈光的自動(dòng)控制;
(4)按鍵電路:?jiǎn)纹瑱C(jī)模擬主控制臺(tái),通過(guò)按鍵控制可以實(shí)現(xiàn)模擬主控制臺(tái)手動(dòng)開(kāi)關(guān)燈功能;
(5)無(wú)線通信模塊:使用esp8266作為無(wú)線通信模塊,連接至云平臺(tái)上傳數(shù)據(jù)、下發(fā)命令實(shí)現(xiàn)對(duì)燈光遠(yuǎn)程控制以及監(jiān)控功能。
整體設(shè)計(jì)框圖如圖所示:
2.1 微控制器方案選擇
微控制器是該樓宇照明系統(tǒng)的控制核心,在設(shè)計(jì)中有兩種方案選擇,分別是STC89C52與STM32F103C8T6。
STC89C52單片機(jī)是一個(gè)低功耗芯片內(nèi)置8KB閃存,可以存儲(chǔ)程序代碼,具有32個(gè)IO管腳,支持串口、定時(shí)器、計(jì)數(shù)器、中斷等功能,具備2個(gè)16位定時(shí)器與6個(gè)中斷源、2級(jí)優(yōu)先級(jí),具有雙工串行通信接口。
STM32F103C8T6芯片是意法半導(dǎo)體有限公司出品的一款基于ARM Cortex -M內(nèi)核的32位的微控制器,具有64kB的內(nèi)存容量,包括多個(gè)UART、SPI、I2C接口以及USB2.0全速設(shè)備接口,16位或32位定時(shí)器、看門狗定時(shí)器等。工作電壓為2.0~3.6V。本次設(shè)計(jì)中,對(duì)于中斷數(shù)量需求較大,與STC89C52芯片相比,STM32F103C8T6性能好,處理速度快,外圍功能豐富強(qiáng)大,對(duì)于系統(tǒng)需求更能滿足,因此綜上所述,選擇STM32F103C8T6作為主控芯片。
2.2 信息檢測(cè)模塊方案選擇
- 信息采集模塊主要實(shí)現(xiàn)在光照較弱環(huán)境下檢測(cè)人體并輸入信號(hào),進(jìn)而控制繼電器工作功能。
對(duì)于光照檢測(cè)模塊有兩種方案,分別是光敏電阻傳感器模塊與GY30光照強(qiáng)度傳感器模塊。光敏電阻傳感器模塊可以通過(guò)電位器調(diào)節(jié)檢測(cè)光線亮度閾值,GY30光照強(qiáng)度傳感器可以檢測(cè)相當(dāng)精確的光照值。結(jié)合實(shí)際考慮以及用戶需求,光敏電阻傳感器模塊更為方便在實(shí)際使用中由用戶改變所需光照閾值,且此設(shè)計(jì)對(duì)光照精確度要求較小,光敏電阻傳感器足夠滿足設(shè)計(jì)需求。結(jié)合以上分析,選擇光敏電阻傳感器作為光照檢測(cè)模塊。 - 對(duì)于檢測(cè)是否有人通過(guò)有以下兩種方案可供選擇,分別是紅外線傳感器以及聲音傳感器。使用紅外線傳感器作為人體檢測(cè)信息采集,對(duì)環(huán)境光線的適應(yīng)能力強(qiáng),產(chǎn)品體積小、使用簡(jiǎn)單、功耗小、響應(yīng)快、精度高、性能穩(wěn)定、可以長(zhǎng)期穩(wěn)定可靠工作,并且可以手動(dòng)調(diào)節(jié)閾值,方便改變檢測(cè)需求。HCSR501為常見(jiàn)用于檢測(cè)人體的紅外線傳感器,且該傳感器模塊具備檢測(cè)到人員離開(kāi)后,輸出電平延時(shí)改變功能,滿足“人來(lái)燈亮,人走延時(shí)熄滅”設(shè)計(jì)理念。但考慮其最小檢測(cè)范圍為3米,在調(diào)試與展示過(guò)程中難以展示效果,使用紅外避障傳感器模擬該傳感器完成設(shè)計(jì)。
- 聲音傳感器通過(guò)檢測(cè)周圍聲音強(qiáng)度,但傳統(tǒng)聲控?zé)羧袈曇魪?qiáng)度設(shè)定值偏低,易造成一個(gè)樓層經(jīng)過(guò)人,所有樓層燈全部亮;
2.3 WiFi模塊選擇
- Wifi通信電路有以下兩種芯片進(jìn)行選擇,ESP8266芯片和ESP32芯片。
ESP8266芯片是一款集成MCU芯片,將內(nèi)存、計(jì)數(shù)器、接口、驅(qū)動(dòng)等整合在單一芯片上,單核處理,運(yùn)行頻率為80MHZ。ESP32芯片為雙核處理,同時(shí)支持WiFi和藍(lán)牙通信。
本次設(shè)計(jì)主要考慮實(shí)現(xiàn)遠(yuǎn)距離通信,并且相較于ESP32而言,ESP8266價(jià)格更便宜且上市時(shí)間長(zhǎng),在軟件方面會(huì)得到更多的支持,在使用上會(huì)更加方便兼容,因此選擇ESP8266芯片作為WiFi通信芯片使用。
2.4 終端顯示
使用WiFi進(jìn)行無(wú)線通信,對(duì)應(yīng)終端顯示選擇如下:
利用云平臺(tái)接收數(shù)據(jù),實(shí)現(xiàn)對(duì)不同樓層小燈亮滅情況的監(jiān)控,并通過(guò)云平臺(tái)發(fā)送數(shù)據(jù),實(shí)現(xiàn)控制燈的亮滅。云平臺(tái)可以實(shí)現(xiàn)實(shí)時(shí)控制監(jiān)測(cè),考慮使用方便以及直觀性,選擇云平臺(tái)進(jìn)行照明情況的顯示以及遠(yuǎn)程控制。
對(duì)于顯示和控制頁(yè)面分為APP和網(wǎng)頁(yè),APP需要下載軟件且考慮手機(jī)端與電腦端是否兼容,而網(wǎng)頁(yè)則可點(diǎn)擊網(wǎng)址即可打開(kāi)并進(jìn)行相關(guān)操作??紤]使用便利性,選擇網(wǎng)頁(yè)作為頁(yè)面。
2.5 WiFi無(wú)線通信實(shí)現(xiàn)方法
本次設(shè)計(jì)實(shí)現(xiàn)遠(yuǎn)程通信,將WiFi模塊連接至路由器或熱點(diǎn)進(jìn)行聯(lián)網(wǎng),使用OneNET云平臺(tái)建立產(chǎn)品,通過(guò)MQTT協(xié)議連接至云平臺(tái)。將ESP8266與STM32F103C8T6串口2(PA2與PA3)建立串口通信,通過(guò)AT指令與MQTT數(shù)據(jù)包上傳實(shí)現(xiàn)WiFi的無(wú)線通信。
相關(guān)連接建立需要云平臺(tái)產(chǎn)品設(shè)備ID、鑒權(quán)信息、產(chǎn)品ID等信息。同時(shí)本次設(shè)計(jì)需要可視化視圖用于顯示不同樓層燈光照明情況并且實(shí)現(xiàn)對(duì)不同樓層燈光照明的控制,設(shè)計(jì)可視化視圖包括按鈕、文本等區(qū)域,設(shè)定相關(guān)命令以及返回值,實(shí)現(xiàn)數(shù)據(jù)的上傳與下發(fā)。
三、系統(tǒng)硬件電路圖設(shè)計(jì)
3.1 整體電路圖設(shè)計(jì)
電路部分包括電源電路、預(yù)留電源與GND部分、穩(wěn)壓電路、上電指示燈、按鍵電路、串口調(diào)試電路、單片機(jī)最小系統(tǒng)、WiFi通信電路、繼電器控制電路、傳感器檢測(cè)電路、LED控制電路。
3.2 主控制器設(shè)計(jì)
STM32F103C8T6最小系統(tǒng)由晶振電路、電源電路、時(shí)鐘電路、啟動(dòng)配置電路、復(fù)位電路以及調(diào)試電路組成。
STM32F103C8T6最小系統(tǒng)主頻72MHz,具有3.3V穩(wěn)壓芯片,最大可提供800mA電流,具備預(yù)留USB通訊功能、復(fù)位按鍵,具有BOOT選擇端口,電源指示燈與功能指示燈,預(yù)留串口接口及32768Hz晶振。
設(shè)計(jì)中試穿PA2、PA3串口2進(jìn)行無(wú)線串口通信,PA9、PA10串口1用于程序下載以及調(diào)試。功能指示燈連接至PC13用于無(wú)線連接成功提醒,以及在調(diào)試過(guò)程中作為現(xiàn)象指示燈。
3.3 電源電路設(shè)計(jì)
本次設(shè)計(jì)使用器件工作電壓分別為5V以及3.3V,在電源電路選擇上使用5V外部電源供電,搭配穩(wěn)壓模塊AMS1117,使電壓降至3.3V供模塊使用。
3.4 紅外線傳感器電路設(shè)計(jì)
上文中已說(shuō)明,由于HCSR501由于檢測(cè)范圍過(guò)大,無(wú)法進(jìn)行演示,故使用紅外避障傳感器模擬該傳感器,兩者在檢測(cè)結(jié)果均通過(guò)高低電平輸出判斷,且工作電壓以及接口相同,在實(shí)際應(yīng)用中可替換。
紅外避障傳感器作為人體檢測(cè)信息采集,有兩個(gè)紅外管,分別是發(fā)送管和接收管,特點(diǎn)是對(duì)環(huán)境光線的適應(yīng)能力強(qiáng),干擾較小,便于安裝等。紅外避障傳感器引腳上有VCC、GND、OUT三個(gè)引腳。其工作原理是紅外光線發(fā)射管發(fā)射紅外光線,紅外光線接收管接收紅外光線,當(dāng)沒(méi)有接收到返回的紅外光線時(shí),OUT引腳輸出高電平,當(dāng)接收到返回的紅外光線時(shí),OUT引腳輸出低電平。當(dāng)傳感器模塊檢測(cè)到障礙物或者有物體靠近時(shí),其模塊的指示燈會(huì)亮起,同時(shí)OUT引腳會(huì)變低電平。因模塊是非接觸式傳感器,所以具有響應(yīng)快,精度高等特點(diǎn)。
基于連接的紅外傳感器檢測(cè)器,向主控制器發(fā)送關(guān)于設(shè)備工作狀態(tài)的信號(hào),繼而使繼電器控制電路完成相應(yīng)功能。
利用三個(gè)紅外線傳感器作為不同樓層人員經(jīng)過(guò)情況檢測(cè),采集數(shù)據(jù)供系統(tǒng)判斷,進(jìn)行開(kāi)關(guān)燈狀態(tài)改變。
三個(gè)紅外線傳感器輸出端口分別與PB0、PB1、PB3連接,將檢測(cè)結(jié)果輸入至單片機(jī)內(nèi),用于后續(xù)繼電器閉合狀態(tài)判斷。
3.5 光敏電阻傳感器電路設(shè)計(jì)
光敏電阻傳感器指的是利用光敏元件將光信號(hào)轉(zhuǎn)換為電信號(hào)的傳感器,敏感波長(zhǎng)在可見(jiàn)光波長(zhǎng)附近,可以根據(jù)光線的明暗變化,輸出電信號(hào),再將電信號(hào)放大處理。
當(dāng)光照強(qiáng)度超過(guò)閾值時(shí),傳感器輸出低電平,而當(dāng)光照強(qiáng)度低于閾值時(shí),輸出高電平。
本設(shè)計(jì)中,光敏電阻傳感器用作對(duì)當(dāng)前環(huán)境光照情況的判斷,避免在樓宇當(dāng)前光照條件滿足業(yè)主正常使用時(shí)開(kāi)啟燈光,造成不必要的能源浪費(fèi)。由于整個(gè)樓宇光照水平相近,在設(shè)計(jì)中僅使用一個(gè)光敏電阻傳感器作為對(duì)整個(gè)樓宇的光照水平判斷,節(jié)約IO口的使用,提高效率。
光敏電阻傳感器分別接3.3V電源、GND以及PA9。
3.6 繼電器控制電路設(shè)計(jì)
繼電器是一種電控制器件,具有輸入回路和輸出回路之間的互動(dòng)關(guān)系。通常應(yīng)用于自動(dòng)化的控制電路中,它實(shí)際上是用小電流去控制大電流運(yùn)作的一種“自動(dòng)開(kāi)關(guān)”。故在電路中起著自動(dòng)調(diào)節(jié)、安全保護(hù)、轉(zhuǎn)換電路等作用。
使用繼電器作為控制開(kāi)關(guān),LED燈作模擬樓道燈光。繼電器為常開(kāi)狀態(tài),當(dāng)傳感器檢測(cè)人員經(jīng)過(guò)或手動(dòng)控制LED變?yōu)榱習(xí)r,繼電器閉合,LED變?yōu)榱?;其余時(shí)刻繼電器斷開(kāi),LED為滅的狀態(tài)。
每個(gè)繼電器控制電路連接到主控制器,以接收關(guān)于設(shè)備狀態(tài)的信息。如果從主機(jī)向從機(jī)發(fā)送任何信號(hào),則根據(jù)接收到的數(shù)據(jù)執(zhí)行相關(guān)操作。
繼電器模塊內(nèi)部線圈分別與5V電源、GND、單片機(jī)輸出端口相連。輸出端的公用接口連接5V驅(qū)動(dòng)電源,常開(kāi)端口與LED電源端口連接。
3.7 無(wú)線通信電路設(shè)計(jì)
ESP8266專為移動(dòng)設(shè)備,可穿戴電子產(chǎn)品和物聯(lián)應(yīng)用設(shè)計(jì),可以通過(guò)AT指令配置,和單片機(jī)上的串口進(jìn)行通信,利用WiFi進(jìn)行數(shù)據(jù)傳輸。
設(shè)計(jì)中,利用AT指令連接手機(jī)熱點(diǎn),訪問(wèn)網(wǎng)址,實(shí)現(xiàn)WiFi模塊與云平臺(tái)的通信。
由于實(shí)際工作中,各燈光設(shè)備相距距離較遠(yuǎn),無(wú)法通過(guò)WiFi分別對(duì)各個(gè)燈光設(shè)備實(shí)現(xiàn)通信。因此,STM32主控制器通過(guò)有線連接與燈光設(shè)備相連接,通過(guò)控制繼電器,實(shí)現(xiàn)電流通斷,在主控制器實(shí)現(xiàn)對(duì)各個(gè)燈光設(shè)備控制;再將STM32連接到云平臺(tái),云平臺(tái)與主控制器進(jìn)行通信,實(shí)現(xiàn)遠(yuǎn)程控制和監(jiān)控功能。
云平臺(tái)用于顯示燈光的亮滅狀態(tài);也可以從云平臺(tái)設(shè)備發(fā)送信號(hào),以便可以遠(yuǎn)程控制它。該應(yīng)用程序可以通過(guò) MQTT協(xié)議與主控制器通信。
ESP8266的VCC引腳接3.3V工作電源,GND引腳接地,TX與RX分別與STM32的串口2的RX、TX連接,RST引腳與PA1連接,用于ESP8266每次工作初始化時(shí)復(fù)位。
3.8 按鍵控制電路
通過(guò)設(shè)置按鍵,控制繼電器吸合和斷開(kāi),實(shí)現(xiàn)對(duì)燈光亮滅的控制,模擬實(shí)現(xiàn)主控制器對(duì)燈光設(shè)備控制。
3.9 LED顯示電路
使用三個(gè)5V供電的LED燈模擬樓道燈光,USB底座作為接口連接LED。LED電源輸入端口連接至繼電器的常開(kāi)端口,當(dāng)繼電器吸合時(shí),電路導(dǎo)通,LED亮。
四、系統(tǒng)軟件設(shè)計(jì)
4.1 整體軟件設(shè)計(jì)流程圖
本次設(shè)計(jì)軟件流程共分為三個(gè)部分,分別是WiFi通信部分,傳感器部分,按鍵部分,三者均通過(guò)控制繼電器狀態(tài)實(shí)現(xiàn)對(duì)LED的控制。
設(shè)計(jì)分為上位機(jī)與下位機(jī)兩部分,上位機(jī)實(shí)現(xiàn)數(shù)據(jù)的顯示以及控制命令發(fā)送;下位機(jī)實(shí)現(xiàn)系統(tǒng)對(duì)LED的自動(dòng)控制以及按鍵控制功能。
當(dāng)硬件通電并連接熱點(diǎn)后,連接至OneNET云平臺(tái)產(chǎn)品,產(chǎn)品設(shè)可視化視圖,并生成網(wǎng)頁(yè),用戶可通過(guò)網(wǎng)頁(yè)上按鍵控制下發(fā)命令,經(jīng)程序解析后轉(zhuǎn)換為對(duì)繼電器狀態(tài)的控制,實(shí)現(xiàn)控制功能;三個(gè)繼電器狀態(tài)打包為數(shù)據(jù),每隔5s(OneNET最低刷新速率)上傳至云平臺(tái),并在可視化視圖文字顯示部分展示。以上內(nèi)容與光照強(qiáng)度及是否檢測(cè)有人無(wú)關(guān)。
同時(shí),光敏電阻傳感器檢測(cè)光照強(qiáng)度,當(dāng)?shù)陀谠O(shè)定閾值時(shí),若紅外線傳感器檢測(cè)有人經(jīng)過(guò),控制繼電器吸合,并持續(xù)至檢測(cè)到無(wú)人后延時(shí)8s,實(shí)現(xiàn)“人來(lái)燈亮,人走延時(shí)熄滅”功能。
按鍵部分主要對(duì)輸出至繼電器端口的狀態(tài)取反,實(shí)現(xiàn)主控制器控制功能,與光照強(qiáng)度及是否檢測(cè)有人無(wú)關(guān)。
相關(guān)程序使用keil編寫,flymcu燒錄,使用C語(yǔ)言實(shí)現(xiàn)。
以下為整體軟件設(shè)計(jì)流程圖。
4.2 上位機(jī)通信設(shè)計(jì)
4.2.1 ESP8266初始化設(shè)計(jì)
ESP8266與單片機(jī)串口2進(jìn)行串口通信。TX、RX分別與PA3、PA2連接用于串口通信,VCC接3.3V工作電壓,GND接地,RST引腳接PA1用作復(fù)位功能。
ESP8266初始化,首先需要對(duì)串口2的PA2和PA3進(jìn)行初始化設(shè)置,將PA1連接的RST引腳低電平復(fù)位,再將其設(shè)為高電平工作狀態(tài)。接下來(lái)發(fā)送AT指令完成模式設(shè)置、DHCP功能打開(kāi),連接熱點(diǎn),與網(wǎng)址建立TCP連接等工作。
Station為客戶端模式,即ESP8266可以連接至熱點(diǎn)或路由器,然后通過(guò)其訪問(wèn)網(wǎng)絡(luò),發(fā)送或獲取信息。
以下為ESP8266初始化程序流程圖。
4.2.2 單片機(jī)與云平臺(tái)通信設(shè)計(jì)
首先需完成ESP8266+STM32+OneNET云平臺(tái)建立通信。通過(guò)OneNET云平臺(tái)建立的產(chǎn)品ID、設(shè)備ID、鑒權(quán)信息,協(xié)議名等信息整合至MQTT數(shù)據(jù)包,使用AT+CIPSEND指令上傳,建立連接。
關(guān)于數(shù)據(jù)上傳云平臺(tái),需要將需上傳數(shù)據(jù)整合為數(shù)組形式,集中發(fā)送。設(shè)定云平臺(tái)數(shù)據(jù)源名稱分別為L(zhǎng)ED1,LED2,LED3,當(dāng)數(shù)據(jù)上傳至云平臺(tái)后,相應(yīng)顯示部分根據(jù)數(shù)據(jù)源數(shù)值顯示對(duì)于內(nèi)容,從而實(shí)現(xiàn)對(duì)數(shù)據(jù)的上傳及顯示,實(shí)現(xiàn)監(jiān)控LED狀態(tài)功能。
當(dāng)數(shù)據(jù)返回值為1,即繼電器狀態(tài)為1,顯示部分為燈x亮(x表示燈的序號(hào));數(shù)據(jù)返回值為0,即繼電器狀態(tài)為0,顯示部分為燈x滅。數(shù)據(jù)返回值設(shè)定在云平臺(tái)可視化視圖中創(chuàng)建。
關(guān)于命令下發(fā)程序,以控制LED1亮為例,命令內(nèi)容為“LED1:1”,控制LED1滅命令內(nèi)容為“LED1:0”。
命令下發(fā)通過(guò)可視化視圖中的按鍵部分完成。
根據(jù)命令下發(fā)內(nèi)容,首先判斷平臺(tái)是否返回?cái)?shù)據(jù),通過(guò)搜索IPD字頭以及幀尾進(jìn)行判斷,若收到返回?cái)?shù)據(jù),返回?cái)?shù)值為原數(shù)據(jù),若為收到,返回值為空。獲取平臺(tái)返回?cái)?shù)據(jù)后,搜索幀尾,若找到則將其中數(shù)字部分字符轉(zhuǎn)換為數(shù)值形式,并判斷命令中是否具有關(guān)鍵詞LED1、LED2、LED3,若有,則匹配關(guān)鍵詞至相應(yīng)繼電器狀態(tài)中,實(shí)現(xiàn)對(duì)繼電器的控制。
以下為數(shù)據(jù)下發(fā)流程圖。
4.3 按鍵控制電路
按鍵控制設(shè)置中斷方式為下降沿觸發(fā)。讀取輸出至繼電器的端口狀態(tài),當(dāng)按下按鍵時(shí),根據(jù)if條件語(yǔ)句判斷,若端口輸出為0,則繼電器狀態(tài)改為1;若輸出為1,則繼電器狀態(tài)改為0,改變LED顯示狀態(tài)。
4.4 傳感器檢測(cè)電路設(shè)計(jì)
傳感器檢測(cè)電路主要包括光照強(qiáng)度檢測(cè)電路以及紅外線檢測(cè)電路。
主要邏輯為當(dāng)光照強(qiáng)度低于閾值,若紅外線傳感器檢測(cè)到人,則繼電器吸合,直至紅外線傳感器檢測(cè)至人離開(kāi),延時(shí)8s,繼電器斷開(kāi)。
光照強(qiáng)度低于閾值時(shí),輸出為1;高于閾值時(shí),輸出為0。使用while()函數(shù),當(dāng)光照強(qiáng)度低于閾值時(shí)才可以進(jìn)行下一步程序。
繼電器輸入為1時(shí),吸合,LED為亮,繼電器輸入為0時(shí),斷開(kāi),LED滅。
紅外線傳感器檢測(cè)到人時(shí)輸出為0,未檢測(cè)到人時(shí)輸出為1。使用中斷函數(shù),下降沿觸發(fā),檢測(cè)到人中斷開(kāi)啟,繼電器狀態(tài)變?yōu)?。使用while()函數(shù),當(dāng)檢測(cè)到人員離開(kāi)后方可進(jìn)行下一步程序,即定時(shí)器開(kāi)啟,延時(shí)8s后繼電器狀態(tài)改為0。
設(shè)計(jì)中定時(shí)器用于模擬HCSR501模塊延時(shí)改變電平功能,在實(shí)際使用中可刪除定時(shí)器部分函數(shù)。
五、系統(tǒng)調(diào)試
5.1 ESP8266模塊調(diào)試
將ESP8266模塊與電腦連接,利用AT指令集查看該模塊是否可以正常工作。由于設(shè)計(jì)采用MQTT協(xié)議,不能直接使用原始AT指令集直接連接至云平臺(tái)產(chǎn)品,因此燒錄MQTT固件庫(kù),但燒錄后發(fā)現(xiàn)AT指令無(wú)法正常使用,查找相關(guān)資料后發(fā)現(xiàn)設(shè)計(jì)中原始固件庫(kù)可以滿足設(shè)計(jì)需求,因此燒錄回原始固件庫(kù),并將ESP8266與STM32連接,利用編程語(yǔ)言實(shí)現(xiàn)對(duì)云平臺(tái)產(chǎn)品的連接。
下圖為AT指令調(diào)試結(jié)果,能夠?qū)崿F(xiàn)連接熱點(diǎn)功能,手機(jī)端顯示該連接設(shè)備。
5.2 云平臺(tái)調(diào)試
5.2.1 準(zhǔn)備工作
首先登入OneNET云平臺(tái),選擇多協(xié)議接入中的MQTT協(xié)議,建立產(chǎn)品,并生成相關(guān)設(shè)備ID、鑒權(quán)信息、產(chǎn)品ID。以上信息在程序連接云平臺(tái)以及建立數(shù)據(jù)源中需要用到[。
下圖為創(chuàng)建的OneNET產(chǎn)品。
下圖為設(shè)計(jì)的可視化視圖,可以實(shí)現(xiàn)對(duì)不同樓層燈光的監(jiān)控和控制。由于權(quán)限問(wèn)題,按鈕只能起控制作用,無(wú)法根據(jù)返回?cái)?shù)值改變相應(yīng)狀態(tài),因此設(shè)置顯示文字用于顯示LED狀態(tài)??梢暬晥D可以發(fā)布,生成網(wǎng)址,手機(jī)端和電腦端點(diǎn)擊網(wǎng)址即可進(jìn)入控制頁(yè)面。
依據(jù)上文中軟件流程設(shè)計(jì)的連接云平臺(tái),實(shí)現(xiàn)STM32+ESP8266+OneNET平臺(tái)連接,串口通信部分顯示“連接成功”,云平臺(tái)部分顯示“在線”狀態(tài)。
5.2.2 實(shí)現(xiàn)數(shù)據(jù)上傳
設(shè)置顯示部分?jǐn)?shù)據(jù)源為AAAA,根據(jù)keil編程上傳AAAA對(duì)于數(shù)據(jù)為2。文字部分顯示內(nèi)容返回值設(shè)定為,當(dāng)返回?cái)?shù)據(jù)為1時(shí),顯示內(nèi)容為“1”,返回?cái)?shù)據(jù)為其他時(shí),顯示內(nèi)容為“2”。當(dāng)前數(shù)據(jù)源值為2,因此顯示部分為“2”。
實(shí)現(xiàn)這一功能時(shí),由于對(duì)數(shù)據(jù)類型不熟悉,導(dǎo)致程序中數(shù)據(jù)類型錯(cuò)誤,一直無(wú)法實(shí)現(xiàn)數(shù)據(jù)上傳。查找相關(guān)資料后選擇正確的數(shù)據(jù)類型,完成上傳。
實(shí)現(xiàn)根據(jù)上傳數(shù)據(jù)改變文字顯示內(nèi)容過(guò)程,由于最初數(shù)據(jù)源格式錯(cuò)誤,未設(shè)定數(shù)據(jù)源格式,導(dǎo)致無(wú)法根據(jù)上傳數(shù)據(jù)改變內(nèi)容,查找相關(guān)資料,根據(jù)資料內(nèi)容完成數(shù)據(jù)源格式創(chuàng)建,實(shí)現(xiàn)該功能。
5.3 紅外線傳感器模塊調(diào)試
紅外線傳感器在檢測(cè)到人后,指示燈亮,同時(shí)輸出低電平,當(dāng)為檢測(cè)到人時(shí)輸出為高電平。因此在設(shè)計(jì)中使用下降沿觸發(fā)中斷,當(dāng)中斷觸發(fā),串口輸出“有人來(lái)”。
調(diào)試過(guò)程中以一個(gè)傳感器為例,以下為調(diào)試現(xiàn)象。
5.4 光敏電阻傳感器模塊調(diào)試
因此,在調(diào)試該模塊過(guò)程中,利用串口通信顯示現(xiàn)象。首先對(duì)光照低于閾值時(shí)輸出高電平進(jìn)行調(diào)試,程序代碼為輸出低于閾值,單片機(jī)系統(tǒng)板PC13亮,此時(shí)光敏電阻傳感器模塊指示燈滅,且串口輸出“光照弱”?,F(xiàn)象如下圖所示。
接下來(lái)將光照強(qiáng)度與紅外線檢測(cè)結(jié)合,當(dāng)光照強(qiáng)度低于閾值時(shí),判斷是否有人經(jīng)過(guò),若有人經(jīng)過(guò),則輸出“光照低于閾值 低于光照有人來(lái)”,此時(shí)模塊現(xiàn)象為,光敏電阻傳感器指示燈滅,紅外線傳感器指示燈亮,現(xiàn)象如下圖所示。
5.5 整體調(diào)試
5.5.1 照明系統(tǒng)自動(dòng)控制
起初使用delay延時(shí)函數(shù)實(shí)現(xiàn)延時(shí)功能,但在延時(shí)期間,其他指令無(wú)法響應(yīng),倘若另一紅外傳感器檢測(cè)到人或云平臺(tái)下發(fā)命令,單片機(jī)無(wú)法響應(yīng)。因此使用定時(shí)器進(jìn)行延時(shí)功能。
實(shí)際使用中,HCSR501紅外熱釋電自帶檢測(cè)到人后延時(shí)改變輸出電平功能,自帶延時(shí)功能,且考慮STM32F103C8T6中定時(shí)器數(shù)量未必滿足實(shí)際所需,綜合以上,該延時(shí)功能僅在設(shè)計(jì)中為模擬紅外熱釋電傳感器使用,實(shí)際中可以去除。
下圖為光照強(qiáng)度超過(guò)閾值,但紅外線傳感器檢測(cè)到人,根據(jù)程序邏輯,此時(shí)LED應(yīng)為滅的狀態(tài)?,F(xiàn)象如圖。
下圖為光照強(qiáng)度低于閾值,且紅外線傳感器檢測(cè)到人,此時(shí)LED為亮。
5.5.2 按鍵實(shí)現(xiàn)燈光開(kāi)關(guān)
下圖可視化視圖未下發(fā)命令,且光照強(qiáng)度超過(guò)閾值,此時(shí)LED為亮,狀態(tài)由按鍵控制,且網(wǎng)頁(yè)上對(duì)于LED2狀態(tài)文字為“燈2亮”。
圖5.16 按鍵控制LED狀態(tài)
5.5.3 云平臺(tái)控制燈光和監(jiān)控
由于權(quán)限設(shè)置,該可視化視圖中按鈕僅能做命令下發(fā)功能,無(wú)法根據(jù)數(shù)據(jù)源返回?cái)?shù)據(jù)改變相應(yīng)狀態(tài)。
可視化視圖控制LED1按鈕按下,對(duì)應(yīng)繼電器狀態(tài)變?yōu)?,LED亮。此時(shí)光照強(qiáng)度超過(guò)閾值,因此該現(xiàn)象為云平臺(tái)下發(fā)命令控制,且由圖中可見(jiàn),對(duì)應(yīng)LED狀態(tài)顯示為“燈1亮”現(xiàn)象如下。
六、結(jié) 論
系統(tǒng)以STM32F103C8T6作為核心芯片,應(yīng)用串口通信、中斷、定時(shí)器等功能,利用WIFI進(jìn)行無(wú)線通信,傳感器進(jìn)行檢測(cè),繼電器實(shí)現(xiàn)自動(dòng)開(kāi)關(guān)功能,實(shí)現(xiàn)樓宇照明控制系統(tǒng)設(shè)計(jì)。
設(shè)計(jì)結(jié)合實(shí)際住宅、辦公樓情況,以光照強(qiáng)度作為是否開(kāi)啟燈光標(biāo)準(zhǔn),在低于設(shè)定光照強(qiáng)度閾值時(shí),紅外線傳感器監(jiān)測(cè)到人即開(kāi)啟燈光。同時(shí)設(shè)計(jì)在終端以及主控制器設(shè)置控制燈光按鈕,對(duì)管理者而言更加方便,可以更好應(yīng)對(duì)特殊情況。終端網(wǎng)頁(yè)對(duì)于使用者而言更加方便,可以隨時(shí)點(diǎn)擊網(wǎng)址查看,網(wǎng)頁(yè)上顯示燈光的狀態(tài),實(shí)現(xiàn)監(jiān)控功能。
設(shè)計(jì)內(nèi)容從實(shí)際出發(fā)考慮,具備實(shí)用性,同時(shí)考慮節(jié)能環(huán)保,實(shí)現(xiàn)設(shè)計(jì)的基本功能,但設(shè)計(jì)內(nèi)容仍存在不足,在節(jié)能性上可以對(duì)供電方式加以完善,例如太陽(yáng)能供電。
附件:PCB截圖實(shí)物圖
希望你喜歡這個(gè)項(xiàng)目,并在構(gòu)建過(guò)程中找到樂(lè)趣!如果你有任何問(wèn)題或需要幫助,歡迎在評(píng)論區(qū)交流。
作者:Svan.
注意:本博文為不得在未經(jīng)本人同意進(jìn)行轉(zhuǎn)載或者二次創(chuàng)作,違者必究!!!
博客主頁(yè):https://blog.csdn.net/weixin_51141489,需要源碼或相關(guān)資料實(shí)物的友友請(qǐng)關(guān)注、點(diǎn)贊,私信吧!