Administrator
发布于 2025-10-29 / 29 阅读
1
0

ESP32-C3 SuperMini 开发板开箱

PDD 6块钱包邮的 ESP32-C3 SuperMini 到货了,有关资料可以参考 ESP32C3SuperMini 入门 。相比nrf52840,ESP32的应用更加广泛,社区资料和支持也丰富,简单记叙用Arduino点灯过程。

ESP32-C3 SuperMini Pinout

ArduinoBoards Manager 中,输入esp32搜索,安装 by Espressif Systems 那个。装好后设置boardNologo ESP32C3 Super Mini和对应端口就OK。ESP32-C3 SuperMini连接到电脑后会创建2个串口,要选择 Serial Port(USB) 这个。

点灯代码如下:

void setup() {
  pinMode(LED_BUILTIN, OUTPUT);  // 初始化板载LED引脚为输出模式
}

void loop() {
  digitalWrite(LED_BUILTIN, HIGH); // 点亮LED
  delay(1000);                     // 延时1秒
  digitalWrite(LED_BUILTIN, LOW);  // 熄灭LED
  delay(1000);                     // 延时1秒
}

代码撰写完成后点击upload即可完成烧录,不需要像之前的 SuperMini nRF52480 那样每次烧录前都得手动短接RST和GND进入DFU模式,非常便利。

另外该开发板同样支持 CircuitPython ,参见 https://circuitpython.org/board/makergo_esp32c3_supermini/ 。

补充一些代码:

扫描附近蓝牙设备:

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEScan.h>
#include <BLEAdvertisedDevice.h>
#include <Preferences.h>

Preferences preferences;
RTC_DATA_ATTR int sessionCount = 0;  // 本次上电期间的计数
RTC_DATA_ATTR bool isFirstBoot = true;

int scanTime = 5; // 扫描时长(秒)
BLEScan* pBLEScan;

class MyAdvertisedDeviceCallbacks: public BLEAdvertisedDeviceCallbacks {
    void onResult(BLEAdvertisedDevice advertisedDevice) {
      Serial.printf("发现设备: %s \n", advertisedDevice.getName().c_str());
      Serial.printf("设备地址: %s \n", advertisedDevice.getAddress().toString().c_str());
      Serial.printf("信号强度 (RSSI): %d dBm\n", advertisedDevice.getRSSI());
      Serial.println("-----------------------");
    }
};

void setup() {
  Serial.begin(115200);
  Serial.println("ESP32 BLE 扫描程序启动...");

  BLEDevice::init("");
  pBLEScan = BLEDevice::getScan(); // 创建扫描对象
  pBLEScan->setAdvertisedDeviceCallbacks(new MyAdvertisedDeviceCallbacks());
  pBLEScan->setActiveScan(true); // 主动扫描模式,获取更多信息
  pBLEScan->setInterval(100);
  pBLEScan->setWindow(99); // 必须小于或等于setInterval

      preferences.begin("stats", false);
  
    int totalBootCount = preferences.getInt("total", 0);
  
    if(isFirstBoot) {
        // 冷启动:从Flash恢复数据到RTC Memory
        totalBootCount++;
        preferences.putInt("total", totalBootCount);
        isFirstBoot = false;
    }
  
    sessionCount++;
  
    Serial.printf("本次上电启动次数: %d\n", sessionCount);
    Serial.printf("历史总启动次数: %d\n", totalBootCount);
  
    preferences.end();
}

void loop() {
  // 正确的代码:使用指针接收返回值
  BLEScanResults* foundDevices = pBLEScan->start(scanTime, false);
  
  Serial.print("发现设备数量: ");
  Serial.println(foundDevices->getCount());
  Serial.println("扫描结束");
  
  pBLEScan->clearResults(); // 清空结果,为下次扫描做准备
  delay(5000);
}

这段代码除了执行蓝牙扫描,还会保存并输出总启动次数。

circuitpython 安装使用可以参考

https://circuitpython.org/board/makergo_esp32c3_supermini/ https://learn.adafruit.com/circuitpython-with-esp32-quick-start/overview

https://learn.adafruit.com/circuitpython-with-esp32-quick-start/connecting-via-web-browser

https://learn.adafruit.com/circuitpython-with-esp32-quick-start/setting-up-web-workflow

由于ESP32缺少原生USB支持,所以使用上没有之前的nrf52840 supermini方便。

image-rDAf.png

如上图所示,可以直接在浏览器中输入代码并执行。

image-wqaO.png

通过网页也可以上传文件夹,导入库文件时很有用。

推荐阅读:Getting Started with the ESP32-C3 Super Mini

PlatformIO使用方式可以参考后续文章,个人认为比Arduino好用。


评论