Doppia shield su Arduino Uno (Usb host + wifi shield)

Salve, avrei in mente di progettare un programma che ricevuto un barcode in ingresso, me lo confronta con un database (magari un semplice file di testo) contenuto in una sd card. Il condizionale è d'obbligo: Utilizzando infatti l'usb host shield per interfacciare il barcode ad Arduino, non ho la possibilità (o meglio ci ho provato, ma non funziona) di aggiungere una seconda shield (wifi perchè quella ho a disposizione ed ha un alloggiamento sd card). Entrambe usano interfaccia SPI. La domanda è: come potrei fare ad usarle entrambe? Il programma è strutturato in modo da leggere il barcode, confrontarlo per poi dare il risultato sul display (o seriale) quindi mi servono entrambe funzionanti contemporaneamente. Come potrei fare?

Grazie mille! Saluti

Se hanno differenti pin di CS (il pin che seleziona il device sul bus SPI) possono convivere, altrimenti no.

Quindi, verifica QUALI pin usa una shield e QUALI l'altra, ricordando che in comune possono avere solo il bus ( i tre pin MISO, MOSI, SCK).

Guglielmo

Ciao Guglielmo e innanzitutto grazie per avermi risposto. Vorrei subito precisare una cosa: praticamente i 6 pin dell'icsp sono collegabili solo su una scheda e non sull'altra. I pin MISO, MOSI, SCK ai quali ti riferisci fanno parte dei pin dell'icsp?

Per quanto riguarda i pin che usano le 2 shield: essendo nuovo al mondo Arduino (lo sto usando da circa 2 mesi) puoi spiegarmi dove andarmi a documentare per capire i pin utilizzati? Sono abbastanza a digiuno su questo mondo ma la volontà di imparare non mi è mai mancata.

Grazie ancora! spero mi seguirai nel mio progetto

Saluti e buona serata.

I pin del SPI sono ANCHE sul connettore ICSP, ma ciascuna scheda Arduino li ha anche da altre parti ... ... dato che sono funzione del tipo di scheda, la prima cosa è guardare il [u]reference della scheda[/u].

Esempio, per Arduino UNO, si vede che essi si trovano sul 11 (MOSI) 12 (MISO e 13 (SCK), mentre, su Arduino MEGA si trovano sui pin 50 (MISO) 51 (MOSI) e 52 (SCK), e così via in funzione della varie schede.

Per gli shield devi guardare la documentazione del produttore che, se è un produttore serio, deve dare tutte le specifiche della sua scheda.

Ad esempio, la vecchia WiFi shield prodotta da Arduino utilizzava il bus SPI (11, 12 e 13) più: il pin 10 come pin di CS (o SS come vuoi) per il WiFi ed il pin 4 come CS per la SD. Inoltre utilizzava per altri suoi scopi il pin 7 quindi, qualsiasi altra scheda che usasse i pin 4, 7 e 10 o i pin 11, 12 e 13 per scopi diversi dal SPI, sarebbe incompatibile con essa.

Guglielmo

il BUS SPI hat 4 collegamenti: MISO, MOSI, per le 2 direzioni dei dati SCK per il clock e un EN enable o SS Source Select. I primi 3 vengono collegati con tutti i dispositivi SPI, solo il EN deve avere ogni dispositivo il suo.

Per principio se si usano 2 pin diversi per i 2 EN funzionano le Due schede insieme. Se entrambe hanno il EN sullo stesso pin (normalemnte viene usato il 4 o il 10) devi modificare una delle 2 shild e coollegare il EN su un altro pin.

Visto che l' interfaccia USB non é cosí semplice da gestire Ti consiglierei di comprare un lettore Barcode con un interfaccia PS2 e fare il collegmento con Arduino tramite questa (cerca anche tastiera PS2) . Spesso i lettori hanno diverse possibilitá di interfacciamento e secondo l'adattatore o cavo funziona in un modo o l' altro. Informati nel manuale o dal venditore.

Ciao Uwe

Grazie ad entrambi per le risposte esaustive. Ho fatto qualche ricerca ed è uscito fuori questo. Entrambe le schede sono SPI (ok niente di nuovo) e comunicano tramite l'icsp header usando i pin 10,11,12,13. Quindi usano gli stessi pin. vi linko per comodità l'estratto:

https://store.arduino.cc/arduino-wifi-shield https://store.arduino.cc/arduino-usb-host-shield

a questo punto vi faccio 3 domande: 1) della scheda wifi a me interessa solo la lettura/scrittura della sd card (leggevo di un pin 4 tra le caratteristiche)... non posso sfruttare solamente questa feature? 2) non si possono cambiare questi benedetti pin in comune per far andare entrambe le schede? 3) esiste una shield per sfruttare sd + usb host shield compatibile? ne avrei trovata una non originale su un noto store online dove (tra le specifiche) leggo: d13--> sck d12--->MISO d11-->mosi d8--->cs

Ragazzi l'usb host shield non posso toccarla idem il barcode: ho fatto un lavoraccio per intefacciarli e farli funzionare insieme. Devo solo aggiungere questa feature al progetto (confronto del barcode letto con quelli di un file all'interno della sd) per ultimare tutto. Non posso ripartire da 0 ... non ne avrei il tempo: quindi devo tentare di plasmare alle mie esigenze la scheda wifi/sd e non viceversa.

I pin del bus SPI sono FISSI e non si posso modificare (sono in hardware nella MCU).

Comprati una shield solo con SD, le trovi per pochi euro e risolvi rapidamente il problema.

Guglielmo

A proposito dell'acquisto di una sola shield con usb che ne pensate di questo?

https://www.amazon.it/dp/B06XHJTGGC/?coliid=I1II9JPJJK9GXS&colid=LO8T9GJR11KE&psc=0&ref_=lv_ov_lig_dp_it

contrariamente, qualora non dovesse andare bene, potete consigliarmi qualche scheda pienamente compatibile (anche originale)? non ho problemi di budget

Grazie INFINITE!

... quella scheda USB Host di Arduino usa parecchi pin che ... si scoprono solo guardando lo schema :confused:

Oltre i classici 11,12,13 del SPI, usa il pin 10 come pin SS, il pin 9 come INT, il pin 8 come GPX inolte offre il collegamento anche ad altri pin ...

Occorre stare attenti a cosa altro si collega ...

Guglielmo

... la schedina su Amazon ha un'ambiguità ... il titolo dice: "modulo Micro SD Card per Arduino e Raspberry Pi".

Ora, Arduino lavora a 5V e Raspberri Pi a 3.3V ... leggendo più avanti si trova: "Il modulo per Arduino è adatto per progetti 5V." ed infine, tra i dati tecnici: "Tensione di alimentazione: 5V", quindi ... come fa ad essere compatibile anche con Raspberri Pi ?

Se le cose stanno come le descrivono quella scheda va bene solo per Arduino ... altrimenti ... non si capisce bene ::)

Guglielmo

Ok quindi 2 sono le cose: 1) contatto il venditore e chiedo se mi conferma la compatibilità con arduino escludendo quindi quella del raspeberry 2) andare di un altra shield solo sd ... avete qualche consiglio?

dancexfect: 2) andare di un altra shield solo sd ... avete qualche consiglio?

c'è un'ottima shield fatta da Sparkfun, ma ... per il pin CS (SS) usa ... il pin 8 al posto del 4 :'( :'( :'(

Guglielmo

gpb01: ... la schedina su Amazon ha un'ambiguità ... il titolo dice: "modulo Micro SD Card per Arduino e Raspberry Pi".

Ora, Arduino lavora a 5V e Raspberri Pi a 3.3V ... leggendo più avanti si trova: "Il modulo per Arduino è adatto per progetti 5V." ed infine, tra i dati tecnici: "Tensione di alimentazione: 5V", quindi ... come fa ad essere compatibile anche con Raspberri Pi ?

Se le cose stanno come le descrivono quella scheda va bene solo per Arduino ... altrimenti ... non si capisce bene ::)

Guglielmo

quindi mi serve una sd shield che offre come abilitazione quale pin?

gpb01: ... quella scheda USB Host di Arduino usa parecchi pin che ... si scoprono solo guardando lo schema :confused:

Oltre i classici 11,12,13 del SPI, usa il pin 10 come pin SS, il pin 9 come INT, il pin 8 come GPX inolte offre il collegamento anche ad altri pin ...

Occorre stare attenti a cosa altro si collega ...

Guglielmo

quindi tiriamo un po le somme perchè mi sto perdendo: mi serve una shield sd che abbia come pin ss quale pin? questo collegamento può avvenire o no? non so che fare cosa prendere e come muovermi a questo punto rischierei di comprare hardware 'inutile' investendo inutilmente tempo e denaro

Se prendi quella che hai indicato, il pin SS lo puoi decidere tu modificando la libreria SD ... ma NON dovrebbe servire dato che il pin 4 (che è quello che la libreria SD usa) NON mi sembra utilizzato dall'altra shield quindi ... colleghi solo MISO, MOSI SCK sui pin standard e come SS usi il 4 che dovrebbe essere libero. :)

Guglielmo

ok provo a prenderla. Per 8 euro non si muore :)

dancexfect: ok provo a prenderla. Per 8 euro non si muore :)

Tranquillo, ti funzionerà

brunello22:
Tranquillo, ti funzionerà

ragazzi mi è arrivata la scheda che ho linkato: senza usb host shield funziona collegando i pin in questo modo:
SD card attached to SPI bus as follows:
** MOSI - pin 11
** MISO - pin 12
** CLK - pin 13
** CS - pin 4.

con l’usb host e, conseguentemente la schield ‘solo sd’ collegata sopra non funziona.
Nel programma ho anche provato a cambiare il pin mettendo l’8 il 10 … niente!!!

Cosa posso ancora provare? sono disperato …

Che significa NON funziona? Cosa non funziona esattamente? Le due sheild, prese separatamente, funzionano bene entrambe?

Guglielmo

P.S.: NON cambiare il pin di SS per la SD, il 4 deve andare bene.

gpb01: Che significa NON funziona? Cosa non funziona esattamente? Le due sheild, prese separatamente, funzionano bene entrambe?

Guglielmo

P.S.: NON cambiare il pin di SS per la SD, il 4 deve andare bene.

forse non sono stato chiaro. Se collego la shield linkata qualche post più su SENZA ALTRE SHIELD collegate, funziona senza problemi (un esempio sdcard info lanciato dal compilatore gira e mi da tutte le info della sd).

Quando collego l'usb host shield E la shield dell'sd l'esempio sd card info non gira +. Mi dice di controllare se la card è stata inserita correttamente, o di controllare il pin usato dalla shield.

scusate l'ignoranza, ma non capisco una cosa: l'usb host shield usa come pin SS il 10. i pin di miso, mosi, clk non danno problemi e possono essere condivisi.

la scheda che ho preso usa come pin ss il 4.

vi trovate?

scusate ma se hanno 2 EN diversi.... perchè non funzionano insieme???????