使用蓝牙测试app和Web Bluetooth API(web蓝牙)连接arduino蓝牙模块并通信
原文链接:https://dsx2016.com/?p=1505
公众号:大师兄2016
前言
前面的arduino操作都是建立在usb串口通信上的,然而有线的操作不仅不方便,还受限设备数量,数据传输速率等其他因素影响.
无线的通信方式更加方便快捷,连接数量和通信方式更是提升好几个量级,从距离上就占据了优势
传统蓝牙有效距离约为10米,蓝牙5.0最远可为150米
WIFI的有效距离一般为50-100米
数据线的有效距离则完全取决于其长度,一般而言,要想达到1米以上的效果,不仅贵而且还不太现实.
考虑到学习难度和通信方式(蓝牙和wifi的优缺点对比),优先推荐蓝牙模块的使用.
蓝牙模块
本文使用的模块为JDY-16 BLE
线路图如图所示
参数备注
Arduino UNO | JDY16 蓝牙模块 |
---|---|
VCC | +5V |
GND | GND |
3 | TXD |
2 | RXD |
arduino蓝牙代码
保存,编译并上传到arduino,并打开编辑器的串口监视器
#include <SoftwareSerial.h>
#define Software_TX 2
#define Software_RX 3
byte read_dat, jdy_dat;
SoftwareSerial BLE_JDY_16(Software_RX, Software_TX);//
void setup(){Serial.begin(9600);BLE_JDY_16.begin(9600);Serial.println("Ble Test");}
void loop(){if (BLE_JDY_16.available()) {jdy_dat = BLE_JDY_16.read();delay(2);Serial.write(jdy_dat);}if (Serial.available() > 0) {read_dat = Serial.read();delay(2);BLE_JDY_16.write(read_dat);}}
arduino连接上蓝牙模块后,指示灯闪烁
安卓手机蓝牙
android手机安装蓝牙测试app
apk下载地址
https://httpsimg.dsx2020.com/BLETestToos.apk
手机上先开启蓝牙
然后打开蓝牙调试app
点击上图第三图的第一个列表(或者其他随意)->点击写入->输入文字->点击发送
arduino的串口监视器就会收到并打印字符
同时arduino也可以通过蓝牙发送消息
在串口监视器的输入框输入字符,点击发送
接着查看蓝牙调试app的界面
arduino在发送的时候,确保蓝牙是连接的,并停留在下图界面
收到的消息会实时显示在红框的区域,以下为显示的内容
至此,安卓手机通过蓝牙和arduino通信就完成了
web蓝牙
本文使用的为Web Bluetooth API
参考地址https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API
兼容性
操作方式
确保当前笔记本或者台式主机有蓝牙功能,没有的需要先买一个usb蓝牙
按兼容性使用对应支持蓝牙api的浏览器,建议使用最新版chrome浏览器
将本文web蓝牙代码写入本地html文件,按蓝牙调试app中截图说明的数据,替换代码中的蓝牙参数,然后使用浏览器打开
点击文字bl,开启蓝牙:蓝牙功能的使用只能是通过人为操作才生效,如果直接在js中用方法自动调用,会报错.
上述操作后,如果蓝牙配对成功,会自动发送给arduino字符~大师兄,并打印在arduino串口监视器
web蓝牙html代码
具体细节参考代码注释
<html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>BL</title></head><body><!-- 只有通过真实点击才能连接蓝牙 --><div onclick="blList()">bl</div></body><script>// 定义连接蓝牙方法async function blList() {navigator.bluetooth.requestDevice({// 蓝牙名称前缀filters: [{ namePrefix: "JDY" }],// 蓝牙uuidoptionalServices: [0xffe0],}).then(async (device) => {console.log("Name: " + device.name, device);// 连接设备let server = await device.gatt.connect();console.log(`server`, server);// 获取蓝牙uuid相关内容let service = await server.getPrimaryService(0xffe0);console.log(`service`, service);// 获取可以读写字符流的服务let characteristic = await service.getCharacteristic(0xffe1);// 写入字节(括号中的方法为把字符串转为字符流,传输给蓝牙)characteristic.writeValue(new Uint8Array(new TextEncoder("utf-8").encode("大师兄")));}).catch(function (error) {// 监听错误console.log("Something went wrong. " + error);});}// blList();</script>
</html>
至此web蓝牙和arduino的通信完成
总结
本文描述了
arduino蓝牙模块的线路图连接方式
arduino蓝牙调试的代码和安卓蓝牙调试apk下载
arduino和安卓手机来回通信演示
web蓝牙和arduino通信演示
第4点的操作是直接通过web界面来控制arduino功能的前提,如控制LED灯开关灯
前面演示的usb串口显示实时温度仪表盘也可以通过蓝牙通信来实现,而且更为方便(不需要开启flask服务器和socket,只需要蓝牙通信即可)
END.
使用蓝牙测试app和Web Bluetooth API(web蓝牙)连接arduino蓝牙模块并通信相关推荐
- 利用 Web Share API 将网页分享到 App(上)
2013年加入去哪儿网技术团队,目前在大住宿事业部,技术委员会委员,大前端负责人.个人对移动端技术.工程化有浓厚兴趣. 随着移动互联网的发展,用户流量逐渐从 PC 上迁移到了手机上,为了更好的满足移动 ...
- JavaScript基础知识总结 14:学习JavaScript中的File API、Streams API、Web Cryptography API
目录 一.Atomics和SharedArrayBuffer 二.原子操作基础 1.算术及位操作方法 2.原子读和写 3.原子交换 4.原子Futex操作与加锁 三.跨上下文消息 四.Encoding ...
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)...
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是coo ...
- HTML5 Web Storage API
Web Storage API Web Storage 是以键值对(key-value)的形式存储数据,要存储的数据需要一个名字作为键,然后就可以使用这个键来读取它的值.键是一个字符串.值可以是 Ja ...
- 【Web】1326- 深入浅出 Web Audio API
前言 2011被提出,同年草案被Google Chrome和Mozilla Firefox实现 在此之前Web音频较为原始,无法应付较为复杂的应用场景,例如Web游戏或互动应用 旨在提供全套Web音频 ...
- 【实战】使用 Web Animations API 实现一个精确计时的时钟
在 JavaScript 中,当事情准时发生时,很自然地会想到使用计时器函数. 但是,当某件事由于其他事情依赖于它而在准确的时刻发生时,你很快就会发现计时器会存在一个不准时的问题.而本文所要介绍的 W ...
- 低功耗蓝牙开发权威指南 pdf_新手入门神器!物联网低功耗蓝牙开发板,免费申请...
特性: 支持Arduino IDE编程 支持BLE 4.1主从机切换 支持蓝牙串口数据透传 支持蓝牙点对点无线编程 支持蓝牙4.1多设备级联(最多4个) 支持Arduino蓝牙库(支持多蓝牙连接使用) ...
- 发adb强制打开关闭webview应用,关闭后打开web显示白屏,默认关闭快霸。移除快霸。工模测试,蓝牙测试,前后摄像头测试没有成功失败按钮。
发adb强制打开关闭webview应用,关闭后打开web显示白屏,默认关闭快霸.移除快霸: 这个就是预装了个快霸这个应用,设置里面找到这个应用信息,打开它,它是默认开启的,但不会在launcher上显 ...
- ESP32-C3 学习测试 蓝牙 篇(二、蓝牙调试APP、开发板手机连接初体验)
等了好久终于等到今天,盼了好久终于把蓝牙测试 = =! ESP32-C3 专栏好久没更新了,这次抽点时间把蓝牙的准备工作做完. 目录 前言 1.蓝牙手机调试工具 2.ESP-IDF中示例的选择 3.E ...
最新文章
- 用C++ 和OpenCV 实现视频目标检测(YOLOv4模型)
- Silverlight 参考:KeyEventArgs.Handled 属性
- DirectShow学习
- linux centos 6.5压缩文件,CentOS 6.10 解压 rar压缩包
- 女性开车5大安全驾车好习惯 为您支招
- bool与string互转
- 【Day15】介绍下 promise 的特性、优缺点,内部是如何实现的,动手实现 Promise
- 第四篇 做一个用户登录之后查看学员信息的小例子
- MySQL 查询缓存快速理解。。。(1分钟图解如何优化查询缓存)
- Java编程语言下 Selenium 驱动各个浏览器代码
- 拓端tecdat|R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等
- otool 与dylib
- STM32中使用MMA7660重力加速度传感器
- 【图像压缩】替换输入改善压缩+实现可变比特率
- operands could not be broadcast together with shapes
- Thymeleaf从后端取数据到js中 js中字符串转数字的函数应用
- oracle语句怎么查工作日,SQL查询工作日 - Oracle开发 - ITPUB论坛-中国专业的IT技术社区...
- 微信小程序之二(创建文件目录)
- 广义线性混合模型(GLMM)变量选择
- [CORS:跨域资源共享] 同源策略与JSONP