尝试用Micropython在ESP32中开展BLE实验

2020-01-071.5万
AI 快速预览详细 收起
本文介绍了如何在ESP32主板上使用Micropython进行BLE实验。首先需要下载并烧写支持蓝牙功能的固件,然后上传官方提供的示例代码。通过nRF Connect和Adafruit Bluefruit应用,可以轻松实现温度传感器和UART功能。实验1展示了如何让ESP32成为带BLE连接的温度传感器,从智能手机读取温度值。实验2则展示了如何创建可以与BLE连接的UART端口,并将REPL连接到UART端口。这些实验不仅有助于理解BLE技术,还能激发对物联网的兴趣。
一、准备工作
1、ESP32主板(ESP-WROOM-32)
2、uPyCraft软件(v1.1)
尝试用Micropython在ESP32中开展BLE实验图1
二、软件环境的搭建
1、下载固件
    进入官方下载网站https://www.micropython.org/download#esp32,可以发现有两种固件,一种是Firmware built with ESP-IDF v3.x, with support for LAN and PPP butno bluetooth,另一种是Firmware built with ESP-IDF v4.x, withsupport for bluetooth but no LAN or PPP,因为是使用BLE功能,所以需要下载后一种的固件。
尝试用Micropython在ESP32中开展BLE实验图2
从固件下载的表述可知,ESP32如果刷基于ESP-IDF v3.x的固件,则有网络功能没有蓝牙功能,刷ESP-IDF v4.x固件,则有蓝牙功能没有网络功能,两者只能二选一。
2、用uPyCraft烧写固件
    这里我使用uPyCraft软件进行刷固件,也可以使用其他的软件,例如:flash_download_tools。
尝试用Micropython在ESP32中开展BLE实验图3
三、试用MicroPython官方的Bluetooth例子
    https://github.com/micropython/micropython/tree/master/examples/bluetooth
尝试用Micropython在ESP32中开展BLE实验图13
先将从网站下载的文件上传到esp32主板中
・ Ble_advertising.py
・ble_uart_peripheral.py
・ ble_temperature.py
・ ble_uart_repl.py

实验1:温度传感器

目标:让esp32成为带ble连接的温度传感器,从智能手机读取温度值。
因为是实验,所以ESP32主板并未连接温度传感器,而是用随机温度代替,为了在智能手机上读取温度,需要在手机上安装相应的应用程序,这里我们可以使用一个免费的安卓“nRF Connect”应用程序。
尝试用Micropython在ESP32中开展BLE实验图4
在uPyCraft的命令行终端输入exec(open('ble_temperature.py').read())执行程序,或直接在uPyCraft的device目录中的ble_temperature.py文件上右键,选择“Run”执行程序,现在服务器已经在ESP32端运行,从手机上用nRF Connect扫描,您会发现一个名为mpy-temp的BLE设备。
尝试用Micropython在ESP32中开展BLE实验图9
点击“CONNECT”进行连接,然后在“ CLIENT”选项卡上,您将找到一个名为“ Environmental Sensing”的服务。
尝试用Micropython在ESP32中开展BLE实验图7
然后,有一个名为“Temperature”的项目,当您点击它时,将显示温度值。该值每秒更新一次。

尝试用Micropython在ESP32中开展BLE实验图10

实验2:实现UART功能

目标:创建可以与BLE连接的UART端口,然后将REPL连接到UART端口。
由于应用程序的通信方向相反,因此源代码显示使用了Adafruit的“ Bluefruit”,因此我使用了它。该应用程序既可以在Android版本上使用,也可以在iPhone版本上使用。
尝试用Micropython在ESP32中开展BLE实验图5
在uPyCraft的命令行终端输入import ble_uart_repl导入文件模块,然后运行此模块中的start()函数【ble_uart_repl.start()】,把REPL连接到BLE UART上
尝试用Micropython在ESP32中开展BLE实验图15

在手机中启动Bluefruit,进行扫描,然后找到名为“ mpy-repl”的设备。

尝试用Micropython在ESP32中开展BLE实验图6

选择“Connect”连接并点击“UART”选项



尝试用Micropython在ESP32中开展BLE实验图11

然后,选择“设置”菜单,将DISPLAY SETTING中EoL Characters项目由默认的“\n”,设置为“\n\r”。
尝试用Micropython在ESP32中开展BLE实验图12
现在,您可以通过蓝牙从智能手机访问REPL。以下为从手机输入import os和os.listdir()的结果。

尝试用Micropython在ESP32中开展BLE实验图8
尝试用Micropython在ESP32中开展BLE实验图14

参考资料:
1、https://blog.boochow.com/article/testing-ble-on-mp-esp32.html
2、https://github.com/micropython/micropython
3、https://www.micropython.org/download#esp32

创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(3)
我i的清风
我i的清风
问题解决了,非常感谢
gada888
gada888
不简单呀
kylinpoet
kylinpoet
这个好,必须支持。
- 没有更多了 -