这篇文章来源于DevicePlus.com英语网站的翻译稿。
本文最初发布在deviceplus.jp网站上,而后被翻译成英语。
在本文中,我将介绍如何使用Seeed公司的“Grove”,一种可以轻松添加传感器的机制。我们将制作一个小型环境检测设备,您只需插入即可使用各种传感器并通过Raspberry Pi控制它们。
所需物料清单:
・小型锂聚合物电池
(*注意: 请小心处理,使用风险自负)
・Raspberry Pi Zero外壳(如果是Raspberry Pi入门套件,会附带外壳,可以即拆即用。)
目录
1. 使用Grove传感器
2. 使用4位显示器
3. 组装小型环境检测设备
4. 总结
1. 使用Grove传感器
这次,我们将使用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 页面,参照下图红框部分,安装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]
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并使用示例程序,即可轻松测量温度和湿度,不是吗?
2. 使用4位LCD显示器
我们已经测量了温度和湿度,我想显示一下测量结果。Grove还带有4位LCD显示器,可以轻松地显示数值。
该LCD显示器同样有四个Grove引脚。将显示器连接到ReSpeaker中间的引脚。
4位显示器也有相应的示例程序,我们直接使用该程序。编写如下示例程序:
[grove_4d.py]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]
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
3. 组装环境检测设备
最后,将这些组件组装成一个可以挂在脖子上或放在电脑旁边的小型设备。
我们还会让设备定期将测量结果上传到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。
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中,因此还可以很容易地以图表的形式显示,非常适合查看环境情况。
4. 总结
在本文中,我们尝试将Grove传感器连接到了Raspberry Pi Zero和ReSpeaker Hat上
由于可以很简单地连接温湿度传感器和LCD等器件,还有示例程序可用,因此能够轻松地测量和显示环境情况。
除了本文所用的传感器之外,Grove传感器还有声音传感器、亮度传感器、空气清洁度传感器等,您可以根据要测量的项目选用。
下一次将会为大家介绍一种可以更方便地控制空调和电视等家电的室内小型设备。
敬请期待!