Android 手机对于Arduino蓝牙控制解决方案

1、Android系统概述

Arduino

Android 系统是 Google 公司基于 Linux 内核开发的移动端操作系统,适用于智能手机智能手表平板电脑等设备,最新的版本为 7.1。Android系统具有免费开源的优势,任何企业与个人都可以查阅公开的 API 文档,并在自己开发的应用中通过调用Android 系统所提供的接口来控制手机上的各类硬件。Android 系统采用了典型的分层架构,其基本原理是将 Linux 内核和 C/C++运行库结合在一起,通过应用程序框架为开发者提供服务。

Android 系统中的应用程序主要采用 Java 语言进行编程开发,包括四个主要组件:Activit(功能表示)、Service(后台服务) 、BroadcastReceiver(广播管理)和Content Provider(数据存储)。

2、Arduino平台概述

Arduino 是一款简单灵活、便于学习和掌握的开源电子原型平台,主要包含硬件设备(各种型号的Arduino开发电路板)和软件开发环境(ArduinoIDE)。它由意大利开发团队 Arduino 研发,并以免费授权的方式发布在互联网上,第三方开发者在使用该设计时仅需声明原始 Arduino团队的贡献后即可免费使用。

Arduino的开发环境被称为 Based on Process-ing,并拥有自己的编程语言 Wiring,其语法格式与Java 相近,这一特点非常便于那些拥有 Android 开发经验的程序员在短时间内掌握其开发技术Wiring 程序在 PC平台上的开发环境中编辑好之后,可以通过 USB 连线上传至相应的开发电路板即可直接控制电路板上的各类传感器和机械设备完成程序中设定的动作。

在此过程中,程序代码的编译工作由电路板上的微控制器负责进行,并将编译完成的二进制码烧录在微控制器中。基于 Arduino平台开发的软件项目可以通过编写支持类库的方式来实现与其他软件平台(如AndroidC++等)进行控制与通信。当前基于移动终端与 Arduino 平台的项目开发中,主要使用的有基于 Android 平台的ArduinoDroidJarduino类库基于iOS平台的 Arduino Simulator 2X FullPack v2.6 HDSimduino 等。

3、Android 对 Arduino的蓝牙控制功能的实现

Arduino蓝牙控制解决方案

基于当前移动终端操作系统市场以 Android 平台为主流的现状,本文主要对 Android+Arduino的蓝牙控制机制进行了研究。

3.1实现原理

在本文所设计的蓝牙控制方案中,数据通信的实现是基于蓝牙协议簇中的 SDP协议和 RFCOMM 协议来实现的,蓝牙协议主要包括两大类(控制栈协议与主机栈协议),分别用于管理和访问无线接口以及处理高级数据。SDP 是蓝牙协议体系的核心,是全部功能的基础。在蓝牙通信过程中客户端只能通过 SDP 协议才能获取到设备信息服务信息及服务特征。

在此基础上建立数据连接RFCOMM作为主机栈协议,开发者可以通过该协议所提供的数据流在各设备的蓝牙模块之间建立可靠的连接,并实现数据传输与控制功能。蓝牙设备的 MAC 地址(BD_ADDR)为 48 位的二进制代码并用十六进制数进行描述,BDADDR 分为三个部分,分别为 24 位的 LAP8 位的UAP和16 位的NAP。其中 LAP 部分为产品编号UAP 与NAP为制造商编号,它们一起共同构成了蓝牙硬件的全球唯一标识。

Android 平台上的应用程序是通过AndroidSDK 中提供的蓝牙API来实现用移动设备(手机或平板电脑)上的蓝牙设备模块的,这些 API的功能有:

1)搜索附近的牙设备

2)读取本机蓝牙设备的状态信息与连接记录

3)基于 SDP 协议,建立不同设备之间的连接;

4)基于 RFCOMM 协议,在设备间可靠的传输数;

5)对建立的蓝牙连接进行管理。

Android 蓝牙 API主要包括经典蓝牙(API17/系统版本 4.2及以下)和低功耗蓝牙(API18/系统版本 4.3 版本及以上)两大类,考虑到向下兼容性的问题,本文所选用的是经典 API。实现 Android 手机对 Around 平台的控制主要分为四个步骤,所调用的开发类名称有:

BluetoothAdapter;用于标识本地蓝牙设备,功能包括蓝牙的开启/关闭、搜索其他的蓝牙设备、获取本机蓝牙设备状态、曾经连接过的蓝牙信息等;Socket:是封装了 TCP/IP 编接口(API)用于实现网络应用程序间的数据通信;

BluetoothDevice;用于标识远程蓝牙设备,在设备间建立连接并获取对方设备的名称MAC等信息以及双方蓝牙设备的配对状态;

BluetoothSocket;用于标识蓝牙 Socket 接口,应用程序之间通过输入/输出流在蓝牙设备间传输各类数据;

BluetoothServerSocket;用于标识代开放的服务端网络端口,其功能是监听其他设备所发送的连接请求,当连接请求被响应并创建的时候,BluetoothServerSocket 会返回该连接的 BluetoothSock-et;

BluetoothClass:用来获取蓝牙设备的通用特性和功能,可以用来判断蓝牙的类别。此外,由于Android 系统对各类硬件的访问操作都需要相应的授权,在开发过程中需要在文件中加 android,permission.BLUETOOTH 和 an-droid.permission,BLUETOOTH-ADMIN以获取权限。

出处:太原学院学报

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

作者:杨 寅 苏 彬

参考资料

https://www.hooketech.com/arduino-bluetooth-control-solution.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/270782.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Element】el-select下拉框实现选中图标并回显图标

一、背景 需求&#xff1a;在下拉框中选择图标&#xff0c;并同时显示图标和文字&#xff0c;以便用户可以直观地选择所需的图标。 二、功能实现 <template><div><el-table ref"table" :data"featureCustom2List" height"200"…

实验室安全教育考试管理系统v3.0功能介绍

瑞熙贝通实验室安全练习和在线考试系统&#xff0c;采取线上培训学习与安全考试相结合的教学形式&#xff0c;在学生进入开放实验室之前通过系统对实验的安全与规范有一个系统的认识与学习。通过线上考试系统&#xff0c;为评价学生的实验室安全学习效果提供了快速有效的实验平…

树莓派安装mediapipe方法

MediaPipe 解决方案可跨多个平台使用。 每个解决方案都包含一个或多个模型&#xff0c;您也可以为某些解决方案自定义模型。 以下列表显示了每个受支持平台可用的解决方案以及您是否可以使用 Model Maker 来自定义模型&#xff1a; 在树莓派上安装mediapipe后, python可以支持…

【http】缓存协议

✨ 专栏介绍 在当今互联网时代&#xff0c;计算机网络已经成为了人们生活和工作中不可或缺的一部分。而要实现计算机之间的通信和数据传输&#xff0c;就需要依靠各种网络协议来进行规范和约束。无论是浏览网页、发送电子邮件还是进行在线交流&#xff0c;都离不开各种各样的网…

工具系列:TensorFlow决策森林_(9)自动超参数调整

文章目录 介绍超参数调整算法使用TF Decision Forests进行超参数调整设置在没有自动超参数调整的情况下训练模型使用自动化超参数调整和手动定义超参数训练模型使用自动化超参数调整和自动定义超参数的模型训练&#xff08;推荐方法&#xff09;使用Keras Tuner训练模型 *(替代…

jmeter-set up先登录获取token,再测试

一、何为setup 一种特殊类型的线程组&#xff0c;可用于执行预测试操作&#xff1b;简单来讲就是执行测试线程组前&#xff0c;先执行setup 作用 例如前面&#xff0c;我们说到的&#xff0c;压测之前只用JMeter调用业务接口造数或者通过JDBC操作数据库造数&#xff0c;可以放…

搬运机器人RFID传感器CNS-RFID-01|1S的RS485(MODBUS|HS协议)通讯连接方法

搬运机器人RFID传感器CNS-RFID-01|1S支持RS485通信&#xff0c;可支持RS485&#xff08;MODBUS RTU&#xff09;协议、RS485-HS协议&#xff0c;广泛应用于物流仓储&#xff0c;立库 AGV|无人叉车|搬送机器人等领域&#xff0c;常用定位、驻车等&#xff0c;本篇重点介绍CNS-RF…

IPC之十:使用共享文件进行进程间通信的实例

IPC 是 Linux 编程中一个重要的概念&#xff0c;IPC 有多种方式&#xff0c;常用的 IPC 方式有管道、消息队列、共享内存等&#xff0c;但其实使用广大程序员都熟悉的文件也是可以完成 IPC 的&#xff0c;本文介绍如何使用共享文件实现进程间通信&#xff0c;本文给出了具体的实…

在线文稿演示应用PPTist

PPTist 是一个基于 Vue3.x TypeScript 的在线演示文稿&#xff08;幻灯片&#xff09;应用&#xff0c;还原了大部分 Office PowerPoint 常用功能&#xff0c;支持文字、图片、形状、线条、图表、表格、视频、音频、公式等几种最常用的元素类型&#xff0c;每一种元素都拥有高…

【bug】uniapp一键登录,自定义协议条款是否支持内部路由?

uniapp一键登录的自定义协议条款&#xff0c;不支持内部路由跳转 在uniapp文档上搜一键登录 加二维码之后可以提问

助力打造清洁环境,基于轻量级YOLOv8开发构建公共场景下垃圾堆放垃圾桶溢出检测识别系统

公共社区环境生活垃圾基本上是我们每个人每天几乎都无法避免的一个问题&#xff0c;公共环境下垃圾投放点都会有固定的值班时间&#xff0c;但是考虑到实际扔垃圾的无规律性&#xff0c;往往会出现在无人值守的时段内垃圾堆放垃圾桶溢出等问题&#xff0c;有些容易扩散的垃圾比…

Flink电商实时数仓(六)

交易域支付成功事务事实表 从topic_db业务数据中筛选支付成功的数据从dwd_trade_order_detail主题中读取订单事实数据、LookUp字典表关联三张表形成支付成功宽表写入 Kafka 支付成功主题 执行步骤 设置ttl&#xff0c;通过Interval join实现左右流的状态管理获取下单明细数据…

支付宝、学习强国小程序input、textarea数据双向绑定

前言 和 vue 的绑定有些区别&#xff0c;需要注意。直接 value"{{inputValue}}" 是无法双向绑定的。 正确思路 文档说的比较详细&#xff0c;不过没有组合使用的案例&#xff0c;需要自行理解。这里正确的方法是先用 value 绑定数据&#xff0c;再使用 onInput 事件…

(GCC) 库的操作

文章目录 预备静态库生成链接环境区别 动态库生成链接环境区别 END参考ar指令 预备 准备两个文件&#xff0c;以最简单的形式进行展示。 add.c int add(int x, int y) {return x y; }main.c 为了方便直接在头文件中声明函数 #include <stdio.h>extern int add(int,…

【C++初阶】九、STL容器中的string类(上)

相关代码gitee自取&#xff1a; C语言学习日记: 加油努力 (gitee.com) 接上期&#xff1a; 【C初阶】八、初识模板&#xff08;泛型编程、函数模板、类模板&#xff09;-CSDN博客 目录 一 . STL简介 什么是STL STL的版本 HP 原始版本&#xff1a; P.J. 版本&#xff1a; R…

HBase基础知识(四):HBase API

HBase还提供了API&#xff0c;我们可以通过编程的方式来进行对HBase的操作。 1. 环境准备 新建项目后在 pom.xml 中添加依赖&#xff1a; <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>hbase-server</artifa…

2023年教程汇总 | 《小杜的生信笔记》

2023年总结 2023年即将结束&#xff0c;我们即将迎来2024年。2023年&#xff0c;我们做了什么呢&#xff1f;&#xff1f;这个是个值得深思的问题…? 12月份是个快乐且痛苦时间节点。前一段时间&#xff0c;单位需要提交2023年工作总结&#xff0c;真的是憋了好久才可以下笔…

重塑资产管理:三叠云助力企业高效运营

资产管理是企业管理中不可或缺的一环&#xff0c;它对企业的经营管理和决策起着至关重要的作用。资产管理涉及到企业的固定资产、无形资产、流动资产等各类资产&#xff0c;它们的管理情况影响着企业的经济效益和运营效率。因此&#xff0c;企业需要建立一套完善的资产管理体系…

Apache Commons Math: 面向Java的数学和统计库

第1章&#xff1a;引言 大家好&#xff0c;我是小黑&#xff0c;咱们今天要聊的是Apache Commons Math这个宝藏级的Java库。为啥说它是宝藏呢&#xff1f;因为它简直就是处理数学问题的瑞士军刀&#xff0c;无论你是要搞统计分析、数值计算&#xff0c;还是解决优化问题&#…

geyser互通服基岩版进不去

Java版需要在服务器安全组开通TCP端口&#xff08;如果有宝塔&#xff0c;也需要开通&#xff09; geyser下载好的安装运行也需要开通端口&#xff0c;但是它是UDP的&#xff08;但是我同时也开启了TCP&#xff0c;可能不需要&#xff1f; Java 版玩家隧道 Java 版玩家使用 T…
最新文章