[arduino]얼마나 많은 쉴드를 사용할 수 있는가?

[문제]
2개 이상의 쉴드를 아두이노에 쌓아서 사용할 수 있는가?

[해법]
shieldlist.org 를 방문해서 사용할 쉴드를 찾아본다. 그리고 그 쉴드들이 같은 핀을 사용하는지를 본다. 만약 쉴드가 shieldlist.org에 없다면, 그 쉴드의 schematic/datasheet를 찾아본다.

일반적으로 여러 쉴드가 하나의 핀을 사용해야 한다면, 그것들을 함께 사용할 수 없다. 특히 그 쉴드의 핀들이 SPI1나 I2C2 핀들이 아니라면 말이다. SPI나 I2C 통신은 하나의 마스터와 여럿의 슬레이브인 마스터-슬레이브 모델을 사용한다. 이럴 경우 일부 또는 전체 핀들을 공유하는 쉴드들을 사용할 수 있을 것이다.

SPI 핀들은 기본적으로 디지털 10, 11, 12, 13 핀들이다. 핀 10은 슬레이브 셀렉트 핀이며, 어떤 슬레이브와 통신할 것인가를 지정하는데 사용된다. 통신하기 원하는 각각의 SPI 슬레이브마다 다른 SS 핀이 필요하다.

I2C 핀들은 아날로그 4, 5 핀들이다.I2C는 슬레이브 기기를 구분하는 장치 주소를 사용한다. 그래서 슬레이브 셀렉트와 같은 것은 없다. 같은 두 핀을 모든 I2C 기기들과 공유할 수 있다.

많은 쉴드를 쌓으면 커패시턴스가 증가하는 것과 같은 다양한 문제를 유발할 수 있다. 이것은 신호를 약하게 하거나 통신이 끊기게 할 수도 있다.

[참고]
How many shields can I plug into Arduino?

[교훈]
쉴드를 그냥 적층해서는 안 된다.
신호를 주고 받을 때 사용하는 핀이 공유되지 않도록 한다.

  1. Serial Peripheral Interface Bus
  2. ‘Inter-Integrated Circuit’, protocol
spacer