Webカメラ
最初、ラズパイZeroWで監視をしていたときには、ラズパイ用本体接続カメラを使用していたが、 OctoPiにしてからは、本体カメラは使えそうにないので(内部のmjpg-streamerをいじる必要がある)USB接続の webカメラを使用。
しかし設置位置に苦戦。普段見る状態と同じ絵を流してほしいので、結果的には前面パネルに貼り付ける状態に。 しかしかなりやっつけ感満載で、このまま運用を続けるというわけにもいかない。いろいろ邪魔だし。

カメラ分解
使用しているカメラは、Buffaloの「BSW20KM15」 200万画素でかなり安かったので買った気がする。

土台とかついてて、色々便利そうなのだが、実は色々邪魔。簡単な作りなようで、結構しっかり作ってあり、 分解は難しい。といいつつ色々いじり倒して本体ケースオープン。あぁ、やっちゃった。

結果的には全バラに。カメラ本体を取り出すケースの爪がきつかった以外は、精密ドライバがあれば分解は簡単。 カメラ部分は基板一枚構成。ケース邪魔だし基板で運用すると楽かな。

せっかく壊した?ので、3Dプリンタでケースを作ってみる。Fusion360を始めたばかりで色々難しい。 簡単な構造でも一つ何かやろうとすると、色々うまくいかず、ちょっとした修正だけでかなり時間を取られる。 早く慣れたい。本買って勉強しよう。
なんとか作ったケースだが、今度は印刷で失敗。空中に浮く部分はなるべく作らないようにしないと。 やはり最終的な印刷についても考えながら設計しないといけないことを習得。勉強すること多い。

ケースとフタを分けて作ると、ちょっと楽であることを発見。接合部をどうするか考える必要が出てくるが、 はめ込みを用意してみた。何となくここで噛み合えばいいかな。いざとなったら接着剤も。 上にはネジ穴を用意したので、どこかに引っ掛ける予定。なんとなく色々イメージが湧いてきた。

ちなみにカメラ装着は問題なく完了。ここに来るまで大量の失敗作を作っていることは、秘密。

カメラ装備
もともとのwebカメラから台座がなくなったような状態のカメラに変化したのだが、おかげで身軽になり、 前面アクリル板への貼付け!は楽になった。いや、まだまだ貼り付け運用では意味がない。

さて、どうしようか悩むところなのだが、ネジ穴を活かし前面ではなく側面に取り付けてみる。 横窓の上側ネジを利用して、カメラケースを共締めする。レンズの高さが案外ちょうどよく、ノズル位置と大体一致。 逆にハンドルネジだと高すぎる。
エクストルーダを支えるX軸が移動するが、これにぶつかること無く設置可能。 しかしノズル前にフィラメント冷却ファンとその吹き出し口が有り、ギリギリノズルが見える状態。 また、天井のLEDが少し視界に入り難しい明るさに。あと、ネジは少し長くしてやらないと、ナットがギリだな。

とはいえ、逆に右側側面の場合だと、Y軸モータがあるために、こちらに隙間は殆ど無い。 側面設置の場合は左側一択だ。
映り具合としては、まあまあいいんじゃないだろうか。真横よりは少し上からの俯瞰のほうがわかりやすいのかな。

改善
ケースを自作し、なんとなく何かが作れるようになったので、少し改善を図ってみる。 現在の問題点としては、
- 左側からの撮影は冷却ダクトで少し見づらい
- LEDが視界に入り眩しい
- 影が多く、造形物が見づらい
といったところ。これらを改善すべく対策を考えてみる。
まずは、カメラ設置位置の変更を考える。左側面からの撮影となっているが、正面に置くのは自分が覗き込むときに邪魔。 右側面はY軸モータで隙間なし、後方はLEDが画面にかなりはいってきそうなのと、思いっきり逆光で見づらい気がする。 なかなか良い場所はないのだが、前方の左右どちらかに設置すれば、半分正面から見えていいかもしれない。 左側のほうが空間が広く設置は容易だが、エクストルーダの左側の冷却ダクトが少し邪魔かも。 右側はY軸モータが一番手前に来た時かなり空間不足。ギリギリの設置が可能か?
ということで、色々設置場所に悩む。カメラを取り付けて固定が必要なので、その仕組も重要。 そこで目についたのが、右上にある前扉のちょうつがい。このネジの上側は貫通しているので、長いネジを使えば内側まで通る。 ここに引っ掛けてやると右上位置に設置ができそうだ。

といっても、この位置にカメラケースをぶら下げると少し上すぎる。カメラの目線としてはノズルの高さと一緒が良い。 ノズル位置まで下げたいところ。なのでネジ位置から少し下に下げるアームを作ってみる。 プラプラしないように、2つあるネジ両方を通る穴を用意して、固定。右隅に固定できるようにしてみる。 狭いところの寸法は測れないので、このあたりは適当。長い短いをみて寸法合わせしてみる。

右隅は空間が空いていると思ったが、プリンタヘッドが右前まで来ると、案外空間はない。 また、ここに直角にカメラを置くと印刷台は映らない。すこし真ん中を向けさせる必要がある。 狭い空間でいろんな機能が必要となり、アーム作成は難航。作って、試しては失敗が続く。

あまり右隅じゃなくても、自分が覗き込むのは真ん中で、扉の右付近ならあまり視界の邪魔にならないことがわかり、 カメラは少し真ん中に寄せてみることに。これでカメラの角度は極端に真ん中を向ける必要がなくなり、 ゆるく真ん中を向かせる。左右方向の角度をつけると、薄いカメラも角が飛び出し、プリンタヘッドにぶつかるようになる。 案外ここも空間はないので、注意が必要。

ということで、いろいろと調整がついてきたアームが完成。見えない部分に設置となるので、作りは最小限質素とした。 カメラ取り付け部分には20度の角度をもたせ、真ん中を向くようにした。カメラ高さ位置はだいたいこれがベスト。

あと、カメラケースなのだが、少々厚みがあるため、真ん中を向かせるために角度をつけると、プリンタヘッドにぶつかってしまう。 なのでなるべく薄めに、そして右前側はいろいろカットをして、ぶつかりにくくしてみる。 しかし、前側はレンズ、後ろ側はケーブルコネクタと、うまく空間を使って薄くしてやる必要があり、なかなか難しい。 何個か作って試してみて、とりあえずの完成版。

取り付けてみると、う~ん一番右手前までプリンタヘッドが来ると、ちょっとぶつかる。まあ引っ掛けておかしなことにはならず、 カメラが押されてしまう程度なのだが、惜しい!なかなかいい位置での良い配置は難しい。

ちょっと当たるだけなので、まあいいか。このまま使ってみよう。
改善
(2018/02/06)何とか3Dプリンタ内部に取り付けたWebカメラなのだが、カメラケースとアームの2部品構成で、ネジとナットで取り付けている。 しかし、内部の振動でなのか、これが緩みがち。もう少し改良を考えてみよう。
取り付け位置を右側に寄せて、真ん中を向くようにしてみたが、真ん中位置でも上の方に配置すれば、問題ないと思われる。 真ん中位置の上の方から移動するエクストルーダには当たらない位置を探して配置してみる。

カメラケース
まずはカメラ本体が入るケース部分を作成。前回のものはなんだか複雑になりすぎて、直せなくなったので、 シンプル設計で新規作成実施。位置を測るためにネジ穴だけ作成して直下型にて作成。

これで位置測定を行ってみると、高さ的にはもう少し下まで下げられそう。横位置は70mmくらい寄せた位置が真ん中となりそうだ。 ものさしと目測でなんとなくの寸法を測ったら、それを元に設計実施。ちょうつがいのネジ穴を用意して、 そこから横に渡す横棒を準備。カメラ自体は重くはないので、2mmx10mm幅で大丈夫だろう。印刷時は当然支えが必要なので、 サポートを入れるが、少々は渡ってくれるので飛び飛び位置にサポートを入れてみた。 問題なく印刷完了。さてどうかな?

作ってみては、位置調整を行い、3回程度調整実施。カメラケース側でカメラをうまく固定する方法がわからなかったが、 コードの根元のゴムを挟み込んで一緒にカメラ本体も固定させると、いい感じに固定できた。 また、ゴムを外すとカメラも外しやすくなり、取り付け取り外しが簡単にできて便利。
たまに印刷でベッドとの接着が弱く、サポートが倒れることもあったが、この回はその後復旧を果たし、造形物本体には影響が出なかった。 よく頑張りました。

とりあえず、最終型。カメラケース側はカメラが若干下を向く様に、斜めに溝を入れてあり、若干上位置から下を見下ろすようにした。 それに合わせてレンズ位置の穴も下側を広げる。なかなかいい位置に配置できたように思う。

このあと、Fusion360の動きがおかしくなり、一切保存ができない事態に。クラウド保存も出来なければローカルへのエクスポートも不可。 データは一切保存することができなくなり、せっかく作ったデータもおじゃんに。なんだよFusion360ちゃんと動いてくれよ。 まあかなり高機能なものをただで使わせてもらってるから、あまり文句は言えないが、こまめな保存は必要だな。
広角Webカメラ(2018/03/25)
なかなか全体をうまく収められず、苦労していたところ、広角のUSBカメラがあったので購入してみた。

既存のものは66°だが120°と広角レンズを採用しているらしい。 これなら、プリンタ内部設置であっても、ベッド面全体を映してくれるんじゃないかな、と期待。

しかし、本体は大き目な台座があったり、やけに横幅が広かったりと、大き目で邪魔。これはやはり、アレをやるしか。。。

分解
ということ?で、分解開始。前回のBSW20KM15よりは、裏のねじを外すだけで分解できそうなので、割と簡単。

両端にある小さなねじを精密ドライバーで外したら、真ん中の上下あたりがツメで留まっているので、 ゆがませながら外すと分離できる。

あとはホイホイ分離していけば、分解完了。ではここから必要最小限のものだけにして、内部カメラに仕立てよう。

接続確認
さて、簡単に分解できたので、つい分解してしまった。一応どれくらいの範囲が撮影可能なのかを確認しておかなければ。 ということで、カメラを差し替えてOctoPiで参照してみると、あれ?映らない。

ヤバイ。ちょっと勇み足だったかな?OctoPiでは、カメラは何でも使えるわけではないらしく、ある程度決まったものしか使えないらしい。 動作確認済みの一覧はこちら。
マズイ。前回機種はつなぐとそのまま使えたので、今回も同様かと思ったのだが、甘かった。新機種のためOctoPi側が対応していない? せっかく購入したのに、そしてすでに分解までしてしまったのに、使えないのは嫌だ。 ということで、いろいろ探してみると、いい記事を発見。
こちらの記事の中に、「USBカメラが動かない場合、OctoPiの設定ファイルを修正すると動かせるかもしれません。」という 心強い言葉があり、よく見ると同じカメラの機種で同じ現象に遭っている。読み進めると、 「BSW20KM11BKはフレームレートを30にすると使えました。」との記載があり、/boot/octopi.txtファイルの内容を少し変更すれば大丈夫な様子。 よかった、同じようにやってみよう。
camera_usb_options="-r 640x480 -f 30"
もともとコメントアウトされていたcamera_usb_optionsの先頭の「#」を削除して、後ろのパラメータを上記のように直して保存。 USBにカメラをつないで起動し、OctoPiでwebでつないでみると、カメラの映像が出てきた。よかった。

とりあえずカメラの映像出力の問題は解決。カメラは何でもいいわけではないんだな。危なかった。
合わせて、高解像度も行けるらしいので試してみたが、記事にある通り表示遅延が大きい。 数秒遅れて表示される感じ。リアルタイムである必要は少ないので、これでもいいかと思ったが、 web画面で見るサイズは変わらず、あまり意味がないので、少し大きめの「800×600」にしておいた。
camera_usb_options="-r 800x600 -f 30"
カメラマウンタ
カメラマウンタを用意する必要がある。速攻で殻を剥いて分解してしまったため、基板むき出し状態のカメラなので、 うまく全体が見渡せる位置に設置できるようなマウンタを用意してやる必要がある。
前回より基盤が大きく、レンズも大きめ。しかしどうせ3Dプリンタ前でずっと眺めることはなくなったので、 人の視界が少々ふさがれてもいいので、いい位置にカメラを設置して、カメラ越しによく見えるようにしたいと思う。 ということで、とりあえず作ってみた。

カメラのレンズ位置にフィットするようにマウントを作成してみた。 しかしマウントはきちんと固定されていないので、ぐらぐらしてしまう。これだと印刷時のプリンタの揺れで画面が揺れてしまいそうだ。

とりあえず小さなクリップを作って、はめ込むようにしてみた。 両側から挟み込めばそれなりに固定された。まあまあ十分だ。

角度補正がしやすいようにと、2パーツ式にして、ねじ止めによる固定とした。上から吊り下げるようにしたのだが、 少々低すぎた。ベッドと同じ位置までレンズ位置を上げようとすると、13mmくらい上げたほうがよさそう。

吊り下げアームの長さを13㎜減らして再設計して印刷実施。Fusion360はうまく作ればこういった設計変更が簡単に可能。

これで取り付けしてみると、そこそこいい感じに取付完了。表示される映像を見てみると、ベッドが一番上の時点で、 水平位置に映っている。これで大丈夫だろう。

まあ、これくらいのスタート位置ならいいんじゃないかな。

印刷終了時もそれなりに出力物が見える状態となっているので、いい感じ。MAXサイズのものになると、 どのように見えるかわからないが、下の図のような高さ30mm程度で、こんな感じに見えるならOKだ。

800×600にしたので、リアルタイムに見るには数秒の遅延が発生するが、数秒程度なら問題なし。 できあがりのムービーが800×600と大き目にできあがるので、見やすくてよい。