基于以太网和DTMF编解码的远程家居控制器
一、项目概述1.1 引言
21世纪是信息化的世纪,各种信息新技术推动着人类文明的进步。本文介绍的基于以太网和DTMF编解码的远程家居控制器可以使得人们可以通过手机或电话在任何时候、任意地点对家中的电器进行远程控制;也可以在下班途中,通过手机预先将家中的空调打开、让热水器提前烧好热水……;而这一切的实现都仅仅是打一个简单的电话。此外,该系统还提供以太网远程控制,用户登录特定的网站就可以了解家电的工作情况以及进行相应控制。如果不幸出现某种险情,此控制器还可以自动拨打电话通知你,你就可以在第一时间获得通知以便进一步采取行动。当你回到家时,你还可以运用遥控器来控制家电工作。舒适、时尚的家居生活是社会进步的标志,对家里的电器、灯光、电源、家庭环境进行方便地控制,使人们尽享高科技带来的简便而时尚的现代生活。
1.2选题动机
如今,我国正在快速发展智能家居行业,特别是基于GSM网络的居多,然而,因为价格的昂贵至今还未进入平常百姓家。本系统针对此情况,设计一款成本低廉,面向普通家庭,集本地控制和远程控制于一体的智能家居控制器。众所周知,电话网络已经遍及我国各地,电脑也已经基本普及。我们利用电话网开发基于DTMF编解码的电话远程控制系统 ,其外围电路成本低于30元人民币;利用现有发达的internet,我们开发出基于以太网的远程控制系统,用户可以随时随地通过电话或PC机浏览器远程控制家用电器和监控家庭安全隐患。同时,在家用户可以通过遥控器无线遥控家用电器和实时监控家庭安全隐患。
二、需求分析
2.1 功能要求
本着“环保与创新”的主题,此系统集本地家电控制和监控模块,DTMF编解码的电话远程控制和监控模块以及以太网web server的远程家居控制和监控系统模块三大模块为一体,实现智能家居控制。电话远程控制和以太网远程控制,不需进行专门的布线,不占用无线电频率资源,避免了电磁污染。且可以通过以太网实时监控家用电器,避免了没必要的电力资源浪费。
一、本地家电控制和监控模块
此模块能够实时检测温湿度、一氧化碳、烟雾等的数值或者浓度,并在1602液晶上显示相关参数。当超过一定的警戒线,它还会发出警报以及通知主系统(AVR 32)出现何种警情,让主系统进行相关处理。
二、DTMF编解码的电话远程控制和监控模块
此模块能够受手机控制,通过手机拨打家里电话来远程控制家里的电器的开闭,以及当家里出现盗贼或者出现险情(包括火灾、煤气泄漏等)时固定电话能及时自动拨打电话通知用户。
三、以太网web server的远程家居控制和监控系统模块
此模块通过网线接入以太网后,用户可以通过手机或PC机打开相应浏览器来远程控制家里的电器的开闭,以及监控家里的温湿度,煤气传感器和烟雾传感器的数据。
2.2 性能要求
一、本地家电控制和监控模块
此模块性能要求传感器采集数据要实时,而且要快速,采集出来的数据经过相应转换后得到的数值与实际数值相差不能超过5%,温度的精度为0.1℃,湿度的精度为0.5%RH。
二、DTMF编解码的电话远程控制和监控模块
此模块性能要求能响应速度快,即有人拨打电话时,此模块能够在1S内检测到有电话打入,并记录下拨打人输入的按键信息。此外,当要实现自动拨打电话时,要求此模块模拟按下的电话号码要准确无误,确保准确性。
三、以太网web server的远程家居控制和监控系统模块
此模块要求接入互联网,当用户浏览网页时,家用电器信息和传感器数据每隔几秒刷新一次,确保数据传输的快速性和准确性。
三、方案设计
3.1 系统功能实现原理(除图片外需有文字介绍)
本系统功能的实现由三大模块实现:
(1)本地家电控制和监控模块;
(2)DTMF编解码的电话远程控制和监控模块;
(3)以太网web server的远程家居控制和监控系统模块。
一.本地家电控制和监控模块
1.模块概要
传感器是用来监测家庭的险情情况的,所以要求监测速度快,效率高。为了提高整个系统的整体性能,我们把无线遥控模块和各传感器以及ATMEGA 16单片机作为主机(AVR 32)的一个子系统,子系统作为一个独立的模块可以单独工作但又从属于主机,突出了容易操作以及执行效率高的优点。整体的硬件框图如下图3.1—1所示:
传感器子系统模块包括:人体红外感应传感器模块;一氧化碳传感器;烟雾传感器;温湿度传感器。它们采集出来的数据在液晶1602上显示。而ATMEGA 16单片机与主系统之间的通信是通过RS485总线来进行通信的。
图3.1—1 传感器子系统模块
2.单元功能模块介绍
2.1人体红外感应传感器
外形如下图所示:
一般来说,人体会发出波长为10um 左右的红外线,在本次设计中采用PIR热释电传感器,其低功耗、静态功耗50uA,宽电压范围,电源可为5V电源。使用简单,总共有3个引脚,一个为+5V电源引脚,一个为GND引脚,一个为感应输出电平引脚,没人时输出低电平,感应距离最大为7米。当有人进入感应范围,此传感器的感应输出电平引脚输出有效高电平,单片机可以通过读取此引脚来判断是否有人进入。当有人进入时,单片机通过自动拨打电话通知用户,并室内响铃。
2.2 温湿度传感器
本设计采用数字温湿度传感器DHT11。此传感器包括一个电阻式测湿元件和一个NTC测温元件。它为单线制串行输出接口,单总线结构输出有效地节省用户控制器的I/O口资源。40bit二进制数据输出,其中湿度整数部分占1Byte,小数部分1Byte,温度整数部分1Byte,小数部分1Byte。湿度为高16位。最后1Byte为校验和。具体见下表:
湿度
温度
校验
整数
小数
整数
小数
bite 0
bite 4
bite 3
bite 2
bite 1
8 bit
8 bit
8bit
8 bit
8 bit
计算方法为:
Humi(湿度)=bite 4.bite 3
Temp(温度)=bite 2. bite 1
Jiaoyan( 校验)=bite4+bite 3+bite 2+bite 1
DHT11的外形以及引脚排列如下图所示:
DHT11的供电电压为3.5~5.5V。传感器上电后,要等待1s以越过不稳定状态在此期间不要发送任何指令。电源引脚之间可增加一个瓷片电容用以去耦滤波。
DHT11与单片机的连接如下图所示:
2.3 一氧化碳传感器
本设计采用MQ9一氧化碳传感器。其主要特点是对一氧化碳、甲烷、液化石油气具有很高的灵敏度和良好的选择性,具有长期的使用寿命和可靠的稳定性。
半导体可燃气体传感器MQ-9所使用的气敏材料是在清洁空气中电导率较低的二氧化锡(SnO2)。采用高低温循环检测方式低温(1.5V加热)检测一氧化碳,传感器的电导率随空气中一氧化碳气体浓度增加而增大,高温(5.0V加热)检测可燃气体甲烷、丙烷并清洗低温时吸附的杂散气体。使用简单的电路即可将电导率的变化,转换为与该气体浓度相对应的输出信号。
2.4烟雾传感器
本设计采用MQ—2烟雾传感器。MQ-2传感器成本低,灵敏性能很好。它所使用的气敏材料是在清洁空气中电导率较低的二氧化锡,当室内有烟雾时,MQ-2的电导率随空气中烟雾气体的浓度增大而增大,使用简单的电路即可将电导率的变化转换为与该浓度相对应的输出信号。
其外形如下图所示:
2.5 1602液晶显示模块
本设计采用1602液晶显示模块,不可显示汉字,可以显示字母以及数字和一些特定字符,满足本设计不要求很高的显示相关的温湿度参数以及百分比参数。电源为+5V即可。显示颜色为黄绿色,与MCU数据接口为8位并行连接。
此模块外形尺寸图如下图所示:
此模块的引脚定义如下图所示:
引脚号
引脚名
输入/输出
作用
1
VSS
电源地
2
VCC
电源(+5V)
3
V0
对比调整电压
4
RS
输入
0=输入指令,1=输入数据
5
R/W
输入
0=向LCD写入指令或数据,1=从LCD读取信息
6
E
输入
使能信号,1时读取信息,下降沿执行命令
7
DB0
输入/输出
数据总线line0(最低位)
8
DB1
输入/输出
数据总线line1
9
DB2
输入/输出
数据总线line2
10
DB3
输入/输出
数据总线line3
11
DB4
输入/输出
数据总线line4
12
DB5
输入/输出
数据总线line5
13
DB6
输入/输出
数据总线line6
14
DB7
输入/输出
数据总线line7(最高位)
15
BLA
LCD背光电源正极
16
BLK
LCD背光电源负极
2.6无线遥控模块
本设计采用PT2262/PT2272通用编/解码无线遥控模块。在通常使用中,我们一般采用8位地址码和4位数据码,这时编码电路PT2262和解码PT2272的第1~8脚为地址设定脚,有三种状态可供选择:悬空、接正电源、接地三种状态,3的8次方为6561,所以地址编码不重复度为6561组,只有发射端PT2262和接收端PT2272的地址编码完全相同,才能配对使用。当两者地址编码完全一致时,编码芯片PT2262发出的编码信号由:地址码、数据码、同步码组成一个完整的码字,解码芯片PT2272接收到信号后,其地址码经过两次比较核对后,VT脚才输出高电平,与此同时相应的数据脚也输出高电平,如果发送端一直按住按键,编码芯片也会连续发射。
我们采用的遥控器如下图3所示:
图3 编码发射模块实物图与原理框图
2.7RS485串口总线
RS-485串行总线接口标准以差分平衡方式传输信号,具有很强的抗共模干扰的能力,允许一对双绞线上一个发送器驱动多个负载设备。本设计采用MAX485芯片作为RS485总线的接口芯片。我们可以用RS232接口连接两块单片机,但是,当你需要在一个更长的距离上或者比RS232更快的速度下进行传输的时候,RS485就是一个解决的方法。RS485与RS232相比有很多优点:1. 成本低,驱动器和接收器价格便宜,并且只需要单一的一个+5V(或者更低)的电源来产生差动输出需要的最小1.5V的压差。与之相对应,RS-232的最小+5V与-5V输出需要双电源或者一个价格昂贵的接口芯片,这个接口芯片可以生成这些电源;2.网络能力好,RS-485是一个多引出线接口,这个接口可以有多个驱动器和接受器,而不是限制为两台设备。利用高阻抗接受器,一个RS-485连接可以最多有256个接点;3.长距离连接,其距离最长可以达到一千多米;4.快速,比特率可以高达10Mbps。电缆长度和比特率是有关的,较低的比特率允许较长的电缆。
MAX485芯片的引脚如下图所示:
引脚说明如下表2—2所示:
MAX485引脚说明
MAX485引脚
名称
功能
1
RO
接收器输出端。若A大于B200mVRO为高,若相反RO为低
2
RE
接收器输出使能端。当RE为低时RO有效,为高时RO为高阻状态
3
DE
驱动器输出使能端。
4
DI
驱动器输入端。
5
GND
地
6
A
同向接收器输入和同向驱动器输出端
7
B
反向接收器输入和反向驱动器输出端
8
VCC
正电源输入端:4.75V—5.25V
二.DTMF编解码的电话远程控制和监控模块:
1.模块概要
该模块控制器由解码芯片MT8870接收远端发送来的DTMF信号并对其进行解码,解码后的信号由MCU采集处理,同时当出现警情时,MCU发送信号到HT9200B,通过HT9200B来拨打用户的电话号码,以便用户及时了解情况。由为了方便用户使用,系统设计了语音提示电路。电话远程控制系统一般工作在无人值守环境,所以应具有自动离线、上线、复位功能。本系统采用AVR 32作为中央处理器。同时,电话远程控制系统正常工作还需电源供电电路、驱动电路等辅助电路。系统组成框图如图3.2?—0所示。由图可知,此模块主要由振铃检测电路、模拟摘挂机电路、DTMF音频解码电路、语音提示电路、MCU(AVR 32)、控制电路、电源电路以及DTMF编码电话电路组成。
图3.2—0 DTMF控制模块硬件结构框图
控制器并联于电话机的两端,不会影响电话机的正常使用。用户通过异地电话拨通控制器所连接的固定电话的电话号码,通过程控交换机向电话机发出振铃信号。控制器检测到若干次振铃后,即若干次响铃后无人接听时电话自动摘机,进入密码检测阶段,输入正确密码后选择被控电器进行相应控制。
2.单元功能模块电路
2.1振铃检测电路
振铃检测电路如图3.2-1所示,图中二极管有组成全波整流电路,其作用有两个:
(1)将不确定的线路供电正负变为固定的正负输出;
(2)将交流的振铃信号变为脉动直流以供检测。
当没有振铃信号时,线路上的供电电压为50V左右(部分交换机为70V左右),经四个二极管构成的全桥整流后,不足以使62V稳压管导通,振铃信号输出端电压接近0V,当振铃信号到来时,线路上的90V交流振铃信号经全桥整流变化后变为90V的脉动直流电,其峰值足以击穿稳压值为75V稳压管,经电阻R1给光电耦合器U1(4N25)提供电压,从光电耦合器输出的波形是时通时断的方波信号,可以直接输出到单片机的中断输入口,单片机可以根据振铃信号光电转换后的高低电平检测有无振铃。R1取为5K左右。
电路中光电耦合器U1隔离了振铃信号和单片机的直接连接,光电耦合器以及光电转换原理传输信息,它不仅使信息发出端与信息接收端是绝缘的,从而对地电位差干扰有很强的抑制能力,而且有很强的抑制电磁干扰能力。保护单片机也提高了稳定性。
2.2自动摘挂机电路
设计主要思路:
根据国家标准规定:不论任何电话机,摘机状态的直流电阻应小于等于300欧姆,有“R”键的电子电话机的摘机状态直流电阻应小于等于350欧姆。当用户摘机时,电话机通过叉簧接上约250欧姆的负载,使整个电话线回路流过约30mA的电流。交换机检测到该电流后便停止铃流发送,并将线路电压变为十几伏的直流,完成接续。
模拟摘挂机电路如图3.2-2所示。平时电话挂机时,两条电话线处于开路状态。当拨打电话号码时,来自电话线的高压振铃信号经振铃检测电路,通过光电耦合器在其二次侧形成方波脉冲信号送到单片机进行振铃脉冲进行计数,当振铃次数达到设定次数时,由单片机内部软件程序控制,控制摘挂机口输出一个低电平,然后电平送到三极管PNP1的基极,使三极管饱和。此时,+5V电源经三极管,再通过继电器线圈接地,继电器线圈得电,使继电器的常开触点闭合,150欧姆电阻接入电路当中,电话接通。当用户输入密码错误,或者是操作结束后,系统由软件控制PNP1截止,继电器线圈失电,常开触点断开,电话线又处于开路状态,从而实现模拟挂机。
2.3 DTMF解码电路
DTMF双音频信号解码电路是目前在按键电话(固定电话、移动电话)、程控交换机以及无线通信设备中广泛应用的集成电路。它包括DTMF发送器与DTMF接收器,前者主要应用于按键电话作双音频信号发送器,发送一组双音多频信号,从而实现音频拨号。电话键盘按键与双音频信号以及对应编码的对应关系如下表所示:
表1电话键盘与DTMF频率以及对应编码关系表
低频组(HZ)
高频组(HZ)
Q4 Q3 Q2 Q1
键号
697
1209
0001
1
697
1336
0010
2
697
1477
0011
3
770
1209
0100
4
770
1336
0101
5
770
1477
0110
6
852
1209
0111
7
852
1336
1000
8
852
1477
1001
9
941
1336
1010
0
941
1209
1011
*
941
1477
1100
#
697
1633
1101
A
770
1633
1110
B
852
1633
1111
C
941
1633
0000
D
本系统的双音多频DTMF信号解码电路由MT8870主要承担。MT8870的连线如下图3.2-3所示,VCC接+5V,2、3脚接收来自电话机的双音多频脉冲信号。该双音多频信号经过MT8870解码后在其数据输出端(Q1~Q4)输出相对应的8421码。MT8870的数据输出端Q4~Q1连到单片机,单片机识别4位代码。电话按键与相应译码输出。为了使单片机及时获取有效数据,MT8870的StD端接到单片机的中断脚。当MT8870获取有效双音多频信号后,通过中断来提示输入口接收有效二进制代码。而无效的双音频信号(电话线路杂音、人们的语音信号等)是不会引起MT8870的StD变化的。
图3.2-3 MT8870双音频解码电路
2.4 DTMF编码电路
HT9200B的DTMF信号编码电路如下图3.2—4所示:
需要在X1和X2两脚接上3.579545MHZ的晶体振荡器,HT9200B是一种高品质的DTMF信号发生器,可产生高质量、高稳定、高精度的DTMF信号,低功耗、总谐波失真低,在单片机的控制下可从DTMF引脚发出16个双音及8个单音。HT9200B提供了可选择的串行及并行模式以供用户与各种应用设备连接。本设计中选用了并行模式。
图3.2—4 DTMF信号编码电路
在并行模式下,HT9200B提供四位数据输入D0~D3以产生相应的DTMF信号,/SP引脚接至高电平时选择并行工作模式,之后输入数据,最后将CE端下拉为低电平以传送DTMF信号。从CE下降至有DTMF信号输出的间隔时间约为6mS,其并行数据代码与输出音频的对应关系如下表2所示:
表2HT9200B并行数据与输出音频的对应关系
数字
D3
D2
D1
D0
音频输出频率(HZ)
1
0
0
0
1
697+1209
2
0
0
1
0
697+1336
3
0
0
1
1
697+1477
4
0
1
0
0
770+1209
5
0
1
0
1
770+1336
6
0
1
1
0
770+1477
7
0
1
1
1
852+1209
8
1
0
0
0
852+1336
9
1
0
0
1
852+1477
0
1
0
1
0
941+1336
*
1
0
1
1
941+1209
#
1
1
0
0
941+1477
A
1
1
0
1
697+1633
B
1
1
1
0
770+1633
C
1
1
1
1
852+1633
D
0
0
0
0
941+1633
2.5 语音提示电路
由于我们团队手上有一块凌阳语音单片机模块,以及考虑到团队经费问题,我们团队一致同意采用凌阳语音单片机SPCE061A作为语音提示模块。由于SPCE061A具有良好的语音功能,所以可以把它作为EVK1100的语音模块从机使用,通过AVR 32作为主机来控制SPCE061A单片机发出相应的语音提示,为了做到良好隔离的作用,我们采用光电耦合器作为中间媒介,主机通过控制光电耦合器的通断来向从机传送相应的数据。从机通过读取光电耦合器形成的不同信号来输出不同的语音提示。控制图如下图3.2-5所示:
图3.2—5 语音提示电路控制模块
2.6 家用电器控制电路
由于单片机输出的电平为弱电电平,而家用电器需要的是220V交流强电,所以就只能通过弱电来控制强电。本家用电器控制电路如图3.2—5所示:为了隔离弱点和强电并且可以控制电器的开关,我们采用MOC3021光电耦合器来隔离强弱电平,同时采用BTA06双向可控硅来作为一个开关,此开关受MOC3021控制。当单片机引脚输出低电平时,MOC3021的1脚和2脚之间的发光二极管发光,4脚和6脚就导通,有电压加到BTA06的控制端,BTA06导通,家用电器的供电回路形成就可以开始工作。
当需要关闭电器时,单片机引脚输出高电平,MOC3021的1脚和2脚之间的发光二极管不发光,4脚和6脚不导通,没有电压加到BTA06的控制端,BTA06截止,家用电器供电回路无法形成,不能工作。
图3.2—6 家用电器控制电路
三.以太网webserver的远程家居控制和监控模块
1.模块概要
本模块采用EVK1100开发板+传感器模块,通过移植精简的tcp/ip协议,开发出一控制家用电器和监控家庭安全隐患的web 服务器控制端,将家中的实时信息和家用电器等装置,通过无线方式连接到此控制器中,此控制器直接通过RJ45连接到以太网,实现嵌入式的internet。通过avr32开发web server,这样就可以通过远程pc机或手机通过浏览器远程通讯,控制家电设备和监控家庭安全隐患。
以太网硬件结构组成框图如下图3.3—1所示:
图 3.3—1以太网硬件结构图
2.单元功能模块电路
2.1 PHY芯片DP83848I的自适应以太网通信接口设计
DP83848I是工业温度单端口的10/100 Mb / s以太网物理层收发器,25MHz时钟输出,智能降功耗模式。可为系统提供稳定可靠的优质网络解决方案,为工厂企业及其他恶劣的操作环境下,支持实时传输的以太网,符合IEEE 802.3u的技术标准
以太网接口设计如下:
图 3.3—2 DP83848I以太网接口设计
2.3TCP/IP协议栈
由于该嵌入式 Web 服务器硬件结构简单,硬件资源,特别是系统程序存储空间容量有限,所以我们在该系统中采用了精简 TCP/IP 协议栈,系统在应用层实现了HTTP 超文本传输协议,在传输层采用 TCP 协议,在网络层实现 IP 协议,同时还实现能报告数据传送差错等情况的 ICMP 协议。以太网数据的传输采用 MAC 地址来识别,而ARP协议提供 IP 地址和数据链路层使用的MAC地址之间的转换功能,为了保证系统在以太网的通信,实现了ARP协议。
本设计中的精简 TCP/IP 协议具有同 TCP/IP 协议一样的四层结构,各层实现的功能如下:
①链路层。设计中通过以太网接入到 Internet,因此物理层和数据链路层要符合以太网的 IEEE802.3 标准。ENC28J60向上层软件提供与硬件无关的接口,最终完成了数据在以太网中的接收和发送。因此,设计中物理层与数据链路层的设计是通过 ENC28J60硬件和驱动程序共同实现的。
②网络层实现了 ARP协议、ICMP协议和 IP协议。ARP是地址解析协议,具体处理过程是当接收到 ARP数据包,处理器就查看 IP地址是请求还是响应。如果是响应,则将响应中的网卡地址存到 ARP 高速缓存表中;如果是请求,处理器将返回自己的网卡物理地址给对方。ICMP 是调试响应 PING 的请求,检测网路是否通顺。依照系统实际应用的要求,IP协议只需实现对数据报传送和接收,无须实现路由选择算法和差错控制,同时也不需支持IP数据报的分片和重组。
③传输层实现 TCP 协议。TCP 协议是面向连接的、端对端的可靠通信协议。设计中采取了 TCP 连接的建立与关闭机制、超时重传机制、数据包确认机制、流量控制机制来保证
它的可靠性。在超时重传机制中,如果超时重传定时器溢出后还没有收到确认,则重传该数据包,并复位重传定时器。为简单起见,程序里每次只发送一个 TCP 数据包,然后等待它的确认,只有收到确认后才会继续发送下面的 TCP 数据包。在本设计,程序重传的间隔时间是固定的,没有采用 TCP 协议中的标准算法,当达到一定的次数后,发送方还没有收到确认,则会放弃该包的发送并关闭 TCP 连接。TCP 的流量控制是为了协调通信双方的收发速率不均衡而设计的。设计中考虑到系统在使用 TCP协议时,只设置了一个中等 IP包大小接收缓存,因此接收窗口恒定设为 1024。这样远端主机就会以较慢的传输速率与本端的 Web服务器进行通信,不会导致死机。
④应用层实现了 HTTP 协议。HTTP 是在 Web 服务器和浏览器之间通信的协议。为了简化,设计中采用固定的 HTTP报文头封装 HTTP应答数据报文。在响应 HTTP 请求时,由于以太网数据包的数据部分不能超过 1500 字节,因此当发送数据超过 1500 字节,需要分组发送。
四.操作系统的选择——FreeRTOS
FreeRTOS是一款可移植的、开放源代码的微型实时内核 ,它免费下载、免版税,并可用于商业应用。为多种不同的处理器架构和开发工具提供移植包。 每个官方移植包都包含一个配置好的应用范例,用来展示内核特性,加快学习进程,并允许“开箱即用(out of the box)”式的开发。活跃的用户社区能够提供免费技术支持。而商业支持则随全面的开发服务一起提供。
1. freeRTOS的特性
FreeRTOS是一种专为小型嵌入式系统设计的,可扩展的实时内核。亮点在于:
(1)免费RTOS内核- 占先式、协作式和混合式配置选项.
(2)SafeRTOS衍生产品,高信任度的代码完整性.
(3)设计遵循 小型,简单,易用.
(4)易于移植的代码结构,绝大部分使用C语言编写.
(5)同时支持 任务(tasks)和协程(co-routines).
(6)强大的 运行跟踪(execution trace) 功能.
(7)堆栈溢出检测 选项.
(8)软件不限制可创建任务数量.
(9)软件不限制可用优先级数量.
(10)优先级分配无限制 – 多个任务可指定为同一优先级.
(11)队列,二进制信号量,计数信号量,递归信号量和互斥量,用于任务之间、或任务和中断之间的通信和同步.
(12)Mutexes with priority inheritance.
(13)自由的开发工具 (Cortex-M3, ARM7, MSP430, H8/S, AMD, AVR, x86 和8051 移植包).
(14)免费的嵌入式软件源码.
(15)免版税.
(16)Cross development from a standard Windows host.
(17)针对所选目标板,提供配置好的演示应用,可以“开箱即用”和加速学习.
(18)Compile time configuration allows a ROM footprint print 低至 4.3KB 在 ARM7 (Thumb mode)上使用GCC (third party figures, requires specific GCC command line options).
2. 为什么选择freeRTOS
选择freeRTOS的理由:
(1)针对众多不同的体系结构和开发工具,提供一种解决方案.
(2)众所周知的可靠性,信心源自其姊妹项目SafeRTOS.
(3)仍在持续开发中.
(4)具有最低限度的ROM, RAM和处理器开销.
(5)它非常简单-内核仅由 3个C语言文件组成。大部分文件包含在.zip文件中,只需下载众多示范应用即可.
(6)商业应用,真正免费 (详情参阅许可协议).
(7)提供移植包,平台开发,或必要的应用开发服务.
(8)发展良好,拥有庞大且不断增长的用户群.
(9)每个移植包均包含一个设置好的范例。无须懂得如何设置项目 – 只需下载,编译!
(10)拥有一个优秀、活跃的免费支持论坛.
(11)商业支持有保证.
(12)提供丰富的文档.
(13)扩展性强,简洁,易于使用.
3.2 硬件平台选用及资源配置
1. 硬件平台: EVK1100开发板
2. 资源配置如下:
EVK1100开发板 :AT32UC3A
1)传感器(光照,温度,电位器)
2)4*20蓝色lcd
3)SPI, SD和MMC读卡器
外围器件:
1)传感器模块: 湿度传感器DHT11;人体红外传感器;MQ-9一氧化碳传感器 ;MQ-2烟雾传感器 ;无线遥控模块;
2)DTMF编解码模块:MT8870解码芯片;HT9200B编码芯片;5V继电器;光电耦合器以及一系列电阻电容等等;
3.3系统软件架构
系统软件架构包括两部分:
[*] 主单片机(AVR32)的软件架构;
[*] 本地控制模块从单片机(ATMEGLA 16L)的软件架构。
3.4 系统软件流程(除图片外需有文字介绍)
1.传感器模块流程图如下图所示:
1.1温湿度传感器,烟雾传感器,一氧化碳传感器采集数据流程图如下图所示:
本设计中传感器部分作为一个子系统,由ATMELA 16L来作为MCU,独立子系统的好处就在于采集数据快,灵敏度高,能够实时监控家庭隐患情况.如流程所示,温湿度传感器,烟雾传感器,一氧化碳传感器初始化后,就进行采集数据,MCU就读取各个数据进行处理,并在液晶上显示相关参数.然后,MCU判断温度(湿度,烟雾,一氧化碳)值是否异常,出现异常则报警,报警包括两部分,稍后介绍,没异常则回到采集数据,重复执行.
[*] 人体红外感应模块采集数据程序流程图如下图所示:
[*] 本设计中红外线的记监测采用外部中断的方式,此方式响应速度快.人体红外感应模块的信号输出脚接到MCU的外部中断脚.当红外模块检测到有人时,其信号输出脚由低电平变为有效高电平,触发中断.在中断中调用报警子程序完成报警.没有人就继续循环检测.报警子程序稍后介绍.
http://www.eefocus.com/sensor/327417/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1 1clip_image039.gifhttp://www.eefocus.com/sensor/327417/file:///C:UsersADMINI~1AppDataLocalTempmsohtmlclip1 1clip_image040.gif 1.3无线遥控模块子程序流程图
本地控制模块采用无线遥控来控制,其流程图如下图所示:
当无线发射模块有按键按下时,无线接收模块输出的信号触发中断,单片机读取无线接收模块输出引脚的信号,通知读取到的信号来判断拥护按下什么按键,进而执行按键对应的控制命令。
1.4报警子程序流程图
本设计报警包括家庭报警以及发送信号让主机自动电话报警,程序流程图如下图所示:
当出现警情时,ATMELA 16L从机首先向主机(EVK1100)发送信号,通知主机要进行自动电话报警,告知用户。当收到主机发回来的确认信号时,从机启动蜂鸣报警,如果危险仍未解除,就持续蜂鸣报警。直到危险解除,程序结束。
2.DTMF程序流程图
2.1远程控制程序流程图如下图所示:
当有电话打入时,振铃检测电路检测到有振铃信号,通过单片机来对振铃信号进行计数。系统判断振铃的次数,达到预设的100次仍没有摘机,单片机就控制模拟摘挂机电路进行自动摘机。同时单片机控制语音提示模块播放语音提示用户输入密码,密码正确就可以进行相应的电器控制,密码不正确就直接挂机。当操作完成后,单片机控制摘挂机电路实行电话挂机,通话结束。若在这100次振铃过程中,主人接通了电话,则控制器不起作用。
DTMF远程控制程序运行流程图
2.2 远程报警程序流程图如下图所示:
当有警情发生时,传感器给单片机外部中断信号,系统进入报警中断子程序,首先电话模拟摘机,系统与电话线接通。调用拨号子程序发送电话号码,同时监听电话线上信号,判断对方是否摘机。如果第一个电话没有拨通就发送第二个电话号码,循环拨号,直到拨通号码。然后语音播放出现何种险情,程序结束。
3.以太网webserver的远程家居控制和监控系统
3.1以太网webserver的远程家居控制和监控系统程序流程图
首先,客户可以通过手机或PC机与服务器建立连接,再通过侦听端口80,判断是否有客户请求到达,若有则将调用应用程序http进行相应处理,否则,继续侦听。Http是用于处理HTTP请求的应用程序,在应用软件上实现简单WEB服务器功能,其主要由三个模块构成:一是用户登陆模块;二是家电监控模块;三是家庭安全隐患实时监控模块。用户登陆模块需要解决用户的合法性检查,即接收用户输入的用户名和密码,进行校验,合法则进入web server总控制页面,非法则发出警告页面。家电监控模块针对各家电的硬件情况,收集信息家电的状态码,并通过网页形式显示;家庭安全隐患监控模块收集各个传感器模块的实时数据,而且若超过警戒值,会有相应的警戒网页形式提醒
3.2TCP/IP协议栈管理程序
由于TCP/IP协议分布在链路层、网络层、传输层和应用层上是分层实现的,每一层只负责处理通信过程中的一部分问题,其它不能实现其功能,我们进行 TCP/IP 协议栈程序设计时,根据协议分层的思路采用模块化的程序设计方法,为了在接收数据包后能根据数据包的类型 (ICMP TCP UDP 等)作出相应的处理,我们设计了协议栈管理程序,当接收到正确的以太网帧后,根据以太网帧数据类型将接收的数据送至相应的模块程序进一步处理。
3.4web服务和CGI处理框图
web 服务
监听端口80来自远程测控端的请求,建立TCP连接,查询与TCP连接相关联的本地套接字,根据远程测控端的 HTTP请求作相应的处理(读取 ram中的网页数据、调用 CGI 处理函数),并将生成的网页数据通过本地套接字发送至远程测控端,通讯完后关闭套接字,断开本次TCP连接。
CGI处理
本系统采用了 CGI(公用网关接口) 来实现动态Web技术,Web服务器通过调用 CGI 程序实现和浏览器的交互,也就是CGI 程序接受浏览器发送给Web服务器的信息,进行相应处理,并将响应结果回送给Web 服务器及浏览器。
3.5 系统预计实现结果
场所
设备
预计达到的初期效果
远程控制
信息中心103实验室
控制器、台灯、风扇、手机、PC机
[*] 通过手机拨打系统。按照系统提示输入控制台灯点亮和熄灭,控制风扇转动和关闭。
[*] 通过手机或PC机浏览器,进入控制和监控界面控制台灯点亮和熄灭,控制风扇转动和关闭。显示有关传感器数据
远程报警
信息中心103实验室
控制器、报警器、手机
报警器触发后蜂鸣,且智能远程控制系统向预设手机拨电话报警告知用户。
本地控制以及报警
信息中心103实验室
控制器、报警器、台灯、风扇、遥控器
通过遥控器控制台灯点亮和熄灭,控制风扇转动和关闭。报警器触发后蜂鸣报警,并进行语音播报。
[*] 当用户拨打该电话号码时,语音模块提示用户输入密码(密码是存储在EEPROM中)。只有当用户所输入的密码和存储的密码相同时,用户才能进行接下来的电器(风扇、电灯)控制,否则固定电话直接挂掉用户的电话。对于电器的控制,系统是通过语音来提示用户操作,例如:“打开风扇请按1,关闭风扇请按2”,用户就可以按照语音提示来按下按键1来打开风扇,按下按键2来关闭风扇。操作完后语音提示是否用户操作结束,用户根据语音来继续进行相应的操作。
[*] 当用户通过手机或PC机浏览器,进入登录界面,网页首先显示提醒用户输入密码,当用户输入密码正确时,进入控制和监控界面,接下来用户就可以控制家用电器和查看传感器的有关数据。
[*] 当有警情发生时,传感器给单片机外部中断信号,系统进入报警中断子程序,首先电话模拟摘机,系统与电话线接通。调用拨号子程序发送电话号码,同时监听电话线上信号,判断对方是否摘机。如果第一个电话没有拨通就发送第二个电话号码,循环拨号,直到拨通号码或者定时溢出,该子程序还调用语音子程序现场报警,对进入的人产生威吓作用。从而实现现场报警和远程报警两种功能。
相关阅读
智能家庭离我们还有多远?
页:
[1]