8730浏览
查看: 8730|回复: 3

尝试用Micropython在ESP32中开展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

kylinpoet  初级技神

发表于 2020-2-18 13:21:24

这个好,必须支持。
回复

使用道具 举报

gada888  版主

发表于 2020-6-30 21:49:25

不简单呀
回复

使用道具 举报

我i的清风  学徒

发表于 2021-8-31 15:16:56

问题解决了,非常感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail