※この記事をはじめ、「研究ノート」とタグがついている記事は、私が手探りで勉強しつつその過程を記事に残していった内容なので、他記事のように完結した内容になっていないし途中で頓挫する可能性が高いものです。
ESP32-PICO-V3-ZEROというマイコン
名前で分かる通り、ESP32-PICO-V3-ZEROはEspressif社のマイコンモジュール、ESP32のシリーズの一つである。
ただ、これは他のESP32シリーズと違い、何にでも使える汎用マイコンという感じではない。
Amazonの提供するスマートスピーカー、Alexaと連携したデバイスを作るための開発リソース、Alexa Connect Kitを使うため専用のマイコンモジュールである。

私のざっくりとした理解なので間違いがあるかもしれないが、イメージとしてはこんな感じで、まずは自宅にあるAmazon echoスマートスピーカーに「アレクサ、○○をオンにして」などと言うと、音声認識したechoはアレクサのシステムにそれを送信し、システムはESP32-PICO-V3-ZEROに「こんな命令が来たよ~」というのを通信で教える。
すると、ESP32-PICO-V3-ZEROはその命令を実行するため、ESP32-PICO-V3-ZEROに繋いである別のマイコンに「機器をオンにせよ」と指示を出す。
そして、実際に機器のつながっている別のマイコンが、デジタル制御なり何なりして機器をオンにする。
……という流れである。ESP32-PICO-V3-ZEROには買ってきた時点であらかじめAmazon Alexaと通信してAlexaシステムの命令を待ち受けることができるファームウェアが入っているので、我々がプログラミングをする必要はない。
我々がやるのは、ESP32-PICO-V3-ZEROに繋げた別のマイコンに「こういう命令が来たらこんな感じで聞きを制御してね」という内容のプログラムを作成することだけである。
こうして、Alexaシステムそのものについて学ばずともAlexa対応デバイスを作ることができる。
ESP32-PICO-V3-ZEROもマイコンなのだから直接機器を制御できたら良いのにと思わなくもないが、Alexaと連携するためのファームウェアでパンパンなのだろうか?
ピン配置を見てみる

ほとんどGNDとNCだ!

NCには何も繋がない。GNDは文字通り回路のグラウンドに繋ぐ。役割を持ったピンの数はとても少ない。
No.3と4のDBG_RXD、DBG_TXDは、このPICO-V3-ZEROに設定ファイルを書き込むためのピンである。シリアル通信で書き込むので、お手持ちのUSB-シリアル変換器のTx、Rxにそれぞれ繋ぐ。
ENピンは他のESP32シリーズと同じく、チップイネーブルピンである。このピンがハイの時に電源オンとなり、ローならば電源接続していようとこいつはオフになって動かない。あえてオフにしたい用事がなければ、1kΩあたりの抵抗を介して電源の3.3Vに繋いでプルアップしておくとよい。
VDD33は電源ピン。3.3Vに繋ぐ。
U1TXD、U1RXDは、PICO-V3-ZEROと別のマイコンとのシリアル通信をするためのピン。別途用意したマイコンのRx 、Txにそれぞれつなぐ。
INT_Bは、別のマイコンに割り込みをするためのピンである。別途用意したマイコンの、どこでもいいけどデジタル入力に対応したGPIOに繋ぐ。
DBG_RXD、DBG_TXDは基本的に最初の設定時にしか使わないので、実質的にはシリアル通信の2本と割り込み信号のくるピン1本の計3本のピンを別途用意したマイコンに繋げば良いということのようだ。
PCB作ってみた
PICO-V3-ZEROは、電子工作でよく使われているESP32-WROOM-32やWROVER-Bなどとはフットプリントの形が違っており、これらのために作られたブレークアウトボードなどにはんだ付けして使うことができない。
というわけで、KiCADでフットプリントを作成して、基板を作ってみた。毎度おなじみElecrowを使ったがツイッターで私がフォローしてる方々はJLCPCBの使用率が高いので、ちょっと乗り換えようかな~とか思い始めている。

PICO-V3-ZEROを乗せるところ、別途用意したSOIC-8のマイコンを乗せるところ、3.3Vレギュレータを乗せるところ、パスコン、ENピンのプルアップ抵抗を乗せるところ、シリアル通信のためのピンを繋ぐところ、という最低限必要なものだけ用意して、あとは色々実験用の回路を添えるためのユニバーサル基板エリアを用意しただけの回路である。

マイコンだけ実装してみたらこんな感じ。
別途用意するマイコンだが、私はアホなので「シリアル通信ができるなら何でも良いんでしょ?」と、秋月電子の1個70円(2023年3月時点)のATtiny202を使ってみた。
……が!
Alexa Connect Kitを使ってAlexa対応フルカラーLEDを作ってみた を参考資料としてみていると……
Alexa Connect Kitを使ってAlexa対応フルカラーLEDを作ってみた
1組のUARTと2本のGPIOがあり、ROMが128KB、RAMが32KB程度あればおおよそどんなマイコンでも使用することができます。
ATtiny202にはUARTがあり、GPIOの数も足りますが、ROMは64B、RAMは128Bなのでまったく足りてません。
つまりこれは、Amazonが提供しているAlexa Connect Kitのサンプルプログラムをそのまま書き込むことすらできないということ……?
でも粘ってみる(次回に続く)
本当にATtiny202ではダメなのか?を確かめるためには、ESP32-PICO-V3-ZEROと連携するためにどういう処理をしているのかを知る必要がある。
結局、接続ピンの少なさ的にはシリアル通信でやり取りをしていることは明確(というかそれ以外やりようがない)なので、同じ内容を通信してやることでプログラムサイズを節約しつつPICO-V3-ZEROとやりとりをするオリジナルのプログラムも作れるんじゃないかな……
というわけで次回の記事ではAmazonが用意したAlexa Connect Kitのサンプルプログラムを読み解いてみます。
読み取った結果なんもわからんとかやっぱりマイコンスペック的に無理だなとなったら諦めよう。
おわり
電子工作のツイッターアカウントつくったので良ければフォローお願いします。