はじめに
前回の記事では、メカトラックスさんのslee-Pi 2を使った間欠動作(タイマー動作)と死活監視を試しましたが、この記事ではslee-Pi 2 Plusの外部入力端子の基本的な使い方を確認します。
slee-Pi 2 Plusとslee-Pi 2の違いはメカトラックスさんのサイトに説明があります。
slee-Pi 2 Plusから引用
slee-Pi 2 Plus:slee-Pi 2 Plus は slee-Pi 2 に外部入出力回路を追加したものです。設定すれば、外部入力による起動と強制電源断が可能です。
ちなみにですが、slee-Pi 2にコネクタだけ実装してもslee-Pi 2 Plusにはなりません。
使用機材
この記事では以下の機材を用います。
- ラズパイ3B(含マイクロSDカード 4GB以上)
- slee-Pi 2 Plus
- 12V DCアダプター(3GPi Ver.2付属のものなど)
準備
組み立ててから簡単な配線をおこないます。
組み立て
40ピンヘッダを向きを合わせて刺すだけです。
以下の写真の通り、下がラズパイ、上にslee-Pi 2 Plusが来るように接続します。
slee-Pi 2との違いは、以下の写真の部分のコネクタやICが実装されていることです。
外部入力端子への配線
JSTのEHコネクターが適合します。2極なので品名はEHR-2です。
公式ドキュメントに書かれています。
mechatrax/slee-pi2 ハードウェア 3. インターフェース
私はマルツパーツ店頭で買いました。
EHコネクター 2.5mmピッチ ハウジング 2極(10個入り)【EHR-2*10】
↓↓↓コンタクトピンはこれです。
EHコネクター コンタクト(10個入)【SEH-001T-P0.6*10】
動作確認程度なら、わざわざケーブルを作るまでもありません。
しかし、しっかり配線しておけばとしばらく間が空いた時などに再セットアップが素早くできる気がします。
以下では、ケーブルを作る場合と、作らない場合の2通りを示します。
きちんとケーブルを作る場合
まずケーブル加工には専用圧着工具が必要です。お高いです。
めったに試作しないなら、プロのハード屋さんに製作を依頼するのが良いですが、取引がなければ例えばミスミさんが利用できます。(法人または個人事業主)
私は、ハーフピッチ対応精密圧着ペンチ【PA09】で、自作しました。これは試作に限っては問題ないですが、納品物などでは専用工具を使うか、専用工具を使う業者に依頼するのが良いでしょう。
私はこのケーブルを適当なブレッドボードに配線してタクトスイッチを押すと短絡(ショート)するようにしました。
ブレッドボード側は被覆だけ剥いて、手持ちのサトーパーツのねじ無し端子台で済ませています。
ブレッドボードを使わず、タクトスイッチにはんだ付けしてしまっても良いでしょう。
ケーブルを作りたくない場合
以下のようなジャンプワイヤを用います。
テストワイヤー メス-オス(5色、10本入り)【TTW-201】
かなり無理やりですが、EHR-2のピッチは2.5mmなのでわりとピッタリ入ります。
この際、コネクタの形状が同じで、CN3とCN4を間違えやすいので注意します。
配線は以上です。
上記で外部入力に接続したタクトスイッチをSW2(a.k.a. クローンの攻撃)と呼ぶことにします。
以下、raspbianの導入など準備は前回の記事を参照ください。
本題
以上で配線した外部入力を用いて機能を試していきます。
パワーマネジメントモジュールによる外部入力端子の監視を試す
SW1と同様に起動とシャットダウンが外部入力で可能です。
外部入力で起動
sudo poweroffでラズパイをシャットダウンしてから、SW2を押すとラズパイが起動します。
これを利用すれば、外部装置からラズパイの電源を投入できます。
外部入力でシャットダウン
ラズパイが起動した状態で以下のコマンドを実行します。
pi@raspberrypi:~ $ sleepi2ctl -s extin-powerdown 1
pi@raspberrypi:~ $ sleepi2ctl -g extin-powerdown
1
この状態でSW2を10秒間長押しするとラズパイがシャットダウンします。
SW1またはSW2を押してラズパイを起動した後で、以下のコマンドで確認するとゼロに戻っています。
pi@raspberrypi:~ $ sleepi2ctl -g extin-powerdown
0
これを永続化するには、以下のファイルを編集します。
・・・
#
# Forced shutdown by external input
#
# EXTIN_FORCED_SHUTDOWN=0 : disabled
# EXTIN_FORCED_SHUTDOWN=1 : external input has been detected 10s and shutdown
#
# EXTIN_FORCED_SHUTDOWN=0
EXTIN_FORCED_SHUTDOWN=1
・・・
上記ファイルの説明は、以下の公式ドキュメントにあります。
githubのmechatrax/sleepi2-utils
sudo rebootしてから以下のコマンドで確認します。
pi@raspberrypi:~ $ sleepi2ctl -g extin-powerdown
1
以上で、外部入力によってslee-Pi 2 Plus経由でラズパイの電源を操作できることが確認できました。
sleepi2monによる外部入力端子の監視を試す
メカトラックスさんが提供しているパッケージには監視デーモンが含まれていますのでこれも試してみます。
監視デーモンにより、外部入力をトリガとして任意のコマンドを実行させることができます。
公式ドキュメントはgithubにあります。
外部入力でシャットダウン
デフォルトではコマンド実行は無効となっていますので、以下のように設定ファイルを変更してからラズパイを再起動して設定を反映します。
・・・
[extin]
command = "shutdown -h now"
oneshot = true
#threshold = 0 # 0:無効
threshold = 3 # 3秒
・・・
$ sudo reboot
ラズパイが起動してからSW2を3秒ほど長押しすると、slee-Pi 2 Plusの赤LEDが点滅してから、ラズパイがシャットダウンします。
外部入力で再起動
次に、SW2長押し時の動作を変更します。
今はシャットダウンした状態のはずですので、slee-Pi 2 PlusのSW1を押してラズパイを起動します。設定ファイルを以下のように変更してからラズパイを再起動して設定を反映します。
・・・
[extin]
#command = "shutdown -h now"
command = "shutdown -r now"
oneshot = true
#threshold = 0 # 0:無効
threshold = 3 # 3秒
・・・
$ sudo reboot
SW2を長押しすると、ラズパイが再起動します。
外部入力長押しで任意コマンド
ここまでは外部入力をトリガとして、shutdownコマンドを実行しました。
ここでは任意のスクリプトを実行させてみます。
まずシェルスクリプトを書きます。実行されたことがわかるようにdateコマンドを実行してテキストファイルに追記するようにします。
#!/bin/sh
echo `date` >> /home/pi/sleepi/sleepi.log
chmod 775 cmd.shのようなコマンドで実行フラグを付けておきます。
pi@raspberrypi:~/sleepi $ ls -al cmd.sh
-rwxrwxr-x 1 pi pi 52 Apr 4 23:37 cmd.sh
ユーザpiのまま実行してみます。
pi@raspberrypi:~/sleepi $ ./cmd.sh
pi@raspberrypi:~/sleepi $ cat sleepi.log
Wed 4 Apr 23:25:49 JST 2018
続いて、設定ファイルを以下のように変更します。
・・・
[extin]
command = "/home/pi/sleepi/cmd.sh"
oneshot = false
threshold = 3
・・・
oneshotをfalseにすることで、外部入力がONの間、コマンドが繰り返し実行されるはずです。
sudo rebootでラズパイを再起動した後で、sleepi.logを監視しながら、ブレッドボードのSW2を長押しします。
pi@raspberrypi:~/sleepi $ tail -f sleepi.log
・・・
Wed 4 Apr 23:38:04 JST 2018
Wed 4 Apr 23:38:05 JST 2018
Wed 4 Apr 23:38:06 JST 2018
・・・(ここでいったん指を離して再度押し続ける)
Wed 4 Apr 23:38:10 JST 2018
Wed 4 Apr 23:38:11 JST 2018
・・・
スレッショルドは3秒に設定していますので最初のログが出力されるまで3秒かかりますが、連続動作は1秒ごとに行われるようです。
外部装置からラズパイに動作をさせる指令をおこなうのに使えそうです。
まとめ
前回の記事から続いて、slee-Pi 2 Plusのチュートリアル的な記事を書かせていただきました。
メカトラックスさん提供のパッケージを使えば、slee-Pi 2 Plusの機能を簡単に利用することができます。
次の記事では、slee-Pi 2 Plusの応用編を書いてみようと思います。
まとめは以上です。この記事が、システム開発・試作のお役に立てれば幸いです。
最後までお読みいただきありがとうございました。
落穂ひろい
外部入力の制御回路
この記事では簡易的にタクトスイッチ(押しボタン)を使いました。
実際のシステムでは外部に回路があって、マイコンなどで制御する仕様もあると思われます。
その場合、絶縁が必要ならフォトカプラ、絶縁不要ならアナログスイッチでよいと思われます。
念のためON抵抗などが問題ないかはメカトラックスさんに確認したほうが良いでしょう。