Offline
Newbie
Karma: 0
Posts: 9
|
 |
« on: November 03, 2012, 05:02:44 pm » |
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...
mi fate capire se si puo' fare? mi date dei link?
grazie
|
|
|
|
|
Logged
|
|
|
|
|
Tuscany
Offline
Edison Member
Karma: 20
Posts: 1049
|
 |
« Reply #1 on: November 03, 2012, 06:05:24 pm » |
Come hai detto tu, e' facile. Talmente facile che non ti saprei dare un link.
In pratica un piccolo sketch su Arduino, che legge dalla porta seriale connessa al PC con Linux e attiva il rele' in base al carattere ricevuto.
|
|
|
|
« Last Edit: November 03, 2012, 06:26:12 pm by brunello »
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 412
Arduino rocks
|
 |
« Reply #2 on: November 04, 2012, 10:12:04 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 16
Posts: 1801
|
 |
« Reply #3 on: November 05, 2012, 05:01:49 am » |
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.
Allora arduino è sempre in loop altrimenti come fa a leggere/scrivere sulla seriale?  ti consiglio(vedo che sei alle prime armi) di prendere un arduino uno, e qualche shield relay 5v : http://www.ebay.com/itm/Dual-Relay-Shield-Digital-Module-5V-for-arduino-UNO-Mega-1280-or-2560-PIC-/360505399841?pt=LH_DefaultDomain_0&hash=item53efcbda21lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic  ps forse potresti fare a meno di arduino e comunicare direttametne con la parallela però in questo modo puoi gestire molte piu cose con arduino,led,altri relay etc 
|
|
|
|
|
Logged
|
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 412
Arduino rocks
|
 |
« Reply #4 on: November 05, 2012, 05:50:16 am » |
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.
Allora arduino è sempre in loop altrimenti come fa a leggere/scrivere sulla seriale?  ti consiglio(vedo che sei alle prime armi) di prendere un arduino uno, e qualche shield relay 5v : http://www.ebay.com/itm/Dual-Relay-Shield-Digital-Module-5V-for-arduino-UNO-Mega-1280-or-2560-PIC-/360505399841?pt=LH_DefaultDomain_0&hash=item53efcbda21lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic  ps forse potresti fare a meno di arduino e comunicare direttametne con la parallela però in questo modo puoi gestire molte piu cose con arduino,led,altri relay etc  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ù.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Edison Member
Karma: 16
Posts: 1801
|
 |
« Reply #5 on: November 05, 2012, 05:51:47 am » |
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.
Allora arduino è sempre in loop altrimenti come fa a leggere/scrivere sulla seriale?  ti consiglio(vedo che sei alle prime armi) di prendere un arduino uno, e qualche shield relay 5v : http://www.ebay.com/itm/Dual-Relay-Shield-Digital-Module-5V-for-arduino-UNO-Mega-1280-or-2560-PIC-/360505399841?pt=LH_DefaultDomain_0&hash=item53efcbda21lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic  ps forse potresti fare a meno di arduino e comunicare direttametne con la parallela però in questo modo puoi gestire molte piu cose con arduino,led,altri relay etc  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 
|
|
|
|
|
Logged
|
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 9
|
 |
« Reply #6 on: November 05, 2012, 05:53:37 am » |
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
|
|
|
|
« Last Edit: November 05, 2012, 05:57:06 am by maxt2 »
|
Logged
|
|
|
|
|
Torino (ITA)
Offline
Full Member
Karma: 0
Posts: 156
|
 |
« Reply #7 on: November 07, 2012, 08:19:35 am » |
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...
mi fate capire se si puo' fare? mi date dei link?
grazie
Ciao io ho http://www.robotstore.it/product/321/Modulo-Rel%C3%A8-%28Arduino-compatibile%29.html e http://www.robotstore.it/product/448/Rel%C3%A8-Shield-per-Arduino.html 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!! ecco i video di quello che ho fatto
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 412
Arduino rocks
|
 |
« Reply #8 on: November 07, 2012, 08:30:19 am » |
Ecco lo script, l'ho trovato  #!/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
|
|
|
|
|
Logged
|
|
|
|
|
Genova
Offline
Edison Member
Karma: 14
Posts: 2442
|
 |
« Reply #9 on: November 07, 2012, 08:31:10 am » |
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è http://it.wikipedia.org/wiki/Porta_parallelaCon 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
|
|
|
|
« Last Edit: November 07, 2012, 09:52:55 am by pablos »
|
Logged
|
Meglio imparare dalle cose inutili piuttosto che non imparare niente. [Arduino Mega R3 + Ethernet shield W5100 + SD card 8Gb FAT32]
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 9
|
 |
« Reply #10 on: November 07, 2012, 06:13:55 pm » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 1
Posts: 412
Arduino rocks
|
 |
« Reply #11 on: November 08, 2012, 03:34:57 am » |
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.
|
|
|
|
|
Logged
|
|
|
|
|
Offline
Newbie
Karma: 0
Posts: 9
|
 |
« Reply #12 on: November 08, 2012, 07:08:11 am » |
grazie per lo script
appena ho un po' di tempo mi metto con calma e vedo di capire come funziona
|
|
|
|
|
Logged
|
|
|
|
|
|