物联网雏形.docx
- 文档编号:23620277
- 上传时间:2023-05-19
- 格式:DOCX
- 页数:56
- 大小:420.25KB
物联网雏形.docx
《物联网雏形.docx》由会员分享,可在线阅读,更多相关《物联网雏形.docx(56页珍藏版)》请在冰豆网上搜索。
物联网雏形
摘要
该系统实现了针对室内环境进行监测、报警、数据云储存以及基于云端平台的远程控制。
系统硬件平台核心是stc公司的51系列单片机。
具体型号为STC12C5A60S和STC89C52RC。
单片机软件通过c语言为编译环境的KeiluVision3编译。
设计报告主要介绍了环境监测系统中基本布局、软硬件模块选择构建过程、传感器校准处理、数据的收集整理及整个系统软件的控制算法优化。
传感器模块选择mq5监测可燃性气体,当可燃性气体超标时通过蜂鸣器和手机端短信提示的方式报警。
GP2Y1050AU0F监测环境中空气质量、dht11监测环境中温度和湿度数据,通过射频NRF24L01传输汇总信息,核心单片机将信息通过1602显示,并通过HC-06蓝牙实时传输到安卓平台上位机。
上位机平台处理显示信息上传到云端平台,并处理云端控制命令实时反馈到下位机。
关键字:
51单片机、nrf24l01、蓝牙、MQ5、DHT11、安卓
目录
第一章任务要求概述
1.1任务目标
第二章系统整体方案选择
2.1传感器选择
2.1.1温湿度传感器选择
2.1.2可燃性气体监测报警
2.1.3空气质量监测
2.2无线传输模块
2.2.1无线模块在系统中有两种作用
2.2.2方案一ZigBee紫峰协议
2.2.3方案二nrf24l01射频
2.2.4方案三Bluetooth蓝牙
2.2.5结论
2.3单片机
2.4上位机
第三章系统整体规划
3.1单片机最小系统
3.1.1主控板
3.1.2温湿度采集板
3.1.3Diy净化器+温度板
3.1.4安卓上位机
第四章调试结果及项目反思
参考文献
第一章任务要求概述
1.1任务目标
设计出一款家庭用物联网雏形,可以实时采集上传家庭环境信息,通过云端平台监测和控制。
(1)实时采集室内温湿度、空气质量、空气有害气体浓度和可燃性气体监测
(2)系统内部合理配置传感器防止相互干扰。
(3)数据上传到云平台并可以通过云端实时控制系统。
(4)采用无线模块作为传输载体,并稳定高效传输。
根据具体要求总体系统分为5个部分
采集传感器
无线传输模块
单片机
上位机
云端平台
第二章系统整体方案选择
2.1传感器选择
传感器是整个系统中的核心,其直接决定了系统的稳定性,实用性。
是整个系统数据的源头。
传感器选择的适用性是整个系统能否成功的第一步。
2.1.1温湿度传感器选择
第一种方案:
以传统的电阻电容传感器,湿敏元件和温感电阻为基础增加ad转换模块,将模拟信号转换成数字信号提供给单片机处理得到数值。
优点:
传统的电阻电容传感器及其便宜,经过ad转换后单片机无需复杂软件处理。
缺点:
模拟信号输出的传感器数据传送要经过ad转换时间比较长。
温度湿度必须分开成两个传感器来分别测量数据。
Ad占用大量io口尤其对于io口比较紧张的51系列单片机来说影响更大。
第二种方案:
以数字温湿度传感器通过iic总线协议传输数据到单片机得到温湿度数据。
优点:
免去了ad的本身延迟,得到的数据更为实时;数字传感器的精度更高、更稳定;只占用1个io口,与ad相比节约了大量的io资源
缺点:
iic总线协议带来的软件复杂性提高;读取的时间较长;数字传感器成本较高。
综合考虑,我们选择第二种方案,以数字型温湿度传感器为基础收集数据。
具体传感器型号选择了由奥松电子dht11.技术标准见附录。
2.1.2可燃性气体监测报警
传感器选择标准
城市家庭中主要使用的气体燃料为天然气和煤气。
传感器选择要优先考虑对这两种气体燃料的监测灵敏度。
输出信号需要直接与单片机io口连接读取。
基于以上两点选择mq5可燃性气体传感器。
传感器相关信息
Mq5可燃性气体传感器,对天然气,城市煤气有较好的灵敏度。
有两条输出信息口。
一种是a0模拟电压形式显示可燃性气体水平。
一种为d0口输出TTL电平。
在可燃性气体异常升高时输出低电平报警。
考量到目的主要是及时监测报警对可燃性气体水平数据并无要求。
选择d0输出电平形式在监测到异常进行报警。
2.1.3空气质量监测
第一种方案
采用mq135空气质量传感器,通过1个ad转换模块得到空气质量数值MQ135气体传感器所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。
当传感器所处环境中存在污染气体时,传感器的电导率随空气中污染气体浓度的增加而增大。
优点:
电路简单,价格相对更便宜。
缺点:
监测范围是一些污染气体氨气、硫化物、苯系蒸汽的灵敏度高,和烟雾和其它有害气体;Ad占用大量io口。
第二种方案
采用GP2Y1010AU0F传感器通过单片机产生PWM型波形控制,输出的电压值与空气中粉尘的数值上成正比。
通过ad转化传输给单片机。
GP2Y1010AU0F是一个检测灰尘,粉尘的光学传感器。
是由红外发光二极管和光敏晶体管组成的。
能由反射光检测到,在空气中的灰尘。
检测能力是大于0.3um以上的空气微粒。
在单片机给出输入脉冲后经过三极管驱动,在给传感器3号脚。
输出端输出此时电压值,中间转换倍数k的确认一般为500.与各地情况有关。
优点:
监测的精度大大提高,可以精确到小数位。
缺点:
Ad占用io口;传感器的驱动程序极其复杂,对pwm波的要求极其精确。
在长时间使用后要led灯会有一个衰减函数。
要在主程序中依照这个衰减函数对数据进行补偿。
衰减函数是一个指数函数难以加入程序。
监测数据只有空气中粉尘颗粒数据。
第三种方案
采用GP2Y1050AU0F传感器和,通过串口将数据传给单片机处理。
每10ms一次。
GP2Y1050AU0F传感器与GP2Y1010AU0F检测精度上基本相同,在GP2Y1010AU0F的基础上增加了内置的mcu,把控制函数,按时间补偿函数等驱动程序集成在了mcu之中。
在模拟电压输出基础上增加了串口输出。
波特率2400.
优点:
大大简化了主程序的负担,输出结果也更加精确,节约了大量io口。
缺点:
与GP2Y1010AU0F相比成本高出10元。
结论
综合考量我们选择第三种方案采用GP2Y1050AU0F传感器。
视情况加入方案1的mq135传感器,以保证空气质量测量的数据全面,同时,为了保证监测添加了小风扇进行空气的流通,通过大量的实验,确定小风扇的关键性。
GP2Y1050AU0F传感器技术参数见附录
2.2无线传输模块
2.2.1无线模块在系统中有两种作用
第一为各个传感器节点中的数据搭建数据交流通道,要求高效实现数据交流。
能够完成不同节点之间的组网,对速率不敏感,对传输距离有一定要求。
第二是将汇总的数据发送到上位机,要求稳定性高,速度有一定要求。
对传输距离不敏感。
无线传输主要有ZigBee紫峰协议、nrf24l01射频、Bluetooth蓝牙
2.2.2方案一ZigBee紫峰协议
ZigBee是一种基于标准的远程监控、控制和传感器网络应用技术。
满足对支持低数据速率、低功耗、安全性和可靠性,常见的ZigBee模块都是遵循IEEE802.15.4的国际标准,并且运行在2.4GHZ的频段上,另外,欧洲的标准是868MHZ、北美是915MHZ。
数据传输速率较低:
10Kb/s~250Kb/s
模块总功耗:
A无线模块不工作时平均功耗22-25mW
B无线模块工作时平均功耗130-135mW
C无线模块工作时峰值功耗140-150mW
无线传输距离:
200-250m(外接5dB鞭状天线),300-400m(外接9dB鞭状天线)
分析:
从传输距离、功耗和组网能力上来说zigbee模块已经满足要求。
但是zigbee的传输速率过低,小范围内的实时数据通讯没有太多影响。
但未来系统升级加入更多节点时,速率会比较严重制约系统的数据交流。
Zigbee通信协议较
2.2.3方案二nrf24l01射频
NRF24L01是NORDIC公司生产的一款无线通信通信芯片,采用FSK调制,内部集成NORDIC自己的EnhancedShortBurst协议。
可以实现点对点或是1对6的无线通信。
。
只需要为单片机系统预留5个GPIO,1个中断输入引脚,就可以很容易实现无线通信的功能,非常适合用来为MCU系统构建无线通信功能。
无线通信速度可以达到2M(bps)
工作频率范围,2.400GHz~2.525GHz
126个通讯通道,6个数据通道,满足多点通讯和调频需要
低功耗设计,接收时工作电流12.3mA,0dBm功率发射时11.3mA,掉电模式时仅为900nA
分析
功耗和传输速率完全符合系统的要求,而且成本在三个方案中最为低廉。
传输距离稍近,而且单片机控制协议较复杂但仍比zigbee更容易控制。
2.2.4方案三Bluetooth蓝牙
蓝牙,是一种支持设备短距离通信(一般10m内)的无线电技术。
能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等之间进行无线信息交换。
能够有效地简化移动通信终端设备之间的通信,蓝牙采用分散式网络结构以及快跳频和短包技术,支持点对点及点对多点通信,与其它工作在相同频段的系统相比,蓝牙跳频更快,数据包更短,这使蓝牙比其它系统都更稳定。
工作在全球通用的2.4GHzISM频段。
其数据速率为1Mbps。
采用时分双工传输方案实现全双工传输。
典型模块HC06,串口模块工作电压3.3V工作电流:
40mA6、休眠电流:
小于1mA
分析
蓝牙相对其他无线模块优势在于蓝牙的稳定性和蓝牙的应用范围的广泛。
通过蓝牙模块可以与更多类型的设备连接。
且直接转串口意味着无需控制直接利用单片机串口即可。
但蓝牙的传输距离决定了满足不了传感器节点之间对距离的要求。
2.2.5结论
最终基于成本和传输距离考量传感器节点之间选择nrf24l01模块传输距离基本满足要求,速率足够数据需要。
而与上位机通讯则选择与上位机能够直接连接的蓝牙模块,以追求稳定的传输。
2.3单片机
STC89C52RC是传统应用最为广泛的51系列单片机,比传统的8051系列增加了相当多的实用功能,机器周期提高到6t。
兼容现在市面上大多数模块。
具体技术指标见附录
STC12C5A60S2是STC生产的单时钟/机器周期(1T)的单片机,指令代码完全兼容传统8051,但速度快8-12倍。
内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换,针对强干扰场合。
具体指标见附录。
传统STC89C52RC依旧是应用最为广泛和学习单片机入门的首选型号,毕竟已经十余年之久面对日益增加的处理速度需求而有些力不从心。
Stc12具有1t机器周期、两路串口和硬件spi。
使12在面对数据交流时与89c52相比更快应用更广。
最终确认主控制节点选择增强版stc12c5a60s2以应对数据处理的需求。
stc12c5a60s2PDIP-40封装与传统8051硬件上完全兼容。
其他传感器节点选择STC89C52RC节约成本。
2.4上位机
将数据汇总处理呈现,并将数据上传到云端。
上位机是系统中比较复杂的部分,涉及到网络设备,云端api调用,与单片机完全不同的开发环境。
Arduino平台
Arduino,是一个基于开放原始码的软硬件平台,构建于开放原始码simpleI/O介面版,并且具有使用类似Java,C语言的Processing/Wiring开发环境
Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境Arduino的编程是利用Arduino编程语言(基于Wiring)基于Arduino的项目,可以包含一些在PC上运行的软件(比如Flash,Processing,MaxMSP)他们之间可以实现通信。
分析
Arduino完全满足整个需要,从上位机需要来说,需要Arduino网络组件,蓝牙模块,成本200元左右,要面对一个全新的开发环境,从开发效率来说不是最好的选择。
Android是一种基于Linux的自由及开放源代码的操作系统,由Google公司和开放手机联盟领导及开发。
2013年的第四季度,Android平台的全球市场份额已经达到78.1%。
采用安卓系统的平台成本已经下降到了百元以内,一个不到百元的安卓手机平台可以提供gps、wifi、蓝牙、gsm、数据流量等所有需要的功能。
而且MIT的AppInventor平台,大大降低了安卓app开发的门槛。
使Android初学者在不需要掌握任何的安卓开发知识的情况,完成开发。
AppInventor原是Google实验室(GoogleLab)的一个子计划。
GoogleAppInventor是一个完全在线开发的Android编程环境,抛弃复杂的程式代码而使用积木式的堆叠法来完成Android程式。
这款平台已经事先将软件的代码全部编写完毕,用户只需要根据自己的需求向其中添加服务选项即可。
也就是我们所要做的只是写简单的代码拼装程序。
结论
基于节约时间成本考虑,选择基于Android平台的智能手机
第三章系统整体规划
3.1单片机最小系统
3.1.1主控板
硬件
Stc12c5a60s2最小系统GP2Y1050AU0F粉尘传感器lcd1602液晶mq5报警器。
Hc06蓝牙模块nrf24l01射频模块蜂鸣器稳压模块。
功能
收集空气质量信息,通过无线采集温湿度信息,显示到1602并上传到上位机。
当mq5收到报警信息时,发出警报并上传到上位机。
难点及问题
难点:
不同模块之间的高效组合、射频模块的运用。
问题:
电源问题
主控板是下位机系统核心,传感器对电压要求较高GP2Y1050AU0F对电压要求到了正负0,2伏以内。
主控板采用外部电源适配器供电。
5v1a理论满足要求。
但遇到了GP2Y1050AU0F数据异常问题,最终发现电压不足导致GP2Y1050AU0F两端电压只有4·75v左右。
增加一个5·1v的稳压模块最终实际测试系统中GP2Y1050AU0F电压稳定在了5·04v左右。
Nrf24l01数据接受丢包严重。
例程中发送接收程序比较简单,代码量只有100强。
但主控板整个综合起来代码在900行上下。
单纯等待数据方式导致效率严重低下。
1602乱码
属于程序跑飞问题,程序异常溢出。
传感器刷新缓慢波动幅度大,时间控制不够精确。
上位机数据接收缓慢
解决
1Nrf24l01数据接受丢包严重。
Nrf24l01数据接受改用中断形式。
程序需要涉及GP2Y1050AU0F串口2中断、上位机蓝牙中断、Nrf24l01接收中断。
大循环中需要有1602刷新、传感器数据处理、mq5报警、数据发送。
优先级保证数据准确为先Nrf24l01接收中断为最高优先级。
其次为串口2中断。
响应上位机中断之间关闭总中断。
2大循环中开始时采用延迟保证刷新效果不佳,
最终采用分时执行。
定义循环变量n=50次为一个大循环。
N取不同值时执行不同的任务组合,把程序功能分散实现。
通过软件模拟确认传感器刷新时间的准确值。
在实现分散任务时,针对上位机数据缓慢,适当增加数据发送次数。
3传感器数据波动大,
一方面增加风扇来稳定气流。
另一方面空气质量类似温度和湿度数据,波动不大,有一定稳定性。
选择针对温度的处理办法,算术平均滤波法。
效果来看有了很大改观。
但还是不够稳定。
采用更为复杂的限幅中位值平均滤波法对数据进行幅宽限制,再去掉一组奇数个数据中的最大最小值,其余数据区算术平均值,可以得到完全稳定的结果。
定义的uint型变量高达23个,浪费ram。
且由于未知原因应用该算法时1602无法稳定工作,工作4分钟左右回出现乱码问题。
41602乱码问题
针对1602乱码问题,原因很多,不能完全确认。
只能尽量减少无谓变量和函数。
缩减程序体积。
将不必要功能放入其余模块。
Dht11单独采集发送。
3.1.2温湿度采集板
硬件
Stc89c52rc最小系统dht11温湿度传感器nrf24l01射频模块
功能
采集温湿度信息发送到主控板
问题及解决
dht11及nrf24l01时序安排混乱
dht11采用i2c总线协议通讯,对时序要求相当严格。
同时nrf24l01在89c52上采用硬件模拟SPI时序操作复杂。
Dht11要求刷新频率不高于1.4s/次。
Nrf24l01每次发送数据中间必须要有1.2s左右延迟,又针对每个单片机主程序有所不同。
确定合适值比较困难。
软件模拟不能完成功能,只能在实际调试中实时调整,最终在实际调试中找到了比较合适的时序组合。
但还有进一步优化的空间。
3.1.3Diy净化器+温度板
硬件
Diy净化器stc89c52rc最小系统ds18b20温度传感器nrf24l01射频模块
功能
接收控制信号控制净化器开关。
采集温度传输至主控板
3.1.4安卓上位机
硬件
安卓智能手机
功能
汇总所有数据显示并上传到云端平台,并从反馈云端平台命令到下位机。
Mq5报警时发送报警短信。
识别简单的语音控制执行命令。
难点及问题
难点:
1.Apk主界面的设计,尽量以简洁方式展示信息,操作更加简便。
2.与云端平台互动时API调用,网络协议比较棘手。
3.在appinvontor平台内缩减app体积,减少程序冗余。
4.云端平台的选择。
5.软件安全性。
问题:
1.下位机数据解析错误多更新缓慢。
2.云端平台API对数据更新要求必须保持在1.5s以上,且不接受字母型数据。
3.语音控制在平台内组件属于Google语音识别,但在国内无法稳定访问。
解决
成品App截图
1云端平台选择
国内外涉及物联网的平台主要有以下几个:
乐联网、yeelink、xlively与majordomo。
这几个平台基本功能相同:
都面向免费用户提供了传感器发布,控制等物联网云端的基础功能。
有完整的移动端程序,并开源。
其中乐联网、yeelink是国内的物联网平台支持中文。
Xlively平台是最早的物联网平台,其所能提供的服务也更多。
Majordomo是俄罗斯平台也是支持设备相连,分帐号登录管理的系统。
是所有github上的应用难得有demo演示的项目。
最终选择乐联网为项目的云端平台,支持中文更易上手。
且例程相对更为完整。
乐联网的API手册另附。
针对云端平台对API通讯限制。
API通信期间,是依靠定时器来进行更新数据的。
调节定时器时间为2000ms且相同的数据不再重复向云端发送,减少定时器后的模块数量。
最终得到了稳定的更新。
2下位机数据解析错误。
解析下位机数据是通过标志位+数据来区分不同的数据类型。
但受限于平台解析时时常会有串位和错误字符出现。
经过调试和资料中发现将标志位改为字母,同时将下位机数据发送纯数字改为发送文本。
解析时不易出错。
但增加了下位机的资源开销。
Keil3的stdio.h文件内有printf函数作用于直接发送文本。
上位机解析数据串时,不在区分数据串长度。
当有数据传来时,当做字符串处理,搜索标志位,有标志位存在则提取后面指定长度的文本。
送入显示区域。
3Google语音服务不稳定
有两种方案:
a.将Google服务替换为国内可用的语音服务比如科大讯飞和XX语音。
b.通过网络设置和软件稳定Google服务访问。
替换语音识别API涉及安卓底层的编程。
在未对安卓开发熟悉时所开发的app稳定性未知。
尝试替换API后使用国内语音识别服务不尽人意,无论在识别速度还是识别质量上都与Google有一定差距。
程序崩溃时常发生。
推测API调用并不完全,而且替换过程中破坏了其他代码。
最终选择通过fqrouter22软件稳定Google服务访问。
4软件安全性
云端平台的API调用是通过一个用户对应的userkey一个长约30字符的字符串来授权更新数据。
这个userkey同时也固化在所编写的apk文件中,通过apk生成的一个5位数来打乱userkey加密储存。
且每次上位机启动生成随机数均不同。
网络通畅,下位机连接时才会调用解密。
与下位机数据交流中加入了事先约定好的协议。
当数据更新超过7次后下位机发送询问数字,上位机返回数字对应的不同文字。
结果相同时才会执行上位机的控制指令,但下位机更新数据不受影响。
系统外控制端与上位机通过蓝牙连接时要通过密码验证。
第四章调试结果及项目反思
整体设计方案完成了大多数设计要求。
当可燃性气体超标时通过蜂鸣器和手机端短信提示报警。
监测环境中空气质量、温度和湿度数据,汇总信息通过1602显示。
实时传输到安卓平台上位机。
并上传到云端平台。
通过云端平台可以随时查看云端数据。
且在试验条件下系统稳定运行4小时以上。
不足:
云端控制功能未完成。
云端平台控制要求一个稳定的ip地址以发送控制命令。
而为稳定Google服务的fqrouter22软件是通过全局代理方式稳定Google服务访问。
每时每刻代理的ip地址都在变化,让云端控制难以在现有平台下完成。
可能的解决方案:
将语音识别服务改为国内服务器,完成ip地址的稳定。
实现云端控制。
参考文献
[1]郭天祥.新概念51单片机C语言教程.北京:
电子工程出版社,2009.1:
98-103
[2]张海兵张盈盈秦相林基于STC12C5A60S2的无线温度采集系统设计《哈尔滨商业大学学报(自然科学版)2011年06期
[3]DavidWolber,译者老巫婆(网名).AppInventor编程实例和指南[M/CD].
[4]baby你这个猪头(网名).NRF24L01+无线温度传输接收终版[EB/OL].
[5]欧阳锷.应用nRF24L01及干扰问题探讨[J].职业与教育,2007.
[6]Net,几个智能家居平台研究——xlively,乐联网,majordomo,housemon,webmote,opensourceautomation[EB/OL]
[7]BH4TDV,乐联网TCP服务器通讯协议[EB/OL]
附录
元件技术标准
DHT11
数字温湿度传感器是一款含有已校准数字信号输出的温湿度复合传感器,传感器包括一个电容式感湿元件和一个NTC测温元件。
校准系数以程序的形式储存在OTP内存中,传感器内部在检测信号的处理过程中要调用这些校准系数。
极低的功耗,信号传输距离可达20米以上。
为4针单排引脚封装。
测量范围:
湿度20-90%RH,温度0~50℃
测量精度:
湿度+-5%RH,温度+-2℃
分辨率:
湿度1%RH,温度1℃
整体刷新一次在2s左右。
满足家庭用设计需要。
Mq5
可燃性气体传感器,对天然气,城市煤气有较好的灵敏度。
对乙醇,烟雾几乎不响应。
并且响应快、恢复快,具有灵敏度高的特性。
有两条输出信息口。
一种是a0口通过模拟电压形式显示当前环境中的可燃性气体水平。
一种为d0口输出TTL电平。
在可燃性气体水平异常升高时输出低电平报警。
考量到增加可燃性气体监测的目的主要是及时监测报警对可燃性气体水平数据并无太大要求。
且a0转换要经过ad存在相当的延迟。
选择d0口直接输出TTL电平形式在监测到异常的可燃性气体上升时,进行报警。
STC89C52RC
单片机是宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统8051单片机,
1.12时钟/机器周期和6时钟/机器周期
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 联网 雏形