电子/物联      Android通过蓝牙与Arduino通信控制Led   
文章目录  [隐藏]

预备:
Arduino与蓝牙模块参考 http://www.gaohaiyan.com/2525.html
Arduino与LCD模块参考 http://www.gaohaiyan.com/2544.html


本例环境:
Android手机、ArduinoUNO、BT16-A蓝牙模块、LCD1602显示屏,和2个led灯。
蓝牙模块是4.2版,针脚接法及代码控制和之前的没有区别。

1.图示及操作日志

实物效果图:

比前两篇记录多的是,Arduino的10针脚、11针脚分别接了黄色LED的正极和红色LED的正极。12和13针脚接在了蓝牙的TX和RX针脚。具体可参照下文代码。
手机上的操作截图:

Arduino串口操作日志:

安卓端的日志记录:


2.安卓控制蓝牙

这里使用的是GATT服务与4.0x的蓝牙通讯,不适用2.0x蓝牙。BT16-A模块只连接中间4个针脚即可,接法同前文HC06。


首先判断硬件是否支持,如果硬件不支持就没有继续的必要。



然后判断蓝牙是否开启。



如果没有开启,则前往相关页面手动开启。



之后还要获取操作结果。



开启后就可以进行扫描了。



扫描回调中定义了3个关键方法。



找到目标蓝牙模块后就可以进行连接了。此时并不需要手机系统里的“配对”,同时 本例用的硬件配对也总是失败,提示PIN码或密码错误,不知道是不是个例,没有更多设备进行验证。



GATT服务回调实时监听与蓝牙模块的连接状态、读写状态,以及服务信息获取。



执行 device.connectGatt 后就须要扫描目标蓝牙开放的服务了,以响应 BluetoothGattCallback 的 onServicesDiscovered 方法,打开蓝牙模块中服务的通知回调。



最后要做的就是向蓝牙发消息。而Arduino是实时通过串口与蓝牙模块交互的,因此可以直接获取蓝牙收到的消息。



必要时还应该关闭与蓝牙的连接。



另外就是和UI相关的代码,详细内容可通过文末的连接下载整个项目查看。

3.Arduino控制蓝牙

控制硬件的代码比较简单,看注释即可。





安卓端项目代码,https://gitee.com/vigiles/AndroidAndBluetoothAndArduino


-end

承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设