介紹
如果你已經認識 Arduino,寫過一些簡單的 Arduino 程式,比如讓 LED 發光閃爍、讓蜂鳴器發出聲音,你知道怎麼在 2x16 字元 LCD 上顯示資料,而且也知道怎麼使用 SHT15 溫溼計,那麼接下來的這個實驗你可能會有興趣,我們將用 Arduino 製作一個溫溼度記錄器。
這個溫溼度記錄器會有底下這些功能:
- 可以感測環境的溫溼度
- 可以在 2x16 字元 LCD 上顯示目前的溫度與溼度
- 可以把溫溼度資料存檔記錄起來
有件事得說明,在這個溫溼度記錄器中,第 3 項的功能得靠 PC 的幫忙,Arduino 其實只是負責收集溫溼度資料,我們得寫一支在 PC 端跑的程式把 Arduino 送過來的溫溼度資料保存到檔案中。
材料
我們需要這些材料:
- 麵包板 x 1
- Arduino 板子 x 1
- SHT15 溫溼度計
- HD44780 相容 LCD x 1 (本文所用的為 14 pin 無背光 LCD)
- 旋轉式可變電阻 x 1
- 單心線 x N
硬體接線
首先,我們先把 LCD 接到麵包板上跟 Arduino 連接起來。HD44780 相容 LCD 的腳位圖表如下:
腳位編號 | 名稱 | 說明 |
1 | Vss | 接地 (0V) |
2 | Vdd | 電源 (+5V) |
3 | Vo 或稱 Vee | 對比(0-5V), 可接一顆 1k 電阻,或利可變電阻調整適當的對比 |
4 | RS | Register Select: 1: D0 – D7 當作資料解釋 0: D0 – D7 當作指令解釋 |
5 | R/W | Read/Write mode: 1: 從 LCD 讀取資料 0: 寫資料到 LCD 因為很少從 LCD 這端讀取資料,可將此腳位接地以節省 I/O 腳位。 |
6 | E | Enable |
7 | D0 | Bit 0 LSB |
8 | D1 | Bit 1 |
9 | D2 | Bit 2 |
10 | D3 | Bit 3 |
11 | D4 | Bit 4 |
12 | D5 | Bit 5 |
13 | D6 | Bit 6 |
14 | D7 | Bit 7 MSB |
15 | A+ | 背光(串接 330R 電阻到電源) |
16 | K- | 背光(GND) |
LCD 的接線步驟為:
- 將 LCD 的 RS, Enable, D4, D5, D6, D7 依序接到 12, 11, 5, 4, 3, 2 等腳位上
- 將 LCD 的 Vss 及 R/W 接到 GND,Vdd 接到 +5V
- 可變電阻中間腳位接到 LCD 的 Vo,剩下的兩支腳位,一支接到 5V,另外一支接到 GND (註:也可以不使用可變電阻,只要在 LCD 的 Vo 上串接一顆 1k ohm 電阻連到 GND 即可)
接下來接上 SHT15 溫溼計,SHT15 溫溼度計的接法比較簡單,一共只有四支接腳(VCC, DATA, SCK 與 GND):
SHT15 的接線步驟為:
- 將 SHT15 的 VCC 接到 Arduino 的 +5V,GND 接到 Arduino 的 GND
- 將 SHT15 的 Data 腳接到 pin 6, SCK 接到 pin 7
LCD 與 SHT15 全部接起來後,完整的接線圖如下:
安裝 SHT1x 函式庫
為了讀取 SHT1x 系列(SHT10, SHT11, SHT15) 溫溼度計的讀值,我們需要安裝 SHT1x 函式庫。SHT1x Library 的安裝辦法很簡單,先到官網或直接點此下載函式庫後,把檔案解壓縮放到 Arduino 的 Libraries 資料夾底下即可:
Arduino 程式碼
底下是這個溫溼度記錄器的程式(可點此下載):
請用 Arduino IDE 編譯程式,然後 Upload 上傳到 Arduino 板子上。
操作說明
注意觀察 LCD 的變化,當程式上傳到 Arduino 板子上後,LCD 上就會顯示環境的溫度與溼度,而且是即時的(Real-Time):
註:如果 LCD 上沒有訊息,或者訊息看起來模糊朦朧的,請檢查可變電阻以調整對比。
打開 Serial Monitor,就會看到 Arduino 送過來的溫溼度資料了:
接著我們得寫一支在 PC 端跑的程式,把 Arduino 送過來的溫溼度資料保存到檔案中。程式怎麼寫,請見下回分解。
小馬!粉牛耶! 崇拜!崇拜! ^o^
回覆刪除沒有啦,玩 Arduino 就好像在玩電子積木一樣,很簡單、好玩又有成就感,挺有趣的。
回覆刪除你好,我在SH1X 與 arduion AT mega 328 (0022版本)的連接好像出現問題 ,就算只是跑內建的example,Verify 也一直有錯誤: "SHT1x"does not name a type.
回覆刪除麻煩您幫忙=)
謝謝
Hi, "'SHT1x' does not name a type" 這個錯誤訊息是說找不到 SHT1x 的定義,應該是因為 SHT1x library 沒有正確安裝的關係,Arduino library 的安裝位置是在 arduino-xxxx/libraries 或是 Sketch folder 的 libraries 資料夾下。
回覆刪除所以你只要把 SHT1x 資料夾放到 arduino-xxxx/libraries 資料夾底下應該就可以編譯過關。見這篇的「安裝 SHT1x 函式庫」一段。