學習目標 : 認識faya 溫濕度感應模組的功能及使用方式
學習時間 : 40min
示範模組 : (1) faya brickNano
(2) faya串列LCD模組
(3) 16x2 LCD模組 (20x2 或 20x4 LCD亦可)
(4) faya溫濕度感應模組
工具 : (1) 樂高積木底板 (相容)
====================功能介紹====================
duino)讀取溫濕度的資料,他的外觀很簡單,只提供Data輸出埠,接到Arduino的數位腳後,就可以用外掛的函式讀取溫度與濕度的資料。

模組中央藍色的塑膠立方體就是溫濕度感測器,代號DHT11,他是一CP值很高的溫濕度感測器,對於一般環境偵測的精確度是可接受的,如果需要精確度更高的型號,可以選擇DHT21和DHT22可以參考!
接下來介紹使用指令
- #include<dht.h>; Arduino針對dht溫濕度感測器,開發了好用的函示庫,使用此感測器之前,記得先指示此函式標頭檔,此函式庫非內建,因此使用使函式前,請先將整個[dht]資料夾複製到Arduino底下的Libraries資料夾,本函式庫可從官方網站下載,也可從這邊下載。
- dht 物件名稱 ;
(例) 當我們建構一物件名稱為"faya_dht11"時,我們在程式中需宣告:
dht faya_dht11;
- 物件名稱.read11(dht腳位)
物件名稱 : 可自行命名,主程式辨別用
dht腳位: dht11連接到Arduino的數位腳位
(例) 當我們建構物件名稱為"faya_dht11",並把第5腳連到dht11時,程式中需宣告:
- 物件名稱.temperature
(例) 當我們建構物件名稱為"faya_dht11",並要取出溫度資料時,程式中需宣告:
faya_dht11.temperature;
- 物件名稱.humidity
(例) 當我們建構物件名稱為"faya_dht11",並要取出濕度資料時,程式中需宣告:
faya_dht11.humidity;
====================原理知識====================
以下解釋提供給有需要知道背後原理的人:
本模組所使的溫濕度感應器型號為DHT11,感應器的外觀有一藍色塑膠外殼,裡面除了溫濕度感測電路外,也包含了類比數位轉換電路和一顆微控制器,將轉換好的數位資料,編碼成特定格式,讓外部的控制器(我們用Arduino)讀取。
濕度範圍: 20-90% RH
濕度準確度: ±5% RH
溫度範圍: 0-50 °C
溫度準確度: ±2% °C
操作電壓: 3V to 5.5V
faya溫濕度感應模組的電路圖如下,只要把Data腳位和微控制器中間加個提升電阻,就能開始使用了!
了解模組功能(原理)後,我們用以下範例來展示模組的功能:
目標:
(1) 在 16x2 LCD顯示器上第一列顯示[目前溫度]
(1) 在 16x2 LCD顯示器上第二列顯示 [目前濕度]
接線:
(1) 電源線連接
如下圖所示,連接的說明請看這篇文章 或簡易版
(2) 訊號線連接
Arduino_A4 ===> 串列LCD模組_SDA
Arduino_A5 ===> 串列LCD模組_SCL
Arduino_5 ===> 溫濕度感應模組_Data
範例程式:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// 2017/7/27 | |
// Faya-Nugget 範例程式 (DHT11_1.ino) | |
// 單元: 模組介紹:faya溫濕度感應模組 | |
// 網址: https://fayalab.blogspot.com/2017/07/DHT11.html | |
// 目標: (1) LCD模組第一行顯示目前溫度 | |
// (2) LCD模組第二行顯示目前濕度 | |
// 接線: Arduino ==> faya模組 | |
// A4 ==> SDA (串列LCD模組) | |
// A5 ==> SCL (串列LCD模組) | |
// 5 ==> Data(溫濕度感應模組) | |
#include <Wire.h> //I2C函式庫 | |
#include <LiquidCrystal_I2C.h> //串列lcd函式庫 | |
#include <dht.h> //dht11函式庫 | |
//定義LCD的位址與參數 | |
LiquidCrystal_I2C lcd(0x20,16,2); // LCD位址:0x20 ; LCD規格:16x2 | |
//定義DHT11的腳位 | |
#define _dhtpin 5 // 數位5腳接到DHT11 | |
//建構物件名稱 | |
dht faya_dht11; | |
int read_temp = 0; //溫度變數 | |
int read_humd = 0; //濕度變數 | |
void setup() | |
{ | |
lcd.init(); // 初始化LCD | |
lcd.backlight(); // 啟動背光 | |
} | |
void loop() | |
{ | |
int chk = faya_dht11.read11(_dhtpin); // 讀取並儲存溫濕度資料 | |
read_temp = faya_dht11.temperature; //取出溫度變數 | |
read_humd = faya_dht11.humidity; //取出濕度變數 | |
lcd.setCursor(0,0); //LCD游標位置 第1列第1行 | |
lcd.print("Temp = "); // 秀溫度 | |
lcd.print(read_temp); | |
lcd.print("\337C"); //溫度符號 \337 | |
lcd.setCursor(0,1); //LCD游標位置 第2列第1行 | |
lcd.print("Humidity = "); // 秀濕度 | |
lcd.print(read_humd); | |
lcd.print("%"); //每2秒更新一次 | |
delay(2000); | |
} |
備註:
- faya串列LCD的使用方式,請參考[模組介紹 : faya 串列LCD模組]
- L43列印溫度符號,他在lcd的R0M裡的代碼是0xDF,轉成八進位可用[/337]表示
範例結果:
討論:
本篇文章示範將溫溼度顯示在串列LCD模組上,我們曾經介紹過[faya串列七段顯示模組],大家也可以練習把這兩筆資料輪流放在此模組上喔!
歡迎大家在底下留言或到我們的粉絲團留言!
===================================
沒有留言:
張貼留言