中文 | English

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

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

智慧家居是物聯網開發中非常重要的一環,筆者之前文章〈智慧家庭:健康體重的核心技術〉(曹永忠, 許智誠, & 蔡英德, 2015h, 2017)、〈家居生活的好夥伴:讓 ARDUINO 照顧您的眼睛〉(曹永忠, 許智誠, & 蔡英德, 2015g)、〈家居生活的好保全:讓ARDUINO替您看顧您的房子〉(曹永忠, 許智誠, & 蔡英德, 2015f)、〈「物聯網」的生活應用實作:用 DS18B20 溫度感測器偵測天氣溫度〉(曹永忠, 許智誠, & 蔡英德, 2015e)…等文章中,筆者一直在討論智慧家居的概念,不過這些文章中,仍是著重在感測器的基礎開發,對於智慧監控等裝置較少著墨。

對於智慧家居環境監控議題中,手機、平板等智慧裝置的應用(曹永忠, 吳佳駿, 許智誠, & 蔡英德, 2016a, 2016b, 2017a, 2017b; 曹永忠, 許智誠, & 蔡英德, 2015c, 2015d, 2016a, 2016b; 曹永忠, 蔡佳軒, 許智誠, & 蔡英德, 2015a, 2015b),反而是智慧家居非常重要的一環,若能將感測裝置與智慧行動裝置整合,將可以讓智慧家居的開發更加完善。

本文將使用 DHT22 溫溼度感測模組(曹永忠, 2016, 2017a, 2017b; 曹永忠, 許智誠, & 蔡英德, 2016c, 2016d),讀出溫溼度資訊後,透過藍芽通訊方式,將資訊傳送到智慧行動裝置,透過 MIT APP INVENTOR 2 開發工具,進行智慧行動裝置監控家居溫溼度之物聯網系統整合開發,希望透過這樣簡單的案例,可以傳達筆者在智慧家居環境監控開發上經歷分享。

溫濕度感測器介紹

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

圖 1  DHT22 溫濕度感測模組

如下表所示,本模組只要將 Vcc 接到 Ameba RTL8195AM 開發板 +5V 腳位,Gnd 接到 Ameba RTL8195AM 開發板 Gnd 腳位,DAT 接到 Ameba RTL8195AM 開發板 Digital Input 腳位 7,完成電路組立。

表 1 DHT22 溫濕度感測模組接腳圖

DHT22 溫濕度感測模組 Arduino 開發板接腳 解說
DAT Ameba RTL8195AM

digital Input pin 7

DHT22 資料輸出腳位
5V Ameba RTL8195AM 5V 5V 陽極接點
GND Ameba RTL8195AM Gnd 共地接點
 

看不懂上面電路組立表的讀者,也可以參考下圖所示,將本模組只要將 Vcc 接到 Ameba RTL8195AM 開發板 +5V 腳位,Gnd 接到 Ameba RTL8195AM 開發板 Gnd 腳位,DAT 接到 Ameba RTL8195AM 開發板 Digital Input 腳位 7,完成電路組立。

圖 2  DHT22 電路組立圖

如下圖所示,我們可以看到 DHT22 溫濕度感測模組實際接到 Ameba RTL8195AM 開發版之電路實際組立圖。

圖 3  DHT22 電路組立圖

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

表 2 DHT22 溫濕度感測器讀取溫濕度測試程式

DHT22溫濕度感測器讀取溫濕度測試程式(DHT22)
// Example testing sketch for various DHT humidity/temperature sensors

// Written by ladyada, public domain

 

#include “DHT.h”

 

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

 

// Uncomment whatever type you’re using!

//#define DHTTYPE DHT11   // DHT 11

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

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

 

// Connect pin 1 (on the left) of the sensor to +5V

// NOTE: If using a board with 3.3V logic like an Arduino Due connect pin 1

// to 3.3V instead of 5V!

// Connect pin 2 of the sensor to whatever your DHTPIN is

// Connect pin 4 (on the right) of the sensor to GROUND

// Connect a 10K resistor from pin 2 (data) to pin 1 (power) of the sensor

 

// Initialize DHT sensor.

// Note that older versions of this library took an optional third parameter to

// tweak the timings for faster processors.  This parameter is no longer needed

// as the current DHT reading algorithm adjusts itself to work on faster procs.

DHT dht(DHTPIN, DHTTYPE);

 

void setup() {

Serial.begin(9600);

Serial.println(“DHTxx test!”);

 

dht.begin();

}

 

void loop() {

// Wait a few seconds between measurements.

delay(2000);

 

// Reading temperature or humidity takes about 250 milliseconds!

// Sensor readings may also be up to 2 seconds ‘old’ (its a very slow sensor)

float h = dht.readHumidity();

// Read temperature as Celsius (the default)

float t = dht.readTemperature();

// Read temperature as Fahrenheit (isFahrenheit = true)

float f = dht.readTemperature(true);

 

// Check if any reads failed and exit early (to try again).

if (isnan(h) || isnan(t) || isnan(f)) {

Serial.println(“Failed to read from DHT sensor!”);

return;

}

 

// Compute heat index in Fahrenheit (the default)

float hif = dht.computeHeatIndex(f, h);

// Compute heat index in Celsius (isFahreheit = false)

float hic = dht.computeHeatIndex(t, h, false);

 

Serial.print(“Humidity: “);

Serial.print(h);

Serial.print(” %\t”);

Serial.print(“Temperature: “);

Serial.print(t);

Serial.print(” *C “);

Serial.print(f);

Serial.print(” *F\t”);

Serial.print(“Heat index: “);

Serial.print(hic);

Serial.print(” *C “);

Serial.print(hif);

Serial.println(” *F”);

}

程式下載

上述程式執行後,可以見到下圖之 DHT22 溫濕度感測器讀取溫濕度測試程式畫面結果,也可以輕易讀到外界的溫度與濕度了。

圖 4 讀取DHT22溫濕度感測器測試程式畫面結果

藍芽模組控制

我們接下來介紹藍芽模組(HC-05/HC-06),如下圖所示,我們需要用到的硬體有藍芽模組(HC-05/HC-06):

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

我們遵從下表來組立電路,來完成電路組立。

表 3 使用手機控制風扇接腳表

藍芽模組(HC-05) 開發板
VCC +5V
GND GND
TX DigitalPin 0
RX DigitalPin 1

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

我們打開 Arduino 開發板的開發工具:Sketch IDE 整合開發軟體,攥寫一段程式,如下表所示之藍芽模組(HC-05/HC-06)測試程式一,並將之編譯後上傳到 Ameba 8195 AM 開發板(曹永忠, 許智誠, & 蔡英德, 2015a, 2015b)。

表 4 8 藍芽模組(HC-05/HC-06)

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

#include <SoftwareSerial.h>   // 引用程式庫

 

// 定義連接藍牙模組的序列埠

SoftwareSerial BT(0, 1); // 接收腳, 傳送腳

char val;  // 儲存接收資料的變數

 

void setup() {

Serial.begin(9600);   // 與電腦序列埠連線

Serial.println(“BT is ready!”);

 

// 設定藍牙模組的連線速率

// 如果是HC-05,請改成9600

BT.begin(9600);

}

 

void loop() {

 

// 若收到藍牙模組的資料,則送到「序列埠監控視窗」

if (BT.available()) {

val = BT.read();

Serial.print(val);

}

 

// 若收到「序列埠監控視窗」的資料,則送到藍牙模組

if (Serial.available()) {

val = Serial.read();

BT.write(val);

}

}

圖 6 Arduino 通訊監控畫面-監控藍芽通訊內容

如下圖所示,我們執行後,會出現「BT is ready!」後,我們在下圖左上角紅框區輸入區中,輸入文字,輸入完畢後,按下下圖所示之右上角紅框區傳送鈕將資料傳出。

圖 7 通訊監控畫面-輸入送出通訊內容字元輸入區

如下圖所示,我們輸入文字「abcd」,輸入完畢後按下下圖所示之右上角紅框區傳送鈕將資料傳出。

圖 8 通訊監控畫面-送出輸入區內容

如下圖所示,我們在手機端使用 BlueToothRC 應用程式,連接 Ameba 8195AM 所使用的 HC-05 藍芽模組後,進行傳輸作業,我們可以在下圖所示中,看到傳入的「abcd」的文字,可以見到 Ameba 8195AM 所使用的 HC-05 藍芽模組已成功傳送資料。

 

圖 8 手機端藍芽接收畫面

如下圖所示,我們在手機端使用 BlueToothRC 應用程式,連接 Ameba 8195AM 所使用的 HC-05 藍芽模組後,輸入的「ameba 8195 am」的文字,再按下右上角之傳送鈕,將資料傳出到另一端藍芽模組。

 

圖 8手機端藍芽接收畫面

如下圖所示,我們在監控視窗中,將藍芽模組接收的所有資訊,轉顯示在監控視窗上,我們可以看到手機端傳送的「ameba 8195 am」的文字,請注意,本文為了傳送顯示效果,我們共傳送三次,請讀者不要誤會。

圖 8 通訊監控畫面-取得手機端藍芽傳送資料

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

後續

本篇是「物聯網」系列中〈使用智慧行動裝置監控家居溫溼度〉之上篇,主要告訴讀者,如何讓 Ameba RTL 8195 AM 開發板讀取溫溼度模組,在使用藍芽模組與手機端相互傳送資料,下篇筆者會針對傳送編碼與原理做進一步解析,做更進一步的講解。

後續筆者還會繼續發表「物聯網」系列的文章,在未來我們可以創造出更優質,更具未來性的物聯網(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). Ameba程式設計(物聯網基礎篇):An Introduction to Internet of Thing by Using Ameba RTL8195AM (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 吳佳駿, 許智誠, & 蔡英德. (2017b). Ameba程序设计(物联网基础篇):An Introduction to Internet of Thing by Using Ameba RTL8195AM (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015a). Arduino手機互動程式設計基礎篇:Using Arduino to Develop the Interactive Games with Mobile Phone via the Bluetooth (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015b). Arduino樂高自走車:Using Arduino to Develop an Autonomous Car with LEGO-Blocks Assembled (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015c). LinkIt智能电力监控(网络篇):Using LinkIt ONE to Develop an IOT-based Power-Socket (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015d). LinkIt智慧電力監控(網路篇)):Using LinkIt ONE to Develop an IOT-based Power-Socket (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2015e). 『物聯網』的生活應用實作:用DS18B20溫度感測器偵測天氣溫度.   Retrieved 2015/9/19, from http://www.techbang.com/posts/26208-the-internet-of-things-daily-life-how-to-know-the-temperature-and-humidity

曹永忠, 許智誠, & 蔡英德. (2015f). 家居生活的好保全:讓ARDUINO替您看顧您的房子.   Retrieved 2015/6/30, from http://makerdiwo.com/archives/3653

曹永忠, 許智誠, & 蔡英德. (2015g). 家居生活的好夥伴:讓ARDUINO照顧您的眼睛.   Retrieved 2015/5/26, from http://makerdiwo.com/archives/2920

曹永忠, 許智誠, & 蔡英德. (2015h). 智慧家庭:健康體重的核心技術. 智慧家庭.  Retrieved 2015/12/15, from https://makerdiwo.com/archives/6838

曹永忠, 許智誠, & 蔡英德. (2016a). Arduino投币定时器(网络篇):Using Arduino to Develop a Timing Controlling Device via Internet (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 許智誠, & 蔡英德. (2016b). Arduino投幣計時器(網路篇):Using Arduino to Develop a Timing Controlling Device via Internet (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

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

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

曹永忠, 許智誠, & 蔡英德. (2017). 【物聯網開發系列】氣象物聯網 :風力偵測開發感測器篇. 物聯網開發系列.  Retrieved 2017/8/8, from https://vmaker.tw/archives/19431

曹永忠, 蔡佳軒, 許智誠, & 蔡英德. (2015a). Arduino智慧电力监控(手机篇):Using Arduino to Develop an Advanced Monitoring Device of the Power-Socket (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

曹永忠, 蔡佳軒, 許智誠, & 蔡英德. (2015b). Arduino智慧電力監控(手機篇):Using Arduino to Develop an Advanced Monitoring Device of the Power-Socket (初版 ed.). 台湾、彰化: 渥瑪數位有限公司.

 

分享到社群

曹永忠

曹永忠 (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