I'm new to Arduino shields.

I'm trying to stack these two shields on an arduino uno for a home automation project.

1 - Arduino Wifi Shield:

2 - Red Bear Lab BLE shield: http://redbearlab.com/bleshield/

I have pin contention, between the two shields: The WiFi shield uses pins: 4, 7, 10, 11, 12, 13. The BLE shield uses pins: 10, 11, 12, 13.

Is there a hardware or software way to allow the two shields to work together?

I saw in a similar thread, someone reccomended a go-between shield: https://www.sparkfun.com/products/11002, would this be something that I could use in this case?

If it's not possible, are there other shields that will work together?


migrated from electronics.stackexchange.com Aug 10 '15 at 2:26

This question came from our site for electronics and electrical engineering professionals, students, and enthusiasts.

  • I'm trying to do the same thing. Did you ever get this to work? – exvance Dec 11 '15 at 22:37
  • Not exactly... I was able to switch around some pins in the library to compile and get past the setup for BLE and WIFI. It works running on the BLE shield doing all the normal stuff, but as soon as I tried to use the WIFI shield to send an email, it crashed. Haven't had time to look into a proper fix yet. – nnegrey Dec 12 '15 at 23:00
  • Hey I just saw this: gonna wait to buy one once it's released: kickstarter.com/projects/1991736672/… I have their BLE board, really like it. Super excited for this. – nnegrey Dec 14 '15 at 21:18

The way the Arduino talks to each of the shields is by first telling the device that it wants to communicate with it, and then by exchanging information with that device. The Arduino uses 3 pins, 11, 12, and 13, to communicate to both the shields, and a 4th pin which it uses to select which of the devices it wants to use. This way the Arduino can use connect to two shields at once, by just selecting one at a time

I did some research, and found that the selection pin on the WiFi shield (which I believe is the same as yours: https://www.arduino.cc/en/Main/ArduinoWiFiShield) are pins 10 and 4; pin 4 for the SD card selection, and pin 10 for the WiFi selection. Now since pin 10 is used as a selection pin for both the WiFi shield and the BLE shield, you run into some problems: both the boards will be selected at the same time when pin 10 is used. In this case, you can use the Sparkfun go-between board you linked.

I've never used it myself, but it appears to be able to change what pin is attached where on the shield it's attached to. In this case, you want to put the WiFi shield on the bottom, then the Sparkfun go-between shield, then the BLE on the top. You want to set up the go-between shield to change pin numver 10 to another pin that's not being used (any pin but 11, 12, 13, 7, 4, or 10).

In the Arduino code you will at some point declare which pin is being used to select which board. In this case, set the WiFi selection to 10 (default), the SD card selection to 4 (default), and the BLE selection to whatever pin you changed pin 10 from with the go-between shield. This way, when you select the shield on pin 10, it will only select one shield, rather than two.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.