ARDUINIO开发板与ANDROID手机蓝牙通信的设计与实现

来源 :电脑知识与技术 | 被引量 : 0次 | 上传用户:guoxiuguo
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:随着嵌入式的应用与发展,越来越多的计算机爱好者参与其中。但是硬件开发板作为下位机,ANDROID手机移动端作为上位机,如何实现二者连接一直是越来越多的软硬件开发者感兴趣的话题。该文针对当前非常流行的ARDUINO UNO R3开发板,提供一种新的思路和方法,设计简单易行的方案,用手机自动搜索开发板上蓝牙设备实现软硬件的连接并进行相互通信。
  关键词:嵌入式;移动端;蓝牙
  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)21-0065-02
  当前在信息化快速发展的大潮中,计算机不仅在科学研究、军事和工业领域大量应用,而且也越来越多的应用到我们每个人的日常生活当中。随着嵌入式产品的大力发展和进一步推广,嵌入式设备影响到我们生活的方方面面,小到遥控器、PDA等数字化产品,大到数字机床、车载电子设备,都离不开嵌入式产品的应用。
  1 硬件设备介绍
  1.1 Arduino UNO R3开发板
  本次研究平台基于开源Arduino UNO R3开发板。Arduino UNO R3是2012年最新推出的一款易用型开源控制器,硬件上与之前Arduino UNO相比并没有大的变动,最大不同在于USB转串口电路部分,改用的是一块ATMega16U2单片机。除了之前所有的特点外,这块板可以使用ATmega16U2替代了8U2。这允许更快的转换速度和更大内存,Linux或者Mac不需要驱动程序,并且有能力外接键盘、鼠标、摇杆等。
  Arduino是一个基于开源的、有简单的I/O接口的物理计算平台。Arduino可以用于独立做项目开发的控制核心,也可以与PC进行直接的 USB连接完成与电脑间的互动。Arduino开源IDE开发环境可以通过相关文档的链接直接免费下载(支持Window,Linux以及Max系统)。
  1.2 HC-05蓝牙模块
  本次研究使用HC-05主从一体蓝牙串口模块作为Arduino UNO R3开发板和ANDROID手机进行无线通信的设备。
  HC-05是一款主从一体可以设置的蓝牙芯片,具有传统蓝牙技术的功能,模块的接口有串口、spi接口和usb接口。HC-05经过测试在室内可达10m以内的通信距离。在实际使用的过程中,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。
  2 ANDUINO开发板C语言代码原理
  本次研究是利用开发板串口连接蓝牙接口,当接上到ANDROID上位机发来指令为1时让LED1变换状态(如果原来是亮状态则切换为灭状态,反之为亮状态),发送的指令为2时让LED2变换状态。
  首先是LED灯宏定义,让LED1和LED2分别连接开发板第4和第5引脚。
  #define LED1 4
  #define LED2 5
  其次是开发板串口宏定义,使用开发板的串口10作为发送端口,串口11作为接收端口。
  #define TX 10
  #define RX 11
  通过给定的函数库来定义蓝牙模块,NewSoftSerial bluetooth(TX,RX);
  使用setup函数对LED1、 LED2和蓝牙模块进行初始化。
  pinMode(LED1, OUTPUT); //将LED1设置为输出模式
  pinMode(LED2, OUTPUT); //将LED2设置为输出模式
  bluetooth.begin(9600); //设置蓝牙接收数据波特率
  最后编写loop函数,接收ANDROID上位机的指令,通过判断接收的指令来让改变LED1状态还是LED2状态。
  if (bluetooth.available()) {
  int LED = bluetooth.read();
  switch (LED) {
  case 1: //如果接收的指令为1,则让LED1变换状态
  led1 = !led1;
  digitalWrite(LED1, led1);
  break;
  case 2: //如果接收的指令为2,则让LED2变换状态
  led2 = !led2;
  digitalWrite(LED2, led2);
  break;
  }
  3 ANDROID移动端代码原理
  ANDROID移动端代码主要分三个部分,一个部分设计ANDROID界面,其次是是寻找到ARDUINO开发板的蓝牙并连接,最后一个部分是向ARDUINO开发板发送指令。
  本研究只是上位机和下位机蓝牙连接,所以界面设计比较简单。通过XML布局文件设置两个按钮,分别命名为LED1和LED2,通过点击LED1和LED2发出事件,通过事件函数由手机自带蓝牙向ARDUINO开发板发送指令。同时增加一个列表,用于列出ANDRODI移动端平台搜索到的附近蓝牙设备。
  接下来定义类BluetoothUtils,在构造函数中编写搜索附近蓝牙设备。
  public BluetoothUtils() { //构造函数
  devices = new ArrayList();
  adapter = BluetoothAdapter.getDefaultAdapter();   for (BluetoothDevice d : adapter.getBondedDevices())
  devices.add(d);//搜索到的附近蓝牙设备
  }
  其次是使用套接字socket连接搜索蓝牙设备。
  public boolean connect(int index) {
  BluetoothDevice device = devices.get(index);
  socket = device.createInsecureRfcommSocketToServiceRecord
  (UUID.fromString(UUID_CODE));
  socket.connect();
  return true;}
  最后是编写发送指令函数,通过socket套接字发送。
  public void send(int dato) {
  if (socket == null)
  return;
  try {
  socket.getOutputStream().write(dato);
  } catch (IOException e) {}}
  在Activity中主要是相应的处理函数。
  添加界面相关代码比较简单,这里省略。这里主要讲解向开发板发送指令。
  public void dispatch(View v) {
  if (bluetooth.isConnected() == false) {
  Toast.makeText(this, R.string.primero_conectar, Toast.LENGTH_SHORT).show();
  return;}
  switch (v.getId()) {
  case R.id.led_1:
  bluetooth.send(1);//点击LED1按钮向开发板发送指令1。
  break;
  case R.id.led_2:
  bluetooth.send(2); //点击LED1按钮向开发板发送指令2。
  break;}}
  4 连接测试
  在ECLIPSE开发平台中将编写的ANDROID程序打包成APK文件,然后拷贝到手机中进行安装。Arduino UNO R3通过面包板与蓝牙模块相连,Android手机打开自带的蓝牙,搜索到HC-5蓝牙模块后进行连接匹配。连接匹配成功后即可实现二者蓝牙通信。本次连接实现只是进行简单测试通信,通过手机安装的ANDROID软件由蓝牙向Arduino UNO R3开发板发送指令,当点击ANDROID软件界面上的LED1按钮时则向开发板发送1,此时与开发板相连的LED1会变换状态;,当点击ANDROID软件界面上的LED2按钮时则向开发板发送2,此时与开发板相连的LED1会变换状态。硬件连接测试见图2。
  5 结语
  本论文针对当前流行的Arduino UNO R3硬件开发板,介绍该开发板的相关特点,着重论述如何用代码实现上位机连接下位机,并通过蓝牙向下位机发送指令,同时介绍下位机如何接收上位机的指令来控制LED灯的状态。通过相关阐述,并最终实现预想的设计方案。
  但是本次研究只能实现上位机向下位机发送指令,不能实现下位机的相关状态信息反馈给上位机并显示出来,希望以后多做这方面的研究。
  参考文献:
  [1] Simon Monk. Arduino Android互动智作[M].科学出版社,2013.
  [2] 博希莫. 学Arduino玩转Android应用[M].人民邮电出版社,2014.
  [3] 陈吕洲. Arduino程序设计基础[M].北京航空航天大学出版社,2015.
其他文献
核电软件作为我国的新兴产业,对于我国的科学发展以及核电品牌的树立具有非凡的作用。该文主要介绍了基于Rulewizard的定制规则在核电软件中的应用,实现了核电软件编码规范由
Deep Web蕴含海量的可供访问的信息,是数据库领域的研究热点。目前已有的多数研究主要集中在Deep Web数据集成的技术层面.数据集成虽然满足了对Deep Web信息查询的需要,但这
摘要:以患者为中心的综合服务平台希望借助客户关系管理的思路,通过信息化手段为患者搭建全面的公共服务平台,实现对患者诊前、诊中和诊后的全程精细化和人性化服务,解决患者“看病难”的问题,提高患者的满意度和忠诚度,从而提升医院的核心竞争力。  关键词:患者;系统;智能;服务  中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2016)32-0054-03  随着社会的进步,“以疾病
医院信息化的不断发展衍生出各种功能不同的信息系统,比如HIS、LIS、PACS、EMR和RIS。以LIS为例,包含门诊、住院、体检,其中门诊检验系统(门诊LIS)往往因为各个环节之间的衔接在实际应用中产生‘信息孤岛’问题,需要对其进一步研究,达到方便门诊患者就诊、便于门诊医生实时查询患者情况进行病情分析以及检验科内部闭环管理的目的。
摘要:基于Wi-Fi的手持设备的广播平台,是在无线网环境下,依托移动平台,实现移动端接收PC机屏幕广播的解决方案,将PC端的图像、文字等多媒体信息传送到智能终端设备上。基于Wi-Fi的手持设备的广播平台即可用于会议,也可作为远程教学的一种手段。  关键词:Wi-Fi;手持设备;屏幕广播  中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)31-088-03  1 背景
目的提高及改善目前轨道连接与修复的质量。方法采用线性摩擦焊(LFW)的方法,对高碳轨道钢(U71Mn)在不同参数下进行了焊接试验,并对其微观组织和力学性能进行了表征。结果焊接
搅拌摩擦焊以其优异的焊接性能在工业生产中得到了广泛应用,但其所产生的焊缝表面凹陷现象也逐渐成为一个亟待解决的问题。对FSW焊缝表面产生凹陷的原因和对结构件产生的影响