ESP32-PICO-V3-ZEROをSeeeduino Xiaoにつなぐことを考えてみます。
ソースコードの確認
SDKのソースを見て見るため、TutorialのSet Up an ACK Development KitのStep3: Set up your Environment に沿って環境構築します。
amazon developer accountの作成や、Python3のインストール、Arduino IDEのインストールは同じですが、Arduino IDEのボードマネージャの設定は異なります。ボードマネージャの設定はSeeeduino Xiaoのページを参考にして、追加のボードマネージャのURLとして
https://files.seeedstudio.com/arduino/package_seeeduino_boards_index.json
を設定して、ボードの設定やプログラミングポートの設定もSeeeduino Xiaoに合わせて設定します。
(Alexa Appのインストールは後でやります)
引き続きStep3.5に従ってACK Device SDKをインストールします。ACK Device SDKのページにアクセスして、ACK Device SDK 4.1をダウンロードします。今の所、SDK 4.1はEspressifのACKのみサポートのようで、SDKでサポートされるインタフェースはこちらのページに表がありました。また、SDK4の完全なドキュメントはダウンロードしたSDKにPDFで添付されているようです。
で、SDK 4.1を実際にダウンロードします。ACKのResourcesページにアクセスして、「Development Kit」「ACK Module with Espressif chipset」を選択すると、ACK Device SDK 4.1が表示されるので、ダウンロードします。ダウンロードサイズは2.3MBくらいでした。ダウンロードしたら、ファイルを展開して、指示通りに setup.py を実行します。
$ cd ~/ダウンロード/ACK_Device_SDK_4.1.202104181201/user/platform/arduino/ $ $ python3 ./setup.py Installing to directory '/home/ユーザ名/Arduino/libraries'... Microwave DashReplenishment HelloWorld SmartLight Success. Restart your Arduino IDE and look in the File->Examples menu for examples starting with "AlexaConnectKit_". Press [ENTER] to exit...
実行すると、~/Arduino/Librariesの下に『AlexaConnectKit_』で始まるディレクトリが作成されました。なお、ドキュメントは展開されたディレクトリにしかないようなので、必要に応じてどこかにコピーするなどしておいたほうがよいかもしれません。
インストールされた ~/Arduino/libraries/AlexaConnectKit_SmartLight/examples/SmartLight/src の下にある ack_arduino_platform.cpp に初期化コードがあるので、これを見てみると、
// Arduino pins when the Alexa Connect Kit shield is attached to an Arduino Zero. // Pins 0/1 are used implicitly by Arduino Serial1. // We use pins 2 and 3 for host interrupt and reset, respectively. #define ARDUINO_PIN_HOST_INTERRUPT 2 #define ARDUINO_PIN_RESET 3 // Pins for sample applications. #ifdef ACK_SAMPLE_APPLICATIONS_LED_PIN #define ARDUINO_PIN_SAMPLE_APPLICATIONS_LED 8 #endif #ifdef ACK_SAMPLE_APPLICATIONS_GPIO_PIN_1 #define ARDUINO_PIN_SAMPLE_APPLICATIONS_GPIO_1 9 #endif #ifdef ACK_SAMPLE_APPLICATIONS_GPIO_PIN_2 #define ARDUINO_PIN_SAMPLE_APPLICATIONS_GPIO_2 10 #endif #ifdef ACK_SAMPLE_APPLICATIONS_GPIO_PIN_3 #define ARDUINO_PIN_SAMPLE_APPLICATIONS_GPIO_3 11 #endif
という記述があり、UARTはSerial1(Arduinoでは0、1ピン)を、割込みはArduinoの2ピンを、RESETはArduinoの3ピンを使うことがわかります。また、SmartLightのサンプルではLEDの点灯は8ピンを使うこともわかります。一方で、Seeeduino Xiaoの端子割付けを見ると、
となっていますので、Serial1はD6(TX)、D7(RX)を、割込みはD2を、RESETはD3を使えば、ソースの変更は無しで行けそうですので、そのままビルドしてみます。
特に問題なくビルドは通りました。
ハードウェアの検討
信号の接続は、ESP32-PICO-V3-ZEROの端子を
- DBG_TXDは別途用意するUSB-UARTのRXへ
- DBG_RXDも別途用意するUSB-UARTのTXへ
- U1TXDはSeeeduino XIOのD7へ
- U1RXDはSeeeduino XIOのD6へ
- ENはSeeeduino XIOのD3へ。ただし、適当なプルアップが必要。
- INT_BはSeeeduino XIOのD2へ
ということで行けそうです。電源は、Seeeduino Xiaoの電源回路に
ということで、3.3Vのレギュレータが入っているのですが、XC6206P332は200mAしか出力が取れないことと、おそらく一番小さいパッケージで許容損失が120mWしかないのでESP32を駆動するのは難しく、別途3.3Vを生成してやる必要がありそうです。
実装
0.8mmピッチで底面にパッドがあるモジュールなので、どのように配線するか悩みましたが、今回は実験なのでブレッドボードに実装できるように端子を変換しました。EN以外の端子には1kΩを入れて、端子を(気休めで)保護しておきます。