本文最初發佈在deviceplus.jp網站上,而後被翻譯成英語。
在本文中,我將介紹如何使用Seeed公司的“Grove”,一種可以輕鬆添加感測器的機制。我們將製作一個小型環境檢測設備,您只需插入即可使用各種感測器並透過Raspberry Pi控制它們。
・小型鋰聚合物電池
(*注意:請小心處理)
・Raspberry Pi Zero 外殼(如果是Raspberry Pi入門套件,會附帶外殼,可以即拆即用。)
1. 使用Grove感測器
2. 使用4位數數顯示器
3. 組裝小型環境檢測設備
4. 總結
這次,我們將使用Seeed ReSpeaker作為Raspberry Pi Hat。如果您還沒有安裝驅動程式,請參考Seeed 頁面預先進行設置。
ReSpeaker有兩個Grove引腳。Grove是Seeed公司推出的感測器系列,只需將感測器插入引腳即可使用,無需焊接。
Seeed推出了100多種帶有Grove引腳的感測器,涵蓋了大多數感測器。
我們從中選擇幾款易於Raspberry Pi使用的感測器。
首先,選擇了經典的溫濕度感測器,使用稱為“DHT11”的感測器來測量溫度和濕度,圖中方形藍色的感測器已經安裝在電路板上,從電路板上引出4個Grove引腳。
使用溫濕度感測器時通常需要安裝電阻器和電路,並分別連接電源、GND和輸出,而使用這種感測器,您只需將其插入四個統一的Grove引腳即可,非常方便。
下面我把這個溫濕度感測器插入左側的Grove引腳,如下圖所示。
Seeed還提供使用Raspberry Pi處理該感測器的軟體。接通Raspberry Pi的電源並透過SSH將感測器連接到Raspberry Pi。請參考Seeed公司的Github Github頁面,參照下圖紅框部分,安裝grove.py。
在這裡,透過Python3將grove.py程式安裝在Raspberry Pi上。
$ git clone https://github.com/Seeed-Studio/grove.py
$ cd grove.py
$ sudo pip3 install .
$ cd grove
安裝完成後,您可以看到各種程式都存放在一個名為“grove”的資料夾中。在這裡,我們將使用其中的“grove_temperature_humidity_sensor.py”。編寫如下所示的簡單程式,使用DHT11測量溫度和濕度。ReSpeaker左側的Grove引腳是與GPIO3連接的,因此指定該引腳。
[範例程式 grove_temp.py]
1 2 3 4 5 6 7 8 9 10 |
import time from grove.grove_temperature_humidity_sensor import DHT # DHT("type 11", GPIO) dht11 = DHT("11", 3) while True: humi, temp = dht11.read() print('DHT{0}, humidity {1:.1f}%, temperature {2:.1f}*'.format(dht11.dht_type, humi, temp)) time.sleep(1) |
然後,使用python3命令運行程式:
$ python3 grove_temp.py
怎麼樣?感測器應該能夠每隔幾秒測量一次溫度和濕度並在螢幕上顯示數值。
您看到了,只需插入Grove並使用範例程式,即可輕鬆測量溫度和濕度,不是嗎?
我們已經測量了溫度和濕度,我想顯示一下測量結果。Grove還帶有4位數LCD顯示器,可以輕鬆地顯示數值。
該LCD顯示器同樣有四個Grove引腳。將顯示器連接到ReSpeaker中間的引腳。
4位數顯示器也有相應的範例程式,我們直接使用該程式。編寫如下範例程式:
[grove_4d.py]
1 2 3 4 5 6 7 8 9 10 11 12 |
import time from grove.grove_4_digit_display import Grove4DigitDisplay display = Grove4DigitDisplay(12, 13) count = 0 while True: t = time.strftime("%H%M", time.localtime(time.time())) display.show(t) display.set_colon(count & 1) count += 1 time.sleep(1) |
運行程式,能夠顯示當前時間了!只需要簡單連接一下即可顯示資料,真的是非常輕省!
$ python3 grove_4d.py
現在,我們讓LCD顯示之前測量得到的溫度和濕度。
創建結合了前面編寫的grove_temp.py和grove_4d.py的grove_temp_4d.py程式。
[grove_temp_4d.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 |
import time from grove.grove_4_digit_display import Grove4DigitDisplay from grove.grove_temperature_humidity_sensor import DHT # DHT("type 11", GPIO) dht11 = DHT("11", 3) display = Grove4DigitDisplay(12, 13) count = 0 while True: humi, temp = dht11.read() print('DHT{0}, humidity {1:.1f}%, temperature {2:.1f}*'.format(dht11.dht_type, humi, temp)) t = time.strftime("%H%M", time.localtime(time.time())) display.show(t) display.set_colon(count & 1) count += 1 time.sleep(1) if count == 10: display.show(str(humi)+" P") time.sleep(1) display.show(str(temp)+" C") time.sleep(1) count = 0 |
然後運行程式。時間、溫度和濕度將交替顯示。
$ python3 grove_temp_4d.py
最後,將這些元件組裝成一個可以掛在脖子上或放在電腦旁邊的小型設備。
我們還會讓設備定期將測量結果上傳到Google Spreadsheet中,以便您能瞭解您在一天中所處的環境(溫度和濕度)。這可能是一個回顧一下您房間平時情況的好機會!
首先,讓我們將一個小型鋰離子電池連接到Raspberry Pi Zero。
然後,將Grove溫濕度感測器和LCD放置到合適的位置。
我把它們放在我在當地商店買的盒子裡。用迴紋針等工具在在盒子背面固定好,這樣就完成了環境檢測設備!
最後,讓我們再添加一個定期將測量結果上傳到Google Spreadsheet的功能。使用IFTTT可以輕鬆將資料從Raspberry Pi上傳到Google Spreadsheet。
進入IFTTT.com 頁面並創建一個新的小程式。
選擇Webhook作為觸發器。指定適當的事件名稱 (rpzero_temp)。
然後選擇Google Spreadsheets作為Action。
選擇“Add row to spreadsheet”(向試算表添加行),這樣,每次測量溫度和濕度時,都會在試算表中添加一行。
資料定義暫且按照以下預設設置即可。
現在,我們便創建完成了一個小程式,當它從Raspberry Pi接收到一個名為“rpzero_temp”的事件時,便會將資料寫入試算表。
請點擊Webhooks並複製您的帳戶金鑰(下面塗黑的部分)。然後在Raspberry Pi上設置此金鑰。
接下來,將此連接資訊作為IFTTT_URL和IFTTT_KEY嵌入到Raspberry Pi程式中。
將從溫濕度感測器接收到的資料設置為傳遞資料Value1、2和3。
[grove_temp_4d_sheet.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 from grove.grove_4_digit_display import Grove4DigitDisplay from grove.grove_temperature_humidity_sensor import DHT import requests # DHT("type 11", GPIO) dht11 = DHT("11", 3) display = Grove4DigitDisplay(12, 13) IFTTT_URL = 'https://maker.ifttt.com/trigger/rpzero_temp/with/key/' IFTTT_KEY = 'ifttt_key' #先程の黒塗り部分のKeyを貼り付ける count = 0 while True: humi, temp = dht11.read() print('DHT{0}, humidity {1:.1f}%, temperature {2:.1f}*'.format(dht11.dht_type, humi, temp)) t = time.strftime("%H%M", time.localtime(time.time())) display.show(t) display.set_colon(count & 1) count += 1 time.sleep(1) if count == 10: display.show(str(humi)+" P") time.sleep(1) display.show(str(temp)+" C") time.sleep(1) requests.post(IFTTT_URL + IFTTT_KEY, json = {'value1':'DHT11', 'value2':humi, 'value3':temp}) print(str(humi) + "% and " + str(temp) +"C are uploaded to IFTTT sheet") count = 0 |
現在,當您運行該程式時,資料將會定期存儲在Google Spreadsheet中。
將該設備放在您的電腦旁邊或者其他適合的位置,就可以檢測房間和周圍環境的溫度和濕度啦。
這是使用該設備一天之後的結果。由於資料存儲在Google Spreadsheet中,因此還可以很容易地以圖表的形式顯示,非常適合查看環境情況。
在本文中,我們嘗試將Grove感測器連接到了Raspberry Pi Zero和ReSpeaker Hat上。
由於可以很簡單地連接溫濕度感測器和LCD等元件,還有範例程式可用,因此能夠輕鬆地測量和顯示環境情況。
除了本文所用的感測器之外,Grove感測器還有聲音感測器、亮度感測器、空氣清潔度感測器等,您可以根據要測量的專案選用。
下一次將會為大家介紹一種可以更方便地控制空調和電視等家電的室內小型設備。
敬請期待!