ESP32で簡単な"AIのドアマン"作りました。

しばらく電子工作から離れていたので、久しぶりの投稿となります。
ふとドローン以外のものが作りたくなったため、下のような「AIのドアマン」を作ってみることにしました。
f:id:mou-tsukareta:20190125085823j:plain

試作品の動画

あれこれした結果、試作品ですが完成しました。

アプリに関して

アプリに関しては、
・顔認識:OpenCVAndroidで使える!
音声認識AndroidAPIを使えば簡単にできる!
Bluetooth:ドローンのを使いまわせる!
ということで、とりあえず動くものが2週間程度で出来てしまいました。

ハードに関して

ハード面に関しては、PIC+RN42-I/RMでやろうと思いましたが、
色々調べてみると「ESP-WROOM-32」なるものを発見。
なんと!プログラマブルなICにBluetoothがついていて、秋月電子で一個500円!
PIC+RN42-I/RMの組み合わせなら2000円以上します!
これは買わなきゃ損だという事で、さっそく秋月電子DIP品の「AE-ESP-WROOM-32」と、
マルツパーツで書き込み用の「Arduinoシリアル-USB変換モジュール」を購入しました(Spark FunのFTDI Basic 3.3Vのやつです)。


しかもこのESP32はArduinoらしい、ということで今回がArduino初体験になりました。
Arduinoとして実際に触ってみると、実装や配線は滅茶苦茶簡単でした(笑)
なんとBluetooth専用のライブラリがあったり、PWM制御も専用の関数で一瞬で出来ちゃいます。
何の苦労・知識がなくても、電子工作ができる時代が来るんだなぁとしみじみしました(笑)

コンパイルのやりかたは、「Arduino ESP32」とかでググればいろいろ出てくるので詳しくは書きません。

現状、ブレッドボードでの試作段階での回路図を載せます。基板に起こさないので手書きです。
簡単な説明
・6Vを3.3Vに降圧してESP32に供給してます。
・サーボには6Vを直接供給します。
・IO4ピンからPWMを出力します。
・書き込み用にIO0とENにリセットボタンを付けています。
・書き込み用変換モジュールとの接続は赤色で書いてます。
f:id:mou-tsukareta:20190125075411j:plain



ESP32への書き込みは以下の要領です。
・変換モジュールのRXI⇔ESP32のTXD0
・変換モジュールのTXO⇔ESP32のRXD0
・変換モジュールのGND⇔電源のGND
・電圧低下が怖いのでサーボは外しておく(念のため。Lチカ実験時は、LEDつけっぱでも行けました)
の配線をした状態で、
①IO0のリセットボタンを押しながら、ENのリセットボタンを押して離す
コンパイル&書き込み開始
コンパイルが終わって書き込み中になったら、IO0のリセットボタンを離す
④書き込みが完了したら、ENのリセットボタンを押して離す。
で書き込みが完了しましたとなればOK.

最後に

今回の成果です。
・わずか500円でスマホからの無線制御環境を手に入れました。
AndroidアプリからOpenCVで画像処理できるようになりました。
・超ブラックボックスですが、AndroidAPIから音声認識できるようになりました。


今後の課題は、
・ガワの設計(Fusion360で設計して3Dプリント)
・基板の設計(EAGLEでやります。表面実装品を手はんだします。)
・顔認識から個人識別へ発展させる(OpenCVのライブラリにはないので、LBPHなるものを自力で実装するのでしょう、、、)
・超ブラックボックス音声認識を理解する
です。

以上、ずいぶんと端折りましたが、必要な項目等あれば気づき次第加筆してきます。