- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于amega328p单片机的环境监测系统设计
多种硬件电路设计
随着环境质量的越来越大,基于各种传感器的环境检测系统得到了广泛应用。本文设计了一种成本低、可靠性高、可实时、远程对所在地进行温湿度和灰尘状况监测的方案。该方案基于Arduinou3000UNO硬件平台,这是一种目前应用广泛的Arduino硬件电路,可扩展性强;传感器选用AM2303和DSM501A,两者都是目前常用的,可靠性和精确度高,价格便宜,使用方便。在软件方面,Arduino有自己的基于Eclipse的IDE开发环境,类似于JAVA和C/C++,可以配合Flash或Processing等软件完成开发。后端使用了国内的物联网平台yeelink,与国外的同类物联网云Xlively、Nimbits等相比,除了中文操作语言带来的便捷外,它还与国内该领域相关公司和技术小组建立了合作关系,便于技术上的创新和应用,进一步降低了研发和使用的门槛。
1 u3000监控系统的设计
1.1 通过网络编码来传输应力信号点
系统原理流程图如图1所示。置于监测环境的温湿度传感器AM2303和灰尘传感器DSM501A分别将采集到的数据 传给Arduino的输入端,其中AM2303输出形式是单总线串行信号,DSM501A输出的是PWM脉宽调制 信号。Arduino搭载的ATmega328P完成对各传感器信 号的处理、存储和传输,因所使用的Arduino为UNO版,需要加入网络模块ENC28J60,对需要上传网络的数据按照以太网数据传输的格式和规则进行编码。在yeelink平台配置好系统的API后,就可通过因特网在yeelink网站远程、异地、实时地查看传感器的数据,对环境状态进行监测。
1.2 u3000硬件设计
1.2.1 u3000系统原型
控制板采用Arduino平台,它是基于Atmel的AVR和ARM微控制器的开源软硬件平台,近年来发展迅速,应用广泛,在各种基于传感器的系统原型设计方面得到了广泛应用,其硬件设计采用CCu3000BY-SA3.0协议,软件采用类C++的高级语言。
Arduinou3000UNO是基于ATmega328P微控制器的硬件平台,具有32KBu3000Flash、1KBu3000EEPROM、14路数字I/O口(其中6路可作为PWM输出)、6路模拟输入口。同时,UNO预置了Bootloader程序,不需要其他外部烧写器,可直接通过USB下载程序。
1.2.2 传感器的校准
AM2303包含一个电容式感湿元件和DS18B20感温器件,并与一个高性能8位单片机相连,具有响应快、抗干扰能力强、性价比高等优点。每个AM2303传感器都经过严格校准,校准系数以程序的形式存储在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。AM2303的引脚封装如表1所列。
DATA引脚用于微处理器和AM2303之间的通信和同步,一次通信时间为5ms左右,具体格式为:40位数据=16位湿度数据+16位温度数据+8位校验和,当温度低于0℃时,温度数据的最高位置1。
1.2.3 vun1灵敏度
DSM501A内置加热器实现自动吸入空气,采用粒子计数原理,可灵敏检测直径为1μm以上的粒子,其结构原理及引脚说明如图2所示。
在控制引脚1与GND之间加一 个电阻,可调整Vout1的粒子最小检出水平(灵敏度),默认为Vout2的2.5倍;Vout2引脚为普通输出脚位,灵敏度已预设定,灵敏度为1μm。当所接入电阻值为100kΩ时,Vout1输出为半敏感(2μm以上);当接入27kΩ电阻时,与Vout2同等敏感(1μm以上),悬空时为默认敏感度(2.5μm以上)。该传感器输出为PWM调制方式波形,以低脉冲率来表示粒子数量水平,输出原理如图3所示,低脉冲率Rt=Lt/Ut×100%。
1.3 u3000软件配置
1.3.1 u3000使用loop函数进行配置
Arduino有着固定的流程和规范,每个Arduino程序只有一个setup()和一个loop()函数,setup()函数里面编写的代码在硬件上电时只执行一次,一般在这个函数中编写一些初始化和开机动画程序等。当setup()函数执行完后,就开始循环执行loop()函数内的代码。传感器与Arduino板引脚连接如图4所示。
Setup函数里完成USB的初始化,loop函数中通过USB接收配置数据,完成配置参数读取、修改。整个软件通过Arduino的集成开发环境可完成调试、下载。打开串口和开始进行以太网连接的Arduino源程序如下所示:
如下所示,源程序为Arduino中传感器ID、PCu3000MAC地址、yeelinku3000API和网关等的设置,在yeelink中设置4个传感器展示变量,分别为温度、湿度、PM1.0和1.
原创力文档


文档评论(0)