Shield Stacking

Adafruit Ethernet, Motor, Proto, Wave, Datalogger, GPS Shields - etc!

Moderators: adafruit_support_bill, adafruit

Please be positive and constructive with your questions and comments.
User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Shield Stacking

Post by tultalk »

Hi: I notice that some shields (data logger for instance) don't include stacking headers nor suggestion for their use.

I understand that stacking headers are like a (vertical) bus with ALL conductors carrying through each shield without interference. So my basic question is: Can I use stacking headers in place of the non stacking headers (data logger shield say Ok) for any shield assuming the header bus design is universal?

Is there any kind of industry standard applicable here?

Thanks
Robert

User avatar
adafruit_support_bill
 
Posts: 86258
Joined: Sat Feb 07, 2009 10:11 am

Re: Shield Stacking

Post by adafruit_support_bill »

Yes, you can use stacking headers on any shield. Signals and voltages on all pins will be passed straight through.

What you need to look out for is GPIO pin conflicts between shields. The i2c bus pins can be shared - as long as all i2c devices have different addresses. The SPI pins can be shared, but each device will require one dedicated GPIO pin for a 'chip select'.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

No std. Gues you have to evaluate:

The SD Card shield v3.0 makes use of pin 10 as a chip select. Please be sure other stacked shields do not make use of that same pin. See v4.0 of this shield for a version that uses pin 4.

These next lines were user added: This shield works fine for the Arduino Mega 2560, you just have to make the appropriate connections. 4or10 ->53, 11->51, 12 ->50, and 13 ->52. This arrangement works fine so long as you make sure not to assign anything else to those pins.

User avatar
adafruit_support_bill
 
Posts: 86258
Joined: Sat Feb 07, 2009 10:11 am

Re: Shield Stacking

Post by adafruit_support_bill »

These next lines were user added: This shield works fine for the Arduino Mega 2560, you just have to make the appropriate connections. 4or10 ->53, 11->51, 12 ->50, and 13 ->52. This arrangement works fine so long as you make sure not to assign anything else to those pins.
That comment is valid for older shields and older processor boards.

Current generation shields follow the Arduino V3 header layout. V3 and newer Arduino and compatible processors follw a standard for the SPI and i2c buses. SPI can be found on the 2x3 pin ICSP header and i2c has dedicated SDA and SCL pins.

The location of these signals on pre-V3 boards will vary depending on the processor. Most older vintage shields are designed for compatibility with the original Atmega 168 and 328 based Arduinos.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

Hi:

Thanks for response. I am using UNO R3 and data logger shield from you. Both within last 2 months. Should I assume compatibility? What identifying marks on Data Logger can I use to verify latest version?

Thanks
Robert

User avatar
adafruit_support_bill
 
Posts: 86258
Joined: Sat Feb 07, 2009 10:11 am

Re: Shield Stacking

Post by adafruit_support_bill »

The Arduino R3 header standard was introduced in 2010, and we updated the logger shield shortly after that. So anything purchased from us in the last 12 years is almost certainly R3 compatible. You can verify this by the presence of dedicated SDA and SCL pins next to the AREF pin on the header closest to reset button.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

Verified. Thanks
Robert

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

Off topic again. Bought some ESP-WROOM-32 boards. Am concerned because the pinout does not agree with Arduino UNO (attached). Looking at Adafruit Airlift. What exact chip is on this board and does it have 4mb memory?
Additionally, there appears to be much more "stuff" on the WROOM-32 board than on the Adafruit board.
Attachments
ComparisonPinOut.pdf
(23.29 KiB) Downloaded 3 times

User avatar
michaelmeissner
 
Posts: 1727
Joined: Wed Aug 29, 2012 12:40 am

Re: Shield Stacking

Post by michaelmeissner »

Shields are only work within the same family. Off the top of my head some of the common shield families include:
  • Arduino Uno and descendents (including Adafruit Metro)
  • Adafruit Feather (shields are called feather wings)
  • Adafruit QT PY and Seeed XIAO (shields are called BFF's)
  • Rasberry PI Pico (shields are called PiCowBell)
  • Adafruit Circuit Playground
  • PJRC Teensy
  • Adafruit ItsyBitsy (while there is a common layout, I'm not aware of ItsyBitsy shields)
In general the Uno and feather will have the most variety.

As others have mentioned, if you find an Arduino shield designed more than 10 years ago, it may not support running on either 5 volts or 3.3 volts. The original boards using AVR microprocessors (Uno, Leonardo, etc.) ran at 5 volts, but the more modern Arm based systems like some of the Metro boards and the newer Arduino boards run at 3.3 volts. If you connect a 5 volt device to a board that runs at 3.3 volts, you likely will fry the board.

As a minor note, the Arduino shield pinout is not at 0.1" spacing. This means you can't stick a shield into a breadboard. Evidently this was a mistake in the original design, but in the years since then all designs for a compatible shield have had to replicate this spacing.

The feather subsystem is made for stacking. You can solder either stacking headers (headers have long male pins soldered to the board and have female headers to stack another board), solder just male headers, or solder just female headers. There are doubler, tripler, and two quad breakout boards that allow you to use multiple boards without stacking the boards (and you can combine say a feather with stacking headers and a tripler). A few feather micro-processors and a few feather wings have options to buy the board with headers already soldered into the board.

With the feather system, there are multiple different microprocessors that use the same pinouts. Some of these microprocessors support things like Wifi and Bluetooth directly, so you wouldn't need a feather wing to add that functionality.

The QT PY BFFs are not really designed to stack more than one board.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

Hi

Thanks for response. I had just assumed that any board stating Arduino compatible meant physically (stacking).
I was just alarmed at the Wroom 32 pin layout which seemed to make no sense as to why thepin designations would be so different.

Robert

User avatar
adafruit_support_bill
 
Posts: 86258
Joined: Sat Feb 07, 2009 10:11 am

Re: Shield Stacking

Post by adafruit_support_bill »

Bought some ESP-WROOM-32 boards. Am concerned because the pinout does not agree with Arduino UNO (attached).
Not familiar with that product. But companies have been known to 'bend' standards as they see fit.

Looking at your list:
* NC means no-connection. R3 compliant processor boards do not use this pin and shields should not be dependent on it. It is reserved for future use.
* IOREF is an output pin from the processor which establishes the operating voltage. It is an input pin for all shields and a compliant shield will assure that all signal levels comply with that reference voltage.
* Analog and Digital IO pins - Naming convention for these can (and do) vary depending on the function of the board. That is not a problem.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

I will return them. I have some Adafruit Air Lift WIFI shields to use instead

I had just assumed that there was some industry organization that standardized these things.
Of course Chevy heads don't fit Ford blocks.

Thanks
Robert

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

In getting ready to use the Adafruit shield on the Arduino UNO I noted:
Digital I/O
UNO Adafruit
TX->1 Pin1 RX<1

RX<-0 Pin2 TX->0

Am I missing something?
Robert

User avatar
adafruit_support_bill
 
Posts: 86258
Joined: Sat Feb 07, 2009 10:11 am

Re: Shield Stacking

Post by adafruit_support_bill »

The transmitter (Tx) of the processor connects to the receiver (Rx) of the shield and visa versa.

User avatar
tultalk
 
Posts: 64
Joined: Thu May 14, 2020 7:00 pm

Re: Shield Stacking

Post by tultalk »

Mia Culpa, Mia Culpa

Thanks
Robert

Post Reply
Please be positive and constructive with your questions and comments.

Return to “Arduino Shields from Adafruit”