透過LinkIt 7697 IoT 小屋學習打造智慧家庭(上)

一、介紹

採用LinkIt 7697作為主控板的IoT小屋教學套件,可讓您學習如何撰寫程式並使用感測器,結合網路服務達到學習物聯網的目的。

主控板LinkIt 7697 擁有藍牙與Wi-Fi,可依照使用者的需求輕鬆使用聯發科相關服務(LinkIt RemoteMediaTek Cloud Sandbox Lite)。

撰寫程式的環境有Arduino IDE 與圖塊程式BlocklyDuino (最新版本只有Windows版)兩種選擇,適合入門到進階的使用者。

搭配套件包內的環境感測器即可搭建適合教學的物聯網小屋。 

二、組裝說明

IoT小屋外觀設計相當簡約,由5片木板拼裝而成,只有兩個固定用鎖點。除了有些感測器的鎖點需要兩個之外,其他感測器的位子可以隨意調動,就算是隨意組裝也可成型,不妨挑戰看看在不看說明書的情況下組裝吧!

但是接線的部分就只能參照說明書了,接下來的程式教學也會參考說明書中的接線位子,組裝說明書內容達20頁PPT,如果需要參考說明書或用於教學用途,可以下載「組裝說明書(含接線說明)」取得。

組裝SOP-IOT小屋套件包-for-LinkIt-7697_compressed-1

三、軟體安裝

(一)軟體下載

撰寫程式時我們是採用與Scratch類似的Blockly來編寫程式,所以需要下載 LinkIt 7697 專用的程式撰寫編輯器BlocklyDuino v3

目前該程式只支援Windows的作業系統,請依照自己的版本將下載下來的壓縮檔解壓縮。

因為該編輯器是免安裝的版本,對於路徑相當要求,解壓縮後的資料夾不能放置在任何有中文檔名的資料夾內,否則上傳程式時可能會產生錯誤。

資料夾內有個名為「BlocklyDuino.exe」的執行檔案,點開這個檔案即可啟動程式編輯器,如下圖所示:

(二)安裝驅動程式

請點選「CP2102N 驅動程式」下載並安裝,以便PC能連接到您的 LinkIt 7697 。 

點選頁面內「DOWNLOADS」的選項,並依照您作業系統的版本,下載對應的驅動程式並安裝。

完成上述步驟就可以開始來寫程式,並控制組裝好的IoT小屋

四、基礎程式撰寫

我們將逐一講解各個感測器該如何使用,並帶大家將所有的模組整合在一起,結合RGB LED蜂鳴器製作事件觸發效果。

為了避免篇幅過大,BlocklyDuino 內的基本功能,例如迴圈、變數、時間……等,於此不再贅述,若是第一次使用此軟體撰寫程式,可以參考官方教學

(一)火焰感測器

依照說明書的接線位子,火焰感測器連接在 LinkIt 7697「P11」腳位。

LinkIt 7697 腳位P0~P13皆屬於數位I/O,火焰感測器也是屬於數位訊號的感測器,所以請點開BlocklyDuino 左側積木列表的「數位I/O」選項,點開後可以看到右側出現該選項內的程式清單,如下圖所示:

我們要讀取 火焰感測器 的訊號,來得知附近是否有火源。請在數位I/O裡面的程式清單中,拖拉出「數位讀取 Pin[0 – UART]」,並將該行程式存放在一個變數當中。變數建議取有意義的名稱,最後一起放在「重複執行」的區塊中,並透過下拉式選單設定腳位為「11」,如下圖所示:

我們已經透過程式讀取了火焰感測器的數值,並存放在變數當中,我們可以透過BlocklyDuino內建的Serial監控軟體「PuTTY」將數值印在電腦上。

首先點開「序列埠I/O」,可以查看到可用的程式清單。

接著將「初始化序列埠[9600]」放到「初始化」區塊當中,以及將「序列埠印出(換行)”   ” 」放到「重複執行」區塊當中,並透過串接文字的功能結合一些文字後將變數的值放於「序列埠印出(換行)”   ” 」後方,如下圖所示:

「Micro USB線」插上電腦與LinkIt 7697,按下「燒錄按鈕」,將方才撰寫的程式燒錄到LinkIt 7697內,燒錄完畢後點選如下圖所示的按鈕,可開啟Serial監控軟體「PuTTY」。

從Serial監控軟體「PuTTY」中可以看到 火焰感測器 未感測到火源時,讀取到的狀態為1,若是將 火焰感測器 靠近火源,例如使用打火機點火並靠近 火焰感測器 ,則可以看到讀取到的狀態為0。

Serial監控軟體「PuTTY」可以讓我們確認感測器的各個狀態,並針對每個狀態撰寫對應的程式。接下來我們將結合蜂鳴器,來製作火焰警報器。

(二)蜂鳴器

依照說明書的接線位子, 蜂鳴器 連接在 LinkIt 7697「P10」腳位。

IoT小屋教學套件的蜂鳴器是無源的蜂鳴器,這種類型的蜂鳴器無法使用腳位控制高電位或低電位來發出或停止聲響,需要特殊的功能才能啟動,請點開BlocklyDuino左側積木列表的「音調」選項。

我們將使用下圖中的兩個程式,「音調 Pin[0 – UART]頻率[C:Do]」可讓 蜂鳴器 發出我們指定的聲音,「停止音調 Pin[0 – UART]」可用來關閉 蜂鳴器

熟知蜂鳴器程式的用法後,我們回到原先的程式,現在來製作一個當遇到火源時就發出聲音的火焰警報器。

從程式列表「邏輯」當中拉出「如果…執行…」與相關「比較」的程式,用來判斷 火焰感測器 的狀態。當 火焰感測器 偵測到火源時,透過蜂鳴器發出「頻率[E:Mi]」的聲音並間隔「0.1秒」,如下圖所示:

還記得 火焰感測器 靠近火源時狀態是0嗎?也別忘了不管是播放還是停止音調,Pin後方的下拉式選單,要記得選擇連接的腳位「10」喔~

檢查完畢後就可以將程式燒錄到 LinkIt 7697 內,用打火機實際測試看看,是不是有成功呢?趁著剛剛學會使用 蜂鳴器 ,我們再加入 水位感測器 ,來製作下雨警報器吧!

(三)水位感測器

依照說明書的接線位子,水位感測器連接在 LinkIt 7697「P14」腳位。

水位感測器火焰感測器 較為不同,不僅僅是功能上不同,傳送訊號上也不同,從剛剛的教學可以知道 火焰感測器 屬於「數位訊號類型」的感測器,這種訊號類型的感測器訊號只會有「0」「1」兩種。

水位感測器 則是屬於「類比訊號類型」的感測器,這種訊號類型的感測器訊號依照連接在 LinkIt 7697 上有「0~4095」這麼多。也就是說「類比訊號類型」比起「數位訊號類型」的感測器,多了所謂的「幅度」

我們以溫度來舉例,「數位訊號類型」的感測器只能感測到所謂的「熱」「冷」「類比訊號類型」則可以感測到熱與冷的程度是多少,是稍微熱、非常熱還是很冷。

要讀取「類比訊號類型」的感測器請點開BlocklyDuino左側積木列表的「類比I/O」選項,點開後可以看到右側出現該選項內的程式清單,如下圖所示:

在類比I/O裡面的程式清單中,拖拉出「類比讀取 Pin[14]」,並將該行程式存放在一個變數當中。變數建議取有意義的名稱,最後一起放在「重複執行」的區塊中,因為預設就是我們連接的腳位「14」,所以就不用透過下拉式選單另外設定。

為了透過Serial監控軟體「PuTTY」將數值印在電腦上,我們使用與 火焰感測器 相同的設定。

如下圖所示:

按下「燒錄按鈕」,將方才撰寫的程式燒錄到 LinkIt 7697 內,燒錄完畢後開啟Serial監控軟體「PuTTY」

若您與小編一樣有手汗,或是可以沾水後,將手貼在 水位感測器 上面的一條一條金屬線上,就能透過Serial監控軟體「PuTTY」看到數值的變化。接下來就針對這樣的變化,來製作一個遇到下雨時發出聲音通知的下雨警報器。

從程式列表「邏輯」當中拉出「如果…執行…」與相關「比較」的程式,用來判斷水位感測器的狀態。當水位感測器偵測到的濕度大於200時,透過 蜂鳴器 發出「頻率[F:Fa]」的聲音並間格「0.1秒」,如下圖所示:

程式撰寫完畢後,別忘了確認腳位是否有選擇正確,接著將程式燒錄到LinkIt 7697 內,燒錄完畢後實際測試看看吧!

(四)溫溼度感測器

緊接著我們來看第四個模組,溫溼度感測器。依照說明書的接線位子,溫溼度感測器連接在 LinkIt 7697「P12」腳位。

這個溫溼度感測器使用的感測元件是DHT11,這是相當常見且便宜的溫溼度感測器,可以感測到的溫度範圍是「0~50度」,濕度則是以相對百分比表示,範圍是「0~100%」。這顆感測器與蜂鳴器 一樣需要用特殊的程式來使用。

請點開BlocklyDuino左側積木列表的「感測模組」「環境感測」選項,DHT11就在清單中的第一項。

「溫溼度計[DHT11]訊號:[0 – UART]量測數值:[相對溼度(%)]」儲存在變數中,因為可讀取兩種資料,所以請設定兩個變數,並於量測程式最後方的下拉式選單選擇要量測的是「溫度」還是「濕度」。與前幾次的步驟一樣,記得設定連接腳位,並透過序列埠將資料印出來。

撰寫完畢後按下「燒錄按鈕」,將方才撰寫的程式燒錄到 LinkIt 7697 內,燒錄完畢後開啟Serial監控軟體「PuTTY」,即可看到現在感測到的溫度與濕度數值。

(五)光源感測器

有偵測水、火、空氣,當然連光都不能放過囉!現在讓我們來看看光源感測器。依照說明書的接線位子,光源感測器連接在 LinkIt 7697「P13」腳位。

光源感測器火焰感測器 一樣,是屬於「數位訊號類型」的感測器,請在數位I/O裡面的程式清單中,拖拉出「數位讀取 Pin[0 – UART]」,並將該行程式存放在一個變數當中。與讀取前幾次的感測器一樣設定連接的腳位,同樣透過序列埠將資料印出來。

撰寫完畢後按下「燒錄按鈕」,將方才撰寫的程式燒錄到 LinkIt 7697 內,燒錄完畢後開啟Serial監控軟體「PuTTY」,即可看到現在感測到的光源感測器數值。

輸出的訊號,光源感測器與 火焰感測器 相同,有光線時為「0」反之為「1」,我們可以結合下一個要介紹的RGB LED,來製作一個白天時關閉室內燈,夜晚時自動亮燈的功能。

(六)RGB LED

依照說明書的接線位子,RGB LED「R」「G」「B」分別連接在 LinkIt 7697「P4」「P5」「P3」腳位。

我們可以透過類比輸出(PWM)的功能,分別控制「R」「G」「B」連接的三個腳位,透過每個顏色輸出的多與少(0~255)混合出不同的顏色。

例如將3個腳位通通輸出為255,即可發出白光,若通通輸出為0,則關閉LED,如下圖所示:

接下來我們參照光源感測器的讀取數值,來控制這顆LED。這次除了從程式列表「邏輯」當中拉出「如果…執行…」與相關「比較」的程式之外,還需要擴充「否則」的功能。當光源感測器測到光線時,控制LED燈關閉,當光源感測器沒有測到光線時,控制LED燈開啟,如下圖所示:

程式撰寫完畢後,別忘了確認腳位是否有選擇正確,接著將程式燒錄到 LinkIt 7697 內。燒錄完畢後實測看看,用手靠近光源感測器遮擋光線,查看RGB LED有無依照設定的顏色亮起,將手拿開查看LED是否關閉。您可以依照自己的喜好調整LED光的顏色。

五、程式下載

完整程式連結

六、結論

本篇教大家IoT 小屋套件基礎的操作,以及如何搭配RGB LED蜂鳴器製作事件觸發效果。下一篇將帶大家啟動藍牙與Wi-Fi功能,透過手機或電腦來監控IoT小屋,請大家多多支持我們喔!