Change pinout of W5100 ethernet shield ?

Hi

I've purchased the ArduinoLCD from EarthLCD ( http://www.earthmake.com/products/arlcd/ ) and it's a nice little kit, easy to use and program.
But... I would like to "slam" a ethernet shield on the back of it, but the pins used for the ethernet shield are the same used internaly by the ArduinoLCD.

I can´t quite figure out if there is a solution to running a ethernet shield on the Arduino LCD ?, any hints and/or inputs would be highly appreciated.

I've attached the ArduinoLCD schematic as a pdf.

BooX

EarthMake-arLCD-Arduino-Compatible-LCD-Schematic.pdf (120 KB)

Both use the SPI bus: MOSI, MISO, SCK pins, plus SS (slave select). The only one that's flexible (short of going to bit-banging) is the SS pin. Since SPI is a bus, multiple devices can be connected, but each needs its own SS pin, so that only one device is addressed at a time. Unfortunately the Ethernet shield also uses pin 10 for its SS pin (in addition to pin 4 for the SD card SS pin).

I'd think it'd be possible to cut traces on one of the two boards and wire up another pin as SS, but without studying the actual boards, it's hard to say how difficult that might be.

That's the hardware side. Whether it's feasible from a software standpoint might depend on timing, e.g. can the LCD be de-selected while doing Ethernet stuff and vice versa, without adversely affecting function or responsiveness, etc. My gut says it should be OK, but knowing nothing of the ezLCD library (and almost nothing about the Ethernet library), I thought I'd throw that out there.

Hi Jack Christensen ( Danish user, just as me ? )

Thanks for the quick reply.

That's almost the same conclusion as I came up with myself. Besides from pin 10 the ArduinoLCD also uses D0/D1 for tx/rx.
It's no problem modifying the Ethernet shield to move pin 10 -> 9 and D0 -> D2 / D1 -> D3, I can do that with a couple of jumper cables, but how to modify the Ethernet Library to the new pins used might require some heavy programming skills - anyone ?

BooX

Uff da! Danish descent, USAnian by nationality. I have a cousin that has made multiple trips back to Denmark, doing genealogical research and meeting some long-lost relatives.

I'm not sure that pin 10 is coded into the Ethernet library at all; as the user needs to control it. Especially when using both the Ethernet and SD card, the sketch would need to de-select one and select the other at the appropriate times. Else, it using just Ethernet for example, pin 10 could just be set low and left.

Someone will surely correct me if that's wrong. EDIT: I'm thinking it is wrong, hopefully someone else can chime in.

Ah ! - I think you should be quite happy with not living in Denmark right now, we had -10 degrees Celsius last night :fearful:

Well back to the topic....

Apparently no one is able to help with modifying the Ethernet library code for a new pin out.

The solution might be to have a Uno with the Ethernet Shield collecting the data and hook it up with a serial connection to the ArduinoLCD.
I´ll give it a try in the weekend if the outdoor temperatures continues to stay in the 2 digit negative range :grin:

BooX

Good news! D10 is no longer used! Firmware version 2.10 and later for the arLCD remaps to use D0 & D1 for programming AND GPU communications. I have ran the standard ethernet example in the arduino library with no issues!

Randy
EarthMake Firestarter
Maker of the Arduino Certified (Arduino at Heart) arLCD Smart Touchscreen LCD

EarthMake:
Good news! D10 is no longer used! Firmware version 2.10 and later for the arLCD remaps to use D0 & D1 for programming AND GPU communications. I have ran the standard ethernet example in the arduino library with no issues!

Randy
EarthMake Firestarter
Maker of the Arduino Certified (Arduino at Heart) arLCD Smart Touchscreen LCD

Hi Andy

Sounds great, I'll give the new fw a try on my spare arLCD.
The solution I went for was to have an Arduino with an ethernet shield collecting the data and then hand them over to the arLCD using a 2 wire bud and the EasyTransferI2C library.
This actually works pretty well and gives some extra space for the code ( of course it requires an extra Arduino :wink: )

I made a video of my project that can be found on Youtube.:

Tha BooX :smiley: