raspberry piで自作するとここに ... - isem.co.jp · raspberry...

22
Raspberry Pi で自作するとここにはまる ~問題点と解決策~ 02/17/2017 @ NF研究会 Copyright © 2017 Le Eclat

Upload: others

Post on 02-Sep-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Raspberry Pi で自作するとここにはまる~問題点と解決策~

02/17/2017 @ NF研究会

Copyright © 2017 Le Eclat

システムの概要(ごみ置き場ゲートドアのタイマー制御システム)

マンションのごみ置き場エリア(中)のゲートドアの自動解錠システムを作成。曜日毎に解錠時間と施錠時間が設定可能。左の写真で、マンションの玄関の手前右にごみ置き場があり、ゲートドアが設置されており、扉の左のポール裏にマグナロック(電磁錠)が取りつけられている。マグナロックは収集日当日の早朝から、清掃担当者の作業終了予定時間まで解錠され、清掃担当者がごみ置き場の清掃後に施錠を行う。操作パネルのスイッチおよび、LEDは防水仕様。清掃担当者は作業前のスイッチOFFおよび、作業後の施錠を行う。作業前に操作パネルのキースイッチをOFFにすると、コントローラーは制御を中止し、マグナロックおよび、LED点灯用の12V電源をリレーで遮断する。清掃終了後に清掃担当者がキースイッチをONに復帰すると、コントローラーは制御を再開し、押しボタンスイッチを押す事でタイマーで解錠がスケジュールされている時間帯でも、マグナロックが施錠される。押しボタンスイッチによる施錠はキースイッチがOFFからONに復帰した最初の1回だけ有効になる様にプログラムで制御されている。また、タイマーの設定とゲートドアの解錠、施錠はVPN経由でリモートから行う事が可能。

Copyright © 2017 Le Eclat

コントローラー(拡大写真、右はカバーを取り外して90度右回転)コントローラー(MDF内に設置)

Copyright © 2017 Le Eclat

ハードウェア構成

Raspberry Pi Model BSainSmart 4チャンネルリレーモジュールfor Arduino DSP AVR PIC ARM自作電源/配線回路(ヒューズ、コネクター等を実装した基板)自作操作盤用LED /スイッチ回路(操作パネル裏のBOX内に取りつけ)マグナロック(電磁錠)AC/DCコンバーター(5V, 12V)スイッチ付電源タップ(オムロン製UPSに接続)自作BOX(無印良品製アクリルボックス、アクリル台、東急ハンズ アクリルトレー、ウレタン類、スチロール板等を使用)

スケジュールはリモート変更可能(VPN経由) 監視カメラ映像を見ながら手動制御可能

Copyright © 2017 Le Eclat

Raspbian(DebianベースのRaspberry Pi用Linux、CPUはARM)cron, ntprc.shutdown(作者がinittabに組み込み)Apache2telnet, xrdp(Windowsからのログイン用)SMB Client(ルーターに接続されているSSDのファイルアクセス用)pptp(ルータで使用、VPN用)自作アプリケーション(開発言語:bash, perl, python, html)

ソフトウェア構成

インターホンの

システム配線

各部屋のインターホン

(子機)

自動ドア1 自動ドア2

インターホン親機(玄関)

インターホン親機(ホール)

タッチキー1(入館用) タッチキー2(入館用) タッチキー3(退館用)

MDF

光ケーブル(入居者用)

光ケーブル(共用部用)

地デジ/BS/CS 同軸ケーブル

CATV 同軸ケーブル

監視カメラ同軸ケーブル

各部屋の集線BOX

ごみ置き場ドア/パネル配線監視カメラの

モニター

各階の無線ルータ

タイマー解錠のシステム

共用部ルータ等

自作または特注

建物全体のシステム概要(除く自動火災報知機)

Copyright © 2017 Le Eclat

建物共用部のネットワーク

Copyright © 2017 Le Eclat

制御部の配線

Copyright © 2017 Le Eclat

Raspberry Pi って何ができる?

CPU/Memory/Storage-1990年代後半から2000年代初頭のUNIX W/S、サーバーに匹敵

>1GHz, >1GByte, >32GByte 可能

I/O-上記と同じレベルのI/O性能+マルチメディア入出力

100M Ether, USB 2.0 , HDMI, Audio In/Out, Camera I/F- DI/DOが本体でできる

GPIO-非同期通信、PWM出力が本体でてきる

USB経由の非同期通信、GPIO経由のSPI/I2C、GPIOのPWM出力

Copyright © 2017 Le Eclat

Raspberry Pi って何ができない?

電源スイッチが無い- 電源廻りは手を抜いている、レギュレータを搭載しない5V入力前提なので

電圧が下がるとすぐリセットするリアルタイムクロック(RTC)が無い- Shutdownからbootまでの時間経過が管理できない。必要な場合は外付けで対応ハードディスク- ハードディスク接続はUSB経由、フラッシュも非搭載USBの拡張性が無い- USB2.0コントローラが一つだけLAN/WAN- Ethernetは100M, Raspberry Pi 3だけがWifi搭載Direct I/Oがマイコンボードとしては弱い- Analog 入出力はできない

Arduinoはできる(GPIOのPWM出力はできる)

Copyright © 2017 Le Eclat

Why Raspberry Pi?

Arduinoで作ると下図になる(検討用に途中まで試作)

問題点(Raspberry Piで解決):Weekly Timerの精度(3ヶ月毎ぐらいで時刻合わせが必要)→ ntpを使用Weekly Timerの耐久性(バックアップ電池もあるので数年もつかどうかわからない)→ DYIの方がコントロールし易い設定変更時の操作性→ WebサーバーとブラウザーI/Fリモート制御ができない→ VPNでWebサーバーにアクセス

Copyright © 2017 Le Eclat

Why DIY?

市販の適当なシステムが無い(大きなオフィスビル用のシステムは有る)玄関ドアの(インターホン)制御システム経由にすると、

オプションのコントローラーが高価、設置も難しい屋外用のシステムが無い制御用のプログラムは特注

→ 特注するとハード(ドア、配線等を除く)、ソフトで数百万かかる→ 仕上げるのに手間がかかって不満足なものが出来るのは目に見えているDIYでも6人月ぐらいかかる(実際そうだった)← 特注しても発注側に2-3人月の手間がかかるはず

結果

最初はハウスメーカー、施工業者、誰もシステムが完成するとは思ってなかった→ あっさり動いて目が点、もうすぐ連続稼働 1,000日達成オペレーションは極力簡単にしたつもり→ それでも清掃担当者が慣れるのに10日から2週間かかった→ 試行(統合テスト)と考えれば妥当

Copyright © 2017 Le Eclat

ここからがはまりどころの話

8:2でハードがらみではまります!

Copyright © 2017 Le Eclat

フットプリント

軽すぎるし、小さすぎる!繋いだ線の方が重くてコネクターに負荷がかかるし、場所もとる

DIYでは入手しやすい材料に作るものを合わせる方が得策→ 配線は段階的に太くする→ ケーブル繋ぎはコネクター、特注オペレータパネルBOXには立ち上り用のバーも

→ 金属シャーシに入れてネジで止める ← プロだとこうする

DIYなのでプロ以上に考慮が必要

↑コネクター繋ぎの際に線の太さを変更

12V/5V動作なのでATA電源コネクターを使用 ↓

Copyright © 2017 Le Eclat

電源 DIYなのでプロ以上に考慮が必要

感電防止(PLがらみ)→ 屋外電源は使わない→ 地中配管、配線、パネル接続等は専門業者にさせた

(本来はDCだけなので、配線等に電気工事の資格は不要)→ 念の為、施設賠償保険に加入(他の理由もありますが)

フェールセーフ(閉じ込め防止、故障時)→ ドアロックは手動設定

(ボタンを押した最初だけロジックが必要)→ 12V系のスイッチを切るとドアは開きっぱなし

(停電時にUPSの電池が無くなっても同じ)

Copyright © 2017 Le Eclat

Rapberry Pi 特有のクセ(仕様)

5V-3.3V問題← 5V給電だけど、GPIOは3.3V→ 5V TTLは Raspberry Pi の3.3V GPIOでも制御可能→ GPIOへの5V入力は抵抗で3.3Vに落としても問題は少ない

リレー駆動問題← ほとんどのリレーは Raspberry Pi のGPIO出力電流では制御できない→ プロダクションに使うなら、自作では無く、リレーモジュールを使用

Copyright © 2017 Le Eclat

5V貧血問題← USBの入力電源が一時的に下がってもリセットされる← 上記の場合、SDメモリーwrite時にファイルシステムが破壊される→ 5.1V/5.2V仕様のUSBアダプターを使用(最近出て来た。Appleも使える)→ USBケーブルの長さに注意→ 電源管理用のHATが各種あるが、過大に期待しない事

リブート時のUSB電源供給継続問題← 内部メモリーを持つアダプターがreboot時に初期化されない場合がある→ デバイスドライバーが改良されているが、究極には電源管理用HATを使用

プロと同じ考慮が必要

リレー制御

Raspberry Pi起動時・シャットダウン時のリレーの誤動作回避← 秋葉原等で売っているリレーキットの回路だと、GPIOの出力が

確定するまで誤動作する可能性がある。→ SpurkFunのリレーボードが良くできていたので採用

不論理、初期値はハイインピーダンス(通電後、一度HIGHにしてからLOWにしないと、NOに電流が流れない)

→ rc.localaまでGPIOの初期設定をまたないcronで@rebootを使用

→ shutdown時も初期値に戻すrc.shutdownを自分で組み込み

Copyright © 2017 Le Eclat

DIYなのでプロ以上に考慮が必要

スイッチとオペレータパネルのLED

ジッタリング

防水のキースイッチが秋葉原では入手困難

スイッチ仕様の最低作動電圧5Vが屋外配線だと結構厳しい→ 5V 作動でGPIO 3.3Vに入力電圧を落とす

(抵抗回路使用。12Vだと、一般的で無いレベルシフタが必要)

→ オムロンが産業用をWEB直販、最終的にモノタローで購入

プロと同じ考慮が必要

→ ON/OFFはエッジ検出がベター(pull up/pull downだとダメな場合が有る)

12V LEDでも日差しの強い時間帯は点灯が認識しずらい

→ 結局ひさしをパネルにつけました。プッシュボタンのLEDはそれでも見にくいというかオーバースペック(回路変更が面倒なのでそのまま)

ひさし →

← キースイッチ

← プッシュボタンLEDは12V

Copyright © 2017 Le Eclat

放熱

ウレタンに被せる構造にしたら空気が膨張してケースがはずれちゃった!← アクリルにねじ穴加工をしたくなかった→ 換気ダクトを作って、虫よけメッシュをつける→→ ユニバーサル基板の穴がちょうど良かった

DIYで手を抜いたらそれなりに考慮が必要

↑ユニバーサル基板

換気ダクト →

裏面

↑ ウレタンにカバーをはめ込み

換気ダクトが無いと空気の熱膨張でカバーがはずれる

Copyright © 2017 Le Eclat

オペレーターI/F、管理者I/F、html DIYなので手を抜くところは。。。

Copyright © 2017 Le Eclat

日本語の文字化けとフォントの問題は依然として解決していない← 永久に解決しないと思った方が良い→ 自分しか使わない部分は英数半角。コメントも同様→ いざとなったら、export LC_ALL=C→ 保存はPCに(CIFS Clientが以外と使い易い)

見るだけならword pad

ソースコードの修正→ いまだに健在、dos2unix, unix2dos→ TABに注意

スクリプト言語のはやりすたり、if分の制御構造の違い→ なるべく、シンプルに。ライブラリにたよりすぎない→→ pythonの文法は勉強しないと Raspberry Pi は使いこなせない!

ネットワークの切断対策と時刻同期

Copyright © 2017 Le Eclat

ブロードバンドが障害時以外にもプロバイダーに切断される場合がある← 長期間接続しっぱなしで一定時間パケットが飛んでいない場合← プロバイダー側のネットワーク機器の内緒のリブート→ 1分毎に特定のURLを参照(別のRaspberry Piで実行)→ ルータの外部アドレスを30分毎にネットワークアクセス可能な

ファイルに書き込む→ 制御アプリケーション自体はネットワーク接続に依存しない様に作成

時刻合わせは?← OSのTODはRTCより正確→ 長期間連続稼働が前提なのでntpで時刻同期、RTCは使わない

shutdownとrebootの間は?→ 疑似ハードウェアクロック機能でシャットダウン時に時刻が保存される

reboot時にはシャットダウン時刻が設定される(必ず遅れる)ntpと強制的に同期されるので問題は起り難い

プロと同じ考慮が必要

ネットワークとセキュリティ

Copyright © 2017 Le Eclat

外部アドレスをDDNS等で公開したくない← 監視カメラも同じネットワーク← 外部アドレスがわからないとVPNができない!→ 30分毎に外部アドレスをBuffalo NASに書き込み→ 外部アドレスはBuffalo NASにアクセスして取得← セキュリティは大丈夫?→ 以下を順番に突破しないといけないので、まー大丈夫かと

外部アドレスを知るにはBuffalo NASのユーザIDを知る必要がある(パスワードは必ずしも必要無い)VPN接続には、PPTPのユーザIDとパスワードを知る必要があるRaspberry Piのセキュリティホールをつかないとroot特権が得られない

→ 外部アドレスは何らかの原因で年に数回変更されてしまっちゃうし

弱点は?→ 当然ながら、内部ネットワーク側から攻められると厳しい→ 一応、プライバシーセパレータはかけてあるけど、じっくりやられると。。。

DIYなのでプロ以上に考慮が必要

余談ですが

テスト・デモ用システムメンテナンス部品兼用。デモ可能ですが、箱から出して準備と作動確認に半日ぐらいかかりますデバッグ用のLEDがあるので、実機よりもハードウェア結線は複雑

もうすぐ1,000日連続稼働!何時止めるかが逆に問題。。。 ↓

トラブル無し、でも想定外な事も- 定期清掃の業者が鍵をかけようとして中から施錠

→ 物理鍵にカバー- ドアの業者が打ち合わせ無しに作業をしに来た

→ 電話が来たので東北道からリモートで解錠、作業後に施錠- iOSがPPTPサポートを打ち切りAndroidがサポートしている間はそちらでVPN

興味があればまた別途- 制御プログラムの詳細-デモとH/Wの詳細- 外部ワッチドッグの実装

Copyright © 2017 Le Eclat