Espressif Systems提供的ESP-IDF Provisioning Android库,为Android开发者提供了一个简便易用的机制,用于将网络凭证和其他自定义数据发送到ESP32(以及其变体,如S2、S3、C3等)或ESP8266设备。本文将详细介绍该库的功能、使用方法以及一些关键代码示例。
一、功能概述
ESP-IDF Provisioning Android库的核心功能是简化ESP32设备的配置流程。它提供了一套完整的解决方案,涵盖了设备搜索、数据传输、安全保障以及自定义数据交换等多个方面。主要功能包括:
• 设备搜索: 支持通过BLE和SoftAP两种方式搜索可配置的ESP设备。
• QR码扫描: 快速便捷地获取ESP设备信息,支持SoftAP和BLE传输方式。
• 手动创建设备: 允许手动创建ESPDevice实例,并配置传输方式和安全类型。
• 数据加密: 采用端到端加密技术,确保数据传输安全可靠。
• 数据传输: 支持通过BLE和SoftAP进行数据传输,可在运行时配置。
• Wi-Fi网络扫描: 扫描并列出设备可访问的Wi-Fi网络,方便用户选择。
• 设备配置: 将Wi-Fi网络凭证和其他自定义数据传输到ESP设备。
• 自定义数据支持: 允许传输自定义数据,扩展了应用场景。
二、环境配置及依赖
在使用ESP-IDF Provisioning Android库之前,需要进行一些必要的环境配置:
• Android版本: 支持Android 8.0 (API level 26) 及以上版本。
• Gradle依赖: 需要在项目的
build.gradle
文件中添加以下依赖:
allprojects {
repositories {
...
maven { url 'https://jitpack.io' }
}
}
在你的app module的build.gradle
文件中添加库依赖:
implementation 'com.github.espressif:esp-idf-provisioning-android:lib-2.2.1' // 请替换为最新版本号
对于QR码扫描功能,你还需要添加com.budiyev.android:code-scanner
依赖:
implementation 'com.budiyev.android:code-scanner:2.1.0' // 请替换为最新版本号
三、获取ESPDevice实例
ESPDevice对象是ESP32/ESP32-S2/ESP8266设备的虚拟表示,提供了一个简化的接口与设备交互。主要有两种方式获取ESPDevice实例:
• QR码扫描: 通过扫描设备的QR码获取设备信息。QR码内容为JSON格式,包含设备名称、POP值、传输方式等信息。例如:
{"ver":"v1","name":"PROV_CE03C0","pop":"abcd1234","transport":"softap"}
代码示例:
ESPProvisionManager.getInstance(context).scanQRCode(activityContext, cameraSourcePreview, qrCodeScanListener);
// 或
ESPProvisionManager.getInstance(context).scanQRCode(codeScanner, qrCodeScanListener);
• 手动创建: 手动创建ESPDevice实例,并指定传输方式和安全类型。代码示例:
ESPProvisionManager.getInstance(context).createESPDevice(TransportType.BLE, SecurityType.SEC2);
四、设备连接与配置
获取ESPDevice实例后,需要进行设备连接和配置:
• BLE连接: 对于BLE传输,需要使用
espDevice.connectBLEDevice(bluetoothDevice, primaryServiceUuid)
进行连接。• SoftAP连接: 对于SoftAP传输,使用
espDevice.connectWiFiDevice()
进行连接。• 设置POP值和用户名: 根据设备的安全版本设置POP值(Proof of Possession)和用户名。
• Wi-Fi网络扫描: 使用
espDevice.scanNetworks(wifiScanListener)
扫描可用的Wi-Fi网络。• 设备配置: 使用
espDevice.provision(ssid, passphrase, provisionListener)
将Wi-Fi凭证和其他数据配置到ESP设备。
五、其他配置
可以通过修改app/build.gradle
文件中的isQrCodeSupported
字段来启用或禁用QR码支持。
六、总结
ESP-IDF Provisioning Android库为Android开发者提供了一个简单、安全且高效的ESP32设备配置方案。通过使用该库,开发者可以轻松地将网络凭证和其他自定义数据传输到ESP32设备,简化了设备配置流程,并提升了开发效率。
项目地址:https://github.com/espressif/esp-idf-provisioning-android