張艷萍
(海南省技師學(xué)院,海南??冢?71100)
隨著科技的發(fā)展,物聯(lián)網(wǎng)技術(shù)也快速滲入到日常生活的方方面面,臺燈是人們居家生活常見的一個簡單家電,本次設(shè)計就是將物聯(lián)網(wǎng)技術(shù)應(yīng)用于日常家用的臺燈,使其更加方便和智能。
本次設(shè)計的智能臺燈功能簡單,旨在通過阿里云生活物聯(lián)網(wǎng)平臺讓臺燈實現(xiàn)遠程控制,是一個小的物聯(lián)網(wǎng)系統(tǒng)的構(gòu)建,具體功能如下:
(1)傳統(tǒng)的手動開關(guān)控制,通過一個按鈕開關(guān)來控制臺燈的亮和滅。
(2)遠程開關(guān)控制,利用智能手機通過云智能APP 控制界面實現(xiàn)對臺燈的遠程狀態(tài)監(jiān)控和遠程開關(guān)控制,可實現(xiàn)進屋前開燈,從而避免摸黑開燈,同時通過APP 可看到燈狀態(tài)并對其遠程開關(guān)控制,從而避免長明燈造成的資源浪費。
(3)在臺燈底座上的液晶顯示屏可顯示年月日、星期、時間及環(huán)境溫度,滿足人們對于這些常用信息的方便獲得的需求,且年月日、星期和時間可調(diào)。
系統(tǒng)構(gòu)成框圖如圖1所示。
圖1 系統(tǒng)構(gòu)成圖
該智能臺燈設(shè)計以單片機模塊為主控模塊,實時從時鐘模塊DS3231 讀取年月日及時間信息,從溫度傳感器DS18B20 讀取溫度數(shù)據(jù),并將這些信息依次顯示在液晶顯示屏上,同時對按鍵開關(guān)狀態(tài)進行掃描,當(dāng)掃描到按鍵開關(guān)有動作時,輸出信號控制LED 燈狀態(tài)取反。同時,單片機會實時將LED 燈的狀態(tài)和從溫度傳感器采集的溫度信息通過串口發(fā)送給WiFi 模塊,WiFi 模塊再將信息通過WiFi 發(fā)送出去,經(jīng)過阿里云及其他網(wǎng)絡(luò)傳送,智能手機通過云智能APP 搜索連接WiFi 模塊所對應(yīng)的設(shè)備,即可在手機界面顯示LED 燈的狀態(tài)及溫度信息。同時,當(dāng)通過點擊手機界面的LED 燈開關(guān),智能手機將信號發(fā)出,通過網(wǎng)絡(luò)、阿里云、WiFi,由WiFi 模塊接收,WiFi 模塊再將信號通過串口傳遞給單片機,單片機接收識別后,發(fā)出信號控制LED 燈的亮滅。
(1)主控模塊:選用51 單片機最小系統(tǒng)開發(fā)板,IO口引出,P0口上拉電阻,符合本次設(shè)計需求,單片機選用STC12C5A60S2(5V 單片機)。
(2)通訊模塊:選用Nodemcu 開發(fā)板,該開發(fā)板配備樂鑫ESP8266 WiFi 模組,3.3V 供電,自帶CH340,支持C 語言開發(fā),且該模塊是阿里云生活物聯(lián)網(wǎng)平臺認證模組,可以直接連接云端,符合本次設(shè)計需求。
(3)電源模塊:根據(jù)整個系統(tǒng)所有的模塊的供電需求,選用了兩塊電源轉(zhuǎn)換模塊,分別是AC-DC 12V/1A 和DC(12V)-DC(3.3V、5V),兩塊連接使用,用于給單片機、WiFi 模塊、時鐘模塊、液晶顯示屏、LED 燈等提供穩(wěn)定的3.3V、5V、12V 直流電源。
(4)按鍵模塊:選用普通輕觸按鍵開關(guān)。
(5)顯示模塊:選用LCD12864 液晶屏,帶中文字庫,5V 直流供電,具有4位/8位并行、2 線或3 線串行多種接口方式??娠@示8X4 行(32個)漢字。本設(shè)計中將模塊設(shè)置為8位并行接口方式。
(6)時鐘模塊:選用DS3231時鐘模塊,其在-40 ℃~+85 ℃溫度范圍內(nèi),計時精度保持在±5ppm,自帶為連續(xù)計時提供的電池備份,低功耗,時鐘日歷功能包括秒、分、時、星期、日、月和年計時,+2.3V~+5.5V 電源電壓。根據(jù)本設(shè)計需求,采用5V 供電,主要實現(xiàn)對該時鐘模塊進行日歷時間信息的設(shè)置和獲取。
(7)溫度傳感器:由于DS3231 時鐘模塊中自帶的數(shù)字溫度傳感器精度為±3℃,不太適合用于家庭及辦公環(huán)境溫度的檢測,所以選擇了更常用的數(shù)字溫度傳感器DS18B20,其精度高,且具有體積小,抗干擾能力強的特點,同時具有獨特的單線接口方式,在與單片機連接時僅需要一條口線即可實現(xiàn)單片機DS18B20的雙向通訊。
(8)LED 燈:選用普通LED 燈,12V 供電。
該設(shè)計使用到的外圍設(shè)備不多,單片機I/O口相對充足,除了 外部中 斷0,K1 按鍵要接P3.2口,ES8266 模塊與單片機通過串口通訊需接P1.2 和P1.3口(也可使用P3.0 和P3.1口)外,其他外設(shè)如按鍵、DS3231 時鐘模塊、DS18B20 模塊及12864 液晶屏等可根據(jù)畫圖線路布局等需求分配I/O口,具體系統(tǒng)接線圖如圖2所示。
圖2 系統(tǒng)接線圖
阿里云生活物聯(lián)網(wǎng)平臺是一款針對智能生活領(lǐng)域的物聯(lián)網(wǎng)云平臺。在阿里云的IaaS 和PaaS 層云產(chǎn)品的基礎(chǔ)上,搭建了一套完整的、更貼近智能家電領(lǐng)域的公有云平臺。它是一個提供可開發(fā)、易調(diào)試、更好運維及方便管理等功能的智能IoT 設(shè)備開發(fā)管理平臺,為開發(fā)者提供了設(shè)備接入能力、移動端的軟件工具開發(fā)包以及免開發(fā)的云智能App 和界面,更適用于消費級的智能設(shè)備開發(fā)者,開發(fā)門檻較低,可以快速實現(xiàn)消費級設(shè)備的智能化,如智能家電、穿戴、家裝領(lǐng)域等,與我們的設(shè)計需求符合。
具體操作是在阿里云生活物聯(lián)網(wǎng)平臺創(chuàng)建項目,新建產(chǎn)品,根據(jù)實際需要對產(chǎn)品進行設(shè)計,其中包括進行功能定義、人機交互設(shè)計(此處使用公版APP 控制產(chǎn)品,即使用阿里云生活物聯(lián)網(wǎng)平臺提供的免開發(fā)云智能APP 控制產(chǎn)品,APP 控制界面可根據(jù)自行需要進行設(shè)計)、設(shè)備調(diào)試和產(chǎn)品發(fā)布。此操作的目的是為我們的智能臺燈設(shè)計一個與之匹配的物聯(lián)網(wǎng)產(chǎn)品,并會得到與我們的智能臺燈匹配的設(shè)備證書( 包 括ProductKey、DeviceName、DeviceSecret) 和ProductSecret,將設(shè)備證書和ProductSecret 燒錄到智能臺燈的WiFi 模塊后,WiFi 模塊便可通過聯(lián)網(wǎng)接入阿里云生活物聯(lián)網(wǎng)平臺,我們就可以通過智能手機上的云智能APP搜索到在阿里云生活物聯(lián)網(wǎng)平臺上創(chuàng)建的產(chǎn)品名稱相同的設(shè)備,添加設(shè)備后,即可通過在阿里云生活物聯(lián)網(wǎng)平臺上產(chǎn)品設(shè)計過程中設(shè)計的人機交互界面與WiFi 模塊進行通信,如可看到WiFi 模塊發(fā)送過來的LED的狀態(tài)及溫度信息等,也可通過點擊界面的LED 燈開關(guān)按鈕,將開或關(guān)燈的指令通過網(wǎng)絡(luò)發(fā)送給WiFi 模塊。
云智能APP 是阿里云生活物聯(lián)網(wǎng)平臺提供的一款免開發(fā)智能家居控制軟件,與我們在阿里云生活物聯(lián)網(wǎng)平臺上創(chuàng)建的產(chǎn)品配合使用,通過云智能APP,可以便捷地添加我們設(shè)計的臺燈,實現(xiàn)對臺燈的遠程控制,還可以共享設(shè)備,使所有家庭成員對臺燈實現(xiàn)控制。
3.3.1 DS3231 時間調(diào)整功能實現(xiàn)
時鐘的走時和調(diào)整狀態(tài)由外部中斷實現(xiàn)轉(zhuǎn)換,使用外部中斷0,由按下開關(guān)K1 實現(xiàn)中斷,硬件上開關(guān)K1 接在P3.2口,程序中設(shè)置一個走時/調(diào)整狀態(tài)標(biāo)志位,每次按下開關(guān)K1,取反走時/調(diào)整狀態(tài)標(biāo)志位,從而達到走時和調(diào)整兩種狀態(tài)的轉(zhuǎn)換。當(dāng)需要調(diào)整時,按下K1,進入調(diào)整狀態(tài),K2實現(xiàn)調(diào)整對象的選擇,即選擇調(diào)整年月日、星期、時分秒,K3 鍵實現(xiàn)加1 調(diào)整,調(diào)整后結(jié)果放入對應(yīng)緩沖變量,調(diào)整結(jié)束后再按K1 鍵改變走時/調(diào)整狀態(tài)標(biāo)志位進入走時狀態(tài)。
3.3.2 串口通訊部分功能實現(xiàn)
串口通訊部分程序主要包括數(shù)據(jù)接收部分和數(shù)據(jù)發(fā)送部分。其中數(shù)據(jù)接收部分采用定時器0 中斷,每100μs 判斷串口是否有數(shù)據(jù)接收,如果有數(shù)據(jù)在數(shù)據(jù)接收完畢后,將數(shù)據(jù)接收完畢標(biāo)志位置1,用于云端下控部分程序,在該部分程序中,當(dāng)數(shù)據(jù)接收完畢標(biāo)志位為1 時,對接收數(shù)據(jù)進行識別,并控制燈的亮滅。
3.3.3 按鍵掃描(燈硬件開關(guān)K 掃描)
按鍵掃描部分是對按鍵K 狀態(tài)進行掃描,按鍵K 是臺燈硬件開關(guān),該部分程序也使用定時器0 中斷,每100μs掃描一次,若按鍵按下,則控制燈改變狀態(tài),并通過串口上傳燈狀態(tài)信息。
3.3.4 主程序功能思路
主程序中通過判斷走時/調(diào)整狀態(tài)標(biāo)志位進入相應(yīng)的程序,當(dāng)為走時狀態(tài)時,則依次讀取時間信息、溫度信息并顯示在12864 液晶屏上,同時掃描按鍵K 控制燈的亮滅,并通過串口上傳燈的狀態(tài)和溫度信息。當(dāng)為調(diào)整狀態(tài)時,進入調(diào)整程序,并將調(diào)整結(jié)果存入對應(yīng)緩沖變量,然后再對走時/調(diào)整狀態(tài)標(biāo)志位進行判斷,直至調(diào)整結(jié)束再次按下K1鍵改變走時/調(diào)整狀態(tài)標(biāo)志位進入走時狀態(tài),在調(diào)整狀態(tài)時,顯示屏走時停止,溫度值不變,串口不上發(fā)信息,對于串口接收信息也不處理等,直至進入走時狀態(tài)。
流程圖如圖3所示。
圖3
該部分功能包括年月日時分秒信息讀取、溫度讀取、年月日時分秒及溫度顯示在液晶屏上,同時可通過按鍵調(diào)整年月日時分秒信息。
此部分功能測試時,使用的硬件分別是KST-51 開發(fā)板、DS3231 時鐘模塊、KST-51 開發(fā)板上的DS18B20、以及12864 液晶屏,KST-51 開發(fā)板上雖然不帶12864 液晶屏,但預(yù)留了12864 液晶屏擴展端口,使用較方便,從圖4 可見,液晶屏按設(shè)計要求正確顯示年月日、星期、時間及溫度信息,且年月日信息已調(diào)整至實際調(diào)試日期,可見該部分功能完整實現(xiàn)。
圖4
圖5
該部分功能包括溫度讀取、按鍵對燈的控制、溫度信息和燈實時狀態(tài)信息上傳手機、手機對燈的控制等。
首先測試單片機上傳給WiFi 模塊的信息是否正確,這部分功能我們主要通過STC-ISP 燒錄軟件中的串口助手監(jiān)測單片機通過串口上傳的信息,看當(dāng)按下按鍵開關(guān)K和觸摸DS18B20 改變溫度時單片機通過串口上傳信息是否及時更新。如圖4所示,是對功能測試的部分數(shù)據(jù)截圖,從數(shù)據(jù)可見,當(dāng)臺燈開關(guān)按鍵K 有動作時,上傳信息PowerSwitch_1的值從1 變化到0,當(dāng)用手觸摸DS18B20 時,上傳的溫度信息,即ctemp的值有上升變化,說明單片機上傳給WiFi 模塊的信息會根據(jù)實際情況,實時更新。
其次測試WiFi 模塊能否正常發(fā)送信息,同時手機通過云智能APP 是否能接收并正確顯示信息。如圖6所示,在連接上WiFi 模塊,并且在WiFi 模塊聯(lián)網(wǎng)成功后,手機通過云智能APP 可以搜索到該設(shè)備并正確顯示信息,燈的狀態(tài)為打開,當(dāng)前溫度為26℃,同時在此部分功能測試時,用開發(fā)板上的LED 燈代替設(shè)計中的臺燈測試功能,圖6 中可見LED 燈亮,與手機APP 界面顯示燈狀態(tài)一致。
圖6