Arduino per brandeggio pan tilt su linux

Buongiorno a tutti, mi presento sono Filippo ed ho scoperto da poco il mondo di arduino, per ora solo sul web.

Ho una esigenza, cioè vorrei pilotare un brandeggio tipo questo

http://www.microtelecamere.it/motori-telecamere/rotore-telecamera-brandeggio-pan-tilt-esterno-TA3103.htm

usando Arduino in ambiente linux: la mia idea è di creare una interfaccia web con dei pulsanti e comandare arduino via USB.

Non so se sia possibile, forse dico una fesseria perchè sono inesperto. :blush: Se qualche anima disponibile può indirizzarmi verso qualche guida o qualche sito in particolare ringrazierei moltissimo. Ad esempio, ancora non so se la board di Arduino è in grado di erogare direttamente i 12V che occorrono sul motore, o serve un ulteriore controller...

Probabilmente bisognerà programmare qualcosa, magari se c'è qualcuno disponibile, potrei ordinare una commessa :grin: :grin:

Molte grazie a chi mi darò una mano. Saluti, Fil

Ciao e benvenuto.

fildevil: Buongiorno a tutti, mi presento sono Filippo ed ho scoperto da poco il mondo di arduino, per ora solo sul web.

Ho una esigenza, cioè vorrei pilotare un brandeggio tipo questo

http://www.microtelecamere.it/motori-telecamere/rotore-telecamera-brandeggio-pan-tilt-esterno-TA3103.htm

usando Arduino in ambiente linux: la mia idea è di creare una interfaccia web con dei pulsanti e comandare arduino via USB.

Un'interfaccia web è indipendente dal SO con cui ti colleghi. Casomai il discorso è che devi fare la pagina web che risiederà su uno shield ethernet montato sull'Arduino.

Non so se sia possibile, forse dico una fesseria perchè sono inesperto. :blush: Se qualche anima disponibile può indirizzarmi verso qualche guida o qualche sito in particolare ringrazierei moltissimo.

Qui aspetta l'intervento di quelli che hanno esperienza nel pilotaggio di motori.

Ad esempio, ancora non so se la board di Arduino è in grado di erogare direttamente i 12V che occorrono sul motore, o serve un ulteriore controller...

No. Ti serve una fonte esterna.

Probabilmente bisognerà programmare qualcosa, magari se c'è qualcuno disponibile, potrei ordinare una commessa :grin: :grin:

Non "probabilmente" ma "sicuramente". Sai programmare?

Molte grazie a chi mi darò una mano. Saluti, Fil

Ciao. ;)

Grazie Leo sei stato davvero molto disponibile.

Dal momento che brancolo ancora nel buio, perdonami se chiedo ulteriori informazioni: da quello che mi stai dicendo, non dovrebbe essere possibile comandare il tutto tramite pc per poi trasferire il tutto su un web server linux, tipo creando dei pulsanti che richiamano un comando da inviare alla board ... non so se mi riesco a spiegare.

Quanto alla fonte esterna per l'alimentazione, si tratta di un accessorio di arduino, o di tuttaltra cosa?

Con la programmazione, sarà dura perchè sono praticamente a zero... ma ci si può provare, che dite?

Dovresti spiegarti un po' meglio, se vuoi semplicemente controllare i servi dal tuo pc non hai bisogno di un'interfaccia web, basta un programmino che invii dei dati all'arduino connesso alla porta USB(comunicazione seriale). Quindi l'arduino non farebbe altro che intercettare questi messaggi ed agire di conseguenza. Per far muovere i servi -> http://arduino.cc/en/Tutorial/Sweep Ma devi tener conto del fatto che hai bisogno di un'alimentazione esterna per quei servi.

Se poi vuoi interagire con i servi via web da un'altra piattaforma, non so aiutarti io :sweat_smile:

ciao :)

usando Arduino in ambiente linux: la mia idea è di creare una interfaccia web con dei pulsanti e comandare arduino via USB.

Casomai il discorso è che devi fare la pagina web che risiederà su uno shield ethernet montato sull'Arduino.

bhe, dipende... se arduino resta collegato al sistema linux durante l'utilizzo (ad es, anche ad un sistemino embedded "semplice" come un piccolo router), può benissimo fare a meno dell'ethernet shield ed utilizzare un web server su linux. Arduino ed il sistema linux si scambieranno informazioni via seriale.

da quello che mi stai dicendo, non dovrebbe essere possibile comandare il tutto tramite pc per poi trasferire il tutto su un web server linux, tipo creando dei pulsanti che richiamano un comando da inviare alla board ... non so se mi riesco a spiegare.

certo che è possibile

http://arduino.cc/forum/index.php/topic,111240.0.html

kernak: ciao :)

usando Arduino in ambiente linux: la mia idea è di creare una interfaccia web con dei pulsanti e comandare arduino via USB.

Casomai il discorso è che devi fare la pagina web che risiederà su uno shield ethernet montato sull'Arduino.

bhe, dipende... se arduino resta collegato al sistema linux durante l'utilizzo (ad es, anche ad un sistemino embedded "semplice" come un piccolo router), può benissimo fare a meno dell'ethernet shield ed utilizzare un web server su linux. Arduino ed il sistema linux si scambieranno informazioni via seriale.

da quello che mi stai dicendo, non dovrebbe essere possibile comandare il tutto tramite pc per poi trasferire il tutto su un web server linux, tipo creando dei pulsanti che richiamano un comando da inviare alla board ... non so se mi riesco a spiegare.

certo che è possibile

http://arduino.cc/forum/index.php/topic,111240.0.html

Grazie a tutti ed anche a Kernak che forse mi sta aprendo la strada...dovrò leggere con la dovuta calma il link segnalato. Mi spiego meglio, cercherò di essere più chiaro ed esplicito possibile

Abbiamo parlato di sistemi embedd; bene il nocciolo è questo:

http://www.eurowebcamsite.com/it/anemos-camplug-meteoplug/server-webcam-camplug-per-fotocamere-canon.html

uno sheeva server con cui, tramite linux ed un webserver che fa gestire alcuni programmi, si riesce a pilotare una fotocamera per fargli scattare foto ad intervalli regolari. Lo sheeva ha una porta LAN ed una USB su cui poter mettere anche un hub (infatti si possono gestire fino a 3 fotocamere contemporaneamente)

La mia idea era questa: inserire nel software una implementazione che consentisse di pilotare un brandeggio in modo da orientare la fotocamera nel punto desiderato. Da qui le mie domande circa la possibilità di lavorare in linux e di pilotare Arduino via USB o (a questo punto) via LAN.... ?? In questo modo, basterebbe aggiungere dei comandi sulla sua interfaccia grafica e pilotare la board... poi l'alimentazione del motore non è un problema.

Dovrò comunque parlare con lo sviluppatore, però l'idea mi sembrava davvero carina e molto utile.

Da qui le mie domande circa la possibilità di lavorare in linux e di pilotare Arduino via USB o (a questo punto) via LAN.... ??

L'idea di base è che il web server sul sistema linux gestisce l'interfaccia utente e, attraverso un qualche linguaggio di programmazione (php, python, perl, etc..), vengono inviati ad arduino tramite interfaccia seriale (anche emulata su usb va bene) tutti i comandi necessari al pilotaggio motori o altro. Quindi un collegamento (seriale o usb) tra arduino ed il sistema linux è necessario.

Perfettissimo... allora un primo step, quello della fattibilità è concluso positivamente!

Resterà da capire come inviare i comandi ad Arduino ed il programma da utilizzare... giusto una cosa da nulla no ??? :sweat_smile: :sweat_smile: :sweat_smile:

Prima di tutto bisognerebbe capire che sistema linux c'è su quel Camplug che hai linkato... Devi avere la possibilità, in qualche modo, di "far riconoscere" arduino a linux; che in pratica equivale a dire che nel momento in cui tu colleghi l'usb, su /dev viene creato il device seriale corrispondente. Su openwrt ad es è necessario installare alcuni moduli del kernel.

Poi... non ho capito una cosa: intendi modificare il software già presente sul Camplug o scriverne uno tuo?

Molte grazie.

La versione di linux dovrebbe essere debian. Da quello che ho capito bisogna installare delle librerie per fargli rinoscere la board, una sorta di driver...

Certamente si dovrà modificare il software già esistente, per svariati motivi: é giá molto avanti e stabile, poi il tipo che lo ha messo a punto é ingamba e credo accoglierà la mia proposta con entusiasmo. Più che altro vorrei capirci anche io qualcosa in modo da potergli sottoporre delle ricerche preliminari e agevolare così il lavoro. Sarebbe bello a questo punto prendere una board ed iniziare a sperimentare...

A proposito, quale hw occorre? E poi l'alimentazione dei motori è gestita a livello di interruttori da arduino, oppure devo prendere altro? Grazie come sempre

La versione di linux dovrebbe essere debian. Da quello che ho capito bisogna installare delle librerie per fargli rinoscere la board, una sorta di driver...

sì, servono dei driver

Sarebbe bello a questo punto prendere una board ed iniziare a sperimentare...

indubbiamente è il primo passo ;)

A proposito, quale hw occorre?

Oltre ai già citati Arduino, Camplug e pan/tilt, ti servirà un modo per pilotare i motori. Dentro ai pan/tilt di solito ci sono dei servi, quindi probabilmente non avrai bisogno di un driver, ma se sono a 12V, di una fonte di alimentazione esterna di certo sì.

Grazie kernak,

Perdonami la domanda stupida: quale arduino devo prendere? Ho visto che si sono più tipi, sono tutti uguali? Il camplug ce l'ho, il brandeggio lo posso prendere da quel sito, l'alimentazione non é un problema... Dovró solo iniziare a smaneggiare con i driver e con le righe di comando per attivare i servi, sulle quali per ora buio assoluto eheheeh

quale arduino devo prendere? Ho visto che si sono più tipi, sono tutti uguali?

No, ovviamente non sono tutte uguali. ma penso che per questo progetto una valga l'altra, non hai esigenze particolari.

L'unica cosa che mi salta subito alla mente è questa (che forse avrai già letto anche sulla discussione che ti ho linkato): Arduino effettua un reset automatico ad ogni connessione sulla seriale; cosa che ha la sua utilità quando carichi gli sketch dall'ide, ma che devi assolutamente evitare quando comunichi via seriale da un tuo programma, perché altrimenti la comunicazione non avviene in modo corretto. Con Arduino Uno la soluzione è un condensatore (testato personalmente), con il Duemilanove mi pare una resistenza (non testato), con Leonardo sinceramente non lo so..

Quindi se proprio vuoi comprare l'ultima arrivata, magari documentati prima su questa cosa.

Molto bene, allora prenderò una board arduino uno.

Per quanto riguarda il condensatore, dovrò imparare un po di "arduinese" prima di poter replicare... =( Farò necessariamente appello a qualche schema.

Una volta riconosciuta la board sul sistema sheeva, bisognerà poi scrivere delle righe di comando. C'è qualche ambiente da installare per fare questo? Qualche piccolo "programmare arduino for dummies" ?

Forse saranno richieste audaci, ma utilissime per chi è a secco come me... Grazie mille.

Per quanto riguarda il condensatore, dovrò imparare un po di "arduinese" prima di poter replicare... Farò necessariamente appello a qualche schema.

Ah, non preoccuparti. È solo un condensatore da 10uF collegato tra i pin gnd e reset di Arduino.

Una volta riconosciuta la board sul sistema sheeva, bisognerà poi scrivere delle righe di comando. C'è qualche ambiente da installare per fare questo? Qualche piccolo "programmare arduino for dummies" ?

C'è l'ambiente di sviluppo http://arduino.cc/en/Main/Software, da installare non sullo sheeva, ma sul pc su cui programmi. Da lì poi gli sketch verranno caricati su Arduino.

Di guide, tutorial, libri (anche cartacei) ed esempi ne trovi quanti ne vuoi. Ad es, un libro che parte da zero e ti spiega la filosofia di Arduino è "Arduino, la guida ufficiale" di Banzi. Inoltre, come vedi, dietro c'è una comunità molto attiva e disponibile ;)

Benissimo, quindi anche per il condensatore non ci saranno problemi, si può fare...

Penso che a questo punto bisogna solo creare i file di programma e caricarli su arduino per iniziare a far funzionare gli interruttori dei motori. Ad occhio si può fare anche qualche prova utilizzando semplici lampadine per emulare l'uscita tensione al motore...

Spero di riuscire ad imparare qualcosa dalle guide proposte. Chi sa se riuscissi a caricare qualche progetto open giá esistente? Potrebbe essere utile per iniziare a leggere il codice di sviluppo.

Esiste un posto in cui la community (hai ragione è molto attiva e disponibile, grazie mille), pubblica qualcosa?

Penso che entro domani faccio un ordine e prendo una board uno per averlo tra le mani il prima possibile.

Spero di riuscire ad imparare qualcosa dalle guide proposte. Chi sa se riuscissi a caricare qualche progetto open giá esistente? Potrebbe essere utile per iniziare a leggere il codice di sviluppo.

I servi si pilotano molto facilmente usando la libreria Servo, già inclusa nell'ide, dove trovi anche due semplici esempi su come deve essere utilizzata, che in pratica ti mostrano tutto quello che devi sapere.

Esiste un posto in cui la community (hai ragione è molto attiva e disponibile, grazie mille), pubblica qualcosa?

Nel playground trovi un sacco di info su praticamente ogni aspetto, oltre a codice di esempio ed a librerie aggiuntive ancora non incluse ufficialmente nell'ide, ma molto utili in diverse situazioni. http://arduino.cc/playground/

Inoltre Arduino è molto diffuso, con una semplice ricerca su google di esempi e tutorial ne trovi quanti ne vuoi.

Penso che entro domani faccio un ordine e prendo una board uno per averlo tra le mani il prima possibile.

Nel frattempo, se hai voglia di fare, puoi già scaricarti ed installarti l'ide ed iniziare a leggere e scrivere codice ;)

Perfetto Kernak, il tuo aiuto è stato [u]fondamentale[/u] per iniziare ad accendere qualche lampadina in un ambiente buio pesto :)

Da qualche parte ora dovrò partire. Inizierò ad installare l'ambiente (IDE) ed incrociamo le dita!!

Sono certo che tornerò certamente a chiedere qualcosaltro riaprendo il treath. Per ora un grazie davvero ed a risentirci!

Filippo.

Buongiorno a tutti, :grin:

ieri ho passato praticamente il pomeriggio a documentarmi sul da farsi. :sweat_smile:Ho scoperto altri dettagli, compresa la necessità di usare dei mosfet credo, per la gestione del motore, visto che arduino non tira fuori la corrente giusta.

A questo proposito, vi lascio lo schema del motore pan tilt ed i suoi collegamenti: in un primo momento avevo pensato di usare un circuito a ponte H, ma, dallo schema che leggete, non credo sia necessario, visto che è lo stesso motore ad invertire il movimento...

Ecco la morsettiera del motore:

1 >> AUTOMATICO 2 >> SINISTRA 3 >> DESTRA 4 >> SU 5 >> GIU' 6 >> COMUNE

Vi ricordo che il motore funziona a 12V DC e dovrebbe assorbire circa 3A...

Secondo voi dovrei usare un mosfet per ogni canale? oppure esiste un integrato da 3A che svolge questa funzione? Poi, quali PIN devo usare sul arduino? Digitali?

Grazie a tutti ragazzi....

kernak:

quale arduino devo prendere? Ho visto che si sono più tipi, sono tutti uguali?

No, ovviamente non sono tutte uguali. ma penso che per questo progetto una valga l'altra, non hai esigenze particolari.

L'unica cosa che mi salta subito alla mente è questa (che forse avrai già letto anche sulla discussione che ti ho linkato): Arduino effettua un reset automatico ad ogni connessione sulla seriale; cosa che ha la sua utilità quando carichi gli sketch dall'ide, ma che devi assolutamente evitare quando comunichi via seriale da un tuo programma, perché altrimenti la comunicazione non avviene in modo corretto. Con Arduino Uno la soluzione è un condensatore (testato personalmente), con il Duemilanove mi pare una resistenza (non testato), con Leonardo sinceramente non lo so..

Quindi se proprio vuoi comprare l'ultima arrivata, magari documentati prima su questa cosa.

Buongiorno, sono a buon punto... chiedo l'aiuto del pubblico: Kernak mi aveva suggerito di aggiungere un condensatore tra gnd e reset... E' quello che devo fare per evitare che ad ogni comunicazione abbia problemi di accesso alla scheda? Sto provando infatti ad accedere tramite seriale attraverso lo sheeva linux, e sembra che i comandi si comportino in modo non coerente, problema che invece non ho tenendo la scheda connessa al pc con l'IDE e relativo monitor seriale aperti..

Grazie mille