1, 作品名称:基于KW41和配套开发板设计的智能家居安防门禁系统。
2, 作品实现功能说明:基本上实现了预期的功能,以KW41Z开发板为核心,通过GSM模块,无线通信模块,烟雾报警模块,以及配套开发的android APP软件等,实现了,主机可以通过BLE与手机APP通信并实现如:开锁/闭锁(控制步进电机的正转和反转),打开报警器等操作,并可以通过开发板上的三轴加速度计和磁力计实现震动和方位角改变的检测(即防盗报警信号检测),触发报警后,主机可以通过GSM模块发送报警短信到指定的手机号码上,从机的烟雾报警模块可以通过烟雾报警器检测火灾信号并通过简单的MCU数据处理系统处理,然后通过zigbee无线通信模块通知主机处理报警信号。
3, 软硬件设计思路:首先,硬件部分。基本是基于KW41Z开发板上可扩展的I/O口进行相应的外围电路设计,主要是包括一个集成了GSM模块,zigbee无线通信模块和用于处理zigbee模块通信信息的stm8单片机小系统,以及步进电机驱动的输出口的底板,它和KW41Z开发板组成了一个完整的主机设备;还有一个用于烟雾火灾探测的从机板子,是由一个MQ-2烟雾气敏传感器,一个zigbee通信模块,以及一个用于处理数据的stm8单片机小系统组成。具体的方框图如下:
项目硬件方框图
详细说明会放在在下面帖子的最后版面里,有兴趣的可以看一下咯。
其次,软件部分。软件部分分为MCU开发和手机APP应用端开发两部分,由于APP开发不是这个项目的重点,这里就不作详细介绍,只简单介绍它的使用说明。KW41Z单片机开发主要是通过官方提供的SDK开发包和MCUXpressoIDE_10.0.0_344开发软件来实现,具体操作是参考SDK包里丰富的例程,然后通过导用其中一个例程并进行功能需求的修改和添加来完成自己的开发,其中主要使用到的是frdmkw41z_wireless_examples_bluetooth_wireless_uart_freertos和frdmkw41z_driver_examples_i2c_read_accel_value_transfer这两个例程,它们分别实现了如何进行BLE-UART的双向通信和通过I2C对板上的三轴加速度计和磁力计进行设置和数据读取的功能参考。当然还有其它的如:GPIO点灯,串口中断通信等例程也为本作的一些I/O口操作,UART通信等功能实现提供了帮助。而本作要实现的软件功能主要是:(1)通过BLE通信实现可以通过APP端控制步进电机的转动,设置报警短信的手机号码,防盗功能和防火功能的开和关,以及以上各个功能模块的状态获取等;(2)通过I2C通信获取三轴加速度计和磁力计的数据,并进行简单的数据处理,从而实现产品本身的震动和方位角发送变化的检测(即例如门窗上的防盗检测);(3)通过I/O口的设置,实现步进电机的正转和反转,实现模拟开锁和闭锁;(4)通过与zigbee通信处理子系统的信息交互实现从机烟雾气报警器的报警信号处理。详细的介绍可以参考本人以前的设计分享帖子,以及本帖后面也会作个总结介绍的。
4, 相关分享贴集锦: 第一篇:KW41Z开发套件开箱,以及开发环境建立和初调试;
第二篇:官方SDK蓝牙例程的烧录和测试;
第三篇:实现UART控制LED的工程构建和调试;
第四篇:板上FXOS8700CQ-6轴传感器的初调试;
第五篇:BLE-UART之间双向传输的实现。
5, 原理图和PCB板图: (1)主机底板原理图和PCB板,如下:
主机底板原理图
主机底板PCB板图
(2)防火报警器从机模块原理图和PCB板,如下:
防火报警器从机板子原理图
防火报警器从机板子PCB板图
6, 作品的源代码: 这里只提供KW411Z开发板上的驱动程序,配套的APP提供安装包下载,还有就是主机和从机里两个STM8小系统的驱动程序比较简单,就实现一两个I/O的输入和输出,以及跟无线模块的串口通信而尔,这里也不作说明了,我相信大家需要的随便都可以弄个出来咯。KW41Z开发板驱动源码:基于MCUXpressoIDE_10.0.0_344开发的工程文件
;配套开发的APP(基于android的,并支持BLE 4.0以上的才能使用):
7, 大赛作品演示视频:
作品演示视频链接地址:
基于KW41和配套开发板设计的智能家居安防门禁系统的作品演示视频。
8, 作品总结和展望:
本次制作基本上还是达到了预期的期望的,可以说基本上是已经很接近市面上此类产品的基本功能需求的了。同样,通过这次设计,还深入了解到NXP的一款功能强大的KW41Z的无线处理芯片,也为以后相关的物联网产品提供了参考和选项,有一点觉得遗憾的就是没有把恩智浦这款KW41Z开发套件最大的优势,就是BLE和thread组网通信共存模式发挥出来,甚至连Thread通信这块都没有碰触,原来是想着用套件提供的哪KW41Z微型模块和开发板上的KW41Z系统进行一个Thread组网来取代本作中主机和防火报警从机之间的zigbee无线通信这块的,但最后由于时间的紧迫和开发难度比较大,在下实在是抽不出时间和精力来搞弄,只能放弃了。展望一下未来,我觉得BLE和Thread组网共存这样的优势会得到发挥的,而且,NXP提供的跟IPv6这种更高级的网络通信挂钩的通信方式,相信在未来会发挥巨大的作用,你就听它的口号就觉得吊了,让地球上的每颗沙子都有一个IP地址,厉害不?还有就是基于eclipse平台做得嵌入式单片机开发软件MCUXpressoIDE_10.0.0_344也为以后MCU开发提供多一条路径咯。
以下是本帖补充的内容,主要是详细介绍本次作品的具体信息:
首先,硬件部分:
(1)完成的主机PCB底板如下图:
如上图,其中红圈1处为带发射天线的A6 mini GSM模块,它是通过UART与开发板上的KW41Z进行通信,从而实现报警短信的发送;红圈2和3处分别为zigbee点对点无线通信的一端和处理无线通信数据的stm8单片机小系统,它们的作用分别是无线模块接收防火报警器从机发过来的报警信息并通过串口传给stm8单片机小系统进行处理,以及通过stm8单片机的一个I/O口电平通知主机开发板KW41Z核心系统是否触发火情信号;红圈4和5处为PCB底板与开发板的对接口;红圈6处为步进电机的驱动口,外接一个步进电机的驱动模块,由主板直接供电以及KW41Z芯片的I/O口直接驱动;红圈7处为两个5V电源输出或者输入口,可以直接给产品供电(注意:由于GSM模块工作时瞬时电流非常大,所以最好能用5V/2A的充电器给产品供电,普通的电脑USB口一般提供不了这么大的电流从而导致GSM模块不能正常工作),也可以把开发板上的电输出,这里直接把它作为从机火灾报警器的电源供应端。主机的主要组成部分如下图:
如上图,分别是:1,开发板;2,主机底板;3,步进电机和其驱动模块。组合后如下图:
(2)完成的烟雾气报警从机PCB板模块如下:
其中,红圈1处为zigbee通信模块;红圈2处为由stm8小系统组成的底板;红圈3处为MQ-2烟雾气敏传感器。三个组件组成一个可以实现烟雾气检测并通过zigbee无线通信通知主机报警信号的从机模块。红圈4处为模块5V供电接口。其它详细的细节,各位看官有兴趣可以自行分析原理图咯。这里我就不作描述了。
然后,软件部分:
(1)主要提一下几个重要的代码区吧。
如上2图的红圈处,添加所需的I/O口初始化函数,I2C初始化函数,以及定时器初始化函数等。同时在board.c等c文件里添加所需的各种功能函数实体,具体有兴趣的小伙伴自行下来看看咯。
又如下面两图:
主要的功能处理代码是放在tasks.c的 static portTASK_FUNCTION( prvIdleTask, pvParameters ) 这个空闲的任务线程里处理。
而BLE和UART的通信主要放在wireless_uart.c 这个c文件里处理。以上便是几个主要的代码区介绍。
(2)APP软件,这里只简单介绍一下使用方法。
安装APP,必须是支持BLE 4.0的安卓手机,通过点击安装包完成安装,点击软件,便可以进入APP的第一个界面,如图:
如果没有打开蓝牙,软件会跳出打开蓝牙的请求,选允许就好了。如上图,如果附近有已经烧好固件的板子并已上电,一点开APP会搜索一小段时间,便能搜出设备,并显示在空白的列表中。如果没搜出来,还可以通过APP右上角的选项菜单进行手动搜索,如图:
除了搜索功能外,还提供了清空列表和退出两个功能。直接点击列表上的设备,就能进行连接,连接后会跳转到控制页面,如下图:
如上图,如果连接成功,页面的最顶端会显示“连接设备成功”的字符,等一小段时间,界面就会更新整个页面的状态,其中包括:1为控制开锁和闭锁的按钮,2为输入设置报警号码的号码输入区,3和4为设置号码的按钮和当前的设置情况,如上图,还没有设置的就显示“未设置号码”,而设置了的会显示“已设置号码”,号码输入区只能是11位的手机号码,如果格式不正确,点击设置会弹出错误提示框,如图:
接着的5,6,7和8就如它们字面上的意思一样,分别5,7为控制防盗和防火两个报警器的开和关,而6和8则是显示当前对应的报警器的开关状态,而且,控制按钮只能在已经设置了报警号码的前提下才能操作,否则会弹出提示你设置号码的提示框。点击右上角的返回或者点击手机上的返回键,都能断开连接并返回到上一级的界面(即刚开始的搜素设备界面)。具体的演示效果可以去看一下我上传的演示视频,这里就不作描述了。
好了,本帖就到这里吧!最后,感谢EEWORLD和NXP,还有相关工作人员提供的这次大赛,也祝各位参赛的小伙伴们顺顺利利咯。拜拜!
本帖最后由 zhaogong 于 2017-7-31 18:59 编辑