课程报告:简单室内环境监测_第1页
课程报告:简单室内环境监测_第2页
课程报告:简单室内环境监测_第3页
课程报告:简单室内环境监测_第4页
课程报告:简单室内环境监测_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

潘雪:简单的室内环境监测11简单室内环境监测156003305 潘雪摘 要:近年来,随着我国经济不断发展以及人民生活水平的不断提高,健康理念不断深入人心,人们对室内环境质量的要求也在不断的提升。因此,本文利用树莓派作为监控系统,配上温湿度和PM2.5传感器的相互作用,最终形成了简单的室内环境监测系统,对室内环境进行实时监测。关键词: 室内环境 树莓派 传感器Simple indoor environment monitoring 156003305 cherryAbstract: In recent years, with the continuous development of Chinas economy and the continuous improvement of peoples living standards, the concept of environmental protection has continued to deepen the hearts of people, and peoples demands for indoor environmental quality have also been constantly improved. Therefore, this article uses the raspberry pie as a monitoring system, coupled with the interaction of temperature and humidity and PM2.5 sensors, and finally formed a simple indoor environment monitoring system to monitor the indoor environment in real time.Key words: raspberry pie indoor environment transducer1 引言根据调查分析,世界上30的建筑物中存在有害于健康的室内空气。这些有害气体已经引起了全球性的死亡,因此对室内环境监测刻不容缓。2 相关工作本次设计主要内容是基于树莓派的简单的室内环境监测系统。以树莓派和监控系统中心,以温湿度传感器和PM2.5传感器进行室内环境采集,用户可以通过pc端和移动端观察到室内环境的情况,从而对室内环境进行监控和调整。第一模块:研究动机。论述论文的课题背景和研究意义,分析了物联网技术和室内环境监测的发展现状和研究意义第二模块:具体方案。主要介绍了本次设计的关键技术、硬件技术和软件技术。提出了系统方案的总体设计和系统结构,并介绍了每个模块的功能要求。第三模块:实验结果。本次设计结束之后,对整个实验结果进行展示。第四模块:结论展望。对整篇论文工作进行了全面的总结,指出了本文的设计成果和今后的研究方向。3 研究动机物联网的概念起源于1999年,当初称它为传感网,而到了2005年,国际上正式的确定了物联网的概念,也预告这“物联网”信息时代的来临,世界上的全部物品将通过“万物互联”技术联系啊在一起。发展到今日,物联网的应用已经不仅仅是一个概念,在很多地方都有许多应用。可以看到,在今后的日常生活中, “物联网技术”将成为社会发展的主要推动力。随着我国的经济不断发展,工业生产也不断快速增长。然而在经济增长的同时,也会有一定的负面影响。全球雾霭环境不断加深,人们出门往往戴上口罩。目前人们普遍关注的是室内大气中的空气污染情况,而忽略了对室内空气质量的监测。根据资料显示:在封闭环境更易受到污染。这是因为PM2.5是很小的颗粒物,可以很容易的进入到室内密闭环境。除此之外,各种装修物和烟气等都是造成PM2.5偏高的原因。正因如此,做好室内环境的监测至关重要,室内环境监测系统将为人们的健康做出更多的贡献。4 具体方案4.1 关键技术本次研究主要从当下最好的物联网技术和树莓派模块出发,分析本次研究运用到的关键技术进行简单的阐述和解释。4.1.1 物联网技术物联网(Internet of Things)指的是将无处不在(Ubiquitous)的末端设备(Devices)和设施(Facilities),包括具备“内在智能”的传感器、移动终端、工业系统、数控系统、家庭智能设施、视频监控系统等、和“外在使能”(Enabled)的,如贴上RFID的各种资产(Assets)、携带无线终端的个人与车辆等等“智能化物件或动物”或“智能尘埃”(Mote),通过各种无线和/或有线的长距离和/或短距离通讯网络实现互联互通(M2M)、应用大集成(Grand Integration)、以及基于云计算的SaaS营运等模式,在内网(Intranet)、专网(Extranet)、和/或互联网(Internet)环境下,采用适当的信息安全保障机制,提供安全可控乃至个性化的实时在线监测、定位追溯、报警联动、调度指挥、预案管理、远程控制、安全防范、远程维保、在线升级、统计报表、决策支持、领导桌面(集中展示的Cockpit Dashboard)等管理和服务功能,实现对“万物”的“高效、节能、安全、环保”的“管、控、营”一体化。4.1.2 树莓派树莓派是一款基于ARM的微型电脑主板,以SD/MicroSD卡为内存硬盘,卡片主板周围有1/2/4个USB接口和一个10/100 以太网接口(A型没有网口),可连接键盘、鼠标和网线,同时拥有视频模拟信号的电视输出接口和HDMI高清视频输出接口,以上部件全部整合在一张仅比信用卡稍大的主板上,具备所有PC的基本功能只需接通电视机和键盘,就能执行如电子表格、文字处理、玩游戏、播放高清视频等诸多功能。 Raspberry Pi B款只提供电脑板,无内存、电源、键盘、机箱或连线。树莓派支持多种语言进行应用开发,包括C语言和Python脚本等。树莓派预装了Python运行环境,由于Python语言的简单易用,使得Python开发在树莓派上非常流行。Python是一门解释型语言,这意味着代码运行前不需要编译,即程序直接执行而不需要编译为机器语言,Python用在树莓派上进行编程开发就非常方便。Python语言发展多年,有着成熟而广泛的开发者社区,使得树莓派上的Python开发者具备了强大的社区支持。树莓派是一个优秀的ARM嵌入式平台,基于树莓派灵活的体系架构可方便灵活的部署网络测试软件,树莓派和功能强大的Netperf网络测试工具结合后,就可以灵活方便的在网络节点中部署网络探针监测网络性能,有助于大规模网络提升网络运行质量。树莓派的 GPIO 图:图4.1.2-1 树莓派GPIO图详细的例图图4.1.2-2 树莓派详细用例图因为用的是模块,接线就很简单了,VCC 接电,GND 接地,DATA 接 GPIO 就好了,这是示意图,实际电阻已经内置在模块里了。图4.1.2-3 树莓派示意图4.2 总体设计此次研究的目的是为了实现一个简单的室内环境监测。人们可以通过PC端,查看室内环境监测的情况,从而对室内环境进行监控和调整,满足人们环境舒适和环境健康的要求。4.2.1 系统结构根据研究动机和研究意义,本次设计的监测系统主要包括DHT11传感器、DS18B20传感器、PM2.5传感器和树莓派。简单的室内环境监测系统结构图如下:图4.2.1 简单的室内环境监测系统结构图4.2.2 功能模块本次设计的室内环境监测系统主要包括DHT11模块、DS18B20模块、PM2.5模块和树莓派模块,下面对每一个模块进行功能说明。(1)DHT11模块实现对室内环境温度的采集,并实时反馈到树莓派上。(2)DS18B20模块实现对室内环境湿度的采集,并实时反馈到树莓派上。(3)PM2.5模块实现对室内环境PM2.5的采集,并实时反馈到树莓派上。(4)树莓派模块接受到各个传感器的数据,并把数据传送到服务器端,以便监控和调节。4.3 硬件设计4.3.1 DHT 11图4.3.1 DHT 介绍DHT11是一款有已校准数字信号输出的温湿度传感器。 其精度湿度+-5%RH, 温度+-2,量程湿度20-90%RH, 温度050。它应用专用的数字模块采集技术和温湿度传感技术,确保产品具有极高的可靠性和卓越的长期稳定性。传感器包括一个电阻式感湿元件和一个NTC测温元件,并与一个高性能8位单片机相连接。因此该产品具有品质卓越、超快响应、抗干扰能力强、性价比极高等优点。每个DHT11传感器都在极为精确的湿度校验室中进行校准。校准系数以程序的形式存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。单线制串行接口,使系统集成变得简易快捷。超小的体积、极低的功耗,使其成为该类应用中,在苛刻应用场合的最佳选择。产品为4针单排引脚封装,连接方便。 实现过程(1)硬件连接把树莓派的GPIO的2号口作为数据输出的接口,pin 1号口作为VCC,pin 9号口接地(2)配置在GitHub上找到开源的代码:/adafruit/Adafruit-Raspberry-Pi-Python-Code把开源代码下载到树莓派中:sudo apt-get updatesudo apt-get upgrade用pythoon读取数据import Adafruit_DHTsensor1 = Adafruit_DHT.DHT11humidity1, temperature1 = Adafruit_DHT.read_retry(sensor1, 2)#2 是 GPIO 的引脚编号print humidity1,temperature14.3.2 DS18B20图4.3.2 DS18B 介绍DS18B20是常用的数字温度传感器,其输出的是数字信号,具有体积小,硬件开销低,抗干扰能力强,精度高的特点。电压范围为3.0 V至5.5 V 无需备用电源,测量温度范围为-55至+125,范围内精度为0.5。封装后的DS18B20可用于电缆沟测温,高炉水循环测温,锅炉测温,机房测温,农业大棚测温,洁净室测温,弹药库测温等各种非极限温度场合。耐磨耐碰,体积小,使用方便,封装形式多样,适用于各种狭小空间设备数字测温和控制领域。 实现过程(1)硬件连接把树莓派的GPIO的22号口作为数据输出的接口,pin 17号口作为VCC,pin 9号口接地(2)配置树莓派已经自带了 1-Wire 的驱动,只要把他开起来就好了先更新下内核sudo apt-get updatesudo apt-get upgrade检查一下 1-Wire 模块是否开启rootraspberrypi:/etc# lsmod | grep w1如果没有,开启 1-Wire 模块sudo modprobe w1_gpiosudo modprobe w1_therm修改/boot/config.txt 配置文件,增加 dtoverlay=w1-gpio,gpiopin=2,pullup=onsudo nano /boot/config.txtctrl+xy回车这里的参数详细可以看 /boot/overlays/README,里面有详细说明配好以后重启,然后就可以看到我们的传感器了rootraspberrypi:/etc# ls /sys/bus/w1/devices/查看传感器的温度rootraspberrypi:/etc# cat /sys/bus/w1/devices/28-0516a718e1ff/w1_slave31187/1000 就是当前的温度,也就是 31.187下载轮子:pip install w1thermsensor用python读取数据:from w1thermsensor import W1ThermSensor sensor = W1ThermSensor(W1ThermSensor.THERM_SENSOR_DS18B20, 031561d43aff) temperatur = sensor.get_temperature() print temperature4.3.3 PM2.5传感器图4.3.3 PM.1 介绍针脚介绍:建立连接关系:数据传输过程: 实现过程(1)串口实现:PMS3003 的数据是通过串口来传输的,因此我们需要配置一下树莓派,把串口功能打开,由于树莓派的串口略坑:大家知道 Unix 一切为文件,因此串口的驱动会创建对应的字符设备(文件)以供读写。通常这些设备是以类型+序号来命名。例如:x86 架构下串口通常命名为 /dev/ttyS0(Serial 0),大家可以找台 x86 的 Linux 服务器去看看。 Raspbian 是 ARM 架构的因此其串口命名为 /dev/ttyAMA0(TeleTyper ARM UART 0)。然而在 Raspbian Pi 3 上,这里情况就不太一样了。Pi3 的 /dev/ttyAMA0 被蓝牙给默认占用了, 于是它给出一个 /dev/ttyS0 设备用于软串口的 Mini UART。 然后为了使得新老 Raspbian Pi 之间的兼容性 ,又把 3 代之前版本 的 /dev/ttyAMA0 和 Raspberry Pi 3 的 /dev/ttyS0 软链接到同一个 /dev/serial0 。这样子绕了一圈,然而Minu UART 的性能又是相当令人捉急的。因此我们得调整一下配置,把默认的 /etc/ttyAMA0 给搞回来。启用 UART,修改/boot/config.txt,增加(新版 Raspbian 已经默认开启了)enable_uart=1关掉默认的 consolesudo systemctl disable serial-gettyttyS0.service在启动脚本/boot/cmdline.txt里干掉 console=ttyAMA0 或者 console=ttyS0 的配置,类似这样dwc_otg.lpm_enable=0 console=tty1 root=/dev/mmcblk0p2 rootfstype=ext4 elevator=deadline .关掉蓝牙dtoverlay=pi3-disable-bt重启(2)数据传输#!/usr/bin/python#encoding=utf-8import serialimport timeimport jsonimport requestsimport copydef pm(): ser = serial.Serial(/dev/ttyAMA0, 9600) while True: time.sleep(1) count = ser.inWaiting() if count = 24: recv = ser.read(count) data = map(lambda c: ord(c), recv)if check_data(data) != True: # 数据校验不合法,抛弃之等下一轮 ser.flushInput() continue return get_data(data) # 读到数据了直接返回退出循环 ser.flushInput() ser.close() return 0,0,0def check_data(data): sum = 0x00 if data0 != int(0x42,16): # 起始符校验 return False if data1 != int(0x4d,16): return False for d in data0:21: sum = sum + d check_sum_high = data228 # 校验和校验,位移 8 位到高位 check_sum_low = data23 check_sum = check_sum_high | check_sum_low # 按位或运算,高低位合并 if sum = check_sum: return True return Falsedef get_data(data): pm1 = (data10 8) | data11 # 高位位移,按位或运算合并高低位 pm2_5 = (data12 8) | data13 pm10 = (data14 0: with open(/opt/falcon-scripts/env.json, w) as f: f.write(json.dumps(env)放入 crontab 里,这个脚本每分钟运行一次,这样我们的数据延迟也就是 1 分钟而已,完全可以接受。现在通过 flask 来封装一个简单的 http 接口from flask import Flask,jsonifyimport jsonapp = Flask(_name_)app.route(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论