Pages: [1]   Go Down
Author Topic: Arduino UNO + USB host + Ethernet Shields  (Read 1205 times)
0 Members and 1 Guest are viewing this topic.
Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao a tutti,
sto cercando di realizzare un sistemino controllo accessi con Arduino.
Ho optato per l'Arduino UNO + Ethernet Shield da connettere ad un card reader USB.
Per questo ho acquistato l'USB host shield della SparkFun.

Dopo varie peripezie sono riuscito a intercettare i codici sulla banda magnetica utilizzando una libreria SPI modificata e la libreria Max3421e
....
#include <Spi.h>
#include <Max3421e.h>
....

Sono passato poi all'aggiunta del codice per Ethernet e la relativa libreria ma con triste sorpresa mi sembra di capire che le due cose non sono compatibili. Infatti mi da diversi errori in compilazione:

C:\Programmi\arduino-0022\libraries\Ethernet\utility\w5100.cpp: In member function 'void W5100Class::init()':
C:\Programmi\arduino-0022\libraries\Ethernet\utility\w5100.cpp:30: error: expected unqualified-id before '.' token

Ovviamente se tolgo la libreria "Spi.h" e rimetto l'originale "SPI.h" il codice di test Ethernet funziona.

Nessuno di voi ha esperienza in un qualcosa di simile?
Sapete se ci sono anche problemi a livello hardware tra le due schede?
Logged

Forum Administrator
Offline Offline
God Member
*****
Karma: 52
Posts: 640
I find plain exciting
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

lo shield usb non usa la libreria SPI ufficiale perciò va in conflitto.

tra qualche settimana uscirà del codice più compatibile perchè quella libreria usb host serve all'Android ADK che stiamo integrando in Arduino.

Non ho una data precisa per il rilascio.

(un'altra possibilità è modificare a mano la libreria Max3421e.h per farle usare la libreria SPI ufficiale, non so quanto lavoro richieda ma mi immagino che in un giorno o due di lavoro si faccia. se qualcuno lo fa ce lo dica che integriamo il codice)

m

Logged

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao,
grazie della risposta.....
lo supponevo.  smiley-cry

Oltre a questo ho trovato un'altro post in cui si parla di una incompatibilita' hardware.

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

Ti risulta?

Logged

Forum Administrator
Offline Offline
God Member
*****
Karma: 52
Posts: 640
I find plain exciting
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

c'è anche quel problema sullo shield di SparkFun. Hanno usato il pin SS di default (che viene assegnato all'ETH shield da arduino) perciò bisogna fare la stessa modifica che ha fatto l'autore del post.

nell'ADK usiamo un pin del processore 2560 non utilizzato perciò non ci sono conflitti

m
Logged

Palermo
Offline Offline
God Member
*****
Karma: 3
Posts: 764
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Io sono riuscito a farlo funzionare, ed in quel post spiegavo come smiley-wink
Logged

Gianfranco

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ciao Gianfranco,
potresti dirmi come hai fatto a compilare il programma e con quali librerie?
Io non ci riesco smiley-sad

Hai mantenuto le SPI originali?

Grazie
Alessandro
Logged

Palermo
Offline Offline
God Member
*****
Karma: 3
Posts: 764
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si, in pratica tutti e due gli shield usano il pin 10 e per tale ragione sovrapponendoli andrebbero in conflitto.

Per risolvere ciò ho piegato verso l'esterno il piedino relativo alla porta digitale n10 dell'usb shield, oi ho fatto un ponticello che unisce il pin10 dell' usb shield al pin 6. In questo modo l'arduino sul pin 10 riceverà il solo segnale dell'ethernet shield, mentre sul sei quello dell'host shield: così ho risolto il conflitto tra i due segnali.

Successivamente nel file Max3421e_constants.h ho modificato il riferimento al pin SS da 10 a 6.
Logged

Gianfranco

Firenze
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Wow!
dal post precedente ho fatto delle prove ed in effetti con l'SPI originale funziona tutto nel senso che mi compila i vari codici di supporto delle due schede; prossimo passo procedero' a fare le modifiche che tu dici e poi provero bene.
Nel frattempo mi ero concentrato sul far funzionare l'Ethernet, ma anche li ho problemi... grr.
Ho tolto l'USB shield ed ho compilato alcuni esempi ed i sostanza se Arduino fa da server va bene (vedo i pacchetti passare con tcpdump su Linux) se invece agisce come client (cosa che interessa a me) tendandosi di connettere ad un server, li non passa niente.

Ora faro' meglio altre prove poi vi faccio sapere.
Se qualcuno ci ha gia' sbattuto il naso help.....

Grazie
Alessandro
Logged

Palermo
Offline Offline
God Member
*****
Karma: 3
Posts: 764
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Se hai l'ultima versione dell'ethernet shield, ho letto che da problemi nel caricare un nuovo sketch, lo si risolve facilmente levando un resistore di troppo. In rete e sul forum trovi qualche cosa!!
Logged

Gianfranco

Pages: [1]   Go Up
Jump to: