***Dmonitor に強制UNLINKボタンを追加 [#x410039f] ''【 目的 】'' Dmonitor v1.82(最終バージョン)でD-Star レピーターに接続して受信していると、2局間の送信に途切れがなく、RFからのunlinkが送信できない (当然ノードが送信中は子機からは送信できず)、RFからの切断ができない。その様な場合に、手早く内部から強制的に切断を行ないたい。 そこでRasPi GPIO ピンを使って切断コマンド(resrpt.sh)を起動させ、初期RFコマンド待ちの状態にするというもの。 ※注記1:初めに下記、&color(Blue){動作確認手順};で動作するかを確認し、理解してから作成してください。 ''【 準備 】'' +以下サイトを参考にDVNODEが動く状態(dmonitorのみ動作すればOK)にしておいて下さい。 👉[[ここ:http://192.168.50.19/hcz.html]] +今回使用したRasPi はRaspberry pi 2。 機種やOSによりGPIOにや本体LEDに関する仕様が異なるので、 作る前に要確認。特にLED点灯が不要な場合はその行を省いてかまいません。 +今回使用したRF Module はDVAP。 +Nextion Display (2.4 inc)を使用したが、使用しない状態でも今回の目的には適う。 +ボタンまたはトグルSW(on/off のみに使用) ''【 プログラム 】'' (2つのshell scripts を作成する) +/usr/local/bin/resrpt.sh root 権限で >#!/bin/bash killall -s 2 dmonitor sleep 5 systemctl stop auto_repmon sleep 1 systemctl restart auto_repmon_light sleep 1 systemctl restart rpt_conn < +/home/pi/unlink2.sh user のままで >#!/bin/sh GPIO=22 #使用するGPIOポート PUSHTIME=2 #切断&リフレッシュを実行する秒数 ## 初期設定 gpio -g mode $GPIO in gpio -g mode $GPIO down while true; do ## ACT LEDの制御準備 echo timer | sudo tee /sys/class/leds/ACT/trigger echo 100 | sudo tee /sys/class/leds/ACT/delay_off echo 100 | sudo tee /sys/class/leds/ACT/delay_on echo none | sudo tee /sys/class/leds/ACT/trigger ## 2秒間押されるまで待つ cnt=0 while [ $cnt -lt $PUSHTIME ] ; do echo "$cnt "; if [ `gpio -g read $GPIO` -eq "1" ] ; then cnt=`expr $cnt + 1` [ $cnt -eq 1 ] && echo timer | sudo tee /sys/class/leds/ACT/trigger else [ $cnt -gt 0 ] && echo none | sudo tee /sys/class/leds/ACT/trigger cnt=0 fi sleep 1 done ## unlink/refreshの実行 sudo /usr/local/bin/resrpt.sh & echo none | sudo tee /sys/class/leds/ACT/trigger sleep 5 done < LED点灯が不要な場合は >#!/bin/sh GPIO=22 #使用するGPIOポート PUSHTIME=2 #切断&リフレッシュを実行する秒数 ## 初期設定 gpio -g mode $GPIO in gpio -g mode $GPIO down while true; do ## 2秒間押されるまで待つ cnt=0 while [ $cnt -lt $PUSHTIME ] ; do echo "$cnt "; if [ `gpio -g read $GPIO` -eq "1" ] ; then cnt=`expr $cnt + 1` [ $cnt -eq 1 ] else [ $cnt -gt 0 ] cnt=0 fi sleep 1 done ## unlink/refreshの実行 sudo /usr/local/bin/resrpt.sh & sleep 5 done < +それぞれ実行権を与える > $ chmod 755 home/pi/unlink2.sh < > $ sudo -s ←root になって # chmod 755 /usr/local/bin/resrpt.sh < +unlink2/shは、下記SWの動作確認を行った後、boot 時に自動起動するように/etc/rc.local に設定しておく。 # nano /etc/rc.local で以下の通り追加する。 >/etc/rc.local 中略 # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi /home/pi/unlink2.sh & <-- 追加 exit 0 < ''【 ボタンSW の配線】'' 物理的ピン番号15(GPIO22) と、物理的ピン番号1(3.3v) を下記のように接続する。 #ref(gpio_sw.JPG,,60) ''【 動作確認手順 】'' LED点灯無しの場合 TeraTerm でRasPi にSSH でログイン後次ことを実施する。($: user で) +最初、unrink2.sh の機能を確認する。 >$ /home/pi/unlink2.sh リターン none 0 0 0 0 1 ← SWをONになると数字がアップ(1,2が表示される場合もある) none ← ここから元に戻る 0 < +上記確認出来たら、resrpt.sh の echo “$cnt “; をコメントアウトして > echo “$cnt “; ⇊ #echo “$cnt “; < +/etc/rc.local に登録したらリブート > # reboot < ''【参考】'' +[[ボタン長押しでシャットダウンする電源ボタンを作ろう_2:http://192.168.50.19/victory7com.html]] +[[dmonitor & 専用Nextionディスプレイ:http://192.168.50.19/hcz2.html]] ●[[ボタン長押しでシャットダウンする電源ボタンを作ろう_2:http://192.168.50.19/victory7com.html]] ●[[dmonitor & 専用Nextionディスプレイ:http://192.168.50.19/hcz2.html]] #clear #comment #navi(日記) |