Connecting Wifi Shield to Arduino Robot

Good morning,

I bought the new Arduino Robot:

http://arduino.cc/en/Main/Robot

and wanted to connect the Wifi Shield to it:

http://arduino.cc/en/Guide/ArduinoWiFiShield

However, the pins 4,7 and 10 which are required are all occupied by the LCD. Could you please supply me with instructions of how to connect the Wifi Shield to the robot, both hardware and software instructions.

Please help me on this topic, I really need to get this working.

Thank you in advance.

Kind regards

Stefan Marggraff

Sounds like a school project…

What do those pins do? Sounds like you are going to have to hack the board and do some code changes…

In the description of the Wifi Shield it says that these pins are used for: SS for Wifi, Handshake, SS for SD card, respectively. Can I simply use any I/O pins on the processor to do this? Because as I said, those normally used are already implemented.

I think you can with the SS pins but the Handshake pin you have to have. You are going to have to hack either the LCD board or the WiFi board to make it work.

What exactly do you mean by hack? What do I have to do?

You need to study how they work together and move the pins so they don’t conflict with each other. That means you are going to cut some pins and solder some wires.

Is there no method to provide a ‘handshake’ by means of software or something without having to solder an actual connection?

namboy29:
Is there no method to provide a ‘handshake’ by means of software or something without having to solder an actual connection?

In a word, yes.

https://www.sparkfun.com/products/11002

Thank you for your answer.

This might be stupid, but I still don’t quite get how this will work.

Just to clarify, I am talking about digital pin7, which is occupied by the LCD reset function.

Do I have to solder a connection from the reset pin on the LCD to the proposed GoBetweenShield, secondly make a solder jumper on the shield, and thirdly connect the output to the pin7 on the Wifi Shield?

1- Figure out what pins are used by both shields. Pin 7 is one such pin.

2 - Figure out what free pin(s) are you’re going to use in place of those. This means (perhaps) software changes for that shield and that shield (obviously the LCD shield) goes on top of the Go-BTW shield. The unmodifed shield (WiFi) will go below the Go-BTW shield, perhaps directly on top of the Arduino.

3 - The bottom-most shield get’s 1’st ‘choice’ and uses whatever pins it uses. The used pins will be passed up to the Go-BTW shield but won’t go through the Go-BTW shield. The unused pins also go to the Go-BTW shield and there you have 2 choices. You may route them directly through the Go-BTW shield, going out on the same pin numbers they came in on. Do this by connecting the broken/open solder bridges along the diagonal (see the manual below), for those pins you choose.

http://dlnmh9ip6v2uc.cloudfront.net/dat … _Guide.pdf

4 - If the top shield needs a pin used by the bottom shield, you may redirect an unused in-coming pin to go out on that used pin. ie - let’s say pin 8 is unused, pin 7 is used by both shields. On the Go-BTW shield do not short the (on diagonal) 7in - 7out bridge. Instead short the 8in - 7out bridge. That means shorting an off-diagonal solder bridge. The manual shows that better than I can explain. The software for the top shield (LCD) must be told to use pin 8 for that function (reset), even though it’ll end up on pin 7 of the top shield.

5 - No connections pass through the Go-BTW shield initially, you choose them all by shorting the open bridges. If the pin is used by the bottom shield, do not have it pass through. If a pin is unused by both shields, there’s no need to pass it through (your choice).

6 - While the shield is setup to have you solder-blob the open bridges, I say a conductive pen should also work.

Thank you very much for all your help and assistance! I really appreciate it.

I am quite new to Arduino and unsure of how to tell the software to use pin 8 instead of pin 7, as in your example. Could you explain it to me, please?

Post the LCD code and a list of pins used by both shields.

I just use this Arduino Wifi Shield (http://arduino.cc/en/Guide/ArduinoWiFiShield), which I want to mount, and which uses the ICSP header and additionally pins 7 and 10.

The other component is the LCD that comes standard with the Robot (http://store.arduino.cc/index.php?main_page=index). It uses pins 7, 9, 10, as far as I can see from the pin mapping table (http://arduino.cc/en/Main/Robot).

So the clash is between pins 7 and 10.

As for the LCD code, I just used what comes standard with the Arduino Software.

I hope this is the information you require, please tell me if there is something else. And once again, thank you for your help!

I think I’ve been leading you down the wrong path. I assumed when you asked about using the WiFi shield that the LCD plugged into a standard Uno layout of header pins. The crude pictorials didn’t appear to contradict this. But looking at the detailed LCD datasheet shows this is not the case. The LCD plugs into a custom header, that’s different and incompatible w/the normal Arduino shield layout. So the WiFi shield will not plug in there and the Go-BTW shield is of no use.

To use the WiFi shield you’ll have to figure out how to mount it someplace and then solder wires to it. Since the WiFi shield uses the SPI bus, you’ll have to find out where you tap into the MOSI, MISO and SCLOCK signals to bring them to the WiFi shield. I believe any GPIO pin can be used for the WiFi shield SS signal. I’ll guess powe and ground are available near the prototyping areas.

Sorry for the wrong path.

No problem.

The robot comes with an ICSP header, so does the Wifi shield, so I thought about connecting them via that port. However, I need to connect the Handshake pin, pin 7, wich, as I said, is used by the LCD.

When changing pins, do I just change the in the C++ files, where they are defined, in the Wifi Shield library, to some open pins? Will this work for pin 7?

You should be able to change the library code to swap the SS function to another pin and I don’t see why that wouldn’t work w/pin 7 as well. That file should be just the spi_drv.cpp file and these defines;

#define DATAOUT 	11 // MOSI
#define DATAIN  	12 // MISO
#define SPICLOCK  	13 // sck
#define SLAVESELECT 10 // ss
#define SLAVEREADY 	7  // handshake pin
#define WIFILED 	9  // led on wifi shield

Ok…so what exactly do I have to do? Just change the pin in the code to one thats open and then make the physical connection and thats it?

namboy29:
Ok…so what exactly do I have to do? Just change the pin in the code to one thats open and then make the physical connection and thats it?

Hopefully, yes. But I worry about some existing SPI driver on the robot clashing with the WiFi version. Without it's 'library' to look at, I don't know what else to do.

Is it save to give it a try or could I damage something?

I solved this issue and managed to connect the shield to the robot. Check here how: http://arduinorobothelp.wordpress.com/