Domanda Curiosa

ciao raga, secondo voi è possibile collegare un webcam ad arduino e ricevere i le immagini sul pc?

A meno che tu non sia masochista no.
L'atmega ha troppa poca memoria e non ha l'usb host e anche se l'avesse dovresti scriverti i driver per farla andare

Ma c'è un uC della atmel con sufficiente ram da elaborare immagini?

Una webcam minimo lavora a 320x200. Ammesso che gestisca 8 bit di colore (256 colori, ma credo che comunque siano senz'altro di più) arrivi a 64KB per fotogramma. Considera che in genere prendono 30 fps a 320x200, hai 1920 KB al secondo da gestire!
La seriale verso il PC max viaggia a 57600 bps, al max riusciresti a spedire 57 KB/s ma proprio esagerando e facendo i conti male.

grazie delle risposte
quindi non c'è modo di fare questo giusto?

Non credo. Poi, come ti ha detto Guglio, come faresti lato PC? Dovresti creare un driver tu...

quindi non c'è modo di fare questo giusto?

Piattaforma Arduino no. Altre forse ( non ho esperienza).
Ma perché vuoi mettere Arduino in mezzo?
Ciao Uwe

Beh, forse non si potrebbe sfruttare il full rate, ma rate inferiori perche' no? Poi il flusso potrebbe essere spedito tramite ethernet che consente, penso, una velocita' migliore (anche se le comunicazioni interne al massimo sempre a 115200 possono andare).

Non esistono driver base, compatibili con una buona parte delle webcam? soprattutto quelle hid che hanno una gestione, da quello che ho capito, piu' semplice! Potremmo partire da questi...

Ammesso e non concesso di saperlo scrivere, serve uno sketch che faccia la riduzione del fotogramma ricevuto Mettiamo che la webcam trasmetta immagini JPEG: queste vanno lette e salvate da qualche parte per l'elaborazione. Ma il problema resta: 1 singolo fotogramma a 320x200@8 occupa 64 KB di memoria, ben oltre i 2 KB di SRAM del uC.
Potresti usare la Flash invece della SRAM ma un Atmega328 ha solo 32 KB di capacità e devi metterci non solo lo sketch ma anche il fotogramma ridotto. Un Atmega1284 arriva a 128 KB di Flash però c'è un "però": le Flash hanno 10.000 cicli di scrittura, poi saltano.
Potresti allora pensare di usare della memoria esterna per salvare temporaneamente il fotogramma da elaborare e quello ridotto, ma poi avresti dei rallentamenti dovuti alla scrittura/lettura sulla RAM esterna. E poi dovresti ancora inviare il lavoro al PC e riceverlo in qualche maniera.

altro piccolo problema:
una lettura digitale dura circa 100microsec, quindi 10.000 letture al secondo, quindi circa 10kbit/s di lettura, ovvero 1.25kB/s

poi:
velocità di clock 16Mhz, 2Mhz di calcoli al secondo, anche solo facendo input e output, e ammettendo che prendano solo un ciclo l'una (cosa assolutamente non vera, ma molte di più), vuol dire al massimo elabori 1Mb di dati al secondo.
prendendo per giusti i calcoli di Leo72, 1920 KB/s == 15360Kb/s == 15.36Mb/s, circa 15 volte al di sopra del limite

con telecamera in scala di grigi, framerate e risoluzione ridicole qualcosa puoi combinare.. Per esempio ho visto sensori dei mouse ottici usati per riconoscere volti (ma il riconoscimento era a lato PC)

guardate qui Arduino e Roborealm | RoboDroid

la cam è collegata al pc, non ad arduino :slight_smile:

si purtroppo ho notato anch'io, troppo tardi però XD

nicola90wii:
guardate qui Arduino e Roborealm | RoboDroid

Wow, sono stato citato nel forum arduino :slight_smile:
Comunque al massimo puoi usare il sensore ottico di un mouse.. Ho visto cose carine, ma di certo non paragonabili ad una webcam..

Kal:
Wow, sono stato citato nel forum arduino :slight_smile:
Comunque al massimo puoi usare il sensore ottico di un mouse.. Ho visto cose carine, ma di certo non paragonabili ad una webcam..

Se il blog è il tuo sei pregato di correggere la voce "Sfera in equilibrio su un touchscreen" visto che in questo caso Arduino non c'entra nulla dato che il micro usato è un dsPIC come chiaramente scritto nella didascalia originale del video


The demo uses the Flex boards hosting a Microchip dsPIC DSC that pilots two servomotors. The ball position is taken by using a touchscreen!


Il video è stato realizzato dal Retis Lab della scuola Superiore S. Anna in Pisa.

astrobeed:

Kal:
Wow, sono stato citato nel forum arduino :slight_smile:
Comunque al massimo puoi usare il sensore ottico di un mouse.. Ho visto cose carine, ma di certo non paragonabili ad una webcam..

Se il blog è il tuo sei pregato di correggere la voce "Sfera in equilibrio su un touchscreen" visto che in questo caso Arduino non c'entra nulla dato che il micro usato è un dsPIC come chiaramente scritto nella didascalia originale del video


The demo uses the Flex boards hosting a Microchip dsPIC DSC that pilots two servomotors. The ball position is taken by using a touchscreen!


Il video è stato realizzato dal Retis Lab della scuola Superiore S. Anna in Pisa.

Corretto, grazie per la segnalazione :wink:

ma esiste qualche modo per ricevere i dati di una webcam senza collegarla a pc e sopratutto a distanza?

nicola90wii:
ma esiste qualche modo per ricevere i dati di una webcam senza collegarla a pc

come? dove? a cosa la vuoi collegare? ad arduino ci son vari motivi per cui non puoi (vedi sopra)...

nicola90wii:
e sopratutto a distanza?

certo!
ci son delle telecamere che sparano il loro segnale analogico / jpeg (dipende dalla camera) via 2.4 ghz, però alla prima interferenza perdi il segnale. (costi a partire dai 50€)
Altre ancora sono veri e propri computer ARM da 300-400mhz e inviano tutto via wifi, magari pure con un po' di compressione... (costi mooolto più alti)