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