エントリー

3Dプリンタカバーなど(続)

マザーボードを変更する前にやっておきたいことがようやく終わりそう

IMG_20230818_140040.jpg

エンクロージャー

上の蓋と手前に扉を作製

IMG_20230811_120803.jpgIMG_20230811_120817.jpg

全てはめ込み式にしたので取り外し可能

上部から覗きこめるように透明板(透明写真立ての板を使用)を付けたが前面からも見えた方が便利そうなので後で扉にも付けた

IMG_20230811_120826.jpgIMG_20230811_162923.jpg

扉に使用するための丁番が(ダイキ)だと高価だったので3DプリントしようとしたがCADで上手く作れない

困っていたらコーナンで嬉しい安価版を見つけた

IMG_20230823_131632.jpg

扉留めには磁石を埋め込んだ

フィラメントガイドも隙間ができないように作り直している

エンクロージャは主にABSの積層割れ対策だが,消費電力の改善や冬場の温度保護にもなるだろう

エアフロー用FAN

エアフロー用FANは上部のバーに付け,コントローラをラズパイボックスの横に付けて24Vを元電源から引いた(コントローラはエンクロージャ内に設置予定だったが熱のため変更)

IMG_20230820_135100.jpgIMG_20230822_132146.jpg

温度監視

エンクロージャの上部と下部で温度監視するためBMP280を2個I2C接続で使用

コントロールはラズパイで行うがOctoPrintは利用できないので,映像を含めてラズパイで監視システムを組み込むことにした

(BMP280)

I2C接続した2つのBMP280から温度を取得するためpythonでプログラミングするのだがBMP280のライブラリが無いのでArduino版を参考にして作る( 写真はラズパイ3Bを使ってテスト中)

IMG_20230812_132613.jpg

しかし何故か温度が5~6℃高くなる

Arduinoで確認すると正常なのでBMP280の異常ではない

後で見つけたBME280のスイッチサイエンス版(1接続用なので利用できない)でも同様で温度に誤差がある

読み込んだレジスタ値を(同時ではないが)Arduinoで読んだ値と照合したところ異なる部分があるのでBullseyeのI/O Ctrl部かI2Cの不具合も考えられる

原因不明なため温度の元になる値を5℃分強制的に下げることにした(気圧値にも影響あるため元になる値を補正)

(配信の実装方法)

取得温度の表示はリアルタイムにするため「websocket」を利用(websocketは初なのでこちらが参考になった)

映像は「OpenCV+websocket」「RTSP」「GStreamer」を試行してみたところ正常動作しないので「MJPG-Streamer」を使った(Bullseyeなのでこちらを参考にすると良い)

(OS設定)

ラズパイZERO WHで使用するので32ビット版のBullseyeを使う

2023-05-03-raspios-bullseye-armhf-lite.img.xz

後で再セットアップした際,最新のラズパイイメージャーが正常に動作したので利用したが直接書き込んだ場合以下の問題あることが判った

SSHを有効にするため「/boot/ssh」(拡張子なし)を作成するが,SSHでログインできるUIDが無い

→ 最初の起動でパーティションを拡張,再起動後,consoleでユーザとパスワードの設定待ちとなっている

ログインできたら定番の設定

$ sudo raspi-config

host-name → 当ネットワークの命名規約
LANG → UTF8追加
TimeZone → ASIA,Tokyo

I2C Enable
Serial console Desable + Serial Enable(Bullseyeで扱いに変更あり

$ sudo apt update --allow-releaseinfo-change
$ sudo apt update
$ sudo apt upgrade
$ shutdown -r now

(注)IPアドレスはDHCPサーバにて管理

pythonとGPIO

$ sudo systemctl disable hciuart. → (Bluetoothで「PL011」を使う設定をUARTで使うようにする)

(pythonセットアップ)
$ sudo apt install git
$ sudo apt install python-dev python3-pip

(pipの確認)
$ python -m pip -V
/usr/bin/python: No module named pip

(pipのアップグレード)
$ sudo pip install --upgrade pip
...
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 20.3.4
...
Successfully installed pip-23.2.1

$ pip -V
pip 23.2.1 from /usr/local/lib/python3.9/dist-packages/pip (python 3.9)

(GPIO出力)
$ sudo pip install wiringpi
...
Successfully built wiringpi
Installing collected packages: wiringpi
Successfully installed wiringpi-2.60.1
...

(websocketライブラリ)
$ sudo pip install tornado
Installing collected packages: tornado
Successfully installed tornado-6.3.3
...

(smbus2を使用可能にする)
$ sudo pip install smbus2
...
Installing collected packages: smbus2
Successfully installed smbus2-0.4.2
...

$ i2cdetect -y 1
0 1 2 3 4 5 6 7 8 9 a b c d e f
00: -- -- -- -- -- -- -- --
10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
50: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
70: -- -- -- -- -- -- 76 77

MJPG-Streamer(映像配信)セットアップ

$ sudo apt update
$ sudo apt install -y git cmake libjpeg-dev
$ cd
$ git clone https://github.com/neuralassembly/mjpg-streamer.git
$ cd mjpg-streamer/mjpg-streamer-experimental
$ make
$ sudo make install

ラズパイ専用カメラモジュールを使う場合 (input_raspicam.so)
$ cd $HOME/mjpg-streamer/mjpg-streamer-experimental
$ mjpg_streamer -o 'output_http.so -w ./www -p 8080' -i 'input_raspicam.so -x 1920 -y 1080 -fps 30 -q 10'

USBカメラを使う場合 (input_uvc.so)
$ cd $HOME/mjpg-streamer/mjpg-streamer-experimental
$ mjpg_streamer -o 'output_http.so -w ./www -p 8080' -i 'input_uvc.so -d /dev/video0 -r 640x480 -fps 30 -q 10'

-wは//(root)のコンテンツを指定する場合
-pのポート指定は8080でないと動作しない(コンパイルで固定になっている部分があるのか)
ラズパイ専用カメラモジュールはUSBカメラのライブラリでも動作する
LD_LIBRARY_PATH=/usr/local/lib/mjpg-streamerの指定無しでも動作した(上のコマンドはライブラリのあるディレクトリで起動している)

(コード)

温度表示サーバ(server.py):websocket(tornado)用のサーバサイドpython

映像配信サーバ(mjpg-streamer.sh):MJPG-Streamerサーバ起動用のプロシージャ

監視画面用HTML(main.html):温度表示サーバと組みとなって表示(CSSは未公開)

BMP280温度(newBMP280_2.py):server.pyから使用されるBMP280温度取得python

CPU温度(cputemp.py):server.pyから使用されるCPU温度取得python

(監視画面)

WS202324.png

エンクロージャ内は暗いので照明が必要か

(追加:2023.08.24)

照明を追加12VのLEDモジュールを2個直列して24Vで使用(バーに引掛けて設置)

IMG_20230824_173416.jpg

見える程度にはなったのでとりあえずは良しとする

WS20230824_02.png

外気31℃時,PLAの印刷にて(ビルドプレート50℃設定)上部がMax.42.1℃,下部がMax.39.9℃まで達した

(設置)

I2C用のケーブルをどうするか悩んでいたところ丁度コネクタが異常になったUSBケーブルが出来たので利用

IMG_20230816_111914.jpg

設置用のパーツ(センサー台,ケーブル止め)は3DプリントしてXH端子を付けて完成

IMG_20230817_145015.jpgIMG_20230818_162108.jpg

レールのTスロットに差し込んで回せば止まるように作ってある

IMG_20230820_135108.jpgIMG_20230820_135121.jpg

接続元は基板の空きがなかったため2段にした(いいかげん作り直せばいいのだがw)

IMG_20230822_132120.jpg

排気(未)

冬までには追加する予定

ページ移動

コメント

  • コメントはまだありません。

コメント登録

  • コメントを入力してください。
登録フォーム
名前
メールアドレス
URL
コメント
閲覧制限
投稿キー(スパム対策に、投稿キー を半角で入力してください。)

ユーティリティ

検索

エントリー検索フォーム
キーワード

過去ログ

Feed