智能窗户控制系统软件说明.docx
《智能窗户控制系统软件说明.docx》由会员分享,可在线阅读,更多相关《智能窗户控制系统软件说明.docx(20页珍藏版)》请在冰豆网上搜索。
智能窗户控制系统软件说明
智能窗户控制系统软件V1.0设计说明
目录
前言1
第一章软件总体设计1
1.1.软件需求概括1
1.2.定义1
1.3.功能概述1
1.4.总体结构和模块接口设计2
第二章控制系统的总体设计3
2.1.功能设计3
第三章软件控制系统的设计与实现5
3.1.RF解码过程程序设计介绍5
3.2.RF对码过程设计6
3.3.通信程序设计8
3.4.IIC程序设计介绍9
3.5.接近开关程序设计12
3.6.震动开关检测程序设计13
3.7.墙面按键程序设计15
第四章智能窗户控制系统的设计17
第五章实测与结果说明18
第六章结论18
前言
目的
编写详细设计说明书是软件开发过程必不可少的部分,其目的是为了使开发人员在完成概要设计说明书的基础上完成概要设计规定的各项模块的具体实现的设计工作。
第一章软件总体设计
1.1.软件需求概括
本软件采用传统的软件开发生命周期的方法,采用自顶向下,逐步细化,模块化编程的软件设计方法。
本软件主要有以下几方面的功能
(1)RF遥控解码
(2)键盘扫描
(3)通信
(4)安全检测
(5)电机驱动
1.2.定义
本项目定义为智能遥控窗户系统软件。
它将实现人机互动的无缝对接,实现智能关窗,遥控开关窗户,防雨报警等功能。
1.3.功能概述
1.墙体面板按键控制窗户的开/关
2.RF遥控器控制窗户的开/关
3.具有限位,童锁等检测功能
4.实时检测大气中的温湿度,下雨关窗
5.具有防盗,防夹手等安全性能的检测
1.4.总体结构和模块接口设计
主要软件模块ARM控制模块,EEPROM模块,RF解码模块,双机通信模块,温湿度检测模块,限位检测模块,振动检测模块,电机驱动模块,蜂鸣器模块,键盘模块等组成,以下是本次设计各个模块的方块图;
图1.0系统模块方框图
第二章控制系统的总体设计
1.
2.
2.1.功能设计
各主要模块的程序设计主要包括基于芯唐MO516LDN单片机的主控设备的程序设计,基于433M无线通信模块的程序设计,基于HTU20D的温湿度检测模块程序设计,以及基于MS32距离检测模块的程序设计等。
软件的主要工作流程如下图;
图2.1按键板程序设计流程
图2.2驱动板程序设计流程
第三章软件控制系统的设计与实现
3.
3.1.RF解码过程程序设计介绍
1.遥控器功能介绍
用433M遥控器发出左窗户正转,右窗户正转,停止信号等,安装在墙体的控制电路接收到控制信号后,根据遥控命令来控制电机的运行状态,从而达到远距离对控制窗户的打开、闭合和停止。
无线遥控主要用到433M无线遥控器,下面介绍433M遥控器:
数据收发模块的工作频率为433M,采用声表谐振器SAW稳频,频率稳定度极高,当环境温度在-25~+85度之间变化时,频飘仅为3ppm/度。
特别适合多发一收无线遥控及数据传输系统。
声表谐振器的频率稳定度仅次于晶体,而一般的LC振荡器频率稳定度及一致性较差,即使采用高品质微调电容,温差变化及振动也很难保证已调好的频点不会发生偏移。
数据模块具有较宽的工作电压范围3~12V,当电压变化时发射频率基本不变,和发射模块配套的接收模块无需任何调整就能稳定地接收。
当发射电压为3V时,空旷地传输距离约20~50米,发射功率较小,当电压5V时约100~200米,当电压9V时约300~500米,当发射电压为12V时,为最佳工作电压,具有较好的发射效果,发射电流约60毫安,空旷地传输距离700~800米,发射功率约500毫瓦。
当电压大于l2V时功耗增大,有效发射功率不再明显提高。
这套模块的特点是发射功率比较大,传输距离比较远,比较适合恶劣条件下进行通讯。
天线最好选用25厘米长的导线,远距离传输时最好能够竖立起来,因为无线电信号传输时收很多因素的影响,所以一般实用距离只有标称距离的一半甚至更少,这点需要开发时注意。
数据模块采用ASK方式调制,以降低功耗,当数据信号停止时发射电流降为零,数据信号与发射模块输入端可以用电阻或者直接连接而不能用电容耦合,否则发射模块将不能正常工作。
数据电平应接近数据模块的实际工作电压,以获得较高的调制效果。
遥控器在按键按下后,周期性地发出同一种32位二进制码,周期约为108ms。
一组码本身的持续时间随它包含的二进制"0"和"1"的个数不同而不同,大约在45~64ms之间。
当一个键按下超过36ms,振荡器使芯片激活,将发射一组约64ms的编码脉冲,这64ms发射代码由一个起始码(10ms),一个结束码(6ms),三位地址码,这三位分别是,低8位地址码(8ms~12ms),中8位地址码(8ms~12ms),高8位地址码(8ms~12ms)和8位数据码(8ms~12ms)。
2.代码宽度算法:
24位地址码的最短宽度:
1.0×24=24ms16位地址码的最长宽度:
1.5ms×24=33.6ms。
解码的关键是如何识别"0和"1",代码格式(以接收代码为准,接收代码与发射代码反向)。
从位的定义我们可以发现"0"、"1"均以0.5ms的低电平开始,不同的是高电平的宽度不同,"0"为1ms,"1"为1.5ms,所以必须根据高电平的宽度区别"0"和"1"。
如果从0.5ms低电平过后,开始延时,0.5ms以后,若读到的电平为低,说明该位为"0",反之则为"1",为了可靠起见,延时必须比0.56ms长些,但又不能超过1.5ms,否则如果该位为"0",读到的已是下一位的高电平,因此取(1.5ms+0.5ms)/2=1ms最为可靠,一般取1ms左右均可;根据码的格式,应该等待10ms的起始码和6ms的结果码完成后才能读码。
3.RF解码
根据以上分析可得出解码程序流程如下:
有信号产生中断→EA清零→延时小于10ms(低电平)→等待高电平的到来→延时小于4.5ms(高电平)→等待下一次高电平的到来→延时1ms左右→读区P3.2脚电平值→再等待下一次高电平的到来→延时1左右→读取P3.2脚电平值,依次取得32位代码,前24位为识别码,后8位既为8位数据码,RF的解码流程框图见3.1。
图3.1RF的解码流程框图
3.2.RF对码过程设计
每个家庭的窗户都有自己的遥控器,每个遥控器,可以独立的控制5扇窗户,那么如何让遥控器和窗户一一对应呢。
在遥控器上,我们设置有5个对码按键,分别设置为1号,2号,3号,4号,5号。
例如按下1号,表示后续按键的控制按键是对1号窗户进行控制,按下2号,表示后续的遥控控制是对2号按键进行控制。
那么如何让遥控器识别到窗户的号码呢。
这就要再客户使用之前先进行对码,对码是整个程序的设计要点和难点之一,对码过程大体如下。
图3.2对码流程
由于对码的动作不是经常要用到,因此将对码的时间范围设定在开机后的前三分钟,在开后的前三分钟内按对码键,对码有效,在开机三分钟后,长按对码键,对码功能无效。
新窗户使用之前都需要对码,若不对码,遥控器对窗户的控制是无效的。
对码按键有两个功能,第一个是对码,长按对码按键表示对码,第二个是切换窗户,短按对码按键,表示切换到对应的窗户的控制。
对码时,长按对码按键三秒,遥控器对应的需要对码的窗户所指示的led灯会闪烁,表示已经发出了对码信号。
切换遥控窗户时端按,当按键按下的时候迅速松手,对应的窗户所代表的指示led灯会常亮,表示当前的遥控已经切换到对应的窗户控制。
3.3.通信程序设计
1.通信流程
通信的程序设计包括初始化设计、串口中断服务设计和主处理程序设计。
本项目虽然只有一个下位机,但除了本机地址的设置不同外,其他硬件电路都是相同的,所以各下位机的软件设计也是相同的,因此本通信程序可以适用于一主多从的设备通信。
按照通信协议的要求可以设计出如图4.1的下位机程序流程
图3.3通信流程图
2.串口中断服务程序
串口接收和发送都采用中断方式,设计单片机通信程序时,必须充分发挥单片机的效率,由于单片机多应用于实时性较强的控制场合,因此,应将及时响应和控制对象的动作放在优先考虑的位置,以尽量减少通信等辅助性操作所占用的CPU时间[11]。
基于上述考虑,在设计单片机通信程序时,将中断程序分为接收中断服务程序和发送中断服务程序2部分。
下面为串口通信程序流程图:
图3.4串口通信模块程序流程图
i.接收中断服务程序
当有数据收到时,设置一个标志通知主程序有数据到来,当地址位验证无误后,则开始接收数据。
对于接收中断,程序处于等待状态,当外面有数据到来时则触发接收,进入接收中断服务程序,当地址验证正确开始后面的数据,中断从接收buf读取数据,将读到的数据放到全局缓冲区里,在接收数据之后设置一个标志来通知主程序,完成后等待下一中断的到来。
接收中断服务程序包含了对地址位是否匹配的验证。
ii.发送中断服务程序
当主程序有数据要发送时,设置一个中断标志进入中断并发送数据。
下面为程序代码:
对于发送中断,程序一般处于禁止等待状态。
只有当单片机的发送缓冲区历由数据需要发送,并将发送中断置为允许方式后,发送中断才开始工作。
发送时从缓冲区里发送数据,遵守通讯协议:
首先发送地址位,然后发送需要传输的数据,最后发送校验以及结束标志。
在发送中断服务程序里从全局缓冲区里取出数据给发送寄存器进行发送,发送完后发送中断服务程序等待下一中断的到来。
以上两程序可以看出采用中断有很好的结构,只要在中断服务程序里理接收和发送数据,然后与主程序进行数据交换,易实现多任务操作,很好利用单片机资源。
3.4.IIC程序设计介绍
本项目的iic总线有两处地方有用到,1是存储设备AT24C02,另一个是湿度传感器;我以大家熟悉的24c02举例说明iic总线设计的程序概要。
I2C总线由一根串行数据线和一根串行时钟线组成,是双向数据传输线,核心是主控CPU,被控器的SDA,SCL要相应地接到I2C总线的SDA,SCL上,可以方便地构成多机系统和外围器件扩展系统。
I2C总线采用了器件地址的硬件设置方法,从而使硬件系统具有简单而灵活的扩展方法。
按照I2C总线的规定,其SDA、SCL各要通过上拉电阻接到电源VCC上。
应用框图如下图
图3.5应用框图如下图
每个接到I2C总线上的器件都有唯一的地址。
主机与其它器件间的数据传送可以是由主机发送数据到其它器件,这时主机即为发送器。
由总线上接收数据的器件则为接收器。
在多主机系统中,可能同时有几个主机企图启动总线传送数据。
为了避免混乱,I2C总线要通过总线仲裁,以决定由哪一台主机控制总线。
1.I2C总线在传送数据过程中信号类型
开始信号:
SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:
SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
应答信号
图3.6iic总线的启动停止信号
起始和终止信号都是由主机发出的,在起始信号产生后,总线就处于被占用的状态;在终止信号产生后,总线就处于空闲状态。
接收器件收到一个完整的数据字节后,有可能需要完成一些其它工作,如处理内部中断服务等,可能无法立刻接收下一个字节,这时接收器件可以将SCL线拉成低电平,从而使主机处于等待状态。
直到接收器件准备好接收下一个字节时,再释放SCL线使之为高电平,从而使数据传送可以继续进行。
2.I2C总线的数据传输
每一个字节必须保证是8位长度,每次传输可发送的字节数量不受限制。
数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随