Raspberry Pi (樹莓派)


Raspberry Pi 是一台信用卡般大小的小型電腦,上面可以搭載 Linux 作業系統,它由英國的樹莓派基金會所開發,目的是以低價硬體及自由軟體刺激在學校的基本的電腦科學教育。除了與一般電腦一樣具備USB Port, HDMI, Ethernet, SD Slot 等等之外,特別的是在這個平台上提供 26 個腳位可以做簡單的控制,透過 C, Python, Java 等程式語言的第三方函式庫供開發者做一個簡單的原型開發。

IMG_9473

SHT15 溫濕度感測模組


SHT15 是一個數位的溫濕度感知器,可以偵測環境中溫度與濕度。本文將使用 SHT15 與 Raspberry Pi 的 GPIO 做連結,來偵測環境中的溫濕度。

IMG_9470

事前準備工作


  1. 硬體部分
    • Raspberry Pi
      • SHT15
      • 麵包板
      • 若干跳線
  2. 軟體部分
    • Python 2.7
      • RPi.GPIO 套件
      • rpiSht1x 套件

此次使用 Python 的 RPi.GPIO 搭配 rpiSht1x 函式庫來偵測環境中溫濕度,可以使用 pip install 來安裝該套件。

實做流程


硬體接線

SHT15 腳位有VCC, GND, SCK, DATA 將 VCC 接到 Raspberry Pi 的腳位2、GND 接腳位6、SCK 接腳位7、DATA 接腳位11。

請參考 Raspberry Pi 腳位圖
pin.png

實際接線圖
IMG_9476

軟體程式 (Python Source code)

程式功能為每5秒偵測一次環境溫濕度,並顯示。

hygro.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import time
import datetime
import sys
from sht1x.Sht1x import Sht1x as SHT1x

dataPin = 11
clkPin = 7
sht1x = SHT1x(dataPin, clkPin, SHT1x.GPIO_BOARD)

def detect():
t = time.time()
current_time = time.strftime('%H:%M:%S', time.localtime(t))
temperature = sht1x.read_temperature_C()
humidity = sht1x.read_humidity()
dewPoint = sht1x.calculate_dew_point(temperature, humidity)
return current_time, round(temperature,2), round(humidity,2), round(dewPoint,2)

def main():
while True:
try:
(current_time, temperature, humidity, dewPoint) = detect()
print("Time:%s Temperature:%2.1f`C Humidity:%2.2f%%
Dew Point:%2.1f`C" %(current_time, temperature, humidity, dewPoint))
time.sleep(5)
except KeyboardInterrupt, e:
print e
sys.exit()

if __name__ == '__main__':
main()

展示照片


因為 Raspberry Pi 有 USB Port 可以接 Wi-Fi USB Adapters,此外因為他的耗電量極小,可以接上可以供給 2A 電流的行動電源,將整個裝置脫離插頭、網路分享器,放到我想放的地方。

例如:最近購買電子防潮箱,想來測試一下濕度計夠不夠精準。

供給 2A 電流的行動電源
IMG_9478

脫離有線網路,採用 Wi-Fi USB Adapters
IMG_9483

放入電子防潮箱,透過 SSH 可以取得溫濕度資料
IMG_9489

透過 SSH 我可以遠端連線上 Raspberry Pi 並執行程式,可以取得溫濕度。
此張照片是 Raspberry Pi 從防潮箱拿出來的記錄,可以很明顯地看見,濕度提高了接近 10%
IMG_9492