Klipper(mainsail)のカメラにESP32-CAMを導入してKP3Sに取り付けた

3Dプリンタの監視カメラはとても便利だ 

Mainsail等のKlipperフロントエンドやOctoPrintはUSBカメラだけでなく、ネットワークカメラの表示にも対応している

技適対応のESP32 CAMという激アツおもちゃがaitendoで販売されていたので遊んでみることにした

※amazon.co.jpで売ってる似たようなやつは技適が通ってないESP32なので日本では使えない

今回購入したaitendoで販売しているESP32-CAM kit

https://www.aitendo.com/product/19515

・ハンダ付けが難しい(アーム付きのヒートガンまたはリフローできる機材が必要)

・USBシリアルTTLモジュールも必要になる

これらが厄介という人向けに両方実装済みかつ”技適の通った”(←重要)基板もamazonで売られている(価格はちょっと高い)

aitendoのESP32 CAMの方はシリアル変換チップやピンヘッダがないため

こんな感じでKP3SのX軸にコンパクトに設置できる(基板むき出しだけど)

マウンタの公開先

 Thingiverse:ESP32 CAM kingroon kp3s X axis 
 https://www.thingiverse.com/thing:5800012


□どんな感じに映るか

カメラ画像の比較

エンクロージャに付けているLogicoolのC525と並べて比較してみた

ESPCAMの方はフォーカス調整をするのを忘れたので本来はもうちょっとパリッとした絵になる

KP3Sに取り付けた際の画角や画質はこんな感じ(標準68度レンズ)

こっちはレンズを回してフォーカス調整済み

(レンズ回すの固すぎてプライヤーでやっと回せた)

定着不良や印刷失敗は十分確認できそうだ

追記:68度レンズ、120度レンズ、160度レンズの画角比較

後から注文した広角レンズ2種類が届いたので比較してみた




追記終わり

□電源配線

カメラの配線は交換も考えてコネクタをハンダ付けした(1mm程度少し浮いてる)
ヒートシンクはなくても良いが余っていたのでつけた

配線はこんな感じにまとめた

電源はメインボードのリミットスイッチコネクタから取った
シルク印刷にある通り右側が5Vで真ん中がGNDのピン配置になっている
適当な空きポートに接続すればいいので簡単だ
ちなみに消費電力は0.1Wぐらい

□スケッチ書き込み、ルーターの設定

当初、ESP32 CAMで使われるサンプルスケッチの「CameraWebServer」を使用していたのだが、このサンプルスケッチは同時に配信できるストリーミング数が1しか無い

これは非常に不便で、例えば、PCでスライス実行して印刷中は他の部屋に移動したとする

移動した先でスマホでカメラを確認したらカメラ画像が見れないという感じだ

これを解決するために10台までのマルチストリーミングに対応したArduinoスケッチを公開してくださっている方がいたのでこちらを書き込むことにした

arkhipenko/esp32-mjpeg-multiclient-espcam-drivers

https://github.com/arkhipenko/esp32-mjpeg-multiclient-espcam-drivers

動画のように複数のブラウザで低遅延に動作している

ありがてぇ...ありがてぇ

ESP32 CAM単体でこれを実現しているのがすごい


上記リポジトリから一式をZIPファイルでダウンロードして解凍

「esp32-cam-rtos」を開く

フォルダ内に

「home_wifi_multi.h」

を新規作成して2.4GHzのSSIDとパスワードを記載する

たとえば、自宅のWIFI設定が

SSID:abcdefg

password:abcdef12345

だった場合

  #define SSID1 "abcdefg"

  #define PWD1 "abcdef12345"

の2行だけ記載したファイルを作成する(ダブルクオーテーションは必要)

次に「esp32-cam-rtos.ino」をArduinoIDEで開き、

40行目の行頭に//を入れてコメントアウトする

//#define CAMERA_MODEL_ESP_EYE

43行目の行頭の//を消してアンコメントする

#define CAMERA_MODEL_AI_THINKER

485行の  s->set_vflip(s, true)

なぜか上下反転する設定になっているので、s->set_vflip(s, false)に変更


もし、解像度を変更したい場合は421行をいじる

以上でスケッチは完成


ESP32への書き込み設定はスケッチ内で指示されたとおりに行った

ピンセットなどでIO0とGNDを導通させながら書き込みモードで起動させる

USB−TTLの基板+サンハヤトのスルーホール用テストワイヤの組み合わせはおすすめ


書き込み後にシリアルモニタを開き、リセットボタンを押して再起動

成功していれば上の画像のようにストリーミングサーバーのリンクアドレスが表示される

ブラウザで開いて映れば成功


mDNSが使えないのでルーター側でESP32のMACアドレスへ配布するIPアドレスを予約する


IPアドレスが決定したらMainsailに設定して完了

UV4Lだとどの環境でも正しく映るから多分これが正しいはず

(下のチェックボックスは不要、この時はスケッチのvflip設定に気づかずMainsail側で反転させてた)

□USBカメラとの違い

利点

(無理やり絞り出した)

・3V〜15Vの電源線2本配線するだけで動作する

 →Raspberry piから離して設置できる

 →1台のRaspberry piで複数プリンタを制御する際に助かる

 →zeroとかA+とか使う際にUSBハブを使わずに設置できる

・Raspberry piのUSBポートを物理的にも帯域的にも消費しない

 →1台のRaspberry piで複数プリンタを制御する際に助かる

 →USB3.1の無いRaspbery pi でカメラをたくさん増やしたい人もたすかる

・レンズ画角が68度(標準)、120度(広角)、160度(魚眼)と結構選べる

 →今回買ったのは68度のやつ

 →120度と160度の広角センサーも注文してみた

欠点

・プリンタから電源を取ったので、印刷終了後にプリンタの電源が切れるとカメラも切れる

 →あらためてプリンタを起動させないと印刷が上手く行ったかカメラ越しに確認できない

 →それを見ているスマホで起動ができるのでまあ一つ手間がかかる程度のこと

・センサーがOV2640一択

 →USBカメラは高画質なモデルを選択する事ができる


□購入する場合の注意点

日本でESP32 camを使用する際には日本国内での使用を許可されたモジュールを買う必要がある

間違った物を使用すると刑事罰の犯罪なのでやめよう

判別

1.認証番号の付いているモジュールを探す

2.その番号を、「総務省の技術基準適合証明等を受けた機器の検索」

https://www.tele.soumu.go.jp/giteki/SearchServlet?pageID=js01

で正しい番号であることを確認する

おわり

↓技適対応でレンズ2種類ついてかわいい奴

コメント

このブログの人気の投稿

MoonrakerでSSRやスマートプラグを制御して3Dプリンタ本体電源と連動させる改造(Klipper、MainsailOS)

ホットエンド冷却性能比較

Orbiter Extruder mount for KP3Sの作り方