ESP32 ESP-Rainmaker 本地点灯控制Demo测试

基于ESP-Rainmaker 本地点灯控制Demo测试


  • 🌿ESP-Rainmaker项目地址:https://github.com/espressif/esp-rainmaker/tree/master
  • 🔰官方所提供的ESP-Rainmaker案例提供了2中配网模式:BLE蓝牙配网和 WIFI AP配网。(本文提供2个版本的esp32he esp32c3固件供大家测试,当然你也可以自行下载原工程进行编译)
  • 🌼设备进入并显示效果:
    在这里插入图片描述
  • ✨这个项目早些时候就已经开始测试了,最后卡在了手机APP连接esp32设备端一直无法连接上,也一直没有找到原因和解决办法,导致该项目测试一直搁置,很有可能是个人手机的问题,前段时间还在该github项目上提交了Issue,今天看到别人发的相关的内容能成功,我还是有点不想放弃,今天继续尝试一下,结果误打误撞成功连接上了。

在这里插入图片描述

  • 🌿本次所使用的测试项目编译的是:\esp-rainmaker\examples\led_light

⛳项目编译注意事项

  • 🌿根据个人所使用的esp32型号的不同,在正式进入项目编译前,需要进行idf.py menuconfig引脚配置:(默认配置的是GPIO 8)和使能RGB led选项。注意:配置好后,记得按S键,在弹出的对话框按回车保存,当前配置内容。,如下图:
idf.py menuconfig

在这里插入图片描述
在这里插入图片描述

  • 🔖我这里配置的是GPIO18 引脚。
    在这里插入图片描述
  • 🌿BLE蓝牙配网和WIFI AP配网,在menuconfig中选项配置:
    • 🎈路径:ESP RainMaker App Wi-Fi Provisioning --> Provisinoning Transport method
      在这里插入图片描述

📑esp-idf编译命令执行步骤:

install.bat	//esp-idf初始化
export.bat	//运行esp-idf
cd D:\Git_Local\esp-rainmaker\examples\led_light  //通过cd命令到项目文件夹
idf.py set-target esp32		//设置编译目标芯片型号(默认为esp32),其他型号esp32c3或者其他esp32s2
idf.py menuconfig	//打开菜单配置选项,使能RGB—_LED选项,设置RGB_LED引脚
idf.py build	//开始正式进入编译
idf.py -p COM35 flash	//烧录到目标芯片,COM35为当前芯片连接电脑的串口端口号

设备接入

  • 🔨手机 APP :ESP-Rainmakerhttps://github.com/espressif/esp-rainmaker-android/releases

  • 🌿通过串口调试助手工具打开对应连接电脑的esp32端口:(重启设备,可以查看到下面的信息)
    在这里插入图片描述

  • 🌿将上面框选区域的内容拷贝到浏览器当中,回车,会出现如下带二维码的页面:

在这里插入图片描述

  • 🌿手机端打开蓝牙定位功能
    在这里插入图片描述
  • 🌿在ESP-Rainmaker APP界面,右上角+号,添加接入设备
    在这里插入图片描述
  • 🌿可以扫描浏览器页面的二维码,跳转到下一个页面或者点选下面的I don't have a QR code 选择ble
    在这里插入图片描述
    在这里插入图片描述
  • 🌿连接esp32设备。
    在这里插入图片描述
  • 🌿连接成功后,会自动跳转到输入pop码界面:(我的手机之前就是一直跳不到这个界面)
    在这里插入图片描述
    在这里插入图片描述
  • 🌿手机蓝牙和esp32蓝牙配对成功后,就会自动跳转到配网界面:(选择一个2.4G的Wifi网络进行连接,输入wifi密码)

在这里插入图片描述

  • 🌿等待接入完成:
    在这里插入图片描述

  • 🌿esp32设备接入完成后,就可以在ESP-RainmakerAPP主界面看到已接入的设备:
    在这里插入图片描述

  • 🌿可以点击并控制接在GPIO18 引脚上的WS2812灯珠了。

    • 🍁主界面按键是控制WS2812灯珠亮,灭,
      在这里插入图片描述
    • 🍁点进去可以进行具体的ws2812调光:
      在这里插入图片描述

📚固件分享

  • 🔖基于esp32 WS2812 接在GPIO 18引脚上.
  • 🔨可以使用乐鑫官方的烧录工具:flash_download_tool烧录,我是直接在esp-idf直接通过命令行烧录的。
    在这里插入图片描述
  • 🌿ESP32固件(BLE配网模式)
    • 🔖WS2812引脚GPIO 18
链接: https://pan.baidu.com/s/1xSZF2fPDjaC1e9z1mPY69A
提取码: ugr8
  • 🌿ESP32 wifi -AP(AP配网模式)
    • 🔖WS2812引脚GPIO 18
链接: https://pan.baidu.com/s/1CyLfqf79-TJ53G5iWVM3Ng
提取码: zdj6

  • 🌿esp32c3固件(BLE配网模式)
    • 🔖WS2812引脚GPIO 8
链接: https://pan.baidu.com/s/1vMHxKHwQ-0_kTG1h6sKUug
提取码: 81p2
  • 🌿esp32c3固件(WIFI AP配网模式)
    在这里插入图片描述
    在这里插入图片描述

    • 🔖WS2812引脚GPIO 8
链接: https://pan.baidu.com/s/1P6IZwUKMZypGNpx-RO8-8w
提取码: 2nd1
  • 📋烧录参考信息:
D:\Espressif\frameworks\esp-idf-v4.4.4>cd D:\Git_Local\esp-rainmaker\examples\led_light2

D:\Git_Local\esp-rainmaker\examples\led_light2>idf.py -p COM35 flash
Executing action: flash
Running ninja in directory d:\git_local\esp-rainmaker\examples\led_light2\build
Executing "ninja flash"...
[1/5] cmd.exe /C "cd /D D:\Git_Local\esp-rainmaker\example...cal/esp-rainmaker/examples/led_light2/build/led_light.bin"
led_light.bin binary size 0x15e520 bytes. Smallest app partition is 0x190000 bytes. 0x31ae0 bytes (12%) free.
[2/5] Performing build step for 'bootloader'
[1/1] cmd.exe /C "cd /D D:\Git_Local\esp-rainmaker\examples\led_light2\build\bootloader\esp-idf\esptool_py && D:\Espressif\python_env\idf4.4_py3.8_env\Scripts\python.exe D:/Espressif/frameworks/esp-idf-v4.4.4/components/partition_table/check_sizes.py --offset 0x8000 bootloader 0x1000 D:/Git_Local/esp-rainmaker/examples/led_light2/build/bootloader/bootloader.bin"
Bootloader binary size 0x6410 bytes. 0xbf0 bytes (11%) free.
[2/3] cmd.exe /C "cd /D D:\Espressif\frameworks\esp-idf-v4...sp-idf-v4.4.4/components/esptool_py/run_serial_tool.cmake"
esptool.py esp32 -p COM35 -b 460800 --before=default_reset --after=hard_reset write_flash --flash_mode dio --flash_freq 40m --flash_size 16MB 0x1000 bootloader/bootloader.bin 0x20000 led_light.bin 0x8000 partition_table/partition-table.bin 0x16000 ota_data_initial.bin
esptool.py v3.3.2
Serial port COM35
Connecting....
Chip is ESP32-D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
Crystal is 40MHz
MAC: 08:3a:f2:8d:cd:e0
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 460800
Changed.
Configuring flash size...
Flash will be erased from 0x00001000 to 0x00007fff...
Flash will be erased from 0x00020000 to 0x0017efff...
Flash will be erased from 0x00008000 to 0x00008fff...
Flash will be erased from 0x00016000 to 0x00017fff...
Compressed 25616 bytes to 16093...
Writing at 0x00001000... (100 %)
Wrote 25616 bytes (16093 compressed) at 0x00001000 in 0.8 seconds (effective 249.0 kbit/s)...
Hash of data verified.
Compressed 1434912 bytes to 871905...
Writing at 0x00020000... (1 %)
Writing at 0x0002dbe8... (3 %)
Writing at 0x0003b570... (5 %)
Writing at 0x00046df1... (7 %)
Writing at 0x0004e331... (9 %)
Writing at 0x0005b524... (11 %)
Writing at 0x00065575... (12 %)
Writing at 0x0006f509... (14 %)
Writing at 0x00075635... (16 %)
Writing at 0x0007b0c4... (18 %)
Writing at 0x00080d42... (20 %)
Writing at 0x0008676e... (22 %)
Writing at 0x0008c615... (24 %)

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
以下是一个简单的esp32c3配网的示例代码,使用ESP RainMaker库: ```c++ #include <esp_wifi.h> #include <esp_event.h> #include <esp_log.h> #include <nvs_flash.h> #include <esp_rmaker_core.h> #include <esp_rmaker_wifi.h> #define EXAMPLE_ESP_WIFI_SSID "your_wifi_ssid" #define EXAMPLE_ESP_WIFI_PASS "your_wifi_password" static const char *TAG = "rainmaker_example"; /* Event handler for catching RainMaker events */ static esp_err_t rainmaker_event_handler(void *ctx, esp_event_base_t base, int32_t event_id, void *data) { switch (event_id) { case ESP_RMAKER_EVENT_NETWORK_CONNECTED: ESP_LOGI(TAG, "RainMaker connected to the network"); break; case ESP_RMAKER_EVENT_CLAIM_SUCCESSFUL: ESP_LOGI(TAG, "RainMaker claim successful"); break; case ESP_RMAKER_EVENT_CLAIM_FAILED: ESP_LOGI(TAG, "RainMaker claim failed"); break; case ESP_RMAKER_EVENT_CONFIG_RECEIVED: ESP_LOGI(TAG, "RainMaker configuration received"); break; case ESP_RMAKER_EVENT_DEVICE_REBOOT: ESP_LOGI(TAG, "Rebooting the device"); esp_restart(); break; } return ESP_OK; } void app_main() { /* Initialize NVS */ esp_err_t err = nvs_flash_init(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to initialize NVS"); return; } /* Initialize WiFi */ wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); err = esp_wifi_init(&cfg); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to initialize WiFi"); return; } err = esp_wifi_set_storage(WIFI_STORAGE_RAM); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to set WiFi storage"); return; } wifi_config_t wifi_config = { .sta = { .ssid = EXAMPLE_ESP_WIFI_SSID, .password = EXAMPLE_ESP_WIFI_PASS, }, }; err = esp_wifi_set_mode(WIFI_MODE_STA); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to set WiFi mode"); return; } err = esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to set WiFi configuration"); return; } err = esp_wifi_start(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to start WiFi"); return; } /* Initialize ESP RainMaker */ err = esp_rmaker_core_init(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to initialize ESP RainMaker"); return; } err = esp_rmaker_wifi_init(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to initialize ESP RainMaker WiFi"); return; } /* Register event handler for RainMaker events */ esp_event_handler_register(ESP_RMAKER_EVENT, ESP_EVENT_ANY_ID, rainmaker_event_handler, NULL); /* Start ESP RainMaker */ err = esp_rmaker_start(); if (err != ESP_OK) { ESP_LOGE(TAG, "Failed to start ESP RainMaker"); return; } ESP_LOGI(TAG, "ESP RainMaker started successfully"); } ``` 在这个示例代码中,首先初始化了NVS和WiFi。然后,使用ESP RainMaker库初始化了ESP RainMaker,并在RainMaker事件中心注册了事件处理程序。最后,启动了ESP RainMaker。 请注意,您需要将“your_wifi_ssid”和“your_wifi_password”替换为您要连接的WiFi网络的名称和密码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值