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

news2025/2/9 8:59:35

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.coloradmin.cn/o/1335863.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Gitlab】CICD流水线自动化部署教程

第一步,准备 GitLab 仓库 这个不用多说,得先保证你的项目已经托管在一个 GitLab 仓库中。 第二步,定义 .gitlab-ci.yml 文件 在你的项目根目录中创建一个 .gitlab-ci.yml 文件。这个文件将定义所有 CI/CD 的工作流程,包括构建、测…

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

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

基于电商场景的高并发RocketMQ实战-Commitlog基于内存的高并发写入优化、基于JVM offheap的内存读写分离机制

🌈🌈🌈🌈🌈🌈🌈🌈 【11来了】文章导读地址:点击查看文章导读! 🍁🍁🍁🍁🍁🍁&#x1f3…

linux:下载、网络请求、端口

一:ping命令 可以通过ping命令,检查指定的网络服务器是否是可联通状态 语法: ping [-c num] ip或主机名 1、选项:-c,检查的次数,不使用-c选项,将无限次数持续检查 2、参数:ip或主机名,被检查的服务器的…

NET中使用SQLSugar操作sqlserver数据库

目录 一、SqlSugar是什么? 二、迁移和建表 1.建立实体 2.创建上下文类 3.在Program中添加SqlSugar服务 4.在控制器中注入上下文类 三、简单实现CURD功能 总结 一、SqlSugar是什么? SqlSugar是一款老牌 .NET 开源ORM框架。 主要特点&#xff1a…

天啦撸 超级麻烦的MySQL索引和数据引擎,快拿小本本记好

1 MySQL的索引 1.1 索引 定义: 索引是一个排序的列表,包含索引字段的值和其对应的行记录的数据所在的物理地址 ●索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过…

边缘计算AI智能盒子的视频源必须是固定点监控摄像头吗?

边缘计算AI盒子的视频输入源,要求是RTSP或者GB28181,可以是固定点监控摄像头(枪机、球机等),也可以是移动摄像头,例如执法记录仪、智能安全帽、布控球等,但由于RTSP输入要求摄像头有固定IP&…

贪吃蛇小游戏的代码实现之知识点铺垫篇

今天给大家介绍一个很经典的小游戏,它和扫雷在经典小游戏这方面可以说是旗鼓相当,它的名字就是贪吃蛇。贪吃蛇游戏最初为单机模式,后续又陆续推出团战模式、赏金模式、挑战模式等多种玩法。该游戏具体玩法是:用游戏把子上下左右控…

redis复习笔记01(小滴课堂)

高并发的必备两大“核技术”队列和缓存 介绍本地缓存和分布式缓存 Nosql介绍和Reidis介绍 Linux服务器源码安装Redis6和相关依赖 在路径下上传压缩包。 上传压缩包。 版本更新了,但这是临时的。 版本更新了。 解压压缩包: 重命名: 我们可以看…

网页乱码问题(edge浏览器)

网页乱码问题(edge) 文章目录 网页乱码问题(edge)前言一、网页乱码问题1.是什么:(描述)2.解决方法:(针对edge浏览器)(1)下载charset插…

JavaWeb的Servlet的入门和使用方法

1 什么是Servlet Servlet是Server Applet的简称,是用Java编写的是运行在 Web 服务器上的程序,它是作为来自 Web 浏览器或其他 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。使用 Servlet,可以收集来自网页表单的用户输…

树莓派开箱安装

树莓派摄像头安装教程: 百度安全验证 树莓派5代9层亚克力外壳安装: 百度安全验证

CGAL的三角曲面网格骨架化

1、介绍 马模型的曲线骨架。 骨架是用于分割、形状匹配、重建、虚拟导航等的有效形状抽象。顾名思义,曲线骨架是曲线结构的图(1D)。对于3D几何体来说,它不是由表面(2D)组成的中轴。如图所示,形…

IDEA的JavaWeb项目的webapp目录的小蓝点没亮怎么办???

我们可以看到没有小蓝点,正常的是有的。 没有小蓝点的原因:你的webapp 这个文件夹的路径不对。 解决方案:(修改webapp的路径) 我们可以看到,错误的路径是显示红色。 这个地方没有就添加一个路径&#xff0…

机器人制作开源方案 | 智能循迹搬运车

作者:范永晨 杨丽鹏 张东生 单位:唐山学院 指导老师:袁娜 都说21世纪为物流的天下,物流行业牵扯到各个领域。目前,劳动人口数量下降、老龄化现象加速、工资上涨,土地成本提升,随着市场不断发展…

外卖系统开发:构建高效、安全的外卖平台

在当今数字化时代,外卖系统成为了餐饮行业不可或缺的一部分。本文将介绍如何使用一些主流的技术和代码片段来开发一个简单而功能强大的外卖系统。 1. 技术选择 在开始外卖系统的开发之前,首先需要选择合适的技术栈。以下是一个常见的技术栈&#xff1…

IP 地址归属地查询

IP 地址归属地查询 1. IP 地址归属地查询2. IP 地址归属地查询References 1. IP 地址归属地查询 https://tool.lu/ip/index.html 2. IP 地址归属地查询 https://www.ip.cn/ip/.html References [1] Yongqiang Cheng, https://yongqiang.blog.csdn.net/

zookeeper基本使用

目录 环境搭建 单机版搭建 集群版搭建 基本语法使用 可视化客户端 数据结构 节点分类 1. 持久节点 2. 临时节点 3. 有序节点 4. 容器节点 5. TTL节点 节点状态 监听机制 watch监听 永久性watch 应用场景 1. 实现分布式锁 2. 乐观锁更新数据 应用场景总结 选…

【工具使用-A2B】使用A2B配置32通道车载音频系统

一,简介 在工作中需要使用A2B芯片传输32通道的车载音频数据。本文主要介绍,如何配置A2B工程来实现32通道车载音频系统。 二,配置介绍 2.1 A2B链路图配置: 2.2 A2B Master 寄存器配置: 2.3 A2B Slave 寄存器配置:

鸿蒙的基本项目_tabbar,首页,购物车,我的

以上效果,由四个ets文件实现,分别是容器页面。首页,购物车,我的。 页面里的数据,我是用json-server进行模拟的数据。 一、容器页面 使用组件Tabs和Tabcontent结合。 import Home from "./Home"; import …