爱玩科技网
您的当前位置:首页Android手机对Arduino电子原型平台的蓝牙控制机制研究

Android手机对Arduino电子原型平台的蓝牙控制机制研究

来源:爱玩科技网
第35卷第4期 VoL 35 NO.4 2017年12月 太原学院学报 Dec.2O17 Android手机对Arduino 电子原型平台的蓝牙控制机制研究 杨 寅,苏 彬 (山西职业技术学院,山西太原030006) 摘 要:在现有的物联网开发框架中,Arduino作为一种开源的开发平台因其成本低廉、功能 强大、易于掌握的优势在国内外均受到了广泛的关注,在物联网领域具备着良好的发展前景。文章 在详细分析了Android手机与Arduino平台的无线蓝牙控制机制、实现原理及通信模式的基础上, 设计了相应的解决方案,并对关键实现代码进行了说明。 关键词:物联网;Android;Arduino;蓝牙模块 中图分类号:TP3 文献标识码:A 文章编号:2096—191X(2O17)04~0058—04 DoI:10.14152/i.cnki.2O96 191X.2017.04.015 随着物联网概念的逐渐普及与智能手机性能的 应用程序层 不断提升,手机在各类物联网应用中被作为控制终 端来使用的开发模式也得到了越来越广泛的应用。 应用程序框架层 当前拥有86 的市场占有率的Android系统作为 系统运行库层 开源平台,面向开发人员开放了功能强大的编程接 Li 内核层 V1_】]。而Arduino作为一款便捷灵活的开源电子原 型平台,提供了控制各类传感器与微控制芯片来控 图1 Android系统的分层架构 制超声波、灯光、马达等装置。Android/Arduino已 逐渐成为一种新的基于移动终端的物联网应用项目 Android系统中的应用程序主要采用Java语言进 开发模式。 行编程开发,包括四个主要组件:Activit(功能表 示)、Service(后台服务)、BroadcastReceiver(广播管 l Android系统概述 理)和Content Provider(数据存储)。 Android系统是Google公司基于Linux内核 2 Arduino平台概述 开发的移动端操作系统,适用于智能手机、智能手 表、平板电脑等设备,最新的版本为7.1。Android Arduino是一款简单灵活、便于学习和掌握的 系统具有免费开源的优势,任何企业与个人都可以 开源电子原型平台,主要包含硬件设备(各种型号的 查阅公开的API文档,并在自己开发的应用中通过 Arduino开发电路板)和软件开发环境(Arduino 调用Android系统所提供的接口来控制手机上的各 IDE)。它由意大利开发团队Arduino研发,并以免 类硬件。Android系统采用了典型的分层架构如图 费授权的方式发布在互联网上,第三方开发者在使 1所示,其基本原理是将Linux内核和c/c++运 用该设计时仅需声明原始Arduino团队的贡献后即 行库结合在一起,通过应用程序框架为开发者提供 可免费使用l2]。 服务。 Arduino的开发环境被称为Based on Process一 收稿日期:2017—10—10 基金项目:山西省教育科学“十三五”规划课题(GH一16148) 作者简介:杨寅(1981一),男,浙江江山人,山西职业技术学院讲师,硕士,研究方向:软件工程。 58— 第35卷 太原学院学报 总第125期 ing,并拥有自己的编程语言Wiring,其语法格式与 Java相近,这一特点非常便于那些拥有Android开 发经验的程序员在短时间内掌握其开发技术。 Wiring程序在PC平台上的开发环境中编辑好之 与通信。当前基于移动终端与Arduino平台的项目 开发中,主要使用的有基于Android平台的Arduino— Droid、Jarduino类库,基于iOS平台的Arduino Simu— lator 2X FullPack v2.6 HD、Simduino等。 后,可以通过USB连线上传至相应的开发电路板, 即可直接控制电路板上的各类传感器和机械设备完 成程序中设定的动作。在此过程中,程序代码的编 3 Android对Arduino的蓝牙控制功 能的实现 基于当前移动终端操作系统市场以Android平 台为主流的现状,本文主要对Android+Arduino的 译工作由电路板上的微控制器负责进行,并将编译完 成的二进制码烧录在微控制器中。基于Arduino平 台开发的软件项目可以通过编写支持类库的方式来 蓝牙控制机制进行了研究,其原理如图2所示。 实现与其他软件平台(如Android、C++等)进行控制 图2 Android+Arduino的蓝牙控制机制 3.1 实现原理 1)搜索附近的蓝牙设备; 在本文所设计的蓝牙控制方案中,数据通信的 2)读取本机蓝牙设备的状态信息与连接记录; 实现是基于蓝牙协议簇中的sDP协议和RF一 3)基于SDP协议,建立不同设备之间的连接; COMM协议来实现的,蓝牙协议主要包括两大类 4)基于RFCOMM协议,在设备间可靠的传输 (控制栈协议与主机栈协议),分别用于管理和访问 数据; 无线接口以及处理高级数据。SDP是蓝牙协议体 5)对建立的蓝牙连接进行管理。 系的核心,是全部功能的基础。在蓝牙通信过程中, Android蓝牙API主要包括经典蓝牙(API17/ 客户端只能通过SDP协议才能获取到设备信息、服 系统版本4.2及以下)和低功耗蓝牙(API18/系统 务信息及服务特征,在此基础上建立数据连接。 版本4.3版本及以上)两大类,考虑到向下兼容性的 RFCOMM作为主机栈协议,开发者可以通过该协 问题,本文所选用的是经典API。实现Android手 议所提供的数据流在各设备的蓝牙模块之间建立可 机对Around平台的控制主要分为四个步骤,所调 靠的连接,并实现数据传输与控制功能。蓝牙设备 用的开发类名称有: 的MAC地址(BD ADDR)为48位的二进制代码, BluetoothAdapter:用于标识本地蓝牙设备,功 并用十六进制数进行描述,BD—ADDR分为三个部 能包括蓝牙的开启/关闭、搜索其他的蓝牙设备、获 分,分别为24位的LAP、8位的UAP和16位的 取本机蓝牙设备状态、曾经连接过的蓝牙信息等; NAP。其中LAP部分为产品编号、UAP与NAP Socket:是封装了TCP/IP编程接口(API),用 为制造商编号,它们一起共同构成了蓝牙硬件的全 于实现网络应用程序间的数据通信; 球唯一标识 。 BluetoothDevice:用于标识远程蓝牙设备,在设 Android平台上的应用程序是通过Android 备间建立连接并获取对方设备的名称、MAC等信 SDK中提供的蓝牙API来实现调用移动设备(手机 息以及双方蓝牙设备的配对状态; 或平板电脑)上的蓝牙设备模块的,这些API的功 BluetoothSocket:用于标识蓝牙Socket接口, 能有: 应用程序之间通过输入/输出流在蓝牙设备间传输 59— 杨 寅,苏彬:Android手机对Arduino电子原型平台的蓝牙控制机制研究 第4期 各类数据; Bluetoothserversocket:用于标识代开放的服 务端网络端口,其功能是监听其他设备所发送的连 接请求,当连接请求被响应并创建的时候,Blue— toothServerSocket会返回该连接的B1uetoothSock— et; BluetoothC1ass:用来获取蓝牙设备的通用特性 和功能,可以用来判断蓝牙的类别。 此外,由于Android系统对各类硬件的访问操 作都需要相应的授权,在开发过程中需要在文件中 加入android.permission.BLUETOOTH和an— droid.permission.BLUETOOTH ADMIN以获取 权限。实现步骤如下: 3.1.1 设备初始化并获取已有记录 首先检测本机的的蓝牙功能是否打开并正常运 行,并从本机上获取曾经完成过配对操作的设备信 息,判断是否已经与相关设备之间建立了连接。 3.1.2搜索与获取信息 调用startDiscovery类扫描附近的已设置为 “可发现”状态的蓝牙设备,并调用通过调用Borad— castReceiver类向对方设备发出请求并返回其名 称、类型、BD—ADDR等相关信息,为蓝牙设备之间 建立连接提供基本参数,同时系统以广播Intent方 式将这些系统通知给用户。 3.1.3设备的连接与配对 蓝牙设备的连接和配对是两种完全不同的概 念,在设备间建立连接仅仅是共享RFCOMM信道 用于传输基本数据,而设备配对则是通过分享链接 关键字(1ink—key),来完成授权认证,并启用加密 连接来发送控制信息和获取传感器数据。在蓝牙配 对的实现中,本文将Around平台做为服务端设备, 通过开启ServerSocket将其设置为自动监听状态, 而Android手机作为客户端设备通过创建Blue— toothDevice对象,并使用之前获取到的对方MAC 地址来向服务端发送连接请求,服务端在接受到请 求后与客户端在相同的RFCOMM信道上建立 B1uetoothSocket套接字对象后,即完成可与蓝牙设 备间的连接。在成功创建连接后,将向用户提示蓝 牙配对的请求信息,在用户确认并完成配对后,相关 信息将被保存在手机上以备下次调用。 3.1.4管理连接 蓝牙配对完成后,会为该设备创建相应的 Socket对象,在设备间传输数据即可使用该对象来 完成。Socket是网络开发所用的编程接口,基于端 60一 口来实现数据的传输。在使用时,首先获得输入流 和输出流对象,然后通过调用Stream的Read和 Write方法来操作数据。考虑到这两种方法都属于 阻塞调用,在本文中我们使用的线程来处理数 据的读入和写出。 在蓝牙模块的选用方面,现有的蓝牙模块有两 种工作模式:主从机模式(接收/上传)、从机模式(仅 接收),本文中为Arduino开发平台上选用的蓝牙模 块为工作在“从机模式”下的HC-06,该新品与电路 板的连接如图3所示。 5v D12 GND GDI u VIN NDD9uD 8 A0 A1 甓 D4 图3 HC—O6连接电路图 3.2程序实现 3.2.1 程序模型 在Android平台上主要使用Java语言进行开 发,基于蓝牙模块需要执行阻塞性任务的特点,本文 设计了多线程的编程模型,在创建了主类Bluetooth 的同时,还创建了用于搜索蓝牙设备的子模块 FindBlue、负责连接蓝牙设备的子模块LinkBlue、读 取和写入数据的子模块RwBlue。其中FindBlue作 为线程运行,在连接建立后向主线程Bluetooth 发送消息并自行终止。然后由Bluetooth负责启动 LinkBlue模块向Arduino电路板发送控制命令和 获取传感器数据。 3.2.2扫描蓝牙设备 蓝牙设备信息的获取是通过调用BluetoothA— dapter类的startLeScan方法来实现的。代码示例 如下: oBA.startLeScan(sCB);//oBA为Blue— toothAdapter对象,sCB为回调对象 同时,在获取设备信息完成后,还需要调用 stopLeScan方法来结束扫描操作。 3.2.3蓝牙设备的连接 该过程的代码示例如下: final UUID BlueID— UUID. fromString 第35卷 太原学院学报 第125期 (“0110100—0110—101I-9201-01912EC718AD”); 储空间,用于存放从蓝牙重读取到的数据 int bts; //O]建用于连接远程蓝牙设备的UUID Blueln=BluetoothAdapter.getDefaultAdapter while(true){ bts—BinpStm.read(BlueCache);} ();//蓝牙访问入口对象的初始化 BluetoothDevice dvs—BlueIn.getRemoteDe— 向蓝牙中写入数据时,直接调用输出流写函数 即可: BoutStm.write(BlueCache)。 vice(vMac[?]);//获取vMac数组中用户所选择设 备MAC地址 cth—new SocketThread(dvs): cth.start();//启动连接线程: 在连接线程时,建立Socket并调用connect方 法创建连接: Obj skt—dvs.createRfcommSocketToService— Record(BlueID); 4 结论 Arduino当前在国内还尚未普及,但它作为一 种开源的电子开发平台具备了成本低廉、使用灵活、 开发语言简单易于掌握等优势,非常适于在小型物 联网系统的设计与开发中使用,在欧美地区的物联 网行业中非常流行。随着我国物联网技术的普及, 各类基于智能手机的物联网应用也逐渐被大众所接 Objskt.connect(); handler.obtainMessage(C0NNECT,0,0, nul1).sendToTarget();//通知主线程连接成功 在连接成功后,会创建相应的socket对象,该 受。而Arduino与Android搭配的模式非常适用于 高校、研究机构、小型企业以及个人的物联网项目开 对象包含输入/输出流,开发人员可以通过主线程从 输人流中读取Arduino传来的信息或者向输出流中 发,基于蓝牙模块的数据连接可以使智能手机与连接 在Arduino电路板上的各种电子、机械与传感器设备 结合成为一个有机的整体,为用户提供内容丰富的物 联网应用服务。因此,这种开发模式在国内的高校研 写入控制命令。由于在程序运行过程中,需要不断 地进行数据输入/输出的操作,因此需要放在的 线程中来处理,主线程中通过调用该线程的数 据流对象来完成向远处设备发送数据的操作。当连 接创建完成后,手机会通过循环结构的程序来读取 蓝牙中的数据: final InputStream BinpStm;//Ol建输入流对象 final OutputStream BoutStm;//g'l建输出流对 象 究与商业应用中均具有良好的技术发展前景。 参考文献: [1]崔阳.一种基于Arduino的智能家居控制系统EJ].电子 技术应用,2014,7(4):56—57. [2]杨敬民.基于Android与Arduino的互动产品平台设计 -IJ].嵌入式系统应用,2015,7(4):65. E3]刘坤.基于蓝牙通信的物联网系统架构分析[J].无线电 byte[]BlueCache—new byte[256];//g0建存 通信技术,2O16.11(6):119-120. Research on Bluetooth Control Mechanism of Android Mobile Phone to Arduino Electronic Prototype Platform YANG Yin,SU Bin (Shanxi Polytechnic College,Taiyuan 030006,China) Abstract:Arduino,as an open—source development platform,receives an extensive attention at home and abroad and will have good prospects for development due to its low cost,powerful function as well as its easy control in the field of networking.Based on the detailed analysis of the Bluetooth control mechanism in the Android and Arduino wireless mobile phone platform,the de— sign principle and mode of communication,the corresponding solution are designed and the key code are described. Key words:Internet of things;Android;Arduino;hluetooth module 61— 

因篇幅问题不能全部显示,请点此查看更多更全内容