北斗杯大学组三等奖优秀作品(4)

2018-12-19 22:17

USART转蓝牙部分使用了CSR解决方案[13]。这种方案成熟、廉价,它能够将单片机发出的USART信号,转换成蓝牙信号。实现蓝牙解决方案的同时节省了大量的时间、金钱。通过蓝牙连接手机,并且通过在java在手机上编写程序,大大提高了系统的拓展能力。

蓝牙模块工作在3.3V,而单片机IO电平设置在5V,所以使用了电平转换技术(如图2),实现两者之间协调正常工作。

图2 电平转换技术原理图

3.2 Java软件模块

Java软件模块:

本模块主要在老人发生异常情况时,实现两项基本功能:功能一是在老人没有按时吃药时,自动启动向老人子女发送短信报告的功能,以便老人子女提醒督促老人吃药;功能二是在老人发生紧急情况时,例如:突发急病、突然摔倒时,老人按动紧急按钮,自动启动拨打急救电话的功能。

当药盒判断出老人没有按时吃药,就通过药盒本身的蓝牙模块(HC-06)向手机蓝牙发送信号“1”,若判断出老人发生紧急情况,药盒的蓝牙模块向手机发送信号“2”。手机蓝牙接收到该信号就启动Java程序,实现向指定的手机号码发送指定内容的短信或打电话功能,其中指定的号码为为老人子女的号码,指定内容可以在程序中设定(测试过程中短信中指定的内容为:”您好!你家老人没有

16

按时吃药!”)。

为实现上述功能,需利用J2ME[2]技术进行手机程序的开发,本项目利用的开发环境为JDK6(Java开发工具包)[4]+NetBeans IDE 5.5.1(集成环境)+Wireless Toolkit2.2(无线工具包)。测试中使用手机为诺基亚5300[16]。

总体原理框图及算法描述如下:

(1)Java程序整体界面的设计

这步需完成的目标是为整个程序设计一个美观大方的界面外观,显示相应的文字和图片。

具体说来,用Form.append()方法[1]加入文字信息。用Image.createImage()方法加入图片信息。用Form.addCommand()方法加入控制键。设计出程序的界面在模拟器下的运行效果如图3所示:

图3 模拟器下的程序界面

17

(2)手机通过串口读取蓝牙模块数据

这步需要完成的目标是将药盒蓝牙模块发送的信号“1”或“2”通过手机蓝牙接收,并在屏幕上显示出。

在蓝牙编程过程中,需要用到Java[3]蓝牙API[5]定义的两个包:一个是Java蓝牙API的核心javax.bluetooth,另一个是用于对象交换协议的javax.obex。 首先获取本台手机的端口号(即蓝牙服务的COM口号),以便于与硬件通信。用方法getAvailableComPorts()[20]来实现。经运行,本手机运行蓝牙服务的端口为COM0。

然后,编程实现手机搜索蓝牙设备,选择设备后再搜索设备提供的服务, 找到串口服务后获取连接地址。此地址被称为btspp地址,就是每个蓝牙设备的唯一硬件地址。两台设备必须共享通用的通讯协议才能通讯。为了应用能够访问更多的蓝牙服务,蓝牙java API提供了这样一个机制,它允许连接到使用RFCOMM,L2CAP, 或 OBEX[19]协议的任何服务。如果服务使用了位于上面协议之上其它的协议(例如TCP/IP),只有在应用中利用CLDC通用连接框架实现额外的协议,才可以访问该服务。用于服务记录的URL包括数字和符号,大体是这样的结构:

btspp://508031205080110F1B1B1D1C100:8.

它的意思是客户应该使用蓝牙串口框架来建立到地址为508031205080110F1B1B1D1C100的设备的8号服务。

在源程序代码中,在设备管理过程中,用到两个类LocalDevice 和 RemoteDevice。其中,LocalDevice 允许请求获得蓝牙设备的静态信息。而RemoteDevice可用来获得蓝牙邻近区的设备信息。在接下来的设备发现与服务发现中使用DiscoveryAgent类中的相关方法即可。

最后,编写通过串口进行数据读写的代码,其主要步骤有: (1)打开串口连接[18]

StreamConnection connection; connection =

(StreamConnection) Connector.open(btConnectionURL); ? 创建串口连接的输入流和输出流; ? 数据的读入:in.read(serialData);

至此,药盒的蓝牙模块发送的信号1或者信号2已被手机蓝牙接收并保存。

(3)手机根据指定信号自动发短信

类CallandMessage [15]用来处理收到的信号,并执行相应的操作。如果判断信号为1,即执行发短信功能。具体编程过程为:用方法

18

msg.setAddress(address);来指定所要发送短信的号码,用方法conn.send(msg)来指定所要发短信的内容。 (4)手机根据指定信号自动拨打电话

仍然在类CallandMessage[17]中处理信号,执行相应的打电话操作。如果判断信号为2,即执行打电话功能。具体编程过程为:用方法this.platformRequest()来设置所要拨打的电话号码,用方法ex.printStackTrace()来拨打电话。 3.3外出北斗定位模块设计

该模块要实现的功能是:在老人外出迷路时,只需按下系统的“走失”键,老人的亲属即可在手机或者电脑终端的智能地图上看到老人的位置,及时寻找老人。在老人外出突发疾病时,按下“外出紧急”键,120急救中心可在显示终端获取老人的位置信息,第一时间救助老人。

实现方法是在嵌入式部分添加北斗定位模块和GPRS模块。北斗定位模块将接收到的定位数据通过串口传送给处理器。GPRS模块用来发送定位等信息到网络上。

定位系统的框图如下:

图4 外出定位系统的总体框图

下面一部分是药品贮存系统终端,上面的是GPRS通信网络、监控中心和北斗定位卫星。

北斗卫星地面观测点定位的方法有伪距定位法、多普勒定位法、载波相位定位法、伪距测量加多普勒定位法和干涉定位法等。本系统采用伪距定位法,该方法成本较低,精确度也可以接受,适合本实用系统。伪距是北斗卫星接收机对码

19

的量测而得到卫星到时接收机的距离,由于含有接收机卫星时钟的误差及大气传播误差,故称为P码伪距,精度约为2m左右。在北斗卫星观测中,我们可以得到卫星到接收机的距离,利用三维坐标中的距离公式,利用3颗卫星,就可以组成3个方程式,解出观测点的位置(X,Y,Z)。考虑到卫星的时钟与接收机之间的误差,实际上有4个未知数X,Y,Z和钟差,因而需要引入第4颗卫星,构成4个方程式进行求解,从而得到观测点的经度、纬度和高度,如图所示:

图5 北斗卫星定位算法原理图

一、北斗定位模块电路设计:

本设计采用Trimble公司的Lassen iQ46240接收机模块。它是12通道的北斗定位接收机模块,同时可以跟踪12颗北斗卫星,跟踪性能优越,能够快速定位。

其主要指标如下:

1) 电气指标:输入电压:DC3.3w5.5v

2) 定位指标:接收机频率:L1,C/Acode(SPS),接收机通道:并行12通道,定位时间:快速启动:约8秒,热启动:约15秒,冷启动:约50秒(典型值) 3) 自由定位:2分钟,更新率:1Hz精度:定位精度:3m(CEP),小于6m2DRMS 4) 速度精度:0.2m/sRMS(50%)接收机灵敏度:.1 52dBm(跟踪);-139dBm(捕获)

5)接口:接口特性:CMOS电平输出

6) 串口0:默认波特率为4800bps输出:NMEA01 83版本3.01的ASCII码语句,默认输出语句包括GGA,GSA,GSV,RMC;可选输出:GLL,VTG,ZDA,DTM。输入:选择坐标系、波特率设置、输出语句选择等

20


北斗杯大学组三等奖优秀作品(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:“十三五”重点项目-聚偏氟乙烯(PVDF)项目可行性研究报告

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: