[time-nuts] help

jimlux jimlux at earthlink.net
Mon May 2 16:51:00 UTC 2016


On 5/2/16 8:24 AM, Nick Sayer via time-nuts wrote:
> To flesh this out a bit more, on a Raspberry Pi, it would be easy to make a cron job that would pulse a GPIO pin high. They really *want* you to use Python (thus the name), but this is easy to do in just a shell script. First, do this to set things up:
>
> #! /bin/sh
>
> GPIO_PIN=9 # pick whatever one you like
>
> echo $GPIO_PIN > /sys/class/gpio/export
> echo out > /sys/class/gpio/gpio${GPIO_PIN}/direction
> echo 0 > /sys/class/gpio/gpio${GPIO_PIN}/value
>
> Next, run this script out of cron:
>
> #! /bin/sh
>
> GPIO_PIN=9
> echo 1 > /sys/class/gpio/gpio${GPIO_PIN}/value
> sleep 1
> echo 0 > /sys/class/gpio/gpio${GPIO_PIN}/value
>
> That will make a positive going pulse with the leading edge synchronized to cron (for sufficiently vague definitions of “synchronized”).
>
> As for the hardware side, take the GPIO pin and connect a 10k resistor between it and the base of a 2N4401 transistor. Connect the emitter to ground and the collector is a classic “open collector” switching output. Think of it like a switch connection to ground. When it’s on, there is a low impedance path to ground. When it’s off, it’s high impedance. You can use it to work a relay (be sure to add a flyback diode across the relay coil) or directly to switch any load that doesn’t exceed the abilities of the transistor.
>
> If you want to be a little safer, you can use an opto-isolator instead. Connect the GPIO pin to a 150 Ω resistor and then to the anode of the LED in an optoisolator. Connect the cathode to ground. The optoisolator itself can be either a phototransistor type or a driver triac type (the latter would be used to drive a power triac to switch AC loads on and off).
>


Or just buy a DC controlled solid state relay..  The NPN open collector 
current booster might be nice still, but the SSR takes care of all the 
galvanic isolation, etc.


The real question is whether "cron" is timely enough.  No matter, just 
write a script (or python) that reads time in a loop (and you can put a 
sleep in there) and pulses the GPIO when needed.








More information about the Time-nuts_lists.febo.com mailing list