volevo chiedere se con arduino si poteva fare questo:
io ho bisogno di comandare un rele (al momento me ne basta uno solo) dal computer
praticamente ho un computer con sopra linux senza interfaccia grafica (solo terminale)
io vorrei scrivere un programma per es. in c o altro, che stesso da terminale invia un segnale a arduino e questo mi dovrebbe far attivare un rele.. (cioe' e' il pc che deve dire a arduino quando attivare il rele, non mi serve che arduino da solo faccia il loop....)
in teoria sembra facile, ma sto cercando da ore su internet e non trovo niente di buono.. mi date una mano ?
vorrei capire se comprare arduino ecc oppure provare ad utilizzare direttaemente la parallela senza arduino...
Che portata deve avere questo relè?
Una cosa semplicissima sarebbe quella di prendere un relè a 5V e consumo molto basso e lo colleghi direttamente all'alimentazione della porta usb.
Poi tramite uno script attivi e disattivi l'alimentazione a quella determinata porta usb.
Da qualche parte dovrei avere anche uno script già pronto; devo cercarlo.
Ciao.
Stefanoxjx:
Che portata deve avere questo relè?
Una cosa semplicissima sarebbe quella di prendere un relè a 5V e consumo molto basso e lo colleghi direttamente all'alimentazione della porta usb.
Poi tramite uno script attivi e disattivi l'alimentazione a quella determinata porta usb.
Da qualche parte dovrei avere anche uno script già pronto; devo cercarlo.
Ciao.
Stefanoxjx:
Che portata deve avere questo relè?
Una cosa semplicissima sarebbe quella di prendere un relè a 5V e consumo molto basso e lo colleghi direttamente all'alimentazione della porta usb.
Poi tramite uno script attivi e disattivi l'alimentazione a quella determinata porta usb.
Da qualche parte dovrei avere anche uno script già pronto; devo cercarlo.
Ciao.
Si, ma se deve solo accendere e spegnere un relè (tra l'altro su linux) non ha senso fargli mettere arduino.
Arduino se lo può comprare per divertirsi ed imparare cose nuove ma per quello che gli serve credo sia solo una cosa in più.
Stefanoxjx:
Che portata deve avere questo relè?
Una cosa semplicissima sarebbe quella di prendere un relè a 5V e consumo molto basso e lo colleghi direttamente all'alimentazione della porta usb.
Poi tramite uno script attivi e disattivi l'alimentazione a quella determinata porta usb.
Da qualche parte dovrei avere anche uno script già pronto; devo cercarlo.
Ciao.
Si, ma se deve solo accendere e spegnere un relè (tra l'altro su linux) non ha senso fargli mettere arduino.
Arduino se lo può comprare per divertirsi ed imparare cose nuove ma per quello che gli serve credo sia solo una cosa in più.
Anche questo è vero gli basta il modulo relay linkato ha già tutto
stavo optando per arduino e non per la parallela per il semplice motivo che ormai la parallela sembra essere scomparsa dalla circolazione.. dovrei comprare prima un cavo da usb a parallela..
Poi tramite uno script attivi e disattivi l'alimentazione a quella determinata porta usb.
Da qualche parte dovrei avere anche uno script già pronto; devo cercarlo.
questo sarebbe molto interessante.. se lo trovi fammi sapere
a me non interessa molto quanta corrente riesca a gestire il rele
mi basta solamente che riesca ad alimentate la bobina di un contattore
maxt2:
ciao a tutti
ho appena trovato questo forum
volevo chiedere se con arduino si poteva fare questo:
io ho bisogno di comandare un rele (al momento me ne basta uno solo) dal computer
praticamente ho un computer con sopra linux senza interfaccia grafica (solo terminale)
io vorrei scrivere un programma per es. in c o altro, che stesso da terminale invia un segnale a arduino e questo mi dovrebbe far attivare un rele.. (cioe' e' il pc che deve dire a arduino quando attivare il rele, non mi serve che arduino da solo faccia il loop....)
in teoria sembra facile, ma sto cercando da ore su internet e non trovo niente di buono.. mi date una mano ?
vorrei capire se comprare arduino ecc oppure provare ad utilizzare direttaemente la parallela senza arduino...
#!/bin/bash
# USB Power Switching Script
# Script to toggle power management status of USB devices
# by DanyTheBat
declare -a ARRAYDEV
declare -a ARRAYPROD
declare -a ARRAYPWRSTATUS
declare -a ARRAYMAXPWR
let nprod=0
function padl {
tmp=$2
while [ ${#tmp} -lt $1 ];
do
tmp="$tmp "
done
echo "$tmp"
}
function padr {
tmp=$2
while [ ${#tmp} -lt $1 ];
do
tmp=" $tmp"
done
echo "$tmp"
}
function lower {
echo "$(echo $1 | tr [:upper:] [:lower:])"
}
function query_level {
# level: on - auto - suspend
if [ -e $1/power/level ]; then
ARRAYPWRSTATUS[$nprod]=$(cat $devhome/power/level)
else if [ ! -e $devhome/power/level ]; then
ARRAYPWRSTATUS[$nprod]=NA
fi
fi
}
function scan_usb {
for idVendor in $(ls /sys/bus/usb/devices/*/idVendor); do
devhome=$(dirname $idVendor)
devlevel=$devhome/power/level
# if product, leo, else leo idvendor e idproduct
if [ -e $devhome/product ]; then
ARRAYPROD[$nprod]="$devhome"
ARRAYPRODDESC[$nprod]="$(cat $devhome/product)"
ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
query_level $devhome
((nprod++))
else if [ -e $devhome/idVendor ]; then
ARRAYPROD[$nprod]="$devhome"
ARRAYPRODDESC[$nprod]="$(cat $devhome/idVendor):$(cat $devhome/idPro
duct)"
ARRAYMAXPWR[$nprod]="$(cat $devhome/bMaxPower)"
query_level $devhome
((nprod++))
fi
fi
done
}
function list_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRAYPRO
D[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAYMAXP
WR[$element]}")|"
#echo -e "${ARRAYPRODDESC[$element]}\\t(${ARRAYPROD[$element]})\\t[${ARR
AYPWRSTATUS[$element]}]\\t${ARRAYMAXPWR[$element]}"
done
}
function toggle_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
if [ "${ARRAYPWRSTATUS[$element]}" == "on" ] || [ "${ARRAYPWRSTATUS[
$element]}" == "auto" ] ; then
echo "suspend" > ${ARRAYPROD[$element]}/power/level
echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRST
ATUS[$element]}] to [suspend]"
else
echo "auto" > ${ARRAYPROD[$element]}/power/level
echo -e "${ARRAYPRODDESC[$element]} switching from [${ARRAYPWRST
ATUS[$element]}] to [auto]"
fi
fi
done
}
function verify_usb {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
return 0
fi
done
return 1
}
function get_usb_by_name {
for element in $(seq 0 $((${#ARRAYPROD[@]} -1))); do
if [[ $(lower "${ARRAYPRODDESC[$element]}") =~ $(lower "$1") ]]; then
echo -e "|$(padl 25 "${ARRAYPRODDESC[$element]}")|$(padl 30 "(${ARRA
YPROD[$element]})")|$(padr 11 "[${ARRAYPWRSTATUS[$element]}]")|$(padr 7 "${ARRAY
MAXPWR[$element]}")|"
fi
done
}
scan_usb
case $1 in
-l) echo -e
echo -e "USB Power Switching Script"
echo -e "---------------------------------------------------------------
---------------"
list_usb
echo -e "---------------------------------------------------------------
---------------"
echo -e
;;
-t) if [ ! "$2" == "" ] && verify_usb $2; then
toggle_usb $2
else
echo "Specify a valid USB Device: '$2' doesn't exist!!!"
fi
;;
-v) if verify_usb $2; then
echo -e
echo -e "USB Power Switching Script"
echo -e "---------------------------------------------------------------
---------------"
get_usb_by_name $2
echo -e "---------------------------------------------------------------
---------------"
echo -e
echo -e "'$2' USB Device exists!!!"
echo -e
else
echo -e
echo -e "USB Power Switching Script"
echo -e
echo -e "'$2' USB Device doesn't exist!!!"
echo -e
fi
;;
*) echo -e
echo -e "USB Mouse Power Switching Script"
echo -e "----------------------------------------------------------------
--------------"
echo -e "-l\\tList USB Devices"
echo -e "-t name\\ttoggle USB Device 'name' status"
echo -e "-v name\\tverify if USB Device 'name' exists"
echo -e
;;
esac
Io lo facevo con la parallela, ma si parla dei vecchi 286, 386, 486 con Qbasic inviavo un carattere all' IRQ7 (se non ricordo male) e visualizzavo il byte inviato in bit su 8 leds.
La porta parallela possiede 8 linee in output e 4 in input digitali (dovrei ripassare la materia non ricordo se gli 8 bit sono I/O o solo out)
Se vuoi semplicemente usare la parallela qualche schemino in rete lo trovi ancora, il linux non lo conosco però penso che qualche linea di comando per la parallela su C si trova sicuramente.
Guarda cercando con qualche minuto in più qui trovi i pin e un pezzetto di programma c++, anche una bozza di schema con relè
Con questo sistema il dato non permane sui pin della parallela, dovrai provvedere tu a crearti una memoria a 1 bit magari con un flip-flop
alberto39:
e con il monitor seriare cioè con il programma di arduino il quale è collegato con la porta usb al pc e cosi ho scritto un codice se inserisco 1 si eccita il relè e se inserisco 2 si spegne.
spero essere stato chiaro se non è cosi dimmelo!!
grazie per il video
il punto e' che io non voglio comandarlo interattivamente (e tramite quel programma)
io voglio comandarlo da terminale (cioe' senza interfaccia grafica) e non ho capito se e' una cosa facile da fare oppure no
cioe' se devo fare un programma in c, non so dove trovare qualcosa un esempio, qualcosa da riutilizzare ecc.
alberto39:
e con il monitor seriare cioè con il programma di arduino il quale è collegato con la porta usb al pc e cosi ho scritto un codice se inserisco 1 si eccita il relè e se inserisco 2 si spegne.
spero essere stato chiaro se non è cosi dimmelo!!
grazie per il video
il punto e' che io non voglio comandarlo interattivamente (e tramite quel programma)
io voglio comandarlo da terminale (cioe' senza interfaccia grafica) e non ho capito se e' una cosa facile da fare oppure no
cioe' se devo fare un programma in c, non so dove trovare qualcosa un esempio, qualcosa da riutilizzare ecc.
Se usi lo script che ti ho mandato, una volta capito su quale porta usb è collegato il relè, alla fine diventa un singolo comando per attivare e disattivare il relè.
Potrai lanciarlo manulamente o metterlo in cron in base alle tue esigenze.