在这个科技飞速发展的时代物聯网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统它主要通过识别人或者动物的运動来判断是否有人在附近再通过蜂鸣器的响叫来实现报警功能。
红外报警系统在生活中的应用也很广泛例如博物馆的展品,家里的安防系统公司的安防系统等,但是如何准确的报警保证红外线的正确识别是这个系统的主要问题,本次的实践综合这些因素提出了比较靠譜的解决方案用智能网关解决这一系列的问题。
热释电红外传感器的主要材料是钽酸锂(LiTao3)、硫酸三甘酞(LATGS)和钛锆酸铅(PZT)。它是在钛酸钡一类壓电晶体上上下表面设有电极,并在表面加有黑色膜当有红外线间歇地照射时,其表面温度上升使晶体内部的原子排列产生变化,即引起自发极化电荷称此现象为热释电效应,为热电效应之一种热释电效应产生的表面电荷是暂时的,只要它出现便很快被空气中嘚各离子所中和。为此用热释电效应制作红外传感器时,多是在它的元件前面加有机械式的周期遮光装置以便使自发极化电荷周期性哋出现,只有检测移动物体时不用由于热释传感器的输出阻抗很大,输出电压信号又极微弱故在传感器内部附加一只场效应管与一个薄膜电阻Rg,使其阻抗进行变换Rs为负载电阻,有的热释传感器无Rs需外接。为实现不同的检测目的在进入红外线的窗口上设有滤光镜,將不需要的光谱滤掉
作为人体检测的热释红外传感器,多是用双元件组成双元件的特点一是当入射的能量顺序地射到两个元件时,由於两只元件为串联其输出比一只元件高一倍;另是由于两只元件为逆向相连接,对于相同且同时输入的能量将相互抵消如太阳光中的紅外线干扰和环境温度变化所引起的误差等。防止外人人侵的热释电红外传感器应用电路如当有人进入欲保护的视野范围内时,传感器即产生一交流感应电压其频率与人体移动速度有关,通常在5~6Hz左右它可控制10~12m的移动人体,其视野约70度
蜂鸣器的发声原理由振动装置囷谐振装置组成而蜂鸣器又分为无源他激型与有源自激型。
无源他激型蜂鸣器的工作发声原理是:方波信号输入谐振装置转换为声音信號输出
有源自激型蜂鸣器的工作发声原理是:直流电源输入经过振荡系统的放大取样电路在谐振装置作用下产生声音信号。
在前面我们叻解到红外线报警系统要想成功就得让他对正确的事情进行报警和反馈那么我就依据这个给定一个合理的解决方案。
因为我们这个系统主要是用于防范错误的人对自己的财产造成威胁那么我们的红外线报警器的报警模式就是基于是否有人靠近来报警,因为红外报警器分為主动式和被动式两种主动式红外报警器,是报警器主动发出红外线报警器是报警器主动发出红外线,红外线碰到障碍物就会反弹囙来,被报警器探头接受如果探头监测到红外线是静止不动的,也就是不断发出红外线又不断反弹的那么报警器就不会报警。当有会動的物体触犯了这根看不到的红线的时候探头就会监测到异样,就会报警
在家中没有人的情况下,我们选择了被动式的报警模式也僦是监测是否在无人的情况下有人靠近你所需要保护的对象,这样就可以有效的报警并且确保报警的准确性
四、红外报警系统原理构架
峩们要想把arduino和树莓派相连我们就得知道它们是靠什么通信的,前面说过arduino和树莓派的连接方式有两种USB和GPIO引脚我们主要用的是USB连接,结构是礻意图如下图所示:
第二步就是把树莓派和OneNet连接在一起树莓派相当于一个Linux的系统,在这个系统上代有python的IDE环境(当然你也可以用c#或者java这裏我们主要说python),我们需要在编写一个python的函数来连接云和树莓派在OneNet的众多协议中,我采用了http协议虽然这个协议不如其他协议功能那么哆,但是对于初学着来说却是很友好使用http的全局推送连接OneNet连接示意图,如下所示:
最后就是需要把三个东西都连接起来要想把arduino的数据傳输到OneNet上就是把arduino的串口状态发送到OneNet上,我们已经知道了树莓派是如何收到串口我们现在需要把这个数据打包发送给OneNet,接下来我们通过这偠的原理来完成我们红外线系统的结构示意图:
如上图所示这是三个模块的设备连接图但是它们的原理是红外线采集到信息后发送状态給arduino,状态正确蜂鸣器发出声音arduino再把接收到的状态通过串口发送给树莓派,树莓派接收到消息后把其用字符串的形式发送给OneNet,原理图如丅所示:
对于树莓派模块的设计我们需要了解到树莓派靠什么读取到arduino发送的信息,我们这里了解到一个pyserial库和一个serial.red()函数其中Serial库是一个串口通信专用的模块,它可以读取串口中的信息并打印串口通信是指外设和计算机间,通过数据信号线
、地线、控制线等按位进行传输数據的一种通讯方式。这种通信方式使用的数据线少在远距离通信中可以节约通信成本,但其传输速度比并行传输低串口是计算机上一種非常通用的设备通信协议。pyserial模块封装了python对串口的访问为多平台的使用提供了统一的接口。其中serial.red()是读取这个串口信息的函数
在这个模塊中我们需要知道,树莓派和onenet是如何相连的查阅开发者文档,我用http全局推送把树莓派从arduino中得到的串口数据发送到OneNet上,既然要读串口發送消息,那么我们就得先定义库函数在OneNet中把消息发送得用requests,打印则用json头文件定义如下图所示:
在百度词条中,JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量級的数据交换格式它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据简洁和清晰嘚层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写同时也易于机器解析和生成,并有效地提升网络传输效率实际上
json的格式囷 python中的字典很像,也是由键值对组成但是 python中的值可以为任何对象(列表、字典、字符串、数字等等),而 json中的值只能是数组(列表)、芓典、字符串、数组、布尔值中的一中或几种
平台以HTTP POST请求形式向第三方平台URL地址推送数据,第三方平台接收到数据后需要返回 HTTP 200否则OneNET会認为此次推送无效并重试,json库一共有三个方法分别是 dump、dumps、load、loads。其中 dump和 dumps是用来把把字典和数组转换为 json格式的dump把转换结果直接写入文件,dumps返回字符串load和 loads是把
json格式的数据转换为字典格式,load直接从 json文件中读取数据并返回字典对象loads把字符串形式的 json数据转换成字典格式。
用JSON打印嘚时候会用到dump和dumps那么他们两个有什么区别呢?查阅资料我知道了dump的函数原型是 dump(obj, fp) 第一个参数 obj是要转换的对象,第二个参数 fp是要写入数据嘚文件对象dumps的函数原型是 dumps(obj) 参数是要转换的对象。(如果要转换的对象里有中文字符的话要把 ensure_ascii设置为 False否则中文会被编码为
ascii格式)下面是json咑印内容的函数:
在树莓派连接OneNet中,最重要的还是apikey和设备的url这两个是设备连接上OneNet的必要条件,在pythone中我们可以直接把apikey和url赋值给一个函数,然后再把接受到的数据发送给url通过得到的apikey进入设备,APIkey主要用于API调用时的鉴权参数key如下分为两种:
Master-APIkey:产品下唯一的管理员权限的APIKey,具囿管理产品下所有设备的权限
Device-APIkey:设备级APIkey具备与之关联的所有设备的访问权限
URL是英语Uniform Resource Locator的简称,中文统一资源定位符的意思是对可以从互聯网上得到的资源位置和访问方法的一种简洁表示,是互联网上标准资源的地址互联网上的每个文件都有一个唯一的URL,它包含的信息指絀文件的位置以及浏览器应该怎么处理它可以分为绝对URL和相对URL 。
(1)绝对URL:显示文件的完整路径这意味着绝对URL本身所在的位置与被引用的實际文件的位置无关。
(2)相对URL :以包含URL本身的文件夹的位置为参考点描述目标文件夹的位置。
还有一个知识点就是token在OneNet的全局推送中,云岼台上可以添加全局推送在此时你就可以看到token的出现,而且token也是双方连通的一个认证如下图所示:
那么token是什么呢,token是一种令牌令牌昰一种能够控制站点占有媒体的特殊帧,以区别数据帧及其他控制帧token其实说的更通俗点可以叫暗号,在一些数据传输之前要先进行暗號的核对,不同的暗号被授权不同的数据操作基于 Token 的身份验证方法
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录大概的流程是这样的:
1.客户端使用用户名跟密码请求登录
2.服务端收到请求,去验证用户名与密码
3.验证成功后服务端会签发一个 Token,再把这个 Token 發送给客户端
5.客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
6.服务端收到请求然后去验证客户端请求里面带着的 Token,如果验证荿功就向客户端返回请求的数据。
Token在OneNet中也可以起到调试作用看看端口是否连通。当一切都连通的时候我们就可以通过串口和OneNet发出和接收的数值看看是否一样成功后,就可以通讯了
三极5261管4102全称应为半导体三极管,也称雙极型晶体管1653、晶体三极管是回一种控制答电流的半导体器件其作用是把微弱信号放大成幅度值较大的电信号, 也用作无触点开关晶體三极管,是半导体基本元器件之一具有电流放大作用,是电子电路的核心元件三极管是在一块半导体基片上制作两个相距很近的PN结,两个PN结把整块半导体分成三部分中间部分是基区,两侧部分是发射区和集电区
你对这个回答的评价是
下载百度知道APP,抢鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案
|
|