4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

電子工作Advent Calendar 2024

Day 12

PlatformIOでXIAO ESP32C6を動かす

Last updated at Posted at 2024-12-11

XIAO-ESP32C6を購入しました。
スイッチサイエンスさんや秋月電子さんで購入することができます。

基板にアンテナが内蔵されているので、外付けアンテナなしでも使用できそうです。
XIAO ESP32C6

まずはこれをplatformIOでビルドしてみます。

platformio.ini
[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

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

アレクサ連携サンプルコード
/*
 * 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;
}

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

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

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?