项目前期准备(1)——基于微信小程序与单片机知识准备阶段
前言
正所谓做一个大项目一般都需要软硬件的知识结合,当然了这也不一定,有些项目只是需要做一个系统,APP开发等这些。不过对于我想一般人都会遇到这种问题——用什么方法来解决用软件来实现控制硬件,实施数据传输。一般有人都会选择使用APP来控制硬件方面的研究。不过今天的话我就先抛弃APP,先来讲一下根据我网上查找了好久找到的另一种方法 —— 一种基于微信小程序和单片机BLE透传的简要解决方法。
因为根据微信小程序发展的形势来说还是挺火的,再者目前关于微信小程序在控制硬件方面的研究还非常少, 所以说这个方面研究还是挺不错的。那么何为BLE透传?
BLE透传
BLE透传即低功耗蓝牙透明传输, 单片机发送数据给低功耗蓝牙时, 不需要其他协议, 低功耗蓝牙就可以将数据发送给其他蓝牙接收设备, 实现单片机与微信小程序之间的通信,使用方便。
BLE透传模块选择
目前的话,我觉得可以推荐一下HC-05/06蓝牙模块。因为采用HC-05/06蓝牙模块进行数据透传, 具有成本低、体积小、功耗低和收发灵敏度高等优点。使用时,BLE透传模块RXD引脚与单片机TXD引脚连接, TXD引脚与单片机RXD引脚连接, 实现系统的通信功能。下面是HC-05模块与单片机配对方式。
**具体使用方法也可以在淘宝搜索HC-05模块,有些商家也提供了资料。
资料下载
提取码:9g8a
软件部分
下面就简单地说一下微信小程序与单片机的通信原理:
微信小程序内置了18个BLEBLE蓝牙API接口, 通调用BLE蓝牙API接口成功连接蓝牙设备后, 可以通过Bluetoothsocket实现微信小程序与BLE蓝牙的数据接收和发送。
在设计过程中中, 会使用到以下的接口:
1.openBluetoothAdapt 用于开启和初始化蓝牙;
2.getBluetoothAdaptState 用于检查蓝牙是否开启;
3.startBluetoothDevicesDiscover 用于开始设备搜索并当发现一个设备后会触发 4.onBlueDeviceFound 事件;
5. creatBLEConnection 用于搜索到设备后连接设备;
6.getBLEDeviceService 用于连接成功后根据目标服务ID找到指定的服务ID, 每一个服务都包含一组特征值用来描述服务特性, 如是否可读, 是否可写, 是否开启notify等,。
7. 利用 getBLEDeviceCharacteristics 获取该特征值值。
8.最终 onBLECharacteristicValueChange 用于监听数据变化[4]。
微信小程序BLE蓝牙API调用方法框图如图:
注意
iOS 微信客户端 6.5.6 版本开始支持,Android 6.5.7 版本开始支持
蓝牙适配器模块生效周期为调用 wx.openBluetoothAdapter 至调用 wx.closeBluetoothAdapter 或小程序被销毁为止。
在小程序蓝牙适配器模块生效期间,开发者才能够正常调用蓝牙相关的小程序 API,并收到蓝牙模块相关的事件回调。
注意
由于系统限制,Android 上获取到的 deviceId 为设备 MAC 地址,iOS 上则为设备 uuid。因此 deviceId 不能硬编码到代码中。
目前不支持在开发者工具上进行蓝牙功能的调试,需要使用真机才能正常调用小程序蓝牙接口。
低功耗蓝牙(BLE)注意事项
iOS 上对特征值的 read、write、notify操作,由于系统需要获取特征值实例,传入的 serviceId 与 characteristicId 必须由 wx.getBLEDeviceServices 与 wx.getBLEDeviceCharacteristics 中获取到后才能使用。建议双平台统一在建立连接后先执行 wx.getBLEDeviceServices 与 wx.getBLEDeviceCharacteristics 后再进行与蓝牙设备的数据交互。
结束导语
因为项目还没有开始,所以这只是我的前期准备的硬件与软件通信的其中一个方案(还有APP~WIFI,上位机等)。网上查找比较久,就先分享一下这些了。
emm,对于这个方案的话,你们要是还是不太懂BLE数据传送这个的话,我可以推荐你们去看一下这个:
当然了,如果大家对微信小程序开发不太懂得话,可以点击下面链接了解了解一下:
如果有什么问题的话,可以在评论区发表意见,大家共同学习一下。