2016-5-26 16:28:25 [显示全部楼层]
5343浏览
查看: 5343|回复: 3

[第二届] 第二届UEAL第四轮主观题--儿童防丢器

[复制链接]
本帖最后由 秦时茗月 于 2016-5-27 09:40 编辑

第四轮主观题——儿童防丢器
--冰城雪狸队starysoul
视频链接: http://pan.baidu.com/s/1cp3iWm
密码:mpf4
简介:本次设计了一个基于BlunoM3控制器实现儿童防丢器设计。该系统的硬件单元包括报警电路,接收器件和发射器件,液晶显示电路等。此次设计完成了全部基本功能,但由于没有GPS等拓展模块加上时间不够,故而没有进行发挥部分的设计。

1、器件简介及方案论证

1.1 Bluno M3 控制器简介

Bluno M3 是一款基于ARM处理器并且兼容Arduino接口的开源硬件平台。一款集成了蓝牙4.0通信模块和32位主控芯片STM32F103RET6的微控制 器。作为Bluno 家族新的一员, Bluno M3继承了Bluno系列的几个特点:支持蓝牙通信、支持无线编程和支持手机控制等。在此基础上BlunoM3 也新增了新的功能——更强大的处理性能,更大的存储空间和更多的接口资源。这完全得益于它现在采用的32位主控芯片。

32位主控器相比传统的8位单片机,在性能上拥有显著的优势,但它的开发环境较为复杂,开发难度也相对较高。Bluno M3不同于以往其他的32位主控,在保留了其强大性能的同时,也兼容了Arduino的简单方便的使用方法。

Bluno M3拥有39个数据输入/输出口,管脚分布兼容了Arduino UNO 管脚,提供SPI和I2C通信接口,支持无线烧录功能及其BLE通信功能,可与手机APP配合"走你"APP使用。板载电源管理系统支持USB和外接电源 自动切换,可直连USB供电或7-12v的宽电压供电。并支持传统STM32 SWD编程调试。

1.1 方案论证

通信方案设计:

方案一:采用两块bluno M3板卡进行通信。
方案二:采用bluno M3板卡与Bluetooth模块进行通信
方案三:使用安卓手机与之bluno M3进行通信

此次设计要求了必须采用给定板卡进行设计,而bluno M3是采用蓝牙4.0技术,bluetooth却是采用的蓝牙2.0技术,理论上无法进行通信,而手中只有一块m3的板卡,因此,本设计采用方案三。

2、显示电路的选择

方案一:采用LCD1602。
方案二:采用OLED12864。

由于此次设计需要显示的数据较多,采用LCD1602可能需要滚屏显示,这样会增加软件设计的复杂程度。显示器件采用wavesheer公司的 12864OLED模块,同等条件下,该器件显示效果要比LCD好。因此采用方案二。采用4线SPI方式进行数据传输,这样做的目的是节省IO,使硬件连 接上也更为简洁。

3、收发信号装置的选择

此次设计采用了Bluno M3控制器板卡作为发射装置。Bluno M3控制器而这款控制器集成了蓝牙4.0通信模块和32位主控芯片STM32F103RET6的微控制器,因此,可以使用板载蓝牙模块与接收端通信。

接收端则选用的是安卓手机。安卓手机可以连接Bluno M3,通过二者间的蓝牙通信判断发射与接收端距离。当手机距离开发板3至5米时,蜂鸣器将报警并持续5秒。而在10米至20米后,蜂鸣器将持续报警。

4、报警的实现


电路图如下:

用了三极管来驱动蜂鸣器, R38 主要用于防止蜂鸣器的误发声。当 BEEP 输出高电平的时候,蜂鸣器将发声, 当 BEEP 输出低电平的时候,蜂鸣器停止发声。

5、系统设计

5.1 接受与发射装置间通信的实现

首先解释一下通过蓝牙进行距离的测定方法:
距离计算公式:

                  d = 10 ^ ((abs(RSSI) - A) / (10 * n)

其中d为距离,RSSI是接收到的信号强度。 A是发射端和接收端相距1米时的信号强度。 n则是指环境衰减因子。

在信号传输时,控制器接收到RSSI值之后,返回距离。在设计时,A值和n值通过调试后分别取了70和1.8。

实现的代码如下:



将蓝牙进行连接,arduino 端先通过UART端口实现对蓝牙写如下指令:

AT + BAUD4 :配置波特率为115200 (在Bluno M3中能够自动连接上手机)
AT + MODE2 :设置为透传及遥控模式
AT + ROLE1:主从设置

之后arduino端通过发送AT + RSSI监听UART口的返回的数据。使用sring函数处理并提取设备的RSSI值。

值得注意的是,在室内信号传输时,信号在传输过程中会受到由于障碍物形成的反射和散射信号的影响,因而得到的结果可能有些偏差,需要对数学模型进行修正,在室内条件下,可以考虑用正态分布模型。


5.2 Bluno AT指令集

AT 指令列表见附录1

6、系统总体框图



7、软件设计流程


8、结语

能够完成此轮比赛我真的是感到非常幸运,期间咨询了很多进行过相关项目开发的同学,也获得了社区中大神们 的辅助。在通过蓝牙测距的实现上,以前一直只知道蓝牙用来通信,多方打探才知道了蓝牙测距的原理和实现方法,期间学习的过程真是充满艰辛,惊喜和满足的。 在此,我对他们表示衷心的感谢。此外,还要感谢云汉集团给予我们高校学子的锻炼机会,你们所组织的这个高校电子竞赛也让我们受益匪浅。虽然所学不多,但会 尽力为支持你们的这个活动做出自己的成果,为支持你们这种活动和精神贡献出自己的一份力。不论最后结果如何,这次比赛让我见识到了其他学校优秀的同学们, 也深刻认识到了自己在求知的路上还需兢兢业业,刻苦学习。最后,祝愿此次大赛圆满成功!

9、实物展示

视频链接: http://pan.baidu.com/s/1cp3iWm
密码:mpf4


附录1

<CR+LF> 即回车+换行,所有的AT指令都是以windows下的回车作为结束符
不要把“<CR+LF>”这几个字符当做AT指令的一部分

1. "AT+FSM" 设置BLE芯片工作模式
AT+FSM=FSM_TRANS_USB_COM_BLE<CR+LF>        设置USB转串口模式,开启BLE功能。
AT+FSM=FSM_HID_USB_COM_BLE_AT<CR+LF>        设置USB转串口模式,开启BLE HID功能
AT+FSM=?<CR+LF>        查询当前BLE芯片的工作模式(默认:FSM_TRANS_USB_COM_BLE)

2. "AT+ROLE" 设置BLE芯片主从机状态
AT+ROLE=ROLE_CENTRAL<CR+LF>        设置BLE工作在主机状态下
AT+ROLE=ROLE_PERIPHERAL<CR+LF>        设置BLE工作在从机状态下
AT+ROLE=?<CR+LF>        查询当前BLE芯片的主从机状态。 (默认值为ROLE_PERIPHERAL)

3. "AT+MIN_INTERVAL" 设置BLE芯片最小通信间隔,以毫秒为单位
AT+MIN_INTERVAL=10<CR+LF>        对于PC和Android,建议设为为10。
AT+MIN_INTERVAL=20<CR+LF>        对于iOS设备,建议设置为20。
AT+MIN_INTERVAL=?<CR+LF>        查询当前BLE芯片的通信间隔。 默认值为10

4. "AT+MAX_INTERVAL" 设置BLE芯片最大通信间隔,以毫秒为单位
AT+MAX_INTERVAL=10<CR+LF>        对于PC和Android,建议设为为10。
AT+MAX_INTERVAL=40<CR+LF>        对于iOS设备,建议设置为40。
AT+MAX_INTERVAL=?<CR+LF>        查询当前BLE芯片的通信间隔。 默认值为10


5. "AT+UART" 设置物理串口波特率
AT+UART=115200<CR+LF>        设置物理串口波特率为115200
AT+UART=?<CR+LF>        查询当前BLE芯片物理串口的波特率。 默认值为115200

6. "AT+BIND" 设置BLE芯片绑定蓝牙地址
AT+BIND=0x0017ea9397e1<CR+LF>        设置BLE芯片绑定的蓝牙地址为0x0017ea9397e1
AT+BIND=?<CR+LF>        查询当前BLE芯片绑定蓝牙地址。 默认值为0x000000000000

7. "AT+CMODE" 设置BLE芯片连接模式
AT+CMODE=UNIQUE<CR+LF>        设置连接模式为指定蓝牙地址连接模式(指定蓝牙地址由BIND命令设置,见"AT+BIND" )
AT+CMODE=ANYONE<CR+LF>        设置连接模式为任意蓝牙地址连接模式(不受BIND命令设置地址的约束,见"AT+BIND")
AT+CMODE=?<CR+LF>        查询当前BLE芯片连接模式。 默认值为ANYONE

8. "AT+MAC"查询BLE芯片MAC地址
AT+MAC=?<CR+LF>        查询当前BLE芯片MAC地址

9. "AT+NAME" 设置和查询当前设备名称
AT+NAME=DFBLEduinoV1.0<CR+LF>        设置模块名称为“DFBLEduinoV1.0”。ascii码形式,小于等于13字节
AT+NAME=?<CR+LF>        查询当前模块名称, 默认值为DFBLEduinoV1.0

10. "AT+RESTART" 重启BLE芯片
AT+RESTART<CR+LF>        重启BLE芯片
11. "AT+SETTING" 改变或恢复默认设置 (BLE firmware 1.6 新功能)
AT+SETTING=DEFAULT<CR+LF>        恢复初始设定,和“PERIPHERAL”初始设定相同
AT+SETTING=DEFPERIPHERAL<CR+LF>        恢复成从机模式的初始设定
AT+SETTING=DEFCENTRAL<CR+LF>        恢复成主机模式的初始设定
AT+SETTING=?<CR+LF>        询问初始设定 (默认: DEFPERIPHERAL). 如果使用了AT指令更改了一些设置,BLUNO将会回复 "UNKNOWN"

12. "AT+BLUNODEBUG" 控制蓝牙已连接状态下,BLE芯片串口接收到的数据是否通过usb串口打印出来。这样就可以通过Arduino的串口监视器得到BLUNO发送的串口数据(BLE firmware 1.6 新功能)
AT+BLUNODEBUG=ON<CR+LF>        控制蓝牙已连接状态下,BLE芯片串口接收到的数据通过usb串口打印出来。
AT+BLUNODEBUG=OFF<CR+LF>        控制蓝牙已连接状态下,BLE芯片串口接收到的数据不通过usb串口打印出来。
AT+BLUNODEBUG=?<CR+LF>        查询蓝牙已连接状态下,BLE芯片串口接收到的数据是否通过usb串口打印出来 (默认: ON)

13. "AT+USBDEBUG" 控制蓝牙数据是否通过USB口打印出来 (BLE firmware 1.6 新功能)
AT+USBDEBUG=ON<CR+LF>        开启蓝牙数据通过USB串口打印开关。
AT+USBDEBUG=OFF<CR+LF>        关闭蓝牙数据通过USB串口打印开关。
AT+USBDEBUG=?<CR+LF>        R查询当前蓝牙数据开关的状态 (默认: OFF)

14. "AT+TXPOWER" 设置蓝牙发射功率. (BLE firmware 1.6 新功能)
AT+TXPOWER=0<CR+LF>        设置发设功率。 (4, 0, -6 或 -23)
AT+TXPOWER=?<CR+LF>        查询当前发射功率 (默认: 0)

15. "AT+IBEACONS" 是否开启iBeacons功能(BLE firmware 1.6 新功能)
AT+IBEACONS=ON<CR+LF>        开启ibeacons广播
AT+IBEACONS=OFF<CR+LF>        关闭ibeacons广播。
AT+IBEACONS=?<CR+LF>        查询当前ibeacons广播的状态(默认:ON)

16. "AT+VERSION" 查看固件版本(BLE firmware 1.6 新功能)
AT+VERSION=?<CR+LF>        查看当前固件版本

17. "AT+RSSI" 返回当前的RSSI值 (BLE firmware 1.6 新功能)
AT+RSSI=?<CR+LF>        返回当前的RSSI值(未连接状态下返回-000)

18. "AT+MAJOR" 设置iBeacons的MAJOR号 (BLE firmware 1.6 新功能)
AT+MAJOR=0<CR+LF>        设置iBeacons的MAJOR号为 "0". (0-65535)
AT+MAJOR=?<CR+LF>        查询当前iBeacons的MAJOR号(默认: "0")

19. "AT+MINOR" 设置iBeacons的MINOR号(BLE firmware 1.6 新功能)
AT+MINOR=0<CR+LF>        设置iBeacons的MINOR号为"0". (0-65535)
AT+MINOR=?<CR+LF>        查询当前iBeacons的MINOR号.(default "0")

20. "AT+PASSWORD" 设置和查询匹配后AT指令密码(BLE firmware 1.7 新功能)
AT+PASSWORD=?<CR+LF>        查询蓝牙匹配后AT指令密码(一般通过USB连接查询)
AT+PASSWORD=abc<CR+LF>        设置蓝牙匹配后AT指令密码(一般通过USB连接设置)

21. "AT+EXIT" 退出AT指令模式(BLE firmware 1.8 新功能)
AT+EXIT<CR+LF>        退出AT指令模式



吹口琴的钢铁侠  初级技匠

发表于 2016-5-26 23:44:17

这是什么比赛
好正式的感觉
回复

使用道具 举报

秦时茗月  见习技师

发表于 2016-5-27 09:10:28

吹口琴的钢铁侠 发表于 2016-5-26 23:44
这是什么比赛
好正式的感觉

云汉电子社区举办的第二届UEALhttp://bbs.ickey.cn/group-integral2.html
回复

使用道具 举报

dsweiliang  初级技神

发表于 2016-6-3 09:28:22

感谢分享
回复

使用道具 举报

高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
关于楼主
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail