PlatformIOでXIAO ESP32C6を動かす

[XIAO-ESP32C6](https://jp.seeedstudio.com/Seeed-Studio-XIAO-ESP32C6-p-5884.html)を購入しました。
[スイッチサイエンス](https://www.switch-science.com/products/9688)さんや[秋月電子](https://akizukidenshi.com/catalog/g/g129481/)さんで購入することができます。

基板にアンテナが内蔵されているので、外付けアンテナなしでも使用できそうです。
<img src="https://media-cdn.seeedstudio.com/media/wysiwyg/5_10.png" width=250px alt="XIAO ESP32C6"></img>

まずはこれをplatformIOでビルドしてみます。
<details><summary>platformio.ini</summary>

```[platformio.ini]
[env:seeed_xiao_esp32c6]
platform = https://github.com/mnowak32/platform-espressif32.git#boards/seeed_xiao_esp32c6
platform_packages = 
	framework-arduinoespressif32 @ https://github.com/espressif/arduino-esp32.git#3.0.2
	framework-arduinoespressif32-libs @ https://github.com/espressif/arduino-esp32/releases/download/3.0.2/esp32-arduino-libs-3.0.2.zip
framework = arduino
board = seeed_xiao_esp32c6
;lib_deps = aircoookie/Espalexa@^2.7.0
```
</details>

Lチカを確認できたので、アレクサにつないでみます。
上記設定の最後の行先頭のコメントアウト```;```を外し、
下記Espalexaライブラリのデモをビルドしてみます。

<details><summary>アレクサ連携サンプルコード</summary>

```
/*
 * This is a basic example on how to use Espalexa and its device declaration methods.
 */ 
#ifdef ARDUINO_ARCH_ESP32
#include <WiFi.h>
#else
#include <ESP8266WiFi.h>
#endif
#include <Espalexa.h>

// prototypes
boolean connectWifi();

//callback functions
void thirdLightChanged(uint8_t brightness);

// Change this!!
const char* ssid = "YOUR-SSID";
const char* password = "YOUR-PASS";

boolean wifiConnected = false;

Espalexa espalexa;

EspalexaDevice* device3; //this is optional

void setup()
{
  pinMode(D9,OUTPUT);
  digitalWrite(D9,LOW);
  pinMode(D10,OUTPUT);
  digitalWrite(D10,LOW);

  Serial.begin(115200);
  //while(!Serial){}

  // Initialise wifi connection
  wifiConnected = connectWifi();
  
  if(wifiConnected){
    
    device3 = new EspalexaDevice("Light 3", thirdLightChanged); //you can also create the Device objects yourself like here
    espalexa.addDevice(device3); //and then add them
    device3->setValue(128); //this allows you to e.g. update their state value at any time!

    espalexa.begin();
    
  } else
  {
    while (1) {
      Serial.println("Cannot connect to WiFi. Please check data and reset the ESP.");
      delay(500);
    }
  }
}
 
void loop()
{
   espalexa.loop();
   delay(1);
}

void thirdLightChanged(uint8_t brightness) {
  if(brightness>0){
    digitalWrite(D10,HIGH);
  }else{
    digitalWrite(D10,LOW);
  } 
}

// connect to wifi – returns true if successful or false if not
boolean connectWifi(){
  boolean state = true;
  int i = 0;
  
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  Serial.println("");
  Serial.println("Connecting to WiFi");

  // Wait for connection
  Serial.print("Connecting...");
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
    if (i > 20){
      state = false; break;
    }
    i++;
  }
  Serial.println("");
  if (state){
    Serial.print("Connected to ");
    Serial.println(ssid);
    Serial.print("IP address: ");
    Serial.println(WiFi.localIP());
    digitalWrite(D9,HIGH);
  }
  else {
    Serial.println("Connection failed.");
  }
  return state;
}

```
</details>

起動するとアレクサから```Light 3```というデバイスが見つかるので、これに呼びやすい名前を付けます。自分は「クリスマスツリー」としました。
そしてアレクサに「アレクサ、クリスマスツリーをつけて」とお願いしてみると・・・

<iframe width="560" height="315" src="https://www.youtube.com/embed/ligW6nscX8c?si=NHw7jNDOcSKQNyGa" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>

外部アンテナなしで、屋内10m程度(壁1枚)を隔てた場所からWifiにつなぐことができました。