Pages: [1]   Go Down
Author Topic: vorrei comandare 1 rele dal pc...  (Read 2939 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Edison Member
*
Karma: 80
Posts: 2176
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 1
Posts: 446
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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? smiley-wink
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=item53efcbda21
lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic smiley-wink
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 smiley
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

0
Offline Offline
Sr. Member
****
Karma: 1
Posts: 446
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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? smiley-wink
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=item53efcbda21
lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic smiley-wink
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 smiley

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 Offline
Edison Member
*
Karma: 28
Posts: 2031
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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? smiley-wink
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=item53efcbda21
lo sketch è molto semplice quindi tranquillo se cerchi nel forum trovi 10mila topic smiley-wink
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 smiley

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 smiley-grin
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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..

Quote
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 Offline
Full Member
***
Karma: 1
Posts: 161
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 1
Posts: 446
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ecco lo script, l'ho trovato smiley

Code:
#!/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 Offline
Faraday Member
**
Karma: 43
Posts: 3478
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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_parallela
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
« Last Edit: November 07, 2012, 09:52:55 am by pablos » Logged

no comment

Offline Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 1
Posts: 446
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 9
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

grazie per lo script

appena ho un po' di tempo mi metto con calma e vedo di capire come funziona
Logged

Pages: [1]   Go Up
Jump to: