中文 | English

【家居物聯網】使用智慧行動裝置監控家居溫溼度(中篇)

文/曹永忠、許智誠、蔡英德

智慧家居是物聯網開發中非常重要的一環,前文〈【家居物聯網】使用智慧行動裝置監控家居溫溼度(上篇)〉(曹永忠, 許智誠, & 蔡英德, 2017c)文章中,我們先使用 DHT22 溫溼度感測模組(曹永忠, 2016, 2017a, 2017b; 曹永忠, 許智誠, & 蔡英德, 2016a, 2016b),讀出溫溼度資訊後,透過藍芽通訊方式,將資訊傳送到連接藍芽模組的另一端裝置,由於最後們要使用 MIT APP INVENTOR 2 開發工具,進行智慧行動裝置監控家居溫溼度之物聯網系統整合開發,所以本文先告知藍芽通訊中,我們要如何將感測器的資料進行編碼傳送,如何在編碼後進行傳送,在進行解碼後,顯示感測資料於行動裝置上,希望本文透過這樣簡單的案例,可以傳達筆者在智慧家居環境監控開發上經歷分享。

具藍芽通訊能力之讀取溫濕度感測器裝置

本文了讓 Ameba RTL8195AM 開發板進階使用,使用了更進階的的 DHT22 溫濕度感測模組(如下圖所示)(曹永忠, 許智誠, et al., 2016a, 2016b),

圖 1  DHT22 溫濕度感測模組

如下表所示,本模組只要將 Vcc 接到 Ameba RTL8195AM 開發板 +5V 腳位,Gnd接到 Ameba RTL8195AM 開發板 Gnd 腳位,DAT 接到 Ameba RTL8195AM 開發板 Digital Input 腳位 7,接下來介紹藍芽模組(HC-05/HC-06),如下圖所示,我們需要用到的硬體有藍芽模組(HC-05/HC-06):

圖 2藍芽模組(HC-05/HC-06)所需零件表

表 1整合藍芽模組之溫濕度感測模組接腳圖

DHT22 溫濕度感測模組 Ameba RTL8195AM

開發板接腳

解說
DAT Ameba RTL8195AM

digital Input pin 7

DHT22 資料輸出腳位
5V Ameba RTL8195AM 5V 5V 陽極接點
GND Ameba RTL8195AM Gnd 共地接點
 
藍芽模組(HC-05) 開發板
VCC +5V
GND GND
TX DigitalPin 0
RX DigitalPin 1

藍芽模組(HC-05/HC-06)

看不懂上面電路組立表的讀者,也可以參考下圖所示,將 Ameba RTL8195AM 開發板連接 DHT22 溫溼度感測模組與藍芽模組(HC-05/HC-06),完成電路組立。

圖 3整合電路組立圖

我們將下表之溫濕度讀取溫濕度測試程式攥寫好之後,編譯完成後上傳到開發板。

表 2 溫濕度讀取溫濕度測試程式

溫濕度讀取溫濕度測試程式(Phone_ReadDHT22)
#include <SoftwareSerial.h>

#include “DHT.h”

 

#define DHTPIN 7     // what digital pin we’re connected to

//#define DHTTYPE DHT11   // DHT 11

#define DHTTYPE DHT22   // DHT 22  (AM2302), AM2321

//#define DHTTYPE DHT21   // DHT 21 (AM2301)

float h,t,f ;

 

SoftwareSerial mySerial(0, 1); // RX, TX

DHT dht(DHTPIN, DHTTYPE);

 

unsigned char btchar ;

 

void setup() {

// put your setup code here, to run once:

dht.begin();

mySerial.begin(9600) ;

Serial.begin(9600) ;

Serial.println(“BT Start with DHT22”) ;

 

}

 

void loop() {

// put your main code here, to run repeatedly:

 

if (mySerial.available() > 0)

{

btchar = mySerial.read() ;

if (btchar == ‘@’)

{

btchar = mySerial.read() ;

if (btchar == ‘H’)

{

SendHumidity() ;

return ;

}

if (btchar == ‘T’)

{

SendTemperature() ;

return ;

}

 

}

}

 

}

void SendHumidity()

{

Serial.println(“Now send Humidity”) ;

h = dht.readHumidity();

mySerial.print(“#H”) ;

mySerial.print(String((int)h) );

mySerial.print(“*”) ;

}

 

void SendTemperature()

{

Serial.println(“Now send Temperature”) ;

t = dht.readTemperature();

mySerial.print(“#T”) ;

mySerial.print(String((int)t) );

mySerial.print(“*”) ;

}

 

參程式下載

上述程式執行後,可以見到下圖所示之溫濕度讀取溫濕度測試程式畫面結果,系統正準備接收命令來傳送感測器讀到外界的溫度與濕度了。

圖 4 具藍芽通訊之溫濕度讀取溫濕度測試程式畫面結果

手機安裝藍芽裝置

如下圖所示,一般手機、平板的主畫面或程式集中可以選到「設定:Setup」。

圖 5手機主畫面

如下圖所示,點入「設定:Setup」之後,可以到「設定:Setup」的主畫面,,如您的手機、平板的藍芽裝置未打開,請將藍芽裝置開啟。

圖 6 設定主畫面

如下圖所示,開啟藍芽裝置之後,可以看到目前可以使用的藍芽裝置。

圖 7 目前已連接藍芽畫面

如下圖所示,我們要將我們要新增的藍芽裝置加入手機、平板之中, 請點選下圖紅框處:搜尋裝置,方能增加新的藍芽裝置。

圖 8 搜尋藍芽裝置

如下圖所示,當我們要找到新的藍芽裝置,點選它之後,會出現下圖畫面,要求使用者輸入配對的 Pin 碼,一般為「0000」或「1234」。

圖 9 第一次配對-要求輸入配對碼

如下圖所示,我們可以輸入配對的Pin碼,一般為「0000」或「1234」,來完成配對的要求。

圖 10 藍芽要求配對

如下圖所示,我們可以輸入配對的 Pin 碼,一般為「0000」或「1234」,來完成配對的要求,本書例子為「1234」。

圖 11 輸入配對密碼(1234)

如下圖所示,如果輸入配對的 Pin 碼正確無誤,則會完成配對,該藍芽裝置會加入手機、平板的藍芽裝置清單之中。

圖12 完成配對後-出現在已配對區

如下圖所示,完成後,手機、平板會顯示已完成配對的藍芽裝置清單。

圖 13 目前已連接藍芽畫面

如下圖所示,完成配對的藍芽裝置後,我們可以用回上頁回到設定主畫面,完成新增藍芽裝置的配對。

圖 14 完成藍芽配對等完成畫面

安裝 Bluetooth RC APPs 應用程式

本文目的在測試開發板連接藍芽裝置,為了測試這些程式是否傳輸、接收命令是否正確,我們會先行安裝市面穩定的藍芽通訊 APPs 應用程式。

本書使用 Fadjar Hamidi F 公司攥寫的《Bluetooth RC》(網址連結)讀者可以到該網址下載之。

本章節主要是介紹讀者如何安裝 Fadjar Hamidi F 公司攥寫的「Bluetooth RC」。

如下圖所示,在手機主畫面進入 play 商店。

圖 15手機主畫面進入play商店

如下圖所示,下圖為play商店主畫面。

圖 16 Play商店主畫面

如下圖紅框處所示,我們在Google Play商店主畫面 – 按下查詢鈕。

圖 17 Play商店主畫面 – 按下查詢鈕

如下圖紅框處所示,我們在輸入「Bluetooth RC」查詢該 APPs 應用程式。

圖 18 Play商店主畫面 – 輸入查詢文字

如下圖紅框處所示,我們在輸入「Bluetooth RC」查詢,找到Bluetooth RC應用程式。

圖 19 找到BluetoothRC應用程式

如下圖紅框處所示,找到Bluetooth RC應用程式 -點下安裝。

圖 20 找到Bluetooth RC應用程式 -點下安裝

如下圖紅框處所示,點下「接受」,進行安裝。

圖 21 Bluetooth RC應用程式安裝主畫面要求授權

圖 22 Bluetooth RC應用程式安裝中

 

如下圖所示,Bluetooth RC 應用程式安裝中。

圖 23 Bluetooth RC應用程式安裝中二

 

如下圖所示,Bluetooth RC應用程式安裝完成。

圖 24 Bluetooth RC應用程式安裝完成

 

如下圖紅框處所示,我們可以點選「開啟」來執行Bluetooth RC應用程式。

圖 25 Bluetooth RC應用程式安裝完成後執行

如下圖所示,安裝好Bluetooth RC應用程式之後,一般說來手機、平板的桌面或程式集中會出現「Bluetooth RC」的圖示。

圖 26 Bluetooth RC應用程式安裝完成後的桌面

Bluetooth RC應用程式通訊測試

一般而言,如下圖所示,我們安裝好 Bluetooth RC 應用程式之後,手機、平板的桌面或程式集中會出現「Bluetooth RC」的圖示。

如下圖所示,我們點選手機、平板的桌面或程式集中「BluetoothRC」的圖示,進入《Bluetooth RC》應用程式。

圖 28執行 Bluetooth RC 應用程式

如下圖所示,為 Bluetooth RC 應用程式進入系統的抬頭畫面。

圖 29 Bluetooth RC tita 應用程式執行中

 

如下圖所示,為 Bluetooth RC 應用程式主畫面。

圖 30 Bluetooth RC 應用程式執行主畫面

如下圖紅框處所示,首先,我們要為 Bluetooth RC 應用程式選定工作使用的藍芽裝置,讀者要注意,系統必須要開啟藍芽裝置,且已將要連線的藍芽裝置配對完成後,並已經在手機、平板的藍芽已配對清單中,方能被選到。

圖 31 Bluetooth RC應用程式執行主畫面 – 選取藍芽裝置

如下圖所示,我們要可以選擇已經在手機、平板已配對清單中的藍芽,選定為 Bluetooth RC 應用程式工作使用的藍芽裝置。

 

圖 32 Bluetooth RC應用程式執行主畫面 – 已配對藍芽裝置列表

如下圖紅框處所示,我們要可以選擇已經在手機、平板已配對清單中的藍芽,進行 Bluetooth RC 應用程式工作使用。

圖 33 Bluetooth RC應用程式執行主畫面 – 選取配對藍芽裝置

 

如下圖紅框處所示,系統會出現目前 Bluetooth RC 應用程式工作使用藍芽裝置之 MAC。

圖 34 Bluetooth RC 應用程式執行主畫面 – 完成選取藍芽裝置

 

如下圖紅框處所示,點選 Bluetooth RC 應用程式執行主畫面紅框處 – 啟動文字通訊功能。

圖 35 Bluetooth RC 應用程式執行主畫面 – 啟動文字通訊功能

 

如下圖所示,為 Bluetooth RC 文字通訊功能主畫面。

圖 36 Bluetooth RC 文字通訊功能主畫面

如下圖紅框處所示,啟動藍芽通訊。

傳輸溫度命令說明

由於透過藍芽通訊方式來傳輸感測資料,由於無線傳輸中,傳送與接收不一定可以達到同步與序列通訊,所以我們用 REQUEST & RESPONSE 方式來通訊。

所以我們使用了「@」這個指令,來當作所有的資料開頭,接下來傳送要求哪一個感測器的資料(曹永忠, 吳佳駿, 許智誠, & 蔡英德, 2016a, 2016b, 2017a, 2017b; 曹永忠, 許智誠, & 蔡英德, 2017a, 2017b)。

我們定義傳輸溫度使用「T」代表要求傳輸溫度,而回傳資訊使用「#」這個指令代表接收到的感測資料,而依樣使用「T」代表要傳輸溫度,之後傳輸ASCII型態的數字資料後,使用「*」代表結束傳輸資料。

如下圖所示,我們輸入

@T

如下圖所示,我們在 Bluetooth RC 應用程式,在 Send 內容輸入其值:

圖 38 輸入「@T」

如下圖所示,程式收到傳送溫度的要求後,會進行傳送溫度感測器資料的訊息,並且回傳送溫度資訊:

圖 39輸入@T結果畫面

如下圖所示,在藍芽接收端(Bluetooth RC)程式收到傳送溫度的資料,會接收到「#T24*」的溫度資料的訊息,並且回應在畫面上。

圖 40 藍芽裝置接收溫度資訊畫面

傳輸濕度命令說明

由於透過藍芽通訊方式來傳輸感測資料,由於無線傳輸中,傳送與接收不一定可以達到同步與序列通訊,所以我們用 REQUEST & RESPONSE 方式來通訊。

所以我們使用了「@」這個指令,來當作所有的資料開頭,接下來傳送要求哪一個感測器的資料(曹永忠, 吳佳駿, et al., 2016a, 2016b, 2017a, 2017b; 曹永忠, 許智誠, et al., 2017a, 2017b)。

我們定義傳輸溫度使用「H」代表要求傳輸溫度,而回傳資訊使用「#」這個指令代表接收到的感測資料,而依樣使用「H」代表要傳輸溫度,之後傳輸 ASCII 型態的數字資料後,使用「*」代表結束傳輸資料。

如下圖所示,我們輸入:

@H

如下圖所示,我們在 Bluetooth RC 應用程式,在 Send 內容輸入其值:

圖 41 輸入「@H」

如下圖所示,程式收到傳送溫度的要求後,會進行傳送溫度感測器資料的訊息,並且回傳送溫度資訊:

圖 42 輸入 @H 結果畫面

如下圖所示,在藍芽接收端(Bluetooth RC)程式收到傳送溫度的資料,會接收到「#H24*」的溫度資料的訊息,並且回應在畫面上。

圖 43 藍芽裝置接收濕度資訊畫面

最後本文中介紹了如何讀取溫溼度感測模組的資訊,並介紹藍芽模組如何進行通訊的技術,相信讀者看完之後,對傳輸資料的技術,可以有相當程度的運用能力。

後續

本篇是「物聯網」系列中〈使用智慧行動裝置監控家居溫溼度〉之中篇,主要告訴讀者,如何讓 Ameba RTL 8195 AM 開發板讀取溫溼度模組,進而解釋通訊方式,如何使用 Request / Response 方式要求傳送資訊與傳送資訊,下篇筆者會針對手機應用程式開發做進一步解析,做更進一步的講解。

後續筆者還會繼續發表「物聯網」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網(Internet of Thing:IOT)產品開發相關技術。

敬請期待更多的文章。

 

 

作者介紹

作者介紹
曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業 Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。Email:prgbruce@gmail.com、Line ID:dr.brucetsao
作者網頁臉書社群(Arduino.Taiwan)Github 網站Youtube

許智誠(Chih-Cheng Hsu),美國加州大學洛杉磯分校(UCLA)資訊工程系博士,曾任職於美國 IBM 等軟體公司多年,現任教於中央大學資訊管理學系專任副教授,主要研究為軟體工程、設計流程與自動化、數位教學、雲端裝置、多層式網頁系統、系統整合。
Email: khsu@mgt.ncu.edu.tw

蔡英德(Yin-Te Tsai),國立清華大學資訊科學系博士,目前是靜宜大學資訊傳播工程學系教授、靜宜大學計算機及通訊中心主任,主要研究為演算法設計與分析、生物資訊、軟體開發、視障輔具設計與開發。
Email:yttsai@pu.edu.tw

參考文獻:

曹永忠. (2016). 智慧家庭:PM2.5 空氣感測器(感測器篇). 智慧家庭.  Retrieved 2016/2/26, from https://vmaker.tw/archives/3812

曹永忠. (2017a). 如何使用Linkit 7697建立智慧溫度監控平台(上).   Retrieved 2017/7/3, from http://makerpro.cc/2017/07/make-a-smart-temperature-monitor-platform-by-linkit7697-part-one/

曹永忠. (2017b). 如何使用LinkIt 7697建立智慧溫度監控平台(下).   Retrieved 2017/8/2, from http://makerpro.cc/2017/08/make-a-smart-temperature-monitor-platform-by-linkit7697-part-two/

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2016a). Ameba气氛灯程序开发(智能家庭篇):Using Ameba to Develop a Hue Light Bulb (Smart Home) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2016b). Ameba氣氛燈程式開發(智慧家庭篇):Using Ameba to Develop a Hue Light Bulb (Smart Home) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017a). 藍芽氣氛燈程式開發(智慧家庭篇) (Using Nano to Develop a Bluetooth-Control Hue Light Bulb (Smart Home Series)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017b). 蓝芽气氛灯程序开发(智能家庭篇) (Using Nano to Develop a Bluetooth-Control Hue Light Bulb (Smart Home Series)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2016a). Arduino程式教學(溫溼度模組篇):Arduino Programming (Temperature& Humidity Modules) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2016b). Arduino程序教学(温湿度模块篇):Arduino Programming (Temperature& Humidity Modules) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2017a). Ameba 8710 Wifi气氛灯硬件开发(智慧家庭篇) (Using Ameba 8710 to Develop a WIFI-Controled Hue Light Bulb (Smart Home Serise)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2017b). Ameba 8710 Wifi氣氛燈硬體開發(智慧家庭篇) (Using Ameba 8710 to Develop a WIFI-Controled Hue Light Bulb (Smart Home Serise)) (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2017c). 【家居物聯網】使用智慧行動裝置監控家居溫溼度(上篇). 智慧家庭.  Retrieved 2017/11/23, from https://vmaker.tw/archives/21957

分享到社群

曹永忠

曹永忠 (Yung-Chung Tsao) ,目前為自由作家暨專業Maker,專研於軟體工程、軟體開發與設計、物件導向程式設計,商品攝影及人像攝影。長期投入創客運動、資訊系統設計與開發、企業應用系統開發、軟體工程、新產品開發管理、商品及人像攝影等領域,並持續發表作品及相關專業著作。 Email:prgbruce@gmail.com Line ID:dr.brucetsao 作者網站:https://www.cs.pu.edu.tw/~yctsao/ 臉書社群(Arduino.Taiwan):https://www.facebook.com/groups/Arduino.Taiwan/ Github網站:https://github.com/brucetsao/ Youtube:https://www.youtube.com/channel/UCcYG2yY_u0m1aotcA4hrRgQ