デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る(第3回)

# 救世主あらわる・・だが？

こんにちは！京セラコミュニケーションシステムの大山です。
前回自身の認識不足とカメラの仕様によりオカモチサイズまで筐体が大きくなりポータブルとは言えない状況になってしまいました。
ここからどうコンパクトに変えていくのかそれでは第3回スタート！

## 連載記事一覧
[デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る(第1回)](https://qiita.com/kccs_susumu-oyama/items/7d758f524b0bbfb1b3e0)

[デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る(第2回)
"バッチ検査ってそういうこと！？"](https://qiita.com/kccs_susumu-oyama/items/f92a0c7b164ca3846130)

**デモ機製作の舞台裏を覗く - ラズパイとNode-REDでポータブルなデモ機を作る(第3回)**
**"救世主あらわる・・だが？"　★本記事★**

## この記事の対象者
Node-REDでRaspberryPiのGPIOを制御したい方
Node-REDのダッシュボードを使ってみたい方
RaspberryPiでリレー制御してみたい方
フィッシャーテクニックを動かしてみたい方

## なんといってもUSBカメラが・・・
現状のUSBカメラでは画角が狭くどうしても高さが必要ということで一つ案を思いつきました。
オンライン検査はベルトコンベアで一個ずつ流すので画角は広くなくてもいい。つまりこのカメラはオンライン検査用に回してバッチ検査用を再度購入すればいいじゃないかということで、近距離でもたくさん撮れる広角で、できればカメラ自体も小さいものがないか探してみました。
そして見つけたのがこちらの基板むき出しのオートフォーカスUSBカメラ。

![Q-0105_カメラ調査.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/c7d2de3c-e731-c600-2d77-33148333f50c.png)

こちらを購入して数日後・・・
USBカメラ納入！！箱を開けてみると小さい・・前回購入したカメラの3分の1くらいの高さでだいぶいい感じです。
あとはどれくらいの距離で20個以上収まるかを確認すると・・・
なんと150㎜の距離で20個以上収まりそうな感じ！

![Q-0105_カメラ.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/68e23832-0c45-b9a5-e7e0-c8b91b4ead7f.jpeg)

照明用に一緒に購入したリングLEDとも形状的に相性よさそう。
ということでこのUSBカメラを使用した筐体はこちら

![Q-0105_筐体.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/7b5021b3-9fa1-bc2a-0513-1f9943d279ca.png)

オカモチから20cm小さくなりました。
まさに救世主あらわる！！

## とりあえずNode-REDで画像を取得してみる
サイズもだいぶコンパクトになっところでラズパイに入れたNode-REDでUSBカメラからの画像取得をためしてみます。
※Raspberry Pi 4　OSはBullseyeの環境で実施しています。

使用ノードは以下
inject
usbcamera
debug

まずはラズベリーパイのUSBカメラを有効にします。
LXterminalを開いて
$ sudo raspi-config
と入力してコンフィグ画面を出します。

![Q-0105_コンフィグ画面1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/24a34e9f-c6d1-51ad-f544-5f518dc4cc34.png)

Interface Optionsを選択します。

![Q-0105_コンフィグ画面2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/4886dc03-1b3a-cf3a-3b7a-4b2d4acd5aea.png)

Legacy Cameraを選択し有効に設定します。

![Q-0105_コンフィグ画面3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/da493844-f473-7f83-3739-e9c239290c27.png)

次にusbcameraノードを使用するためにfswebcamをインストールします。
LXterminalを開いて
$ sudo apt-get install fswebcam
と入力して実行します。

Node-REDを開いて
usbcameraノードをパレットマネージャからノード(node-red-contrib-usbcamera)追加をします。

![Q-0105_パレットの管理.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/89245119-f526-f8b0-3131-fd20e7deadf2.png)

追加が完了したらinjectノード,usbcameraノード,debugノードを配置して繋ぎます。
デプロイボタンを押してデプロイ実行後、あとはInjectボタンを押すだけでusbcameraノードが処理を始めて画像が保存されます。

![Q-0105_カメラフロー.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/3d2bec15-c2f4-a771-8a85-bfbb5e0afcf2.png)

正常にノードが実行されるとdebugノードに保存先が表示されます。
※画像ファイルの出力先はデフォルトの場合、/home/ユーザ名/pictureフォルダにimage01.jpgとして保存されます。
※デフォルトの場合、画像が上書き保存されるので、画像を撮影のたびに残したい場合は、msg.filenameに日付や番号など毎回違う名前を入れ、usbcameraノードプロパティのFile Nameを空欄にしてデプロイ後、usbcameraノードを実行させるようにしてください。

![Q-0105_キャップ画像.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2748038/860b3e5f-01f6-4f6c-059d-b14a749c4f17.jpeg)

保存された画像を開いてみるとこんな感じ。ただ何度か撮影を試していると時々フォーカスがあってないぼやけた画像が撮れてしまう・・・
推測になりますが、前のカメラだと手動でフォーカスを固定できたので問題なかったのですが、今回購入したカメラはオートフォーカスの為、フォーカスが間に合わない状態で画像が保存されているのではないのかなと、いずれにしてもデモ中にカメラがぼやけてAIが判断できませんでしたとかなるとまずいのでどうしたものか・・・

ということで今回はここまで！
折角現れた救世主を何とか使いたい！（というか購入してしまったし使えないと困る。）ですので何とか使えるよう奮闘します！
次回「目のかすみにはマニュアル点眼薬」お楽しみに。