邝爱华
(郑州市电子信息工程学校 现代制造部, 郑州 450007)
随着微电子技术,计算机技术,以及网络技术的快速发展,弱电控制技术发展越来越快,弱电控制技术具体实现在日常生活中的家居服务上使得智能家居获得极大的发展。特别是伴随着人们生活水平的提高,对家居的要求也越来越高,简单更具人性化的操作,方便的统一平台的智能家居系统越来越受到人们的欢迎。
智能家居作为以住宅为平台的高效的住宅设施与家庭日程事务管理系统自提出及相继实现以来受到了人们热切的欢迎。自1984年美国联合科技公司应用首栋智能型建筑揭开智能家居派的序幕之后,全世界争相建造智能家居。在国内智能家居是一个新生产业,处于一个导入期和成长期的临界点。随着智能家居市场的推广以及普及,智能家居市场的潜力与前景必然是十分巨大的。智能家居的最初发展主要是由灯光遥控控制,电器远程控制和电动窗帘的控制为主。随着技术的进步,现在的智能控制功能越来越多,控制对象不断扩展,甚至延伸到所有传统的弱电行业,现在的家居系统对于安全方面的兼顾也越来越全面一个系统可能嵌入像煤气、火灾,门禁等方面的检测报警。随着网络技术的发展以及家庭网络的完善,手持设备越来越方便,家居的操作控制系统与手持设备的结合是必然趋势,一个主平台可以由多个家庭成员的子平台操作,这些极大地方便了人们的使用。
该智能家居系统主要实现智能电动窗帘,室温实时监测,家用电器开关,万年历,闹钟音乐播放,无线远程控制,继电器控制等功能,整个系统在一块MCU的协调与控制下运行,整体的设计功能框图如图1所示。
图1中基本确定了整体设计需要的各个功能模块,接下来的工作就是相关模块的具体选型与设计,考虑到对于功能的要求,硬件的选型非常重要。
在系统实现的时候,硬件选择也是非常重要的,通过上边的系统结构框图,接着就是选择功能模块的芯片来搭建电路实现对应的功能。以下着重分析相关模块的芯片选型问题。
图1 整体设计框图
2.2.1 MCU的选择
本设计对处理器的性能和速度的要求较高,且触摸屏的操作提示音的提取等要用到的内存也较大,还要求处理器有丰富的定时器,较多的IO口,复杂的时钟系统等。
考虑到整个系统的功能的不断扩展,要求主芯片具有更为完善的各种功能,而且对于控制类的芯片对于时效的要求非常严格,为了储存参数信息等也需要有较快速度的数据读写口。此处确定采用SPI接口,为了减少成本及使用方便,芯片最好自带FLASH以及RAM,考虑整体的性能以及高分辨率显示屏的驱动,决定采用32位处理器。
可供选择的32位处理器有MSP,STM32,ATMEL等。通过以上几点的需求的分析,本设计系统选择STM32作为主控芯片,采用的是STM32系列的STM32F4ZGT6芯片,该芯片是ST(意法半导体)公司开发的基于Cortex-M4微内核的高性能微控制器,该系列CPU工作允许频率可达到168 MHz,带有1M的程序FLASH,192 Kb的片内RAM,12个16位的定时器,2个32位定时器,3个12位A/D转换,2个D/A转换,含有I2S,UART等一些列通讯接口,工作电压在1.8-3.6 V之间。这些外设及性能完全满足本设计要求及日后功能扩展需要所以最终选定STM32F4ZGT6。
2.2.2 步进电机控制芯片选择
步进电机的动作主要是靠驱动器来驱动的,所以步进电机也叫作脉冲电机,步进电机常用的控制芯片有THB6128,A3983,A3977,三洋的PMM8713,三菱的M54640等。
根据本系统的要求窗帘必须要求步进电机具有一定的功率要求,本系统采用的是12 V供电所以此处采用的A3983芯片。
2.2.3 温度传感器选择
该系统具有室温检测显示功能,可以实时为室温的调节提供数据源,且系统具有温度过高火情报警设置。经过比较分析,美信公司的单总线数字温度传感器DS18B20比较合适,该数字温度传感器将检测的温度信息转化为相应的数字量,独特的单总线接口,只需要一个IO口线就可以对该器件进行相应的读写了,写入命令和读取温度操作简单,并且无需外部元件可用数据总线供电和备用电源,电压范围为3.0 V至5.5 V,外围电路简单。该芯片的测量温度范围为-55 ℃至+125 ℃,且自带温度校准,无需外部进行处理,操作简单。在-10 ℃至+85 ℃范围内精度为±0.5 ℃可以满足本系统的要求,且最高温度达到+125 ℃,也完全满足报警所需要的温度要求。
2.2.4 功率放大芯片选择
本系统主要用到放大芯片来放大从IO口输出的音频信号,且用来驱动喇叭。
功率的放大根据喇叭的功率来选择,该系统采用的是3 W的喇叭,功放的芯片有TDA2822,HT6872,PAM8403等,该系统采用的是PAM8403,该芯片电路是D类立体声音频功率放大器,该放大器采用D类结构,通过PAM公司独有的低EMI(电磁辐射)调制方式可以省去低通滤波器所需电路从而达到经济实用的目的。
经过前面的分析介绍,整个硬件系统由MCU(STM32F407)作为控制中心,各个模块电路设计在一下几节进行详细的介绍,整个系统框图如图2所示。
图2 硬件系统框图
通过方框图确定了模块与MCU之间连接及关系,从框图2可以看出,整个系统是在MCU核心STM32F407的控制下,通过协调控制各个模块的工作来使各个模块正常工作并达到整个系统预定的功能。
2.4.1 MCU最小系统电路设计
MCU最小系统需要晶振电路复位电路等,为了断电时间不跑,还需要电池供电,需要一个时间时钟使用的32.768 K的晶振。另外对芯片的3.3 V供电也需要进行相应的滤波,这样才能提供更加稳定的电平,最小系统是整个系统的核心,是系统运行的基础。
2.4.2 MCU和DS18B20模块电路设计
由于温度传感器DS18B20是单总线结构所以其硬件电路比较简单,通过一个简单的RC滤波电路给其供电,通过一个MCU的普通IO口PC4来实现MCU和DS18B20的连接。整个模块电路如图3所示。
图3 DS18B20模块电路
2.4.3 步进电机驱动模块电路设计
步进电机控制采用的芯片是A3983步进电机控制,该芯片与MCU通信的数据端口由步距控制MS1和MS2,复位RESET,方向控制DIR,位置检测,脉冲提供STEP,整体的电路如图4所示。
如图4电路连接四个OUT口分别控制了电机的正转反转,不同的组合有不同的方向步距,该芯片驱动12 V步进电机所以VBB直接连接电源系统的12 V,其它几个控制引脚以及原点检测与MCU的引脚对应如下表1所示。
表1 A3983各信号线与STM32连接关系
上表中MS1和MS2控制步距,STEP提供脉冲,ENABLE使能芯片低电平有效,DIR控制电机方向,原点检测在系统中的作用是检测系统初始状态下窗帘的位置,以初始化系统参数。
2.4.4 SPI-FLASH存储电路设计
W25Q128采用的是SPI接口进行读取和存储数据的,所以在系统中存储器的接口接在MCU的SPI1接口,这个SPI接口为MCU自带的硬件接口。整个模块电路如图5所示。
图5 W25Q128电路
2.4.5 触摸屏控制电路和TFTLCD驱动电路设计
TFTLCD驱动电路如图6所示。
该部分电路设计简单,STM32的IO口可以直接与触摸屏相连接所有引脚全部直接与MCU连接,供电的5 V与
图6 触摸屏控制电路
3.3 V电源过一个104的电容进行滤波。
2.4.6 WIFI接口电路
WIFI模块与MCU之间的通信采用的是串口通信,MCUSTM32F4集成的有多个硬件串口接口,在此使用串口4(UART4)作为与WIFI模块通信的串口,WIFI模块的14个引脚中第3、4引脚是串口通信接口,由于使用的为串口通信,所以除电源外的引脚可以空置不接,直接将3,4引脚接MCU的串口4接口PC10和PC11,电路如图7所示。
图7 WIFI接口电路
2.4.8 功放模块电路
功放模块为外置模块由MCU的PG15提供模块的单声道信号源,在此不再赘述,功放模块的电路,如图8所示。
图8 功放模块电路
功放在接电时必须保证是有负载,否则的话可能会烧芯片。
从整个系统的设计功能来说,根据其是否与外设直接相关,可以分为与外围硬件电路相关的驱动子程序和与外围无关的MCU内嵌外设的应用软件,子系统软件又可以细分为许多功能模块,系统的软件框图如图9所示。
图9 系统软件设计框图
对于底层硬件的驱动软件包括如下程序模块:LCD驱动模块、触摸屏驱动模块,Flash_SPI驱动模块、步进电机驱动模块,WIFI驱动模块,温度传感器驱动模块,继电器驱动、音乐产生等模块。
温度传感器采用单总线数字温度传感器DS18B20,命令读取DS18B20的温度读取操作过程如图10所示。
图10 DS18B20操作流程
每次开启转换之前都要对传感器进行复位检查操作,读取寄存器的时候获得的数据是二进制数据先发整个数据的高八位后发低八位,需要对数据进行一定的处理。
通过以上操作获取DS18B20的温度值,将之进行相应的转换后进行处理显示,在进行数据转换的时候如果采集到的温度是零下,需要对数据进行取补码操作。
万年历是使用STM32F407内部的时钟系统RTC时钟来完成的,参考STM32的芯片手册,得到RTC实时时钟的初始化过程如图11所示。
图11 RTC配置流程
RTC时钟在完成配置后,就会每隔固定的时间,对秒寄存器进行加1操作。此操作为MCU自动操作,全部硬件执行。通过对RTC时钟的时间数据进行显示,实现万年历功能,RTC时钟的固定时间由分频系数确定,理论上根据外部低频晶振的频率,只要在分频系数内写入合适的数据就可以得到精确的1秒了,但是由于晶振的误差,所以需要进行相应调整以达到比较准确的时钟。
硬件调试的时候主要有下面几点问题,而且也是不好处理的点。
问题1,SPI-Flash写入不成功或者乱码问题:在使用前系统的启动过程中一定要初始化而且相邻的地线接在一起时不要直接在引脚上进行连线一定要从引脚引出一段后可以走一根总线,如果直接在引脚上进行连接PCB制作好之后将会增加焊接难度而且容易造成数据不稳定。
问题2,触摸屏中断问题:这个问题是在不断的调试中发现且出现的不固定,调试的时候发现触摸屏总是出现无缘无故的中断,致使MCU一直在处理触摸屏而无暇处理其它模块,起初认为是程序中断优先级配置问题,在配置不同的优先级无果且讨教后,开始怀疑硬件问题。通过调试中断程序并用示波器观察中断信号线上的信号,发现一旦发生一次触摸屏中断,就会在不停的产生时间不定的中断。通过查看ADS7846的芯片手册以及参阅相关文章后,发现中断线上的速度太快可能是参考电平不稳定,于是结合系统的需要,在中端输入线上加入滤波电路。
问题3,3.3 V芯片滤波问题:之前3.3 V滤波采用了单电容及采用一个104的电容,后来发现这样ASM1117容易烧毁,且系统运行不稳定,后来增加一个大电容和小电容一起工作解决这个问题。
问题1,MCU直接产生音频信号问题和音频打断问题:由于硬件上的设计缺陷,功放模块并未接在芯片内部的D/A转换上和硬件的PWM引脚上,一度以为这块功能要废掉,后来经过请教查资料和钻研,采用普通的IO口模拟PWM产生高中低三组各七个的不同频率信号根据音乐乐谱进行编写终于实现了轻音乐的播放,但是在闹钟提示的过程中却又产生了不能被打断的问题,配置不同的中断优先级后依然不行,经过多天的排查,发现为了实现WIFI串口接收数据的完整性而启用的系统滴答定时器的优先级没有定时器优先级高二产生无法被打断的情况,经过多次试验终于实现了这一块的功能。
问题2,WIFI搜索信号死机问题:这个问题在调试中一度经常出现,而且原因不明,主要有两种情况就是WIFI热点太多的时候死机或者没有WIFI信号死机,经过反复的调试和论证,最终发现,开机后WIFI模块会返回一系列版本信息,之后返回热点信息串口接收定义数组不够大。对于搜不到信号死机问题,最终经过查资料发现是分隔字符串函数strtok使用要注意最后的结尾符一定要有,如果为空字符串就不要再使用本函数进行字符串分隔。
问题3,在驱动串口时首次字符串发送不完整:这个问题在开机第一次使用串口时出现,要发送的串首字符无故丢失,刚开始一直在查找程序问题,发现写的并没有问题,然后查找硬件,没问题只有上电第一次出现数据丢失,后来发现为MCU的小缺陷,经过修改开机后首先发一个标志位,从而解决这个问题。
本次设计的智能家居系统初步达到了预期的效果,起到了对智能家居进行试探性研究的目的,实现了比如智能窗帘,远程电器开关,万年历闹钟,室温检测等功能。未来智能家居一定会随着技术的不断进步与发展,进入千家万户,智能的家居产品一定会是家居服务市场的主流。