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