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につなぐことができました。