硬核小程序是如何控制蓝牙设备的

文章涉及到大量软硬件知识,没有编程基础的小伙伴看起来会很吃力,硬核预警!

hi,大家好,因为个人原因没办法上传视频,所以最近将会以文章的形式进行更新,点赞投币收藏转发还是需要的,谢谢大家。

如果说你们公司要开发蓝牙应用,或者说你作为爱好者需要用蓝牙来控制东西,那么你怎么去控制蓝牙设备呢?按照传统来说,你只能开发手机APP了,因为手机有蓝牙功能直接编写出来的APP自然有能力去调用手机自身的硬件。但是如果你以前就没接触过手机APP的开发,这个时候你绝对化抓瞎,因为学习曲线太陡你的投入产出根本就不会形成正比,另一方面如果我们只是简简单单的为我们自己的diy项目提供一个控制的界面直接去写一个APP那其实也是杀鸡用牛刀,这个时候你就必须要使用小程序进行蓝牙的开发了。由于篇幅限制我不能铺垫太多东西,这里罗列一下软硬件及开发环境:硬件使用ESP32开发环境为arduino,小程序开发环境为uniapp开发语言为vuejs。OK,那么开始吧。

首先,我们来研究一下蓝牙的硬件方面,市面上有很多蓝牙芯片,但是在我的元件库中只有一个ESP32开发板,这个芯片挺有意思既有wifi也有蓝牙,同时蓝牙更是BLE低功耗蓝牙版本为蓝牙4.0,(你想使用小程序控制蓝牙设备时非常重要的,小程序只能控制BLE蓝牙!!!一定要注意!)

esp32可以使用的软件开发环境有官方的有microPython同时也有大名鼎鼎的arduino,我为什么选用arduino是因为目前为止只有arduino的esp32蓝牙库是比较稳定的,同时开发方式也比较简单,友情提示一下,目前你在网上去搜索的教程都不太靠谱!最直接的方式是直接去阅读官方例程!废话不多说,直接看蓝牙部分的源代码。

我在硬件代码中,能写的注释已经都写了,对于蓝牙来说不得不啰嗦一些:对于蓝牙来说1.蓝牙服务2.蓝牙特征,这两个概念是必须要搞清楚的,大致的理解课参考如下图:

适当幼儿园化的解释是,每个蓝牙芯片可以有多个蓝牙服务,每个蓝牙服务又可以包括多个特征,我们最终是通过特征进行读写数据的,因此硬件设备上定义好服务和特征尤为重要。如上面蓝牙设备的硬件代码中可以看出,我定义了一个蓝牙服务,同时定义了四个特征。(那么,这里其实是有一个大坑的,在广播信息的时候,安卓系统和ios系统是有差别的,同时广播数据时,把定义的服务id广播出去才能加速连接,这点非常必要)

那么,我们之前处理好了硬件部分,重头戏就来了,接下来使用


转载请注明:http://www.aierlanlan.com/tzrz/1385.html