UEAL第2届电子设计大赛第四轮——儿童走失报警器
UEAL第2届电子设计大赛第四轮——儿童走失报警器东华理工大学东华理工大学——儿童走失报警器作品介绍链接:描述篇:http://v.youku.com/v_show/id_XMTU4NDAxMzY4MA==.html?x&sharefrom=android
东华理工大学——儿童走失报警器作品介绍链接:演示篇:http://v.youku.com/v_show/id_XMTU4NDE2NTg3Ng==.html?x&sharefrom=android
题目要求:利用DFRobot M3开发板设计一款儿童走失报警,使用时发射端放在儿童口袋内,接收端由家长携带。
基本要求:1. 当发射端与接收端相距大于3~5米时,接收端应发出提示声,提示音持续时间为5秒。 完成2. 当发射端与接收端相距大于15~20米时,接收端应发出连续报警声。 完成3、显示部分要求显示云汉社区logo与参赛高校logo 完成4、上传视频 完成5、根据自己设计的功能有详细的讲解步骤 完成发挥部分:1.显示时间与日期功能;温湿度2.报警距离可调; 3.超出蓝牙(其他无线装置)极限30m距离后,可自动通过GPRS切换GPS定位,并实时更新儿童所在位置; 4.低电量短信通知功能 ;当电源不足时,此时会主动发出一通短信通知第一组紧急联络人5.其它创新评分标准:
项目 得 分
设计报告 应包括:方案设计与论证, 参数计算、电路图、 软件流程图、测试方法与数据,结果分析等、正文内容不超过6页
20
基 本 部 分 完成第一项要求 10
完成第二项要求 10
完成第三项要求 10
完成第四项要求 10
完成第五项要求 10
发 挥 部 分 完成第一项要求 10
完成第二项要求 10
完成第三项要求 20
特色与创新 10
题目完成情况:基本部分:1、2、3、4、5全部完成。评委可在接下来的帖子与视频中证实。发挥部分:1、2、3,5完成,4未完成特色与创新:将蓝牙报警器作为一个简单的儿童蓝牙手表,具有温湿度,距离范围,时钟,震动报警,声光报警,防丢牌等功能。特别是时钟,我们将表盘与DFROBOT的LOGO结合,既美观又实用。对于测试,我们使用MATLAB对RSSI数据表进行大量的计算,用于测试结果的正确与否。UEAL第四轮主观题设计报告蓝牙报警器
东华理工大学电子科技协会一、方案设计与论证:基于蓝牙的距离测试方法:蓝牙测距是通过查询蓝牙的RSSI值进行运算,得到一个距离值。虽然随着环境的改变,该值可能并不准确,但是大体上符合测距的要求。我们使用的是DFROBOT的Bluno m3蓝牙Arduino开发板,使用简单的AT指令便可以获取RSSI的值。然后进行一定的运算,得到距离值给其它模块进行调用。
DFROBOT Bluno m3 介绍:Bluno M3 是一款基于ARM处理器并且兼容Arduino接口的开源硬件平台。一款集成了蓝牙4.0通信模块和32位主控芯片STM32F103RET6的微控制 器。作为Bluno 家族新的一员, Bluno M3继承了Bluno系列的几个特点:支持蓝牙通信、支持无线编程和支持手机控制等。在此基础上Bluno M3 也新增了新的功能——更强大的处理性能,更大的存储空间和更多的接口资源。这完全得益于它现在采用的32位主控芯片。CC2540配置方式:测距需要两个蓝牙器件进行链接后才可以进行,我们使用Bluno作为从机,Bluno m3作为主机。也就是说把Bluno m3的CC2540配置为ROLE_CENTRAL模式,Bluno的CC2540配置为ROLE_PERIPHERAL模式
AT指令:AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter,TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。AT指令是以AT作首, 字符结束的字符串,AT指令的响应数据包在 中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。
PC端发送AT指令读取M3的RSSI值的方法:1.打开Arduino IDE 2.在菜单-》工具-》串口中选择正确的设备 3.开启串口监视器 (点击窗口的右上角的按键) 4.在两个下拉菜单中选择"No line ending"(①)和115200 baud(②) 5.在输入框中(③)输入"+++",并点击发送键(④) 6.如果收到“Enter AT Mode”(⑤),就证明已经进入AT指令模式.
.
M3发送AT指令读取RSSI值的方法:我们参考了网友的程序,并进行了修改。其中需要注意的是,一旦进入AT模式,与CC2540相连的串口就不能使用。因此我们增设了一组虚拟串口,使用外接的PL2302 USB串口用于获取返回的RSSI值。具体程序见附录。
M3与Bluno指令交互的拓扑结构:
当蓝牙链接时,链接指示灯LINK灯亮,屏蔽主机串口回路,不能收发。链接到从机串口回路,对从机可进行串口收发。回路为:PC-主机CC2540--从机CC2540-从机-从机CC2540--主机CC2540-PC作品全局展示:M3与Bluno指令交互的拓扑结构:
当蓝牙链接时,链接指示灯LINK灯亮,屏蔽主机串口回路,不能收发。链接到从机串口回路,对从机可进行串口收发。回路为:PC-主机CC2540--从机CC2540-从机-从机CC2540--主机CC2540-PC
作品全局展示:彩屏GUI展示:主要界面
防丢牌
GPS模块展示:
GPS定位功能图片展示:
机智云扩展板介绍:板载了正反转可调速电机马达、温湿度传感器、红外感应器、RGB全彩LED灯,另外增加了OLED扩展接口
方案论证:以上方法经过实际测试,均可以使用。二、参数计算:1.RSSI--距离公式计算公式: d = 10^((abs(RSSI) - A) / (10 * n))其中: d - 计算所得距离 RSSI - 接收信号强度(负值) A - 发射端和接收端相隔1米时的信号强度 n - 环境衰减因子在实际使用中,A我们取值59,n我们取值2.0较符合!
三、电路图
四、软件流程图:1.功能模块:
(一)AT指令发送模块:Serial.print("+"); Serial.print("+"); Serial.print("+"); // Enter the AT modedelay(1000); // Slow down and wait for connectin establishment该模块放在setup()中用于进入AT模式,注意,发送完指令后需要进行等待。(二)RSSI指令读取模块:uchar ScanDis(uint *Dis);以下是AT指令获取部分程序代码char Data;char RAW;int INDEX;char Value = '-'; Serial.println("AT+RSSI=?"); // Ask about the RSSI delay(100); Serial.println("AT+RSSI=?"); // Ask about the RSSI delay(100); for(int x=0 ; Serial.available() > 0 ; x++ ){ // get the Enter AT mode words Data = Serial.read(); // Read and store Data Byte by Byte if (Data == Value ) // Look for the elemnt of the array that have "-" that's the start of the RSSI value { INDEX=x+1; }} RAW = Data; // Copy the RSSI value to RAW Char array RAW = Data; RAW = Data; Dis = atoi(RAW);//Convert the Array to an integer
DisRSSI值,2字节数Dis距离值,2字节数Dis距离状态变量,2字节数0: 1米范围之内1: 1-3米范围2: 3-5米范围3: 5-20米范围4: 20-30米范围之外5: 30米范围之外(三)温湿度检测模块:uchar ReadHt(uchar *HTData);函数参数列表为:HTData 湿度值,单字节数HTData 温度值, 单字节数(四)报警处理模块:void Motor_status(MOTOR_T motor_speed);void AlarmHandle(uint Time);Motor_status用于配置电机的转速,>5正转,<5反转AlarmHandle 用于定时器延时,避免使用Delay延时函数,造成系统卡顿。Time的单位为毫秒(五)显示屏指令发送读取模块:uchar Display(uint *Par);void my_display(uint *Data);Par 湿度值 2字节数Par 温度值 2字节数Par RSSI值 2字节数Par 距离值 2字节数Par 屏幕返回值 2字节数(六)数据处理模块:串口模块:SoftwareSerial mySerial(8, 9); // RX, TXSoftwareSerial mySerial2(10, 11); // RX, TXmySerial为Bluno与串口屏通讯端口mySerial2 为测试通讯端口 (七)初始化模块: 2.状态机:enum MAINSTATE {SENDDIS = 0, READHT, SCANDIST, HANDLE}; switch (State) { case SENDDIS: { NState = READHT; Display(MainData.DisData); MainData.HandleD = MainData.DisData; } break; case READHT: { NState = SCANDIST; ReadHt(MainData.HTData); MainData.DisData = MainData.HTData * 100; MainData.DisData = MainData.HTData * 100; MainData.HandleD = MainData.HTData; MainData.HandleD = MainData.HTData; Temp = MainData.HTData; Humidity = MainData.HTData; } break; case SCANDIST: { NState = HANDLE; ScanDis(MainData.DistanceData); MainData.DisData = MainData.DistanceData; MainData.DisData = MainData.DistanceData; MainData.HandleD = MainData.DistanceData; MainData.HandleD = MainData.DistanceData; MainData.HandleD = MainData.DistanceData; } break; case HANDLE: { NState = SENDDIS; HandleData(MainData.HandleD); } break; } State = NState;五、测试方法与数据:1.PC端测试RSSI2.板载指示灯显示指令发送状态3.虚拟串口采集状态4.数据测试:MATLAB 计算RSSI与距离的关系
我们使用了四组不同的参数计算RSSI与距离的关系,实际测得第一组A=59,n=2.0比较合适。
六、结果分析等1.功能解读:
我们的作品具有的功能如下:使用彩屏显示各种信息,例如时间,温度湿度,RSSI值,距离值,震动报警,声光报警,给主机端报警请求,防丢牌功能显示儿童父母的信息以及住址信息。温湿度采集:我们直接采用了本次比赛的赞助商机智云的扩展板接入DFROBOT Bluno上,扩展板上有我们需要的温湿度采集器DHT11,震动马达,RGB led。极大地方便了我们功能的实现。
附录一、MATLAB测试程序:%subplot(2,2,1);RSSI = 0:1:100;A = 59;n = 2.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'b');ylim();grid on hold on%grid minor
%subplot(2,2,2);RSSI = 0:1:100;A = 60;n = 2.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'m');ylim();grid onhold on%grid minor
%subplot(2,2,3);RSSI = 0:1:100;A = 59;n = 1.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'c');ylim();grid on hold on%grid minor
%subplot(2,2,4);RSSI = 0:1:100;A = 60;n = 1.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'r');ylim();grid on hold off%grid minorxlabel('-RSSI/dbm'),ylabel('Distance/m');title('d = 10 pow ((abs(RSSI) - A) / (10 * n))');legend('A=59,n=2.0','A=60,n=2.0','A=59,n=1.0','A=60,n=1.0');
我们使用了四组不同的参数计算RSSI与距离的关系,实际测得第一组A=59,n=2.0比较合适。
六、结果分析等1.功能解读:
我们的作品具有的功能如下:使用彩屏显示各种信息,例如时间,温度湿度,RSSI值,距离值,震动报警,声光报警,给主机端报警请求,防丢牌功能显示儿童父母的信息以及住址信息。温湿度采集:我们直接采用了本次比赛的赞助商机智云的扩展板接入DFROBOT Bluno上,扩展板上有我们需要的温湿度采集器DHT11,震动马达,RGB led。极大地方便了我们功能的实现。
附录一、MATLAB测试程序:%subplot(2,2,1);RSSI = 0:1:100;A = 59;n = 2.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'b');ylim();grid on hold on%grid minor
%subplot(2,2,2);RSSI = 0:1:100;A = 60;n = 2.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'m');ylim();grid onhold on%grid minor
%subplot(2,2,3);RSSI = 0:1:100;A = 59;n = 1.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'c');ylim();grid on hold on%grid minor
%subplot(2,2,4);RSSI = 0:1:100;A = 60;n = 1.0;d = 10.^((abs(RSSI)-A)/(10*n));plot(RSSI,d,'r');ylim();grid on hold off%grid minorxlabel('-RSSI/dbm'),ylabel('Distance/m');title('d = 10 pow ((abs(RSSI) - A) / (10 * n))');legend('A=59,n=2.0','A=60,n=2.0','A=59,n=1.0','A=60,n=1.0');我们使用了四组不同的参数计算RSSI与距离的关系,实际测得第一组A=59,n=2.0比较合适。
学习的过程是痛并快乐的,感谢ICKEY社区及DFRobot提供的DFRobot bluno,我们会更加优秀的成绩展示自己最好的作品。
感谢分享
页:
[1]