まあ,それはともかく.
シャットダウンボタンが効かなかったのは,GPIOのピンの接触不良だった模様.
PCのマザボから引っこ抜いたショートジャンパに,ブレッドボード用のジャンパ線を突っ込んだだけのものだから,文句は言えない.いろいろと仕様が固まったところでもっとちゃんとしたのにするつもりなのだが.
シャットダウンボタンは便利なのだが,長押しというのがどれくらいなのかのタイミングがつかみにくい.そこで,shutdownプロセスに入る前にGPIOを使ってLEDを点灯させてみることにした.
シャットダウンボタンを押す → LEDが光る → (ボタンを放してOK) → shutdown → LEDが消える → (基板上ののLEDがPWR以外消えるのを確認) → 電源を抜いてOK
こんな手順になる.LEDが消えただけではまだどこか動いてるかもしれないので,基板のLEDも見た方が安全ではある.
GPIO22 (PIN15) と +3.3 V (PIN17) の間にプッシュボタン
GPIO25 (PIN22) と GND (PIN20) の間にLED
GPIOの22や25を使っているのは,隣のピンが+3.3VだったりGNDだったりするからというだけのこと.
LEDは何かからはずした小さいのがあったので,抵抗も何も入れずに,またもショートジャンパを流用して直結.GPIOの電流供給能力も大したことないので,まあ,大丈夫だろう.
デーモンは以下のように
#!/bin/sh GPIO=22 #使用するGPIOポート PUSHTIME=2 #押す秒数 #初期設定 echo "$GPIO" > /sys/class/gpio/export echo "in" > /sys/class/gpio/gpio$GPIO/direction echo "low" > /sys/class/gpio/gpio$GPIO/direction #所定時間押されるまで待つ cnt=0 while [ $cnt -lt $PUSHTIME ] ; do data=`cat /sys/class/gpio/gpio$GPIO/value` if [ "$data" -eq "1" ] ; then cnt=`expr $cnt + 1` else cnt=0 fi sleep 1 done # GPIO 25 をON GPIO=25 echo "$GPIO" > /sys/class/gpio/export echo "out" > /sys/class/gpio/gpio$GPIO/direction echo 1 > /sys/class/gpio/gpio$GPIO/value #シャットダウンの実行 shutdown -h now
シャットダウンがらみはこちらをそのまま拝借.
LEDを点けるところはGPIOの基本通り.
このスクリプトを chmod 755 しておいて,/etc/rc.local の最後 (exit 0 の前) に
su -c daemon.sh &
みたいに追記して 自動起動させる (1.2beta 以降.1.1の場合は先日の項を参照).ファイル名,パスは適宜修正.
このスクリプトを chmod 755 しておいて,/etc/rc.local の最後 (exit 0 の前) に
su -c daemon.sh &
みたいに追記して 自動起動させる (1.2beta 以降.1.1の場合は先日の項を参照).ファイル名,パスは適宜修正.
これで狙った通りの動作になった.
後は最後にACアダプタを引っこ抜くというのをスイッチに置き換えたいところ.
メカニカルに簡単にやるとなると,パドルスイッチを入れて,起動はそれをONにする,終了はまずシャットダウンボタンを押して,システムが落ちたことを確認してからパドルスイッチをオフにするという感じか.これだけのために凝った回路を作るのもどうかと思うが,スマートではないのも確か.
(2015.1.9 追記)
さらに機能追加してみた.
短く押すと再生/停止のトグル,長押しでシャットダウン.
http://yjo-blog.blogspot.jp/2015/01/volumio.html
(2015.1.9 追記)
さらに機能追加してみた.
短く押すと再生/停止のトグル,長押しでシャットダウン.
http://yjo-blog.blogspot.jp/2015/01/volumio.html
Muchas gracias por la información compartida!
返信削除El gusto es mio!
返信削除