OAK-D-WIFIに乗ってるESPでサーボを動かしたい
あるもの
買わないといけないもの
- OAKに乗ってるESPのGPIOを引き出すコネクタ
- コネクタヘッダ買った!
- ハウジング買った!
- コンタクト買った!
- ワイヤ(28AWG)買った!
- サーボ駆動用バッテリー(6-8V)
PC側で用意するもの
- ESP-IDF
将来的にはArduinoIDEが対応するらしいけど、まだ対応していないしこっちのほうが深いところを触りやすいらしい(よく調べていない)
ESP-IDF
とりあえずhello world
できたね.良かったね
引っかかったとこ
手順通りにbuild通そうとしたらエラーが出た
mbed関係らしく、完全に解決策が出てるわけではなさそうなので雑にmenuconfigから関係してるとこを無効にする(ちゃんと理解していない)
無効にしたらbuild通りました.やったね(よくない)
ESPとサーボの接続を考える
子曰く、ESP32-GPIO2,4,12-15が上側のコネクタに出ててI/Oを使える、下側は予約があったり入力だけだったり使いにくそうなので一旦無視。
かのように見えたけど、上側のコネクタの方々は子曰くすでにMyriadXのGPIOともつながっていて何なら子曰くそもそも上側のコネクタにはサーボで必要なシリアルの機能を持ってるピンが存在しない(ソフトウェアシリアルは嫌なので)
ということなので下側のピンのGPIO-16,17さんたちを使うことにします。
MyriadX的にはUARTが出力もあるのでもしかしたらdepthai側から直接サーボ動かせそうですね 今度調べます。
GPIO-16,17たちはOAK-D-WIFI的にはESP32から出力が伸びてるだけなので多分問題なく使えます。やったね。
接続用回路を作る
一方的に動かすだけなら下図でいいです。
サーボの状態読みたいときは、74HC126を使ってSerialを一本にまとめる必要があります(ユーザマニュアル参照)
私はめんどいしサーボくんは素直に動いてくれると信じているのでひとまず一方的につなぎます。
ただ将来的に「状態よみたいな〜」って日が来るので74HCを使った回路を作れるようにしときます。
現世にはハーフピッチユニバーサル基板という便利グッズがあるのでそれを使って脳内設計でやります
作ったら載せます
通信プロトコルの実装
ESP-IDFで適当に作ります。
MyriadXのSPIから指令値受け取ったらそれに向けて動かせるようにしとけば文句はないでしょう。
作ったら載せます
ROSノードの作成
deepthaiからESPにspi送れるので、せっかくだからROSノードにしたいですよね。
ESP自体をROSノードにできたら簡潔なんですけど、めんど大変そうなのとOAK用にカメラはつなぐのでESPをROSノードにして彼の少ないリソースを消費する理由はないです。
depthaiをROSで動かすのはできるのでspiの実装もできるでしょう
作ったらのせます。
できた!
できたらのせます。