Unit CAMと言うWiFiカメラモジュールを購入して見ました。
M5StickC Plus等を開発したM5STACK社の製品と言う事で、M5StickC Plus等とも親和性が高いのかと期待して購入してみたのですが、結果、大失敗でした。マイコンボードM5Stack用には、UIFlowの追加APIが用意されていて制御できるのですが、M5StickC Plusでは、この追加APIが選択できなくなっています。
何なん?この嫌がらせ?
そんな、「これぢゃない」Unit CAMを、何とかWiFiカメラモジュールとして使って見ようと奮闘するテーマです。
まずは、開発元の公式HPをリンクしておきます。
開発元の公式HP(別ウインドウが開きます)
下図がUnit CAMの外観です。
写真では小さくて見えませんが、裏面(上図右側)には技適マークがついています。国内で安心して電波を飛ばすことができる、お墨付きです。
※本製品(Unit CAM)はM5STACK社の製品なので、本物の技適マーク付き。あまり聞かない、知らない会社の製品で、似たような姿のカメラモジュールがあるけど、技適マークがついていない製品も存在するので注意。技適マークの無い機器で電波を飛ばすと、飛ばした人が違法行為で検挙される。
下方左右に開いたスルーホール3個×2列(左右)は、ファームウェアの書き込みインターフェイスです。
書き込みインターフェイス:
Unit CAMには出荷時点でファームウェアが書き込まれているため、そのまま使う場合は、このインターフェイスを使う事はありません。
筆者は、色々試したかったため、ピンソケットをはんだ付けして使いました。
下方の白いコネクタはGroveと呼ばれるインターフェイス規格です。
Groveインターフェイス:
最初の書き込みインターフェイスに有ったUART端子(RXD0,TXD0)とは別な、2組目のUART端子(RX,TX)が割り当てられています。
UIFlowやCamera Tools等で制御する場合は、GroveのUARTと接続することになります。
実は、公式HPの回路図と上の端子配置では、RXとTXの位置が逆転しています。でも、手元のUnit CAMでは、上の順番で正しく通信できました、という話です。
単に、「RXにはRXD、TXにはTXDを接続してね」と、言う意味の端子名なのかもしれませんが、普通、クロス接続🔀するUART端子名に、この表示は紛らわしすぎます。せめて、RXI(RXD Input),TXO(TXD Output)と、するくらいのセンスが欲しかったですね。
ここから先は、自分でファームウェアを書き込む方だけ読み進めてください。出荷時のファームウェアをそのまま使う場合は、次へ進むことができます。
ファームウェアを書き込むためには書き込み回路が必要と、なります。
ESP32系のマイコンボードを使っていれば、一度は目にしたことのあるであろう、NPNトランジスタが襷がけになった回路、あれが必要なのです。その回路を搭載した、ESP32の専用書き込みツールが売っているので、それを購入するのも、宜しいでしょう。
このページでは、ブレッドボードに襷がけ回路を作り込んで対処します。
Unit CAMへのファームウェア書き込み回路を以下図に示します。
NPNトランジスタ×2個、1kΩ抵抗×2個、10μF電解コンデンサ×1個と、ブレッドボードがあれば作り込む事ができます。
ブレッドボードに組み立ててみると、以下図の様になりました。
部品さえ揃っていれば、上図の程度で、比較的容易に作成できます。
あとは、USB⇔UART変換モジュール(例えばFTDI)が要ります。
よく見かける変換モジュールは、電源(Vcc,GND),RXD,TXD,DTRの5端子を備えています。
Unit CAMのVccは、公式HPには電気的特性の規定がなく、シルクや回路図、端子名などに「+5V」と記載があります。本HPで使っているUSB⇔UART変換モジュール(FTDI)には5V出力があるので、素直に+5Vを繋いで使います。信号線(RXD,TXD等)は3.3V定格なので、FTDIの電圧ジャンパは3.3V側に設定してください。
前節の回路図に於いて、ESP32への書き込みには上の5端子に加えて、RTS(Request To Send)端子が必要です。手持ちのFTDIでは、全ての端子が引き出し可能でした(下図)。
上図に見えていますが、RTS端子は右サイドのスルーホールだったため、ピンソケットをはんだ付けして引き出しました。
手持ちのUSB⇔UART変換モジュールが仕様を満たしていない場合は、大人しく、専用の書き込みツールを買ってしまった方が得策です(1^^;)っ。
Unit CAMとUSB⇔UART変換モジュールを、こちらの回路図に従って接続して、ファームウェアの書き込みに進みましょう(下図)。
ファームウェアの書き込みには、公式HPからダウンロードできるM5Burner(※)というソフトウェアを使います。
「公式HP ⇒ CONTENTS ⇒ EXAMPLE ⇒ UIFlowのリンク」をクリックすると、M5Burnerのダウンロードリンクが見つかります。
※M5StickC PlusへUIFlowのファームウェアを書き込むのに使ったのと同じソフトウェアです。
ダウンロードおよび解凍後、起動して、「Camera ⇒ UnitCamForUIFlow ⇒ Download」を実行、続けて、そのまま「Burn」を実行すると、書き込みが完了します(上図)。「Burn」を実行すると、Unit CAMと接続したUSB⇔UART変換モジュールの通信ポート名を尋ねてくるので、正しく指定してから「OK」してください。通信速度はデフォルトのままでOKでした。
公式HPによると、M5StackなどのUIFlowからUnit CAMを制御するためには、出荷時に書き込まれていたファームウェアを、上のM5Burnerで更新する必要があるみたいな書き方でした。筆者も当初は、M5StickC Plus+UIFlowで使おうと目論んでいたため、漠然と「ファームウェアの更新が必要だな〜」等と思っていました。
ところが、M5StickC PlusのUIFlowでは、Unit CAMのAPIを追加できず、どうやらサポート外の様子。UIFlowで使わないなら、出荷時のファームウェアをそのまま使えば良かったのではないのか??
UART通信でコマンドとデータをやり取りするだけのAPIだろうに、M5Stackはサポート有りで、M5StickC Plusのサポートが無いなんて、意味不明です。意地悪されてる?
今回のお買い物は以下の通りです。
秋月電子通商にて、PICAXEと同時に購入しました。
単体でWiFi接続できて(もちろん技適マーク付き)、ファームウェアが書き込まれているので手間も無く、簡便にカメラシステムを構築できるモジュールとしては、かなりお安い価格だったのですよ。
今回使用しなかった部品は、次回使います。
ムムム、のっけから「実施しなくても良かった無駄な作業」をしてしまった様です……?気を取り直して、先に進みましょう。