MicroPython 代码例程

知识库
知识库文档
/firmware/开发板/ESP32-C6-DevKitC-1 开发板/ESP32-C6-DevKitC-1 开发板 — Arduino/MicroPython 代码例程.md

文档

ESP32-C6-DevKitC-1 开发板 — 代码例程

例程 1:Arduino — Wi-Fi 6 连接 + 网络质量检测

#include <WiFi.h>

const char* ssid = "YOUR_WIFI6_SSID";
const char* password = "YOUR_PASSWORD";

void setup() {
  Serial.begin(115200);
  delay(1000);
  Serial.println("\n=== ESP32-C6 Wi-Fi 6 Test ===");

  // 优先使用 Wi-Fi 6 (802.11ax)
  WiFi.setMode(WIFI_STA);
  WiFi.begin(ssid, password);

  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }

  Serial.println("\n✅ Connected!");
  Serial.printf("SSID: %s\n", WiFi.SSID().c_str());
  Serial.printf("RSSI: %d dBm\n", WiFi.RSSI());
  Serial.printf("Channel: %d\n", WiFi.channel());

  // 判断是否 Wi-Fi 6 连接
  wifi_ap_record_t ap_info;
  esp_wifi_sta_get_ap_info(&ap_info);
  if (ap_info.phy_11ax) {
    Serial.println("📡 Connected via Wi-Fi 6 (802.11ax)!");
  } else {
    Serial.println("Connected via legacy Wi-Fi");
  }

  Serial.printf("Local IP: %s\n", WiFi.localIP().toString().c_str());
}

void loop() {
  static unsigned long lastCheck = 0;
  if (millis() - lastCheck > 5000) {
    lastCheck = millis();
    Serial.printf("RSSI: %d dBm | Status: %d\n", WiFi.RSSI(), WiFi.status());
  }
}

例程 2:MicroPython — GPIO + PWM 全测试

from machine import Pin, PWM, ADC
import time

# --- 输出测试:闪烁 LED ---
led = Pin(2, Pin.OUT)
for i in range(5):
    led.toggle()
    time.sleep(0.3)

# --- PWM 呼吸灯 ---
pwm = PWM(Pin(2), freq=1000, duty=0)
print("PWM breathing LED...")
for duty in range(0, 1024, 8):
    pwm.duty(duty)
    time.sleep(0.005)
for duty in range(1023, -1, -8):
    pwm.duty(duty)
    time.sleep(0.005)

# --- 按钮输入 + 中断 ---
button = Pin(9, Pin.IN, Pin.PULL_UP)
press_count = 0

def button_handler(pin):
    global press_count
    press_count += 1
    print(f"Button pressed! Count: {press_count}")

button.irq(trigger=Pin.IRQ_FALLING, handler=button_handler)

# --- ADC 读取 ---
adc = ADC(Pin(0))
adc.atten(ADC.ATTN_11DB)

print("Reading ADC (GPIO0)... Press Ctrl+C to stop.")
try:
    while True:
        val = adc.read()
        voltage = val * 3.3 / 4095
        print(f"ADC: {val:4d} | Voltage: {voltage:.2f}V | Button: {press_count}")
        time.sleep(0.5)
except KeyboardInterrupt:
    print("Done!")
    pwm.deinit()

例程 3:Arduino — BLE 5.3 传感器外设

#include <BLEDevice.h>
#include <BLEUtils.h>
#include <BLEServer.h>
#include <BLE2902.h>

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

BLECharacteristic *pCharacteristic;
bool deviceConnected = false;

class MyServerCallbacks : public BLEServerCallbacks {
  void onConnect(BLEServer* pServer) {
    deviceConnected = true;
    Serial.println("BLE Client connected!");
  }
  void onDisconnect(BLEServer* pServer) {
    deviceConnected = false;
    Serial.println("BLE Client disconnected. Restarting advertising...");
    pServer->startAdvertising();
  }
};

void setup() {
  Serial.begin(115200);
  Serial.println("=== ESP32-C6 BLE 5.3 Server ===");

  BLEDevice::init("ESP32-C6-Sensor");
  BLEServer *pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  BLEService *pService = pServer->createService(SERVICE_UUID);
  pCharacteristic = pService->createCharacteristic(
    CHARACTERISTIC_UUID,
    BLECharacteristic::PROPERTY_READ |
    BLECharacteristic::PROPERTY_NOTIFY
  );
  pCharacteristic->addDescriptor(new BLE2902());
  pCharacteristic->setValue("Hello from ESP32-C6!");

  pService->start();
  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(SERVICE_UUID);
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x06);
  BLEDevice::startAdvertising();

  Serial.println("BLE advertising started!");
}

void loop() {
  if (deviceConnected) {
    char buf[32];
    snprintf(buf, sizeof(buf), "Uptime: %lu s", millis() / 1000);
    pCharacteristic->setValue(buf);
    pCharacteristic->notify();
    delay(2000);
  }
  delay(10);
}

例程 4:MicroPython — 802.15.4 / Zigbee 简单广播(实验性)

# 注意:ESP32-C6 的 MicroPython 802.15.4 支持可能受限
# 生产环境推荐使用 ESP-IDF 的 OpenThread/Matter SDK

import network
import time

# Wi-Fi 作为 Matter Bridge
wlan = network.WLAN(network.STA_IF)
wlan.active(True)

print("Wi-Fi 6 / BLE 5.3 / 802.15.4 capable chip ready")
print(f"MAC: {':'.join('%02X' % b for b in wlan.config('mac'))}")

# BLE 初始化
import bluetooth
ble = bluetooth.BLE()
ble.active(True)
print(f"BLE Active: {ble.active()}")

print("ESP32-C6 三模无线 (Wi-Fi 6 + BLE 5.3 + 802.15.4) 已就绪")

例程 5:ESP-IDF — Matter 灯控设备(概念示例)

// 需要在 ESP-IDF v5.1+ 环境下编译
// 这是 Matter Lighting App 的简化入口示意

#include "esp_matter.h"
#include "esp_matter_console.h"

static void app_event_cb(const ChipDeviceEvent *event, intptr_t arg) {
    // Matter 事件处理
}

extern "C" void app_main() {
    // 初始化 Matter 节点
    esp_matter::node_t *node = esp_matter::node::create(
        nullptr, app_event_cb, nullptr
    );

    // 创建 OnOff 灯控端点
    esp_matter::endpoint::on_off_light::config_t light_cfg;
    esp_matter::endpoint::on_off_light::create(node, &light_cfg,
        esp_matter::ENDPOINT_FLAG_NONE, nullptr);

    // 启动 Matter
    esp_matter::start();
    ESP_LOGI("Main", "Matter Lighting node started on ESP32-C6");
}

信息

路径
/firmware/开发板/ESP32-C6-DevKitC-1 开发板/ESP32-C6-DevKitC-1 开发板 — Arduino/MicroPython 代码例程.md
更新时间
2026/5/26