聚豐項目 > 基于Intel Edison智能書房自動優(yōu)化學習環(huán)境
智能家居最近抄的熱火曹天,我這里也實現(xiàn)一個智能書房自動控制環(huán)境。使用傳感器來監(jiān)控書房環(huán)境,從而優(yōu)化你的書房環(huán)境及孩子的學習環(huán)境。
anger0925
分享anger0925
團隊成員
王安國 工程師
1,Grove - buzzer接到擴展版的D8上;
2,Grove – Relay接到擴展版的D7上;
3,Grove – Serial LCD接到擴展版的任意一個I2C接口上;
4,Grove – Temperature Sensor接到模擬接口A1上。
5,Grove –LED socket接到擴展版的D6上;
6,Grove – Light Sensor接到模擬接口A0上。
7,Grove - button按鍵接D4上。
軟件開發(fā)與調(diào)試
1,初始化:
初始化RGB LCD顯示;
初始化LED端口D6為輸出;
初始化繼電器控制端口D7為輸出;
初始化蜂鳴器端口D8為輸出;
初始化A0接口接光傳感器,A1接口接溫度傳感器。
2,實現(xiàn)周期性回調(diào)函數(shù)
利用時間函數(shù)millis()實現(xiàn)周期性回調(diào)函數(shù)。
添加周期性任務事件。
3,實現(xiàn)周期性讀取溫度傳感器值,溫度過低時,打開加熱器;溫度過高時,關閉加熱器。門檻值30攝氏度,低于10時,打開加熱器。高于30時,關閉加熱器,這里我使用繼電器來模擬實現(xiàn)。
{0, 100, Tem_Sensor},
表示100ms讀取一次。
Relay_Control_Handle就是實現(xiàn)溫度對書房環(huán)境的優(yōu)化控制,我這里首先使用Grove – Relay繼電器實現(xiàn),加熱器的電源接在繼電器,隨著溫度的變化,實現(xiàn)自動控制加熱器,從而保證書房適宜的溫度。
4,讀取光傳感器值,監(jiān)控書房環(huán)境光。若環(huán)境比較明亮,關閉LED等,若比較暗,打開LED燈。
{0, 100, Light_Sensor},
100ms讀取一次。
Light_Sensor_Handle函數(shù)實現(xiàn)光照強度對書房環(huán)境的優(yōu)化。設置光強門檻值為400,高于400時關閉LED燈;低于400時打開LED燈。
5,首先我準備手機實時監(jiān)控書房環(huán)境,那么就需要手機端APP。但是要自己開發(fā)手機APP,對于我來說是非常難的,還好有Blynk,免費使用, 快速創(chuàng)建自己的APP。
Blynk相關知識,參照Blynk官網(wǎng):http://www.blynk.cc/ 。APP也可以在官網(wǎng)上下載,也可以在個應用市場搜索下載。
使用Intel Edision內(nèi)嵌的wifi很容易的與手機聯(lián)系起來。
1)在Blynk官網(wǎng)下載APP,并安裝到手機上。
2)下載Blynk固件庫,我使用Arduino IDE。下載地址:https://github.com/blynkkk
3)在手機上運行Blynk,第一次運行時,需要登陸,輸入郵箱和密碼完成登陸。
4)點擊“+”彈出創(chuàng)建一個新項目的對話框
輸入的項目名稱,可以定義自己喜歡的,硬件模塊現(xiàn)在Intel Edison。然后點擊 “E-mail” ,會有一封郵件發(fā)到你登陸的郵箱,主要發(fā)送認證令牌到郵箱。
5)點擊Create完成創(chuàng)建。
6)點擊上圖標識為“1”的菱形處可以實現(xiàn)項目的修改。
7)點擊“2”處的“+”進入 “Widget Box”,創(chuàng)建應用,我這里實現(xiàn)實時顯示溫度值和光照強度值。還有幾個按鍵。
8)創(chuàng)建兩個Graph。點擊Graph添加。
創(chuàng)建三個Button,點擊Button創(chuàng)建。
9)點擊創(chuàng)建的Graph修改參數(shù)
名稱,光傳感器,引腳定義,這里選擇V1主要是實現(xiàn)程序與APP之間的數(shù)據(jù)交互,引腳定義后面的是定義數(shù)據(jù)范圍,接下來是顯示周期,最后是顯示形式,柱狀或線狀。同樣定義溫度顯示定義。
然后定義按鍵
定義完成之后的引用界面,按鍵定義后續(xù)使用。
10)點擊三角形開始運行。
6,編程與APP進行交互
把下載好的Blynk的庫放到Arduino目錄下。
添加頭文件。
Auth:定義認證令牌,在app上創(chuàng)建項目時發(fā)到你郵箱的數(shù)據(jù)。
SSID:wifi用戶名。
Pass:wifi密碼。
在setup()中添加Blynk.begin(auth, ssid, pass);,初始化網(wǎng)絡,接入wifi網(wǎng)絡。
在loop中添加Blynk.run();
這樣就完成了Blynk的引用。
接下來上傳數(shù)據(jù)到app:
{0, 500, Blynk_Wifi_handle},
500ms上傳一次。
參數(shù)中的sensorValue是光傳感器值,temperature是溫度傳感器值。實時上傳溫度值和光照強度值到APP上,實時實現(xiàn)遠程監(jiān)控。
現(xiàn)在編譯下載,運行。打開APP。
下面實現(xiàn)按鍵數(shù)據(jù)交互:
在項目文件添加BLYNK_WRITE函數(shù),實現(xiàn)實時監(jiān)聽APP按鍵狀態(tài),相當于按鍵中斷出來函數(shù)。
relayControl函數(shù)實現(xiàn)控制led燈的開和關。
pinLed定義的輸出接口,在APP中設置對應接口。接下來就可以控制了。我這里先使用LED測試。
7,RGB LED上實時顯示傳感器數(shù)據(jù),一個是溫度值,一個是光照強度值。
{0, 2000, RGB_LCD_Display}
添加顯示事件任務。RGB_LCD_Display實現(xiàn)2秒顯示溫度值,兩秒顯示光強值,周期切換顯示。
8,書房學習環(huán)境控制編程
1)開始學習后,學習30分鐘,休息10分。
當短按鍵時,開始學習;長按鍵時,完成學習。期間周期學習與休息循環(huán),時間到語言提示。
按鍵處理:
循環(huán)處理:
試用驗證與結果:
先來一張上述的結果及安裝。
接住驗證遠程實時監(jiān)控書房環(huán)境數(shù)據(jù),通過手機app遠程查看。
從數(shù)據(jù)來看,光線比較暗,溫度比較高,說明我的工作環(huán)境比較惡劣。
使用我的紅外筆照射光傳感器,可以看見光強值升高。
接下來展示app控制led燈的開關。
還有一個最重要的環(huán)節(jié)就是學習過程。為了方便測試,我修改為短按鍵開始學習,學習一分鐘,休息一分鐘,這樣循環(huán)學習,直到長按鍵,學習結束。我錄制了一段視頻看能否上傳。好像不能直接上傳本地視頻。先來兩張?zhí)貙懓伞?/p>