ALLA RICERCA DEL SENSORE

Salve a tutti,
vi dico subito cosa ho in mente: vorrei ottenere un output per azionare un qualsiasi attuatore, magari per azionare un motorino passo-passo, tramite un sensore che, "visualizzi" un'immagine statica come per esempio un simbolo, successivamente "la codifichi" in qualche modo, e la "confronti" con un simbolo "pre-codificato".

Per esempio se il simbolo da verificare è quello impostato, arduino darà un imput all'attuatore, se invece non lo è non fornirà niente.

Specifiche: é sufficiente che il sensore verifichi un simbolo al massimo di grandezza di 2 cm^2 e riesca a riconoscere almeno due colori.

Io avevo pensato ad una cosa simile ad un lettore di codici qr, ma in merito non non ho trovato grandi cose, per esempio non sono riuscito a capire se riesce a distinguere i colori, e se esiste un lettore in commercio.

Avevo pensato anche ad una CMUcam, sinceramente però mi sembra esagerata; sia perchè il monitoraggio che dovrà effettuare come abbiamo detto è statico di simboli di solo 2 cm^2 e al massimo di due colori uniformi, sia perchè il costo è elevato.

Chiedo se qualcuno può aiutarmi indicandomi un sensore adatto alle esigenze esposte, o un metodo che mi permetta di fare il mio progettino.

N.B. = Il tutto dovrà essere PC INDIPENDENTE, cioè solo arduino+sensore+attuatore.

Grazie per l'attenzione.

ciao, sò che esistono dei sensori di colore che danno in uscita i tre valori di R G B.
ma è più divertente sperimentare...
Usa una semplice fotoresistenza ed un led rgb...
devi illuminare l'oggetto separatamente con i 3 colori del led e leggere sulla fotoresistenza i valori di luce riflessa...
Naturalmente la fotoresistenza deve essere schermata dalla luce diretta del led.
Il simbolo avrà un suo valore RGB più o meno preciso....
è un idea... prova! (i materiali necessari sono poco costosi)

con questo metodo riesco solo a individuare il colore, o riesco a distiguere anche la geometria del simbolo per confrontarla?

il "trucco" sarebbe riconoscere la "miscela" di RGB unica per ogni simbolo (sempre che le variazioni fra un simbolo e l'altro siano significative).

date le piccole dimensioni del simbolo circa 2 cm^2, e le geometrie molto simili dei simboli, credo sia mettere un led RGB e una fotoresistenza che legga il colore e le differenze geometriche tramite la miscela RGB sia molto difficile, cmq farò delle prove.
Sai dove posso prendere spunto, sia software, sia per quanto riguarda i collegamenti?

La cosa più importante, forse non l' ho specificato nel primo mess, e quella che il sensore mi distingua la geometria, perchè per quanto riguarda il colore credo sia più di facile rilevamento, dato che si trattera di simboli a colore uniforme.

Siccome sono un neofita, voglio iniziare piano piano, magari con il riconoscimento di soli due colori, e al massimo di una decina di simboli.

purtroppo non esistono "sensori di geometrie" tranne le webcam+processing.
per i colori invece puoi guardare qui:
http://itp.nyu.edu/physcomp/sensors/Reports/DIYColorSensor

ciao Alessio
Vedo dura la cosa con un arduino.
Vedo necessario che prendi una telecamera a colori e elabori l'immagine per capire cosa sta vedendo.
Per questo l' arduino non é adatto. Dovresti usare dei processori piú potenti.
Ciao Uwe

avevo pensato anche ad una webcam senza processing, perchè come ho detto volevo fare una cosa PC indipendente, però non sò proprio come iniziare.

continuerò con le ricerche

grazie dell'aiuto

Per riprendere un'idea di un vecchio amico, puoi usare i sensori dei mouse come telecamera lowres in bianco e nero.....

Una Webcam oggigiorno ha un interfaccia USB; L arduino non puó essere collegato direttamente perché la sua USB é di tipo slave e non host. Ci sono schedine che fanno da Host ma ti resta comunque il problema che devi scriverti il programma per gestire il trasferimento dei dati dalla webcam all'arduino.
Poi devi avere un programma che ti interpreta le immagini. Il ATmega non é concepito per questo; hai giá problemi per tenere i dati in memoria visto che ne hai solo 2048 Byte di RAM che in parte saranno giá utilizzati per le variabili.
Se vuoi farlo o usi un sistema piú potente con un processore ( non microcontroller come il ATmega) oppure adatti un organizer con winmobile o android per farti l' elaborazione.
Poi dovresti inviare dei comandi per azionare le cose; potresti farlo attraversa una seriale. questo non so come si puó fare ma alla fine sará il problema minore perché devi risolvere prima Gli problemi di elaborazione immagini.

@brainbooster: per la cronaca un sensore del mouse rileva un immagine monocromatica di 16x16 fino a 20x20 pixel a secondo il modello.

Ciao Uwe

uwe hai ragione, parzialmente...
l'immagine è in scala di grigi (se non ricordo male 64 tonalità)..
se si illumina il simbolo con un led rgb e si processano le informazioni forse ne vengono fuori anche dei colori....
guardate questo sistema di posizionamento che riconosce dei pattern con un sensore da mouse:
http://tim.cexx.org/?p=613

ok; ma facciamo 2 calcoli. prendiamo l'esempio da quel link che mi hai mandato:

Il sensore é a 18x18 pixel a 6 bit di risoluzione (manteniamo un Byte per pixel per elaborare con piú semplicitá) sono poi 324 Byte per ogni colore e 972 Byte per un immagine a 3 colori. Questo é metá della memoria RAM del Atmega 328. Qua non hai poi tanto spazio per definire altre variabili e fare calcoli per riconoscere un immagine.
O prendi un ATmega1280 che ne ha 8 kByte, ma anche quá arrivi velocemente ai limiti del microcontroler.

ciao Uwe

stento a credere che il mio progettino non sia attuabile con arduino, ma non essendo tanto esperto devo fidarmi :frowning:

curiosando nel web, guardate cosa ho trovato CMU CAM3 y arduino.flv - YouTube

qui e stata utilizzata una CMU cam + arduino, cosa ne pensate?? sapete darmi qualche delucidazione in più?

volevo lasciare per ultima questa opzione, ma sembra che non resti altro da fare....

vi ringrazio

a dimenticavo, riguardo ai codici qr, che ne pensate? , potrei prendere spunto da li, ma non so se ne esistono a colori , e lettori quindi che riescano a valutarli.

vi ricordo che devo distinguere solo tra due colori rosso e nero, e devo riuscire riconoscere simboli, come triangoli rettangoli, quadrati, di colore uniforme.

ciao Alessio

leggiti il progetto http://www.cmucam.org/ che é un progetto con un processore dedicato alla elaborazione delle immagini riprese. L' arduino viene poi usato per muovere i motori a secondo delle informazioni che riceve dal CMUcam3.
Ho cercato il prezzo; su un sito tedesco ho trovato 178 ?, uno americano $ 239.00 .

Penso che questa combinazione é una via praticabile per il Tuo progetto.

Cosa sono i codici qr?

Ciao Uwe

I codici QR sono codici bidimensionali, di forma quadrata, che in base alla loro geometria contengono informazioni.
Hanno una funzione similare ai codici a barre, ma a differenza di loro possono contenere molte più informazioni.
per maggiori info : Codice QR - Wikipedia

Ciao Alessio

Grazie per la spiegazione.
Penso che un lettore di questi codici a barre bidimensionali ha una inteligenza interna e viene dato sul interfaccia solo la stringha decodificata.

Ciao Uwe

Capito adesso perchè mi erano venuti in mente i codici QR ?

L'uso di CMU cam, è stata la prima cosa a cui ho pensato, ed anche l'ultima soluzione che voglio adottare.

Mi interessa una soluzione tipo quella proposta da brainbooster, quindi quella di utilizzare un sensore ottico come quello dei mouse per riconoscere i pattern, anche se non so che tipo utilizzare, il suo principio di funzionamento, ecc. , diciamo che sono a zero.. :-[

Pensavo che se il metodo funzionasse solo per il riconoscimento dei pattern in scala di grigi, per me andrebbe bene, perchè potrei effettuare in una fase succesiva il riconoscimento del colore tramite un sensore di colore RGB, o potrei, siccome devo riconoscere solo tra due colori, come abbiamo detto, attribuire ad una certa tonalità di grigio il colore dovuto, in modo da distinguirli, lo so che non è una cosa facile, almeno per me, pero potrebbe essere una buona idea da sviluppare con il vostro aiuto.

Ragazzi comunque non ci dobbiamo fermare cosi, ancora giù con le ideee, anche se vorrei procedere con il vostro aiuto per la soluzione del sensore mouse sopra esposta.

Grazie a tutti per l'aiuto che mi state dando :slight_smile:

buoni algoritmi per il riconoscimento delle immagini sono le reti neurali, magari un pò complesse da fare da soli..
un'altra via potrebbe essere un'array di sensori RGB, anche se secondo me visto che i colori sono solo due e molto differenti, anche la scala di grigi può bastare.
Magari da quì puoi tirare fuori l'algoritmo che ti serve: http://qrcode.sourceforge.jp/

p.s. alessio l'ultimo messaggio in che lingua l'hai scritto? ;D

Ma devi leggere dei barcode 2d o dei simboli custom?
se sevi leggere simboli custom allora segui il link del mio precedente post, dove si usa proprio il sensore di un mouse ps2 abbastanza comune.
l'immagine viene divisa in una griglia 16x16, poi ogni pixel viene espresso con un numero che indica il livello di grigio, quindi alla fine puoi memorizzare un frame intero in un array bidimensionale che ti permetterebbe sia di "fotografare" i simboli che di fare la comparazione/riconoscimento :slight_smile: e magari dalla tonalità del grigio riesci anche a distinguere i 2 colori.