基于树莓派的环境监控系统

摘要

当你发现需要更多的计算能力或外设支持的时候,如 USB或高清晰度多媒体接口(HDMI)视频,你已经离开了像 Arduino这样的微控制器领域,进入了计算机领域。树莓派(Raspberry Pi)是一个小型计算机,可以很好地执行这样的高级任务。树莓派可以在许多有趣的项目中使用。

本文将用树莓派以及温度和湿度传感器(DHT11),来构建基于 Web 的温度和湿度监控系统。在树莓派(arm开发板)上运用python语言来实现系统。

关键字:树莓派、python、环境监测

一. 开发环境及相关技术

本系统的开发环境:

树莓派3B+、DHT11温湿度传感器,杜邦线,无线网卡,PC

Raspbian系统、python语言。

1.DHT11温湿度传感器

DHT11是一种测量温度和湿度的常用传感器。

基于树莓派的环境监控系统_第1张图片

精度湿度+-5%RH, 温度+-2℃,量程:湿度20-90%RH,温度0~50℃。

DHT14个引脚,分别是VDD(+)、 GND(—)、 DATA, NC不使用

pin

名称

注释

1

VDD(+)

供电3~5.5v

2

DATA

串行数据,单总线

3

NC

不使用

4

GND(—)

接地,电源负极

DATA 引脚连接到微控制器(树莓派),输入和输出都通过该引脚。我们将用 Adafruit Python 库 Adafruit_Python_DHT 与 DHT11 通信,取得温度和湿度数据。

2 . 树莓派

Raspberry Pi(中文名为“树莓派”,简写为RPi,(或者RasPi / RPI),是为学习计算机编程教育而设计),只有信用卡大小的微型电脑,其系统基于Linux。随着Windows 10 IoT的发布,我们也将可以用上运行Windows的树莓派。

本项目用到的是Raspberry Pi 3 Model B +(树莓派3B+),如图

基于树莓派的环境监控系统_第2张图片

树莓派3B+硬件情况:

博通BCM2837B0 SoC,集成四核ARM Cortex-A53(ARMv8)64位@ 1.4GHz CPU,集成博通 Videocore-IV GPU

内存:1GB LPDDR2 SDRAM

有线网络:千兆以太网(通过USB2.0通道,最大吞吐量 300Mbps)

无线网络:2.4GHz和5GHz 双频Wi-Fi,支持802.11b/g/n/ac

蓝牙:蓝牙4.2&低功耗蓝牙(BLE)

存储:Micro-SD

其他接口:HDMI,3.5mm模拟音频视频插孔,4x USB 2.0,以太网,摄像机串行接口(CSI),显示器串行接口(DSI),MicroSD卡座,40pin扩展双排插针

尺寸:82mmx 56mmx 19.5mm,50克

树莓派3b+两个重要的升级特性:更强的CPU性能以及更强的无线(WiFi/BT,支持5G频段的WiF以及支持BT 4.2&BLE)连接功能

树莓派3b+GPIO引脚图:

基于树莓派的环境监控系统_第3张图片

3. 安装配置软件

设置树莓派并准备编写Python

二. 系统设计

在树莓派上运行的代码将启动 Bottle Web 服务器,监听传入的连接。当你访问本地网络上的树莓派的 Internet 协议(IP)地址时, Bottle 服务器会提供包含天气数据图表的网页。树莓上的处理程序将与 DHT11 传感器通信,取得数据,并返回给客户程序,客户程序用 flot 库在浏览器中绘制传感器数据。我们还会为连接到树莓派的发光二极管(LED)提供基于 Web 的控制(这只是为了演示如何用树莓派通过 Web 来控制外部设备)。

系统功能模块图:

基于树莓派的环境监控系统_第4张图片

三 . 系统实现

1. 测试

使用 Adafruit 读取 DHT11 温湿度传感器

需要在电源和数据脚之间串联一个上拉电阻(4.7K-10K),这里串联一个5.1k的电阻。

以树莓派3b+、DHT11为例:

DHT11和树莓派连接参考图:

基于树莓派的环境监控系统_第5张图片

DHT Pin

Signal

Pi Pin

1

3.3v

1

2

Data

11 (GPIO17)

3

not used

4

Ground

6 or 9

实物连接图:

基于树莓派的环境监控系统_第6张图片

Adafruit 提供了示例程序

运行下面的命令测试

cd Adafruit_Python_DHT

cd examples

python3 AdafruitDHT.py 11 17

进行测试,其中11代表DHT11型号,17代表GPIO硬件接口

打印结果:

循环打印温湿度

基于树莓派的环境监控系统_第7张图片

运行下面的命令测试

python3 test.py

测试结果:

基于树莓派的环境监控系统_第8张图片

每隔1s打印读取到的温湿度,向传感器哈暖气,温湿度升高。

输出结果:

Temp=22.0*C Humidity=73.0%

Temp=22.0*C Humidity=73.0%

Temp=23.0*C Humidity=73.0%

2. 实现过程

搭建硬件

除了前面提到的树莓派和外设之外,还需要以下各项和连接线:

DHT11传感器、5.1kΩ电阻、100Ω电阻、LED灯、面包板。

基于树莓派的环境监控系统_第9张图片5.1kΩ电阻和100Ω电阻

器件连接示意图:

基于树莓派的环境监控系统_第10张图片

树莓派、DHT11电路和LED之间的连接示意图

DHT11 的 VDD 引脚连接到+ 5V(树莓派上的引脚#2),DHT11 的 DATA 引脚连接到树莓派上的引脚#16,DHT11 的 GND 引脚连接到树莓派上的 GND(引脚#6)。DATA 和 VDD 之间连接一个 4.7kΩ 电阻。LED 的阴极(负极)通过 100Ω 电阻器连接到 GND,阳极(正极)连接到树莓派的引脚#18。

连接实物图:

基于树莓派的环境监控系统_第11张图片

树莓派、DRT11和LCD与面包板连接

 

3. 编程实现

定义main函数

def main():

    print 'starting piweather...'

    # create parser

    parser = argparse.ArgumentParser(description="PiWeather...")

    # add expected arguments

    parser.add_argument('--ip', dest='ipAddr', required=True)

    parser.add_argument('--port', dest='portNum', required=True)

    # parse args

    args = parser.parse_args()

    # setup GPIO

    GPIO.setmode(GPIO.BOARD)

    GPIO.setup(18, GPIO.OUT)

    GPIO.output(18, False)

    # start server

    run(host=args.ipAddr, port=args.portNum, debug=True)

4. 运行程序

将树莓派连接到DHT11和LCD电路后,利用SSH从计算机登录树莓派。

运行以下命令:

sudo python piweather.py –ip 192.168.4.236 –port 8080

打开浏览器,在浏览器的地址栏中输入树莓派的ip地址和端口:

http://192.168.4.236:8080/plot

运行结果:

在secureCRT上

基于树莓派的环境监控系统_第12张图片

在浏览器页面上,

基于树莓派的环境监控系统_第13张图片

如果点击图表中的任何数据点,点击的数据部分应该更新,显示有关该点的更多信息。在收集到 100 个点后,当新数据进入时,图形将开始水平滚动(单击 EnableLighting 复选框来打开和关闭 LED)。

基于树莓派的环境监控系统_第14张图片

对DHT11传感器处理,变化明显

基于树莓派的环境监控系统_第15张图片

四. 总结

项目构建了一个基于树莓派的环境监控系统,通过 Web 界面绘制温度和湿度数据。通过设置树莓派,使用树莓派的GPIO引脚与硬件通信(DHT11温湿度传感器、led灯),调用Python Web框架Bottle作为Web服务器,调用JavaScript库flot制作图表,来构建客户端-服务器一体的应用程序。

虽然本项目存在许多的不足,但是有巨大的发展潜力。在完成该项目后,我们将继续深入研究,不断的完善该系统。

参考文献

[1] Mahesh Venkitachalam. Python极客项目编程[M]. 人民邮电出版社,2017.

你可能感兴趣的:(树莓派开发)