| 
2025年 05月 の 日記
 
  |  | 01 May, 2025
 
Dmonitor に強制UNLINKボタンを追加【 目的 】Dmonitor v1.82(最終バージョン)でD-Star レピーターに接続して受信していると、2局間の送信に途切れがなく、RFからのunlinkが送信できない
 (当然ノードが送信中は子機からは送信できず)、RFからの切断ができない。その様な場合に、手早く内部から強制的に切断を行ないたい。
 そこでRasPi GPIO ピンを使って切断コマンド(resrpt.sh)を起動させ、初期RFコマンド待ちの状態にするというもの。
 ※注記1:初めに下記、動作確認手順で動作するかを確認し、理解してから作成してください。
 【 準備 】 以下サイトを参考にDVNODEが動く状態(dmonitorのみ動作すればOK)にしておいて下さい。👉ここ
 今回使用した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.shroot 権限で
 #!/bin/bash killall -s 2 dmonitorsleep 5
 systemctl stop auto_repmon
 sleep 1
 systemctl restart auto_repmon_light
 sleep 1
 systemctl restart rpt_conn
/home/pi/unlink2.shuser のままで
 LED点灯が不要な場合は#!/bin/shGPIO=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
 #!/bin/shGPIO=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) || trueif [ "$_IP" ]; then
 printf "My IP address is %s\n" "$_IP"
 fi
 /home/pi/unlink2.sh &  <-- 追加
 exit 0
 【 ボタンSW の配線】物理的ピン番号15(GPIO22) と、物理的ピン番号1(3.3v) を下記のように接続する。
 【 動作確認手順 】 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
  ●dmonitor & 専用Nextionディスプレイ
  
 
 |  |