0x1. 蓝牙试用
例子:examplesbluetoothnimbleblecent。这个例子打开蓝牙GATT客户端去搜索蓝牙Server。 先编译刷机:
- idf.py set-target esp32c3
- idf.py -p COM11 build flash monitor
复制代码
看到项目里面带一个python 测试脚本,并且readme里面也是用这个脚本测试。所以试一试(不要随便试,试之前最好搞清楚这个脚本是干嘛的):
- python blecent_test.py
- # 直接运行会报错:找不到ttfw_idf模块。需要先安装依赖
- python -m pip install --user -r $IDF_PATH/requirements.txt -r $IDF_PATH/tools/ble/requirements.txt
- # 在ESP-IDF目录下
- # python -m pip install -r requirements.txt -r tools/ble/requirements.txt
- # 最终还是失败:
- gigimodule.c(25): fatal error C1083: Cannot open include file: 'glib-object.h': No such file or directory
- error: command 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.28.29910\bin\HostX86\x64\cl.exe' failed with exit status 2
- Failed to build dbus-python pygobject
- ERROR: Could not build wheels for pygobject which use PEP 517 and cannot be installed directly
复制代码
一顿复制操作之后,在解决了N个VC头文件缺失之后,最终dbus-python在windwos上安装不成功,没时间折腾了。直接换Mac上测试: 首先在MacOS上配置ESP32-C3环境。直接git clone很久都下不了,proxychains很久没更新出问题了。所以直接简单粗暴去github下载release版。 注意要下载4.3版本,目前只有这个版本支持ESP32-C3,别下错。 https://github.com/espressif/esp-idf/releases/tag/v4.3
- # 下载之后从国内源更新工具
- cd ~/esp/esp-idf-v4.3
- export IDF_GITHUB_ASSETS="dl.espressif.com/github_assets"
- ./install.sh
- . ./export.sh # 配置环境变量,配置完就能用idf.py
- # 复制项目
- cp -r examples/bluetooth/nimble/blecent ../projs/
- idf.py set-target esp32c3
- idf.py -p COM11 build flash monitor
- # 在当前命令py venv中安装依赖
- python -m pip install -r $IDF_PATH/requirements.txt -r $IDF_PATH/tools/ble/requirements.txt
- # 启动测试程序
- python blecent_test.py
- # 仍然报错,from gi.repository import GLib 失败
复制代码
Mac上这个脚本还是有问题,和windows上一通差不多的操作,虽然安装了dbus-python。但是brew pygobject需要下载gist,最终由于brew无法下载gist.github的东西没有安装成功。
- brew install dbus
- pip install dbus-python
- brew install pygobject3 gtk+3 # 失败
- pip install pygobject
复制代码
https://github.com/espressif/esp-idf/issues/4783 Github上说这个只是内部测试使用的。看来只适合在Liunx上测试。那我们就换一种方式来测试蓝牙。 折腾到最后,我也没有能运行这个测试python文件。看有的项目的测试脚本是用来验证elf和bin文件。因此这个不是提供功能演示,而是作为固定的单元测试。 尝试用 手机连这个蓝牙,搜索不到设备,因此换一个项目试试。 0x2. 蓝牙GATT服务
蓝牙GATT服务提供一个Key-Value列表给远程设备,设备可以读取或者修改其中的属性。 选取例子:examplesbluetoothbluedroidblegatt_server。编译刷机,启动蓝牙:
用手机的NRF Connect App(https://www.nordicsemi.com/Products/Development-tools/nrf-connect-for-mobile),搜索设备,找到ESP-GATTS_DEMO并连接,可以看到属性:
最后,总算写完了这四篇试用,太艰难了。主要是我不想为没意义的文章浪费时间。真正想写的只有一篇:ESP32-C3 RISCV架构的特性探索,看这款MCU实现了哪些特性,例如:debug相关的,以及TEE(mul tipe zone)相关的功能是否支持。这个破烂编辑器我受够了,后面的内容不会再发在这里了。可以去看原始链接: https://www.yuque.com/docs/share/8501b609-15c7-4118-b44a-c584eb48d79a?# 《ESP32-C3 (RISCV架构) 开发》
|