注:对于ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:782473783。群名:ESP32开源技术交流群。
前言
前面已经有多篇文章将在ESP32上使用MicroPython进行开发,并且我们已经看到了其开发的便捷性。但是前面的MicroPython版本有个不小的缺陷,就是无法使用蓝牙模块。ESP32的一个巨大优势就是将蓝牙和WIFI集成到了一块芯片上,没有蓝牙功能无疑是个巨大的损失。
目前我根据最新国外大神的更新,编译了一个支持Bluetooth库的MicroPython固件,今天这篇文章就简单介绍一下如何使用蓝牙模块。
一、固件更新
最新固件的获取请在群里联系,可以提供尝鲜版本固件。
固件更新下载方法请参考前面的博文。
二、例程
这里放一个简单蓝牙收发的例程。
from machine import Pin
import os
import bluetooth
bt = bluetooth.Bluetooth()
bt.active(1)
bt.advertise(100, 'ESP32_BLE_01')
LED=Pin(2, Pin.OUT) #port 2 is used for led
LED.value(0)
tx = bluetooth.Characteristic('6E400002-B5A3-F393-E0A9-E50E24DCCA9E', bluetooth.FLAG_READ|bluetooth.FLAG_NOTIFY)
rx = bluetooth.Characteristic('6E400003-B5A3-F393-E0A9-E50E24DCCA9E', bluetooth.FLAG_WRITE)
s = bt.add_service('6E400001-B5A3-F393-E0A9-E50E24DCCA9E', [tx, rx])
def callback(char, data):
print("Get command:",data)
if(data == b'10'):
LED.value(0)
print("LED OFF")
tx.write("LED is OFF Now!\n\r")
if(data == b'11'):
LED.value(1)
print("LED ON")
tx.write("LED is ON Now!\n\r")
rx.on_update(callback)
整个例程中创建了一个蓝牙的service,包含一个监听读取的Characteristic和一个写入的Characteristic。当收到字节‘11’的时候点亮LED,收到‘10’的时候关闭LED,并向控制台返回LED的状态。
当蓝牙程序运行后,可以在手机上使用蓝牙调试软件连接名为“ESP32_BLE_01”的蓝牙设备,在发送框里输入10或者11。我使用是FreeBlue,在appstore上面直接下载。调试界面如下:
调试界面
当然其他蓝牙APP也可以使用,如nRF Connect和LightBlue。
总结
从例程中可以看出蓝牙开发变得很简单了,在上面如何构建使用就看你自己的想法了。