Has anyone setup these pins to operate as a cooling fan controller? I’d like to have the fan come on during transmit and stay on for period of time after the transmitter stops.
Thanks
Mike
- You need to build the circuit on DMK engineering’s web site; the uri only sinks about 5 mil, and you can’t drive a fan with that. Building that circuit, and using pin 2 of the URI (IIRC, it’s GPIO1) you can drive a relay that will switch the fan on and off.
http://dmkeng.com/images/GPIO_Relay.pdf - Look of KA0KN’s website in KC area or modify my script based on that included below. He’s got a fan control circuit script that reads a flag file you set with the event subsystem in asterisk and turns the fan on after an elapsed time, and runs it for a period of time (both configurable in the script) after the last PTT.
- in the node usbradio.conf for the node, you have to set the pin properly: gpio1=out0 to initialize.
- event subsystem in the node to set the flag looks something like this:
[eventsnodenum]
touch /tmp/~pttstate = s|t|RPT_TXKEYED
rm -f /tmp/~pttstate = s|f|RPT_TXKEYED
First one sets the flag when it’s true the repeater is keyed, second one removes the flag.
My fan control script, adapted from Kyle’s:
#!/bin/bash
#########################################################################
#Filename: txfan
#Description:
#This file controls a PC fan attached to any aux port. It starts up when
#PTT is detected, and will stay on for the time period specified in
#the TIMEAFTER variable after the PTT drops. If the PTT is triggered
#in the countdown period, the timer resets.
#Original Authors:
#The majority of this script (the state manager) was taken from
#the ID scripts by KC6HUR and WW4M.
#Add the following to the events stanza of rpt.conf for each node you want
#controlled by the fan. Multiple nodes can control a single fan.
#The Event Management Subsystem is used to indicate PTT state to the
#TXFAN process.
#touch /tmp/~pttstate = s|t|RPT_TXKEYED
#rm -f /tmp/~pttstate = s|f|RPT_TXKEYED
#Add the following code snipit near the end of /etc/rc.local
#This will restart TXFAN process each time the node is restarted.
CUSTOM=/etc/asterisk/scripts
if [ -f $CUSTOM/txfan ] ; then
echo -n “Starting TXFAN process…”
killall txfan &>/dev/null
/bin/su - -c $CUSTOM/txfan root &>/dev/null &
echo “done!”
fi
if [ -f /tmp/fanlog ] then
mv /tmp/fanlog /tmp/fanlog.old
touch /tmp/fanlog
fi
#History:
#2005-02-16 kd6hwc Initial creation (with help from other scripts)
#2007-07-29 k6jwn Added new variable PTTON, fan won’t come on until
this timer reaches its limit.
#2012-01-28 k0kn Adapted script for app_rpt system
#2012-01-29 wb0yle Adapted to fit ‘normal’ acid install w/scripts in
/etc/asterisk/scripts.
Moved pttstate to /tmp so other scripts could
potentially query the state which may not have
perms to look in asterisk hierarchy. Changed
some display verbiage when running interactively
such as ‘Initial’ to ‘Idle’, which more accurately
reflects the constant state when not keyed.
###########################################################################
Define Asterisk paths
CUSTOM="/etc/asterisk/scripts"
BIN="/etc/asterisk"
Temp file that exists when PTT active which is set by event subsystem
PTTSTATE="/tmp/~pttstate"
Define the function that’s called to activate/deactive fan
FANON="$BIN/scripts/fanon"
FANOFF="$BIN/scripts/fanoff"
Define the period of time in seconds after the PTT drops to shut off the fan
TIMEAFTER=120
Define the max PTT time in seconds before the fan is activated
PTTON=20
define variables
declare -i IDLETIMER
declare -i PTTKEY
Start with state set to “Initial”
STATE=“Idle”
while [ TRUE ]
do
case “$STATE” in
"Idle") # Wait for first keyup, then proceed to Countdown
clear
echo -en "\r"`date ` "STATE = Idle\n"
sleep 1;
PTTKEY=0
while [ TRUE ]
do
echo -en "\rPTT Timer: $PTTKEY "
sleep 1;
# while PTT is silent (PTT=T)
if [ -f $PTTSTATE ] ; then
PTTKEY=$PTTKEY+1
fi
if ! [ -f $PTTSTATE ] ; then
PTTKEY=0
fi
if [ $PTTKEY -gt $PTTON ] ; then
break
fi
done
echo -en "\nPTT time exceded, activating fans"
$FANON
STATE="Countdown"
;;
"Countdown") # Count down period, if PTT is triggered, reset the timer.
echo -en "\n\n"`date ` "STATE = Countdown\n"
sleep 1
IDLETIMER=$TIMEAFTER
while [ TRUE ]
do
echo -en "\rFan powerdown timer: $IDLETIMER "
IDLETIMER=$IDLETIMER-1
sleep 1
if [ -f $PTTSTATE ]
then
IDLETIMER=$TIMEAFTER
fi
if [ $IDLETIMER = 0 ]
then
break
fi
done
echo -en "\nTimer expired, deactivating fan"
$FANOFF
STATE=Idle
;;
esac
done
fanon script:
#!/bin/bash
Scrip to turn on GPIO port 1 on URI
By Kyle Yoksh
Modifications by Bryan Boyle
nodeno=nodenumber
ddd=date
asterisk -r -x “rpt cmd $nodeno cop 62,GPIO1=1 0”
echo "System fans started "$ddd >> /tmp/fanlog
fanoff
#!/bin/bash
Script to turn off GPIO port 1 on URI
By Kyle Yoksh
Modifications by Bryan Boyle
nodeno=nodenumber
ddd=date
asterisk -r -x “rpt cmd $nodeno cop 62,GPIO1=0 0”
echo "System fans stopped "$ddd >> /tmp/fanlog
Getting it to work is left as an exercise for you.
73 de wb0yle/w2fuv
morrisville pa
fall river ma
Thank you I will take a look at this and see what works best for me.
For my node, I use a W1209 Thermostat Temperature Control Switch sensor attached to the radio heat sink to control a small fan on & off. Very configurable for most applications. Purchased off eBay for a few dollars.
Cheers,
Rob…
VK6LD
Thank you that’s exactly what I did and it works perfectly.
Mike
W1ZFB
···
From: Rob via AllStarLink Discussion Groups [mailto:noreply@community.allstarlink.org]
Sent: Monday, December 07, 2020 7:14 PM
To: mzfb@aol.com
Subject: [AllStarLink Discussion Groups] URI GPIO pins for a fan controller
|
VK6LD
December 8
|
- | - |
For my node, I use a W1209 Thermostat Temperature Control Switch sensor attached to the radio heat sink to control a small fan on & off. Very configurable for most applications. Purchased off eBay for a few dollars.
Cheers,
Rob…
VK6LD
Visit Topic or reply to this email to respond.
To unsubscribe from these emails, click here.
| Virus-free. www.avg.com |
- | - |