2018年2月6日火曜日

XT225WE グリップヒーター取付 その2

先日取り付けたグリップヒーターは、温度調整の為のスイッチが左手側に付いていて、OFFから最大まで4段階の温度調整ができるようになっている…はずなのだが、実際に使ってみるとOFFと最大しか無い。

amazonのレビューでもあったように、コントローラーのNチャンネルパワーMOS FETが死んでるのかと思って、コントローラーを開けてみたが、今のところは問題無いようだ。 まぁ、ONとOFFしか無いのだから、スイッチングもしていない訳で、発熱する要素が殆ど無いのだから、壊れようも無いのかもしれない。

で、本当に電気が流れていないのか確認する為に、テスターでグリップヒーターに流れる電流を計測してみる。
OFF…0A、1段階目…0A、2段階目…0A、3段階目…0A、4段階目(MAX)…1.75A。
エンジンをかけてないから、電圧が低くて2Aまで行かないのか、それとも回路的に1.75Aが最大なのかよく分からないが、まぁ許容範囲だろう。

温度調整が出来ないので、ONの状態で使うと素手では握り続ける事が出来ないぐらい熱くなるが、グローブ越しであれば、それなりに妥当な温度なので、壊れるまではこれで我慢する事にした。

不具合の原因はグリップ部分の温度調整スイッチに付いているであろう制御用の抵抗が入っていないんじゃないかと思うのだけれど、ハンドルバーからグリップヒーターを外して確認するのも面倒くさいので、値段なりの商品という事で妥協する。

ちなみにグリップヒーターのグリップ自体は、ホンダ純正のスポーツグリップヒーター程では無いにしても、昔のグリップヒーターみたいに太すぎる事も無いから、悪くはないと思う。 ゴム質が固いので握り心地は良くないが問題になるレベルではないだろう。
コントローラー部分はマイナスドライバーで少し抉れば簡単に開ける事ができるし、回路も簡単なスイッチング回路なので、自分で色々と改造して使うには、安価で面白い素材だと思うので、是非ともアクセルグリップのコーン無しバージョンを千円未満で売り出して欲しいところだ。

2018年2月4日日曜日

XT225WE グリップヒーター取付

昨年の6月にBanggoodで購入していたグリップヒーターを冬ももうすぐ終わろうかという、今時期になって、ようやくセローに取り付ける事にした。
 
購入時の金額は1234円。で、今、amazon.co.jpでも同じような値段で売っているので、壊れたら同じのを購入すれば良いだろう。
さて、この中華グリップヒーターだが、アクセルグリップ側は最初からコーンが入っている状態で売られている。

正直、有難迷惑なのだが、スロットルワイヤーの巻取り径を計ってみたところ、セローの純正とほぼ同じだったので、そのまま使えたのは幸いだった。

ただ、そのまま取り付けると、コーンホルダーの内壁と干渉してスロットルの動きが悪くなるので、コーンを微妙に削ってやる必要がある。
とりあえず動きの悪さは潤滑油で誤魔化すとして、アクセルワイヤーを問題無く引けるかどうかのチェックをしなければ…と、アクセルを開けたり閉じたりしていたら、太鼓のホルダー部分がコーンから外れた。

動きが渋い状態なので、万が一走行中に外れていたらと思うと、ゾッとする。アクセルを閉じた状態で外れていても、加速しようとして加速できなくなるのだから、事故を誘発するかもしれない。
コーンと太鼓ホルダーを接着力が弱い接着剤で貼り付けてるだけとか、コストダウンも甚だしい。
amazonのカスタマーレビューを見てみると、同じような不具合が見受けられるので、これはもう安物中華品質と諦めるしかない。
レビューを見ていると、他にもコントローラーのパワーMOS FETが焼けたりとか、色々と凄まじい。
コーンが破損した程度で作業を中断するのも癪だったので、元のグリップからコーンを取り外して、再利用する事にした。

そして、グリップヒーターから壊れたコーンを外すのだが、これが無茶苦茶固い。 ヒーターの配線を切らないように注意して外さなければならないので、慎重に作業していたら、小一時間かかってしまった。
コーンとグリップの根本でケーブルを固定、絶縁していたので、ここを使って抉れないし、外すのはかなり面倒臭い。

取り外した後はケーブルを固定する為の樹脂カラーをグリップに接着剤で貼り付けて、上記の中古の純正コーンに取り付ける。
グリップヒーター用の耐熱接着剤が無かったので、セメダインのゴム・樹脂用接着剤で代用。 これで試してみて、ダメそうならグリップヒーター用の接着剤を買ってこよう。
作業中に断線させていないか、念のために抵抗値を計ってみると、だいたい12Ω。片手で大体1A流れるという感じなので、両手であれば、カタログスペックの24Wというのは間違っていなさそうだ。

接着剤が乾く間にグリップヒーター用の電源をメインハーネスから取れるようにする。
ETCとシガーソケットの電源はズボラをかましてヘッドライトのロービーム側から取っているのだが、流石にそこから取ると、消費電力の大きいグリップヒーターは厳しいだろうと思ったからだ。

ヘッドライトを外して、ハーネスが見えるようにして、茶色の12Vと黒のGNDのラインの被覆を、ワイヤーストリッパーを使ってズラして隙間を開けたら、予め被覆を剥いておいたケーブルを巻き付けて、スプライスでカシメる。念の為に薄く含侵する程度にはんだ付け。ケーブルが動く場所だとはんだ付けは割れる恐れがあるので、しない方が良いのだけれど、ここは多分だ丈夫だろう。
で、それぞれ分岐させた線の先端に平ギボシを取り付け。

これらの作業をしている間に接着剤も半乾き程度に硬化したので、グリップをハンドルに取り付けて配線を施せば作業完了。
文章に起こすと簡単そうな感じだが、実際の作業はイレギュラーが多くて、思いのほか時間がかかった。 次に作業する時は電源回りは楽になってるので、まともなグリップヒーターを買ってくれば、30分もあれば余裕で作業が終わる筈だ。

これでハンドルカバーをかぶせれば、極寒でも薄手のグローブで走れるようになって、恰好さえ気にしなければ素晴らしく快適なので止められない。
バイクドレスアップ グリップヒーター【左右2台セット】冬場のバイクでも手元ポカポカ
Present-web

汎用 バイク グリップヒーター ブラック ミリバー用 温度調整可
ライズコーポレーション(RISE Corporation)

フジ矢 オートマルチストリッパ(ワイヤーカット・ストリップ・簡易圧着機能付) ストリップ線径自動調整タイプ PP707A-200
フジ矢

(STRAIGHT/ストレート) スプライス 小 1.0~2.5(mm2) 10ピース 35-878
(TOOL COMPANY STRAIGHT) ツールカンパニーストレート

2018年1月25日木曜日

Raspberry Piを使って複数IPカメラの映像表示レイアウト

Full HDの画面に4画面等倍表示のレイアウトは前に書いた通り。
その後、他のレイアウトを検討して欲しいとの要望があったので、いくつか考えてみた。

1画面全体表示+1画面ワイプ
omxplayer --avdict rtsp_transport:tcp --win "0 0 1920 1080" <rtsp address> --live -n -1 --layer 1 | \
omxplayer --avdict rtsp_transport:tcp --win "1430 800 1910 1070" <rtsp address> --live -n -1 --layer 2

-layerオプションを付ける事で、映像の上に映像を重ねる事ができる。数字が大きい方が上のレイヤーになる。


1画面大きめ表示+3画面小さ目表示
omxplayer --avdict rtsp_transport:tcp --win "0 0 1280 720" <rtsp address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "1280 0 1920 360" <rtsp address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "1280 360 1920 720" <rtsp address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "1280 720 1920 1080" <rtsp address> --live -n -1

前回書いた6画面表示レイアウトの内、下の2画面を取り除いたレイアウト。
もしかしたら1画面全体表示にして、3画面をワイプ表示にしたほうが見栄えは良いかもしれない。その場合は、

1画面全体表示+3画面ワイプ
omxplayer --avdict rtsp_transport:tcp --win "0 0 1920 1080" <rtsp address> --live -n -1 --layer 1 | \
omxplayer --avdict rtsp_transport:tcp --win "1430 10 1910 280" <rtsp address> --live -n -1 --layer 2 | \
omxplayer --avdict rtsp_transport:tcp --win "10 800 490 1070" <rtsp address> --live -n -1 --layer 2 | \
omxplayer --avdict rtsp_transport:tcp --win "1430 800 1910 1070" <rtsp address> --live -n -1 --layer 2

といった感じだろうか。
これでいくつかのパターンのスクリプトを作って、切替できるようにしてやれば、必要に応じてレイアウトを変更できるようになるだろう。

あれから、色々な条件で動作確認してみたのだが、4台全てのカメラのエンコーディング解像度を1920*1080にしていると、Raspbelly Piでは4画面同時に処理しきれないようで、全く表示されない。
因みに一台を1080p、もう一台を720pにして、1080pをフル画面表示にして720pの方をワイプ表示にする分には、特に問題無く表示された。
IPカメラのプロファイルを複数設定できるのであれば、プロファイル毎に異なる解像度を設定しておいて、表示形態によって表示プロファイルを使い分ける方が良いのかもしれない。

2018年1月22日月曜日

Raspberry PiでIPカメラのストリーミング画像を同時再生する

工場の設備監視用に安価なIPカメラを使うにあたって、録画までは必要無い場合、Raspberry PiでRTSPを再生できれば予算を抑えられて便利。
ということで、色々と調べてみたところ、こちらのホームページに、そのものズバリな内容が書かれていたので、参考にさせて頂いた。

とりあえずラズパイにOSを入れないことには始まらないので、オフィシャルサイトからRASPBIAN STRETCH LITEをダウンロードして、microSDカードにイメージをコピーすれば、OSのインストールは完了。ハードウェア決め打ちだと、この辺りの手間が無くて良い。

microSDをラズパイに挿入して、キーボード、マウス、LANケーブル、HDMI経由でモニターを接続して、電源ケーブルを挿せばRASPBIANが起動して、モニターにターミナル画面が表示される。
ユーザー名とパスワードを聞いてくるので、ユーザー名「pi」、パスワード「raspberry」と入力すればコマンドプロンプトに文字が入力できるようになる。

ネットワークの設定については環境によって異なるので、何とも言えないけれど、うちの環境ではDHCPでディフォルトゲートウェイとDNSがうまい具合に割り振られないようで、それらを明示してやる必要があった。
sudo nano /etc/dhcpcd.conf」でエディターを起動して、「static routers」と「static domain_name_servers」を環境に合わせて書き換える。
無事にインターネットに接続できるようになったので、「sudo apt-get update」とか「sudo apt-get upgrade -y」とか入力してみれば、問題無く動作しているのが確認できた。

あとは、上記のホームページを参考にしつつ、「sudo raspi-config」でSSHでアクセスできるようにしたり、GPUに割り当てるメモリーを増やしたり、microSDカードの領域を確保したり、パスワード変更したり、パスワード入力レスで起動するようにしたりする。
時間のローケーションは変えておいた方が良いけれど、環境ロケーションはEnglishのままの方が良いかもしれない。キーボード配列が英語キーボード準拠のままになるけど。

sudo reboot」でリブートして、次にプレイヤーをインストール。
sudo apt-get install omxplayer -y && sudo apt-get install screen && sudo reboot」と入力すれば、
omxplayerとscreenがインストールされて、その後リブートされる。
omxplayerはraspberry piの動画再生支援機能が使えるメディアプレイヤー。screenはコンソールを複数開くためのソフト。

自分で使うならscreenなんて無くても、omxplayerさえあれば、
omxplayer --avdict rtsp_transport:tcp --win "0 0 960 540" <rtsp IP address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "960 0 1920 540" <rtsp IP address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "0 540 960 1080" <rtsp IP address> --live -n -1 | \
omxplayer --avdict rtsp_transport:tcp --win "960 540 1920 1080" <rtsp IP address> --live -n -1
と、入力してやればFullHDのモニターに4分割でIPカメラの画像を確認する事は可能だ。
しかし、使うのは現場作業者であるから、家電並みに電源を入れるだけで使えるようにしておかなければならないし、リモートでメンテナンスできるようにしておかなければならない。
というわけで、やはり上記のホームページに書かれているようにスクリプトを組んで、cronでカメラの接続状態を一定時間毎に監視するようにするのがモアベターという事になる。
下のスクリプトは上記ホームページからの引用。該当するページが無くなってしまうとメモ代わりにならないので、転記しておく。
sudo nano /etc/init.d/displaycameras」でエディターを起動して、displaycamerasというテキストを作製する。
---------- 以下引用
#!/bin/bash
### BEGIN INIT INFO
# Provides: omxplayer
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Displays camera feeds for monitoring
# Description:
### END INIT INFO
# Camera Feeds & Positions
top_left="screen -dmS top_left sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"0 0 960 540\" <rtsp IP address> --live -n -1'";
top_right="screen -dmS top_right sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"960 0 1920 540\" <rtsp IP address> --live -n -1'";
bottom_left="screen -dmS bottom_left sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"0 540 960 1080\" <rtsp IP address> --live -n -1'";
bottom_right="screen -dmS bottom_right sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"960 540 1920 1080\" <rtsp IP address> --live -n -1'";
# Camera Feed Names
# (variable names from above, separated by a space)
camera_feeds=(top_left top_right bottom_left bottom_right)
#---- There should be no need to edit anything below this line ----
# Start displaying camera feeds
case "$1" in
start)
for i in "${camera_feeds[@]}"
do
eval eval '$'$i
done
echo "Camera Display Started"
;;
# Stop displaying camera feeds
stop)
sudo killall omxplayer.bin
echo "Camera Display Ended"
;;
# Restart any camera feeds that have died
repair)
for i in "${camera_feeds[@]}"
do
if !(sudo screen -list | grep -q $i)
then
eval eval '$'$i
echo "$i is now running"
fi
done
;;
*)
echo "Usage: /etc/init.d/displaycameras {start|stop|repair}"
exit 1
;;
esac
---------- 以上引用
として、保存する。rtspのアドレスの部分は各IPカメラによって異なるので、予め「ONVIF Device Manager」等を使用して調べておく事。
上記のスクリプトの権限設定を
sudo chmod 755 /etc/init.d/displaycameras
と変更して、下記コマンドにてスタートアップに追加する。
sudo update-rc.d displaycameras defaults
また、IPカメラの死活確認及び再接続を行う為に、
sudo crontab -e」で
*/5 * * * * /etc/init.d/displaycameras repair
といった感じで、スケジューリングしておく。上記の場合5分毎の確認となる。
上記のスクリプトを見ればわかると思うが、映像を止めたければ「/etc/init.d/displaycameras stop」で表示を停止する事ができる。
再スタートは「/etc/init.d/displaycameras repair」もしくは「/etc/init.d/displaycameras start

上記スクリプトは4分割同時再生のものだが、6分割同時再生の場合は、下記のスクリプトとなる。
---------- 以下引用
#!/bin/bash
### BEGIN INIT INFO
# Provides: omxplayer
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Displays camera feeds for monitoring
# Description:
### END INIT INFO
# Camera Feeds & Positions
#First Colmn
large_left="screen -dmS large_left sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"0 0 1280 720\" rtsp://192.168.1.168:7447/56fc759be4b01f1769f35f7f_1 --live -n -1'";
mid_lcenter="screen -dmS mid_lcenter sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"640 720 1280 1080\" rtsp://192.168.1.168:7447/56fc791fe4b01f1769f35fad_1 --live -n -1'";
bottom_left="screen -dmS bottom_left sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"0 720 640 1080\" rtsp://192.168.1.168:7447/56fc791fe4b01f1769f35fae_1 --live -n -1'";
#Second Colmn
top_right="screen -dmS top_right sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"1280 0 1920 360\" rtsp://192.168.1.168:7447/56fc795be4b01f1769f35faf_1 --live -n -1'";
mid_rcenter="screen -dmS mid_rcenter sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"1280 360 1920 720\" rtsp://192.168.1.168:7447/56de2e1888117cf574015d71_1 --live -n -1'";
bottom_right="screen -dmS bottom_right sh -c 'omxplayer --avdict rtsp_transport:tcp --win \"1280 720 1920 1080\" rtsp://192.168.1.168:7447/56de2e1888117cf574015d71_1 --live -n -1'";

# Camera Feed Names
# (variable names from above, separated by a space)
camera_feeds=(large_left mid_lcenter bottom_left top_right mid_rcenter bottom_right)
#---- There should be no need to edit anything below this line ----
# Start displaying camera feeds
case "$1" in
start)
for i in "${camera_feeds[@]}"
do
eval eval '$'$i
done
echo "Camera Display Started"
;;
# Stop displaying camera feeds
stop)
sudo killall omxplayer.bin
echo "Camera Display Ended"
;;
# Restart any camera feeds that have died
repair)
for i in "${camera_feeds[@]}"
do
if !(sudo screen -list | grep -q $i)
then
eval eval '$'$i
echo "$i is now running"
fi
done
;;
*)
echo "Usage: /etc/init.d/displaycameras {start|stop|repair}"
exit 1
;;
esac
--------- 以上引用
基本的にはomxplayerのwinオプションで大きさと場所を指定しているだけなので、ディスプレイの解像度や、画面レイアウトの変更も含めて、設定は煩雑ではあるものの、自由度は非常に高い。
ラズパイの性能に依存する部分もあるから、何画面まで同時に再生できるか分からないが、1ディスプレイ当たり4画面ぐらいが視認性の面でも良いのではないかと思う。
プレイヤーの設定については以上だが、IPカメラの設定について。
カメラの解像度は1080pの性能があったとしても960pもしくは720pに下げておく事。
自分の環境では1080pの解像度では何故か正常に動作しなかった。
まぁ、4分割表示なので1080pの解像度があっても、意味が無い上にネットワークトラフィックが増えるだけで害にしかならないから、解像度を下げて使う分には特に問題は無いだろう。
カメラの解像度の下げ方は、CMSやONVIF Device Managerを使うか、NVRを持っているなら、それで設定すると良いだろう。

因みにカメラ1台あたり、凡そ1~3Mbps弱の帯域を使用する。
VBRなので映像に動きが無ければそれ以下になる事もあるし、フレームレートや解像度、圧縮率等の設定で変動するが、多量のカメラを常時閲覧する場合はネットワークの経路を考えて、基幹系に影響を与えないように配慮する必要があるだろう。
また映像のタイムラグに関しては、IPカメラの設定次第だが凡そ1秒程度。
自社の製造ラインの監視に使うなら、それぐらいのラグは許容できる。 それが許容できないぐらいシビアな条件だと、そもそもIPカメラは使えないかな…
録画もしたい向きにはラズパイを使わず、素直にNVRを買いましょう。
Raspberry Pi3 Model B ボード&ケースセット 3ple Decker対応 (Element14版, Clear)-Physical Computing Lab
TechShare

Giantree POEスプリッタインジェクタアダプタケーブルワイヤイーサネットDC 5V IPカメラキット部品アクセサリ
Giantree

Dovewill 便利  実用  電源充電アダプタ  DCメス→オス  マイクロ USB  5.5 * 2.1mm  黒色
Dovewill

汎用ACアダプター用出力DCプラグ変換アダプター (5.5mm×2.1mm ⇒ microUSB, 商品1点)
サクル株式会社

A-ZONE 200万画素タイプ POE給電カメラ 防犯カメラキット 10.1インチモニター付き ネットワークカメラ 暗視撮影 cctvセキュリティカメラシステム 監視カメラ ナイトビジョン 防水カメラ ハイビョン HD NVRキット 屋内/屋外 クイックリモートアクセス 無料アプリ 遠隔監視対応 (ハードディスク無し)
ANSON(エンソン)

PoE IPカメラ SV3C 1080P IP 防犯カメラ 監視カメラ LAN&PoE 802.3af対応 屋外 15メートルナイトビジョン IP66防水性能 Iphone/Android/Tablets/Windows PC対応
SV3Cテクノロジー

NETGEAR レイヤー2スマートスイッチ ギガ10ポート(PoE8ポート15.4W/全体46W)/VLAN QoS ACL IGMP LAG/外部電源/無償永久保証 GS110TP-200AJS
ネットギア

Lovoski 2ピース IEEE 802.3af マイクロ USB アクティブ PoE スプリッタ パワー オーバー イーサネット 48V 12V  耐久性 互換性
Lovoski

2018年1月13日土曜日

PoE対応のIPカメラ

IPカメラでONVIF対応、200万画素の1080p、25fps以上、PoE対応、できればCMOSの性能は良い方が好ましい。PTZは必要無いけど、テーブルに置いて使用可能という条件となると、あまり選択肢が無いなぁ…
Banggoodで、
HD IP Camera 720P 1080P Indoor Dome Cam IR Lens 3.6mm 2MP IP CCTV Security Camera Network Onvif P2P

このあたりを買ってみるかな。4500円以下だし。
720pモデルでPoE無しなら2500円以下だから、画質とエンコーディング速度の比較用に買っておこう。
センサーサイズが1080pモデルが1/2.8で、720pモデルが1/4なので、画質はそれなりに差がでてほしいところ。