Per utilizzare questo sistema, raspberry e radio devono essere alimentati da una batteria o gruppo di continuità. Potete realizzare un sistema simile a questo (da completare).
Uno script lanciato da crontab ad intervalli di cinque minuti (impostabile) si occuperà di attivare lo script. Nel caso venisse a mancare la rete elettrica, verrà attivato il ptt della radio e avviato un file audio .wav preparato precedentemente.
In parole povere, lo script verifica il livello logico sul GPIO24. Se uguale a zero attiva il ptt e il file audio. Semplice!
È possibile trasmettere l'annuncio, rete elettrica assente, anche verso i nodi svxlink o remotetrx a cui
si è collegati. Ho pensato a come realizzarlo, ma
non l'ho ancora messo in pratica.
Prima di avviare svxlink, o script che impegnano i pin GPIO, bisogna editare il file /etc/rc.local ed attivare i pin interessati. Questo per renderli disponibili all'accensione del raspberry. In questa pagina trovate le righe da inserire nel file /etc/rc.local.
Prima di avviare svxlink, o script che impegnano i pin GPIO, bisogna editare il file /etc/rc.local ed attivare i pin interessati. Questo per renderli disponibili all'accensione del raspberry. In questa pagina trovate le righe da inserire nel file /etc/rc.local.
La scheda audio utilizzata per gli annunci quella integrata nel raspberry.
Per rilevare la presenza della rete uso il GPIO24, vedi schema in basso.
Creiamo una cartella script nella nostra home. Tanto per avere un po d'ordine.
- mkdir script
Spostiamoci al suo interno
- cd script
- nano rete.sh
Copiamo nel file le seguenti righe:
- #! /bin/bash
- #Verifico se il ricevitore sta ricevendo.
- #No tx annuncio se presente qso in rx radio
- rxradio=`cat /sys/class/gpio/gpio27/value`
- #Controllo RX. Valore uguale reitera, diverso prosegue
- while test "$rxradio" = "1"
- do
- sleep 0.3
- rxradio=`cat /sys/class/gpio/gpio27/value`
- done
- sleep 1
- #Verifico presenza rete, se assente play reteassente wav
- retee=`cat /sys/class/gpio/gpio24/value`
- if [ "$retee" = "0" ]; then
- #attivazione ptt radio
- echo 1 > /sys/class/gpio/gpio22/value
- sleep 1
- #Riproduco reteassente
- aplay -D default:CARD=ALSA /home/pi/script/audio/reteassente.wav
- sleep 0.3
- #Rilascio PTT
- echo 0 > /sys/class/gpio/gpio22/value
- fi
La prima verifica, while, ricevitore in ricezione, è necessaria affinché non venga interrotto il qso in ricezione se presente.
Nel caso venga usato svxlink con logica ripetitore (RepeaterLogic), il controllo non è necessario.
Rendiamo eseguibile il file con
- chmod +x rete.sh
Proviamolo manualmente e verifichiamo se tutto funziona correttamente:
- sudo ./rete.sh
- sudo crontab
- */5 * * * * /home/pi/script/rete.sh > /dev/null 2>&1
Lo
script verrà cosi avviato ogni cinque minuti.
Nel caso la rete elettrica risultasse assente e il ricevitore non stia ricevendo un segnale, verrà avviato il ptt della radio e l'annuncio reteassente.wav.
Nel caso la rete elettrica risultasse assente e il ricevitore non stia ricevendo un segnale, verrà avviato il ptt della radio e l'annuncio reteassente.wav.
Potete creare i file audio .wav sul web, su un sito gratuito di sintesi vocale TTS. Per esempio: https://acapela-box.com/AcaBox/index.php
Con
una piccola modifica allo script, aggiungendo un file .wav rete
presente, potrete ottenere una risposta anche per la rete elettrica
presente, attivabile da tastiera dtmf.
Vediamo come fare.
Qui spiego come attivare la funzionalità dtmf exec script.
Creiamo un altro file con il nome rete1.sh
Creiamo un altro file con il nome rete1.sh
nano rete1.sh
e copiamo dentro il file le righe seguenti:
#! /bin/bash
#Verifico se il ricevitore sta ricevendo. No tx annuncio se presente qso in rx radio
rxradio=`cat /sys/class/gpio/gpio27/value`
#Controllo RX. Valore uguale reitera, diverso prosegue
while test "$rxradio" = "1"
do
sleep 0.3
rxradio=`cat /sys/class/gpio/gpio27/value`
done
sleep 1
#Verifico presenza rete, se assente play reteassente wav
retee=`cat /sys/class/gpio/gpio24/value`
if [ "$retee" = "0" ]; then
#attivazione ptt radio
echo 1 > /sys/class/gpio/gpio22/value
sleep 1
#Riproduco reteassente
aplay -D default:CARD=ALSA /home/pi/script/audio/reteassente.wav
sleep 0.3
#Rilascio PTT
echo 0 > /sys/class/gpio/gpio22/value
else
#attivazione ptt radio
echo 1 > /sys/class/gpio/gpio22/value
sleep 1
#Riproduco retepresente
aplay -D default:CARD=ALSA /home/pi/script/audio/retepresente.wav
sleep 0.3
#Rilascio PTT
echo 0 > /sys/class/gpio/gpio22/value
fi
Rendetelo eseguibile con
chmod +x rete1.sh
Lo
script è uguale al precedente, quello avviato dal crontab root ogni
cinque minuti, ma in questo caso otterremo una risposta anche con rete
elettrica presente.
Adesso possiamo attivarlo collegandoci via ssh, oppure comodamente
dalla nostra radio portatile digitando il codice DTMF preimpostato.
Questa è la sezione da modificare nel file Logic.tcl contenuto nella cartella /usr/share/svxlink/events.d/local
if {$cmd == "81"} {
puts "Verifica presenza rete elettrica"
exec /home/pi/script/rete1.sh &
playSilence 1000
playTone 880 60 150;
playTone 440 60 100;
return 1
}
Avviate svxlink, se non avete commesso errori, digitando dalla radio *81# verrà avviato lo script e ascolterete l'audio .wav corrispondente allo stato del GPIO24.
Svxlink deve essere attivo per utilizzare questa funzionalità.
Nessun commento:
Posta un commento