cruelfox 发表于 2021-7-18 23:55

【家门电子值守】作品提交

<p style="text-align: center;">&nbsp;</p>

<p style="text-align: center;"><span style="font-size:24px;"><strong>家门电子值守</strong></span></p>

<p style="text-align:justify">&nbsp;</p>

<p style="text-align: right;"><span style="font-size:20px;">作者:cruelfox</span></p>

<p style="text-align:justify">&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">一、作品简介</span></span><br />
<span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  作品名称:家门电子值守。设想是使用RSL10搭配低功耗的加速度传感器,贴于门板的背面,通过采集加速度信息,检测敲门引起的门板振动和开门引起的门板加速运动,从而对敲门和开门的事件进行记录。RSL10的BLE功能实时将状态信息发送给BLE终端机,可以进行日志查看,还可以实现对其它电子设备的操控,例如拓展出无线门铃、入侵报警等功能。</span></span></span></span></p>

<p></p>

<p></p>

<p>&nbsp;</p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">二、系统框图</span></span></span></span><br />
<span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  作品包括贴于门板后面的无线传感单元(使用RSL10-COIN-GEVB开发板)和可移动使用的BLE终端机(使用RSL10-QFN-EVB开发板)两部分。无线传感单元是从机,使用3V纽扣电池供电;BLE终端机是主机,可用小型磷酸铁锂供电,也可以通过USB供电。</span></span></span></span></p>

<p></p>

<p style="text-indent:24.0pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">无线传感单元通过RSL10-COIN-GEVB预留I2C接口连接一只KX023三轴加速度传感器。</span></span></span></span></p>

<p style="text-indent:24.0pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">BLE</span></span></span></span><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">终端机通过RSL10-QFN-EVB 的Arduino接口连接扩展PCB,其上有一个I2C接口的96x64单色图形液晶模块用于信息显示;还有6个按钮直接连在GPIO上用于操控。</span></span></span></span></p>

<p style="text-indent:24.0pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">无线传感单元与BLE终端机通过BLE连接进行信息交互。</span></span></span></span></p>

<p>&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">三、各部分功能说明</span></span></span></span></p>

<p style="text-indent:24.0pt; text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">无线传感单元启动后以50Hz采样率采集三轴加速度信号,并通过KX023内置的信号处理功能产生&rdquo;DoubleTap&rdquo;状态标志。RSL10软件通过Z轴加速度信号处理,识别开门动作,并直接读取KX023的&rdquo;DoubleTap&rdquo;检测结果作为敲门判断。加速度信号采集是24小时不间断工作的,BLE功能也是持续开启。当没有与BLE终端机连接时,它处于连续广播状态(1500ms间隔)。当BLE终端机扫描到设备并发起连接后,两者一直处于连接状态(400ms间歇),除非通信故障或一方掉电。</span></span></span></span></p>

<p>&nbsp; &nbsp;&nbsp;<span style="font-family: 微软雅黑, sans-serif; font-size: 12pt;">BLE终端机启动后将自动扫描无线传感单元,并主动发起连接。连接成功后将获得目标设备的内部时间日期信息,并提供修改日期时间的操作界面。然后,BLE终端机显示当前最新的事件(开门和敲门)信息记录,并可以浏览目标设备内存储的最多达1024条事件记录。</span></p>

<p></p>

<p>&nbsp;</p>

<p style="text-indent:24.0pt; text-align:justify"><span style="font-family: 微软雅黑, sans-serif; font-size: 12pt;">BLE</span><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">终端机的工作模式状态转移图如下:</span></span></span></span></p>

<p><span style="font-family: 微软雅黑, sans-serif; font-size: 12pt;">  无线传感单元使用了一个自定义的BLE服务,包含两个Characteristic, 其中一个用于向终端传送日志记录(每条4字节,一次传输4条);另一个用于向终端发送状态信息(8字节,使用Notify方式),和接收终端发来的命令。</span></p>

<p><span style="font-family: 微软雅黑, sans-serif; font-size: 12pt;">  无线传感单元的省电模式尤其重要,因为它要一直处于数据采集和处理状态,且无线通信是一直开启的,节省任何部分的耗电都关系到电池工作时间。因为KX023传感器有内部少量的缓存,在50Hz 数据速率下最多可以存储0.8秒的16-bit三轴加速度数据,只要RSL10的唤醒周期小于这个时间即可保证不丢失数据。本设计中,无线传感单元的RSL10主要工作在Sleep模式,也就是将它在不需要工作的时候的电流降到最低。通过RTC定时唤醒进行传感器数据访问和BLE操作,定时器的设置由BLE SDK函数自动完成,软件不直接干预,仅仅是读取了RTC的计数器值用于软件计时(因为没有硬件日历时钟功能)。</span></p>

<p><span style="font-family: 微软雅黑, sans-serif; font-size: 12pt;">  通过功耗优化处理,无线传感单元的持续工作平均电流大约是30微安(包括KX023的工作电流11微安左右,包括COIN板上的温度传感器吃掉2微安)。BLE广播模式下平均电流比连接状态下稍小一些,是无线部分工作时间减少所致。<br />
  在对BLE无线终端进行功耗优化时遇到障碍,因为RSL10若即使用到Standby模式,连接成功后却无法正常通信。最后只让其在普通模式下工作,RSL10有700~800微安的工作电流。不过无线终端是用户界面,不用一直开机。</span></p>

<p style="text-align:justify">&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">四、作品源码</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  如论坛帖子附件上传。<br />
  从机和主机程序分别在SDK的 peripheral_server_sleep 和 central_client_uart两个例子的基础上进行开发。程序框架没有改变,都是基于Event Kernel 消息驱动的。<br />
  代码使用GNU Makefile 进行工程组织,使用arm-none-eabi-gcc工具链进行编译。无线传感单元和BLE终端机的代码目录分别在home_mon和central子目录下。</span></span></span></span><br />
&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">五、作品功能演示视频</span></span></span></span></p>

<p>上传至 EE 大学堂: &nbsp;https://training.eeworld.com.cn/course/6120</p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  用贴在门后的加速度传感单元(RSL10+KX023)检测振动和运动,实现开门和敲门的事件检测,并通过BLE与终端机进行信息交互,在手持终端机上实现日志查看。<br />
  手持终端机也是RSL10实现的。开机后自动扫描目标设备并连接,连接后获取设备的时间日期信息(此时可以修改),然后进入日志界面。<br />
  视频中第一次敲门没有检测成功。</span></span></span></span><br />
&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><b><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">六、项目总结</span></span></b></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  这个项目终于草草地收尾了&mdash;&mdash;实在时间来不及完善了。本来计划了无线门铃的功能,PCB上都安排了蜂鸣器,没来得及软件里把功能做进去。虽然比起初的时间表延长了两周时间,没料到后面做LCD 界面功能做到了最后一刻。<br />
  RSL10 BLE部分上手挺不容易的,前期就因为程序结构没有看懂,拖了进度。这部分文档缺少了,虽然我曾写过BLE应用的程序,也没有理解那么透,就捉襟见肘了。</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">  <strong>帖子分享汇总:</strong></span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">敲门事件和开门动作的检测</span></span></span></span></p>

<p><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1171117-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1171117-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">RSL10的I2C操作与KX023加速度测量数据读取</span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1170822-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1170822-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">RSL10的低功耗模式</span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1170349-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1170349-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">关于RSL10 SDK中Event Kernel部分的代码分析(下) </span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1168940-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1168940-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">关于RSL10 SDK中Event Kernel部分的代码分析(上)</span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1168457-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1168457-1-1.html</a></span></span></span></span></p>

<p align="left" style="margin-left:8px; text-align:left; text-indent:-6.0pt"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">SDK BLE范例工程的命令行编译(HeartRate设备) </span></span></span></span></p>

<p align="left" style="margin-left:8px; text-align:left; text-indent:-6.0pt"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1164617-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1164617-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">SDK范例工程的命令行编译(blinky)&nbsp; </span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1164611-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1164611-1-1.html</a></span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">RSL10的片上内存资源</span></span></span></span></p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1164147-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1164147-1-1.html</a></span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">RSL10开发板电路概览</span></span></span></span></p>

<p align="left" style="text-align:left"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><span style="font-size:12.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;"><a href="https://bbs.eeworld.com.cn/thread-1163113-1-1.html" style="color:blue; text-decoration:underline">https://bbs.eeworld.com.cn/thread-1163113-1-1.html</a></span></span></span></span></p>

<p>&nbsp;</p>

<p style="text-align:justify"><span style="font-size:10.5pt"><span style="font-family:'Times New Roman',serif"><b><span style="font-size:16.0pt"><span style="font-family:&quot;微软雅黑&quot;,&quot;sans-serif&quot;">七、其他</span></span></b></span></span></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

Jacktang 发表于 2021-7-19 14:15

<p>家门电子项目很实用,虽然没完全实现无线门铃的功能,项目的设计过程资料很值得学习,收藏了</p>
页: [1]
查看完整版本: 【家门电子值守】作品提交