嘿!您似乎在 United States,您想使用我们的 English 网站吗?
Switch to English site
Skip to main content

用树莓派打造智能家居监控系统

作者 Dan 羅傑瑞
难度 ★★☆☆☆
所需时间 1.5 小時

 

制作一个自动环境监控系统可以说是打造智能家居系统的第一步。不论是对DIY爱好者或是IoT工程师而言,这是一个简单且有用的专题作品。在这个专题中,会协助你熟悉基础树莓派系统、硬件及其周边工具。本专题目的是使用Raspberry Pi 3B+、温湿度传感器及一些周边组件,制作一个环境温湿度监控装置。所需要的材料及其购买网址如下:

  1. Raspberry Pi 3B+ 
  2. 16GB或32GB 的micro SD卡
  3. 温湿度传感器BME280 
  4. 5V3A USB 变压器
  5. 7 吋 Raspberry Pi 屏幕 
  6. SD卡读卡机(非必要)

0117_06212479cb9bed5e24676826ae110fca92e20303.png

制作步骤:

STEP1: 安装Raspberry Pi操作系统

如果你还没有安装Raspberry Pi的操作系统,建议你先按照以下步骤安装Raspbian操作系统。如果你已经安装Raspbian操作系统,请跳过此步骤。

1.1 从官网上下载Raspbian操作系统
https://www.raspberrypi.org/downloads/raspbian/

0213_06d1ea55554902b8adc8ebe951d7e53d694a073e.png

1.2 将你的SD卡插入SD卡卡片读卡机,并连接上你的电脑。在电脑端下载SD卡刷新软件,本专题中使用Rufus (https://rufus.ie/)做示范。 打开刷新软件,选择Raspbian 操作系统,扩展名会是.img (例如: 2019-07-10-raspbian-buster.img). 接着,点选START来刷新系统至你的空白SD卡。刷新过程需5-10分钟。

0315_8711e912a86244a4165f28c8e09dd46b91262998.png0414_143f13bda9449de55fb0c8aef2e1484d1f97657d.png

1.3 完成后,把SD卡插入Raspberry Pi的SD卡插槽中。并将7吋屏幕与Raspberry Pi如下图所示连接起来,对接两边的5V跟GND。这样一来,当你将Raspberry Pi通电时,屏幕会同时亮起,不用分开供电。0510_5ab9f728d362abff39d33b4279eac40750978af9.png

1.4 将Raspberry Pi接上变压器并供电。
064_3bb882a3556ae89e64df59dfa6344db8e75f8aa3.jpg

1.5 屏幕亮起后,按照屏幕上的指示逐步完成Raspberry Pi的初始化设定。
072_7e21609b446072f7740af3e5dfbabc903e65ad6f.jpg

STEP2: 硬件制作

2.1 在这个步骤中,我们要连接并测试温湿度传感器BME280。首先,按照下图中的脚位对应表格连接BME280与Raspberry Pi。

089_87220ced1c161a362fee9a190651002c8375535f.png

提醒1:购买BME280传感器时,有些没有事先焊接pin脚,如果有这样的情况发生,请另外购买2.54mm male pitch header做焊接。

提醒2: 不同的BME280 模块可能对同样的pin脚有不同称呼,SCL有时被称为SCK,SDA称作 SDI。也有SD0 被称为CS的情况。

2.2 在Raspberry Pi中启用I2C接口。打开Raspberry Pi上的终端机并输入以下指令

sudo raspi-config

输入以上指令后,会显示一个选择窗口。 按以下顺序选择选项: Interfacing options → I2C → Yes
1026_96b5524d2b726bee529b441e3bf7b24fe9a8f457.jpg

1135_1097cb72a42ba43051ecdd05793c90e708bcf410.jpg

1230_b598193d1238f2fba2b46c848dbe63902b6fe5d6.jpg

这样做之后,返回到初始屏幕,然后按Finish
1326_9d59467df2f2162a814487cc187aacec3e1bbeb8.jpg

2.3 现在,该测试BME280传感器是否正确连接了。 在同一终端窗口中输入以下指令

sudo i2cdetect -y 1

如果成功,你应该能够看到以下输出:
1423_1e927aa5c52e473a80bfa9c0c13dbe6feb6f15d8.jpg

我们输入的指令会显示所有连接到Raspberry Pi的I2C设备。 在这种情况下,我们可以看到一个十六进制地址为76或0x76的设备。 这是BME280的唯一I2C ID。 I2C是一个非常方便的接口,可以通过调用其唯一的I2C地址来同时连接多个传感器。 如果看不到以下输出,请重新检查连接线。

STEP3: 安装函式库并下载程序

3.1 在开始于Raspberry Pi上撰写程序之前,我们需要下载并安装一些函式库。 在此专题中,我们要使用PyQT5(Python的GUI函式库)。 使用Raspberry Pi的终端,输入以下指令

sudo apt-get install python3-pyqt5

3.2 接着,输入以下指令安装BME280 跟 SMBUS 函式库

pip3 install RPi.bme280
pip3 install smbus2

3.3 从我们的资源库中下载程序

git clone https://github.com/danrustia11/CaveduRS

STEP4: 执行程序

4.1 使用以下几行指令来运行上一步下载的程序

cd /home/pi/CaveduRS/RaspberryPi/SmartTH
python3 smart_th_gui.py

如果没有问题,您应该可以在屏幕上看到如下图的GUI。
1622_48a3f78330ecadc00ec58b955a1f8bfd1607c380.jpg

注意:如果要研究程序,只需打开文件smart_th_gui.py,然后查看注释的解说。

GUI显示五个信息:时间、日期、温度、湿度和酷热指数。 最特殊的是酷热指数,它是从温度和湿度计算后得出的值,代表我们的身体对温度跟湿度的实际感觉。 由于有时天气太潮湿或太干都会造成不适,因此这是一种测量房间状况是否舒适的更准确的方法。

STEP5: 自动运行程序

由于你现在可以运行该程序,因此剩下的就是在让Raspberry Pi开机时能自动运行该程序。

5.1 请创建一个名为run_th_gui.sh的新文件。 该文件是Linux脚本文件,用于通过终端运行多个命令。
1722_c62c8454f05690167c274a04dec2c7e82489c7e8.jpg

然后,通过右键单击图标并单击文本编辑器来编辑run_th_gui.sh文件。 打开后,输入以下内容

cd /home/pi/CaveduRS/RaspberryPi/SmartTH
python3 smart_th_gui.py

1822_6ef7c153618fa0b3dfffb9a53914c0f6fb09af7f.jpg

5.2 接下来,通过打开终端并输入以下命令来使脚本文件可执行:

sudo chmod u+x *.sh

1920_dcceebf6c6291282046431abfe7157f57fd5722f.jpg

1.3 最后,设定启动后Raspberry Pi将运行哪个脚本文件。 我们可以通过编辑Raspberry Pi的自动启动文件来实现。 输入以下指令

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart

在文件的最后一行加上

@lxterminal -e ./run_th_gui.sh

正常运作的情况下,你应该会看到如下图的显示画面
2012_416e8f6245cffff2a3d019af2ae511ca87ac5f24.png

5.4 最后在终端机中输入以下指令重启Raspberry Pi

sudo reboot 

 

STEP6: 大功告成

重新启动后,Raspberry Pi应该会自动运行该程序,您将看到我们前一段时间看到的GUI显示。 如果没有问题,那么恭喜你完成构建DIY智能居家系统的第一步。 你可以将完成的作品放在桌子上,或者甚至可以将其悬挂在房间周围,以显示房间内的温度,湿度和酷热指数。

CAVEDU Education is devoted into robotics education and maker movement since 2008, and is intensively active in teaching fundamental knowledge and skills. We had published many books for readers in all ages, topics including Deep Learning, edge computing, App Inventor, IoT and robotics. Please check CAVEDU's website for more information: http://www.cavedu.com, http://www.appinventor.tw