La mia prima board arduino e il primo progetto!

Ciao a tutti! Ho recentemente (ieri) scoperto arduino e, essendo appassionato di programmazione (lavoro su applicazioni web-based, php, python, postgresql, etc..) ho deciso di provare..

Cercando un pò su internet ho trovato questo kit, che essenzialmente ha tutti i componenti che mi servono per il progetto, secondo voi è buono?

Dunque, il mio progetto è abbastanza semplice: in azienda ci troviamo spesso a dover contare degli adesivi attaccati su una striscia di carta larga circa 2cm, praticamente abbiamo delle bobine di carta abbastanza grosse (circa 5000 adesivi) e dobbiamo di volta in volta staccarne piccole parti. Questi adesivi hanno tutti la stessa dimensione, e sono numerati (ma leggere il numero è credo impossibile, è scritto molto molto piccolo), tuttavia la striscia di carta è semitrasparente mentre gli adesivi coprono molto (sono metallizzati), per questo pensavo di usare una fotoresistenza.

Abbiamo già creato due staffe fatte a U dove incastriamo le bobine a mò di carrucola per contarli, la mia idea era di mettere un piccolo motore su una staffa (o su entrambe?) comandato da arduino che fa scorrere la bobina, e tra una staffa e l'altra una scatolina chiusa con dentro un led e la fotoresistenza per contare i bollini che passano; Raggiunto il numero desiderato arduino deve fermare il motore e magari emettere un suono.

Tra un adesivo e l'altro c'è uno spazio di circa 2-3 millimetri, secondo voi la luce del led che passa tra questa fessura è abbastanza per marcare bene lo spazio tra gli adesivi e quindi contarli? Inoltre, la fotoresistenza presente nel kit che ho linkato, a che velocità dovrebbe essere in grado di contare (non che vogliamo farla andare a chissàquale velocità).

Inoltre, una cosa che mi manca è un tastierino numerico (a 3-4 cifre) dove inserire il numero di adesivi che ci servono: qualcosa di semplice (vanno bene anche quelli con le freccine + e - a fianco a ogni cifra, non è necessario un vero e proprio tastierino numerico), voi quale mi consigliate (possibilmente dallo stesso negozio così faccio un ordine unico)

Ho visto che posso comandare arduino anche da pc, collegandolo tramite ethernet, usb o bluetooth, ma per imparare un attimo come funziona la piattaforma preferisco inziare con un programma 'a se stante' che funzioni per i cavoli suoi.

Vi ringrazio per l'attenzione ;)

--edit-- dimenticavo, per realizzare il progetto (i circuiti stampati li ho fatti a scuola anni fa, non mi ricordo molto) a parte un saldatore e lo stagno, ci sono strumenti particolari necessari?

Ti consiglio di dare un occhio a questa discussione :) http://arduino.cc/forum/index.php/topic,71623.0.html

e.. benvenuto :)

ratto93: Ti consiglio di dare un occhio a questa discussione :) http://arduino.cc/forum/index.php/topic,71623.0.html

e.. benvenuto :)

grazie ;)

Ho letto la lista e.. mi sa che devo rispolverare gli appunti di scuola (ammesso di trovarli), sopratutto la parte dei circuiti e su come piazzare le varie resistenze per ottenere i voltaggi/amperaggi desiderati :grin:

Ciao, io ho lo stesso kit che hai linkato prima, i motori che ti forniscono non funzionano con i transistor del kit, almeno io non ci sono riuscito ( neanche seguendo i loro esempi ), credo che ti convenga comprare solo i pezzi che ti servono per il progetto.

Mi pare strano. Dal sito quei motori risultano da 300mA, i BC547 a corredo reggono fino a 800mA. Però sono da 3V, non da 5V. Quindi dovresti alimentarli dal pin 3V3 magari con un diodo (schottky è meglio, ha una caduta di 0V3) per ridurre un po' il voltaggio.

Hai ragione Leo, avevo provato tempo fà e non mi aveva funzionato ho riprovato dopo aver letto il tuo intervento e funziona, forse prima lo avevo collegato al pin dei 5V… come non detto

le fotoresistenze sono lente, non so quanto, ma io ho usato un normale led con un trucco ed è molto veloce, parliamo di meno di un millisecondo (>1000 letture al secondo).

ovvio meglio led IR così sono poco abbagliati da altre fonti luminose. Ovviamente la velocità dei motori deve essere regolata per non far passare una scheda senza essere letta, e nemmeno poco che poi ci mette una vita. Per esempio, se il "buco" è di 2-3milimetri, e vogliamo leggero almeno 2 volte per sicurezza, la velocità è di 2 mm ogni 2 millisecondi, ovvero 1mm al millisec, 1metro al secondo.... se la schedina è di 2cm di lunghezza(non hai specificato, do per scontato sia quadrata), vuol dire 0,02 metri, e 1m/s / 0,02m = 50 piastre al secondo... non male!

Grazie a tutti per le risposte, oggi ho ordinato il kit e (se ho fortuna) nelle ferie di natale dovrei riuscire a lavorare al progetto

lesto: le fotoresistenze sono lente, non so quanto, ma io ho usato un normale led con un trucco ed è molto veloce, parliamo di meno di un millisecondo (>1000 letture al secondo).

ovvio meglio led IR così sono poco abbagliati da altre fonti luminose. Ovviamente la velocità dei motori deve essere regolata per non far passare una scheda senza essere letta, e nemmeno poco che poi ci mette una vita. Per esempio, se il "buco" è di 2-3milimetri, e vogliamo leggero almeno 2 volte per sicurezza, la velocità è di 2 mm ogni 2 millisecondi, ovvero 1mm al millisec, 1metro al secondo.... se la schedina è di 2cm di lunghezza(non hai specificato, do per scontato sia quadrata), vuol dire 0,02 metri, e 1m/s / 0,02m = 50 piastre al secondo... non male!

La fotoresistenza è quella nel kit .. dici che è troppo lenta?

Il led che hai usato tu.. in che senso "con un trucco"?

La distanza tra un adesivo e l'altro ora che li ho davanti è forse di più, 3-4,ìmm.. stasera posto una foto.

Specifico che dovrò poi anche costruire il supporto (scatolina) che contiene il sensore di luce, dall'altra parte il led e in mezzo ci scorre la striscia con gli adesivi.. ma questo c'entra poco con arduino :)

Visto che non trovo i vecchi appunti di elettronica di scuola, avreste anche un link per rinfrescarmi la memoria su come si fanno i circuiti stampati (l'utilizzo delle resistenza per ottenere l'amperaggio/voltaggio desiderato, condensatori, etc..)?

ecco la foto della striscia di carta con gli adesivi: link

la parte dove non c'è l'adesivo lascia passare abbastanza bene la luce, spero sia sufficente

mi spiace, ma senza il datasheet non conosco la velocità di campionamento della foresistenza, ma insisto sull'uso degli infrarossi, o meglio ancora gli ultravioletti perchè per loro la carta è trasparente!

il trucco del led che ti dicevo mi son sabgliato e impiega 100millisecondi (100 volte più lenta del previsto), ma son sicuro che con un fotodiodo o fotoresistenza puoi scendere al di sotto dei 100microsecondi (10 volte più veloce del previsto), ma ora faccio un paio di test con i led che ho a casa e ti dico come fare

ps. metti una foto con vicino un righello, non ho il senso della dimensione...

edit: metti anche le dimensioni della piastra (lunghezza) in cm e lo spazio tra le 2 piastre... così si possono fare calcoli molto più precisi

come non detto, ho trovato il vero trucco: http://www.gioblu.com/tutorials/elettronica/250-led-usato-come-cella-solare-o-sensore-di-luce

in pratica se hai 2 led, uno è sopra e fa da emettitore, l'altro sta sotto, col + collegato a GND, il - a una resistenza (2.2k) e la resistenza a GND.

Noterai una lettura bassa dall'analogRead quando passa la banda, e più alta quando c'è lo spazio trasparente.

Il valore di "sbalzo" se è proppo basso lo incrementi mettendoci più led emettitori; una volta che hai un bello sbalzo, provi a far scorrere a mano la striscia, in pratica dovrai essere tu a trovare empiricamente la velocità corretta del motore.

tieni presente che gioblu usa i led IR per comunicare a distanza a 1000 byte al secondo (8000 on/off al secondo), quindi la velocità del nastro che ti ho detto prima, 1m/s è al ribasso.

considera che per quel che ne so i led sono la cosa più veloce che puoi trovare, con tempi di risposta molto più bassi del ms, una fotoresistenza ha tempi di risposta intorno ai 30ms (quindi la stima iniziale di 50 adesivi al secondo scende a circa 15), infine ci sono i fotodiodi con tempi di risposta nei nanosecondi: per esempio questo impiega 5 nanosecondi http://it.rs-online.com/web/p/fotodiodi/0195697/ nel caso usassi un fotodiodo, sei limitato dalla velocità della digitalRead di arduino (con giusto circuito che "sollevi" il 1.5V del sensore ai 5V dell'arduino, e uno che generi i 1.5v.. oppure usi uno molto più costoso come questi: http://it.rs-online.com/web/c/?searchTerm=fotodiodo&sort-by=P_breakPrice1&sort-order=asc&sort-option=Prezzo&applied-dimensions=4294663374&lastAttributeSelectedBlock=4294683146)

la digitalRead impiega 100microsec, quindi il tuo macchinario conterebbe 100 schede al secondo.

edit: i led hanno tempi di risposta di 0,5 microsecondi (500nanosecondi), vapiù che bene, raggiungo lo stesso il valore massimo della digitalWrite e ci sono a 5V che costrano dai 2 ai 20 cent, dipende dove li compri.

leo72: ..... i BC547 a corredo reggono fino a 800mA.

Sei sicuro?? Io sapevo che reggono fino a 100 mA e uso dei BC618 per carichi leggermente più importanti

Grazie mille lesto per le informazioni :) :)

Non vedo l'ora che mi arrivi il kit, domani già che sono i giro mi procuro il saldatore e (anche se non credo di trovarle al negozio in cui devo andare) prendo un pò di resistenze/led/diodi (ma i led e i diodi non sono la stessa cosa?)

Per la dimensione degli adesivi, sono i bollini SIAE, se hai qualche cd originale in casa dovrebbe essercene uno dietro ogni confezione: sono argentati (per questo pensavo di usare la luce) - appena mi arriva il kit provo anche con gli infrarossi..

C'è da dire comunque che se riesco a calibrare sensore e motorino per contare 15 bollini al secondo, direi che è già un risultato ottimo (per contarne 100 ci mette meno di 7 secondi!), anche perchè non posso andare troppo veloce in quanto i bollini sono codificati e, se per qualsiasi ragione, la bobina si 'arruffa' e i bollini si rovinano sono casini (se noti nella foto, hanno dei tagli apposta per far si che una volta appicicati non si levino più).

Le staffe a U sono due staffe a se stante con un piedistallo proprio, posso metterle a qualsiasi distanza voglio senza problemi.. conta che ora utilizziamo un avvitatore per srotolare la bobina, ogni tanto ci fermiamo e in base al numero sui bollini calcoliamo quanti ne abbiamo presi ;)

Il kit dovrebbe arrivarmi lunedì o martedì, nel frattempo mi cerco qualche appunto di elettronica su come fare i circuiti elettrici, non mi ricordo proprio niente di quello che ho fatto a scuola (e sono passati 5 anni, mica tanti ;)

Pelletta:

leo72: ..... i BC547 a corredo reggono fino a 800mA.

Sei sicuro?? Io sapevo che reggono fino a 100 mA e uso dei BC618 per carichi leggermente più importanti

Dopo la tua affermazione, ho riguardato ed effettivamente i 547 sono normalmente dati per 100 mA. Gli 800 mA sono retti dai BC337, ma anche qui si trovano valori discordanti (alle volte 500 mA). Per scrupolo sono andato a ricercare il datasheet dei 547 in rete, e la corrente max varia da produttore a produttore. Ho trovato valori di 100mA come di 500mA. Coi transistor è un po' un casino... :*

@lesto: dunque, ho fatto un pò di pratica col kit e qualche test, ma c’è qualcosa che non mi torna.

Ho fatto come nel video che hai linkato, collegando il polo positivo di un led a terra e il negativo all’ingresso analogico 0, e con questo codice:

void setup()
{
    Serial.begin(9600);
}

void loop()
{
    Serial.print("Lettura: ");
    Serial.print(analogRead(0));
    Serial.print("\n");
    delay(300);
}

ottengo, quando c’è luce, sempre zero ma a intervalli regolari i valori salgono (fino a circa 250) e poi tornano a zero, diciamo circa 8-9 letture a 0 e poi comincia a salire:

Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 0
Lettura: 12
Lettura: 130
Lettura: 230
Lettura: 112
Lettura: 30
Lettura: 0
Lettura: 0
//.. e così via

Quando copro il led con una scatolina, in modo da ridurre drasticamente la luce che riceve, ottengo diverse letture da circa 180 a un massimo di 300.

Ho provato a fare una media:

int lettura = 0;

void setup() {
  Serial.begin(9600);
}

void loop() {
  for(int i = 0; i < 300; i++)
  {
    if(lettura < analogRead(0))
    {
      lettura = analogRead(0);
    }
    delay(2);
  }
  
  Serial.print("Valore maggiore: ");
  Serial.print(lettura);
  Serial.print("\n");
  lettura = 0;
  delay(300);
}

E, in presenza di luce, come media va da circa 50 a circa 90, mentre senza luce da circa 108 a 160 con punte di 300…
A occhio direi che mi servirebbe un qualcosa (diodo?) per amplificare la differenza tra luce e non luce il più possibile, in modo da poter poi interpretare i segnali in modo binario.

Altra cosa strana, se provo a collegare il led alla breadboard, e usare due cavetti che lo collegano ai pind i arduino, ottengo sempre zero… forse per una caduta di tensione? Eppure sono cavetti lunghi circa 10cm e la breadboard è di quelle piccole…

300 di lettura anlogica corrisponde a 1.5V... prova a collegare il 3.3V con il AREF, e usare analogReference per settare il reference EXTERNAL. in questo modo prendi come riferimento il 3.3V, e in toria il 300 dovrebbe divenire un 500

quelle letture 0 se ci fai caso sono a 50Hz... ovvero la frequenza della corrente di casa. CREDO che nella realtà le lampadine si accendano e spengano 50 volte al secondo, continuano probabilmente a emettere luce perchè rimangono abbastanza calde/eccitate.

se usi la luce esterna (sole) non dovresti vedere quei salti.

Altra cosa strana, se provo a collegare il led alla breadboard, e usare due cavetti che lo collegano ai pind i arduino, ottengo sempre zero.. forse per una caduta di tensione? Eppure sono cavetti lunghi circa 10cm e la breadboard è di quelle piccole..

non so... fai attenzione che solo la punta è sensibile, quindi il led va puntato verso la luce. I cavi di 10cm fanno da antenna, ma li al massimo dovresti leggere valori a caso, non 0... come hai fatto i collegamenti su bread-board?

Ok, stasera non riesco ma domani sera riprovo e posto un paio di foto di come ho effettuato i collegamenti…

Tuttavia continuo a non capire perchè la fila di letture a 0 e poi quei picchi (mantenendo un delay di 300ms), anche se la lampadina di accende/spegno 50 volte al secondo, la luce emessa (appunto per il calore residuo nella lampada) dovrebbe essere più o meno costante… io avevo ipotizzato fosse una sinusoide di arduino più che della luce, ma da ignorante in materia è una considerazione che lascia il tempo che trova.

Dove ho fatto la prova abbiamo lampadine a risparmio energetico, può essere che abbiano un qualcosa tipo condensatore che quando la lampada si ‘raffredda’ riprende l’alimentazione della stessa?

Domani provo a mettere i led dentro a una scatolina isolata e usare un led come emettitore, la luce dovrebbe essere più costante

guarda la stessa frequenza la laeggo ance io con una lampada a risparmio energetico "a tubicini", ma non me lo fa invece il bulbo a risparmio energetico della lampada da tavolo... dipende credo dal tipo di tecnologia, probabilmente alcune sono molto più sensibili

lesto:
guarda la stessa frequenza la laeggo ance io con una lampada a risparmio energetico “a tubicini”, ma non me lo fa invece il bulbo a risparmio energetico della lampada da tavolo… dipende credo dal tipo di tecnologia, probabilmente alcune sono molto più sensibili

Si anche io nella stanza in cui ho fatto la prova ho le lampade con i ‘tubicini’, probabilmente c’è un qualcosa (condensatore?) che chiude il circuito e ‘scalda il gas’ a intervalli regolari… però questo mi fa pensare che il led usato in questo senso è molto ma molto sensibile, questo comporta che dovrò usare più di un led per avere una lettura chiara (la scatolina dovrà avere anche le fessure per far passare la striscia di carta e quindi un pò di luce passerà, non voglio trovarmi nella situazione che se si accende una luce in ufficio mi perde il conto :wink:

Grazie per la disponibilità :slight_smile:

per questo ti dicevo di usare i led IR, costano quanto quelli normali ma le normali lampadine emettono pochissimi IR e quindi falsano poco la lettura