Rozwiązanie dla potomnych (może komuś się przyda)
Moja płyta ma wyprowadzone 2 porty szeregowe, więc robię transmisje na oba (obojętne do którego potem wepnę kabelek)
Zasilanie +12V i masę (GND) biorę z zasilacza komputerowego
Z portu szeregowego używam tylko jednego kabelka TXD.
Jako parametr skryptu podaje czas w sekundach (i tyle czasu jest włączony przekażnik)
Opóźnienie w załączeniu i wyłączeniu przekaźnika wynosi ok. 1 sekundy
(ale dzięki temu elektronika jest odporna na zakłócenia, np. zauważyłem niepożądany krótki impuls na TXD pojawiający się w trakcie wyłączania komputera)
Żeby zmniejszyć opóźnienie można dać trochę mniejszy kondensator.
Używam tego urządzenia do automatycznego restartu (wyłączenie zasilania na kilkanaście sekund) modemów co 48 godzin o 5 rano.
Modemy po kilku dobach pracy niestety potrafiły się mocno zamulić.
Pozdrawiam
aksnet
Kod: Zaznacz cały
#!/bin/sh
if [[ $1 -eq "" ]]
then
echo "podaj czas w sekundach"
exit;
fi
COM1="/dev/ttyS0"
COM2="/dev/ttyS1"
COM_INIT="9600 cs8 clocal -cstopb -parenb -parodd -crtscts -cread"
# COM speeds: 110, 150, 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 56000, 115200
stty -F $COM1 $COM_INIT
stty -F $COM2 $COM_INIT
REBOOT_TIME=$1
NOW=$(date '+%s') # sekund od 1970
STOP_TIME=$(( $NOW + $REBOOT_TIME ))
while [[ $NOW < $STOP_TIME ]] ;
do
echo '\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' > $COM1
echo '\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF' > $COM2
NOW=$(date '+%s')
# echo $NOW
done
#stty -a -F $COM1
#stty -a -F $COM2