Las shields son placas de circuitos modulares que se montan unas encima de otras para dar funcionalidad extra a un Arduino. Esta Shields son apilables.
Las shields se pueden comunicar con el arduino bien por algunos de los pines digitales o analógicos o bien por algún bus como el SPI, I2C o puerto serie, así como usar algunos pines como interrupción. Además estas shields se alimenta generalmente a través del Arduino mediante los pines de 5V y GND.
En muchos casos nos encontraremos que los shields vienen sin soldar las patillas o en algunos casos sin algunos componentes soldados.
Cada Shield de Arduino debe tener el mismo factor de forma que el estándar de Arduino con un espaciado de pines concreto para que solo haya una forma posible de encajarlo.
Debemos tener en cuenta que cuando instalemos un shield, habrá que leer su documentación que nos dirá si inhabilita algunas de los pines I/O o si usa un bus y que requisitos tiene para su utilización. Generalmente las shields vienen con un ejemplo o una librería para su uso.
En algunos casos los shields pueden tener el pineado que no permite apilar más.
Ejemplo de 25 shields útiles: https://randomnerdtutorials.com/25-arduino-shields/
Todas las shields de Arduino pueden verse en:
- https://store.arduino.cc/arduino-genuino/shields
- https://www.arduino.cc/en/Main/Products
- http://www.arduino.org/products/shields
Ethernet Shield V1
Web: https://www.arduino.cc/en/Main/ArduinoEthernetShieldV1
Esta shield ha sido retirada en sustitución de la Ethernet Shield V2 https://www.arduino.cc/en/Main/ArduinoEthernetShield
Este Shield es el usado en el curso.
La placa Arduino se comunica con el módulo W5100 y la micro-SD utilizando el bus SPI (mediante el conector ICSP). Esto se encuentra en los pines digitales 11, 12 y 13 en el modelo UNO y en los pines 50, 51 y 52 del modelo MEGA. En ambas placas, el pin 10 es utilizado para seleccionar el W5100 y el pin 4 para la micro-SD. Estos pines no pueden ser utilizados para otros fines mientras la Ethernet Shield esté conectada. El en MEGA, el pin SS (53) no es utilizado pero debe dejarse como salida para que el bus SPI funcione correctamente.
Ethernet Shield 2
Web: https://www.arduino.cc/en/Main/ArduinoEthernetShield
Se trata de una versión mejorada del Ethernet Shield V1 con el chip ethernet W5500 en lugar del W5100. Aporta mejoras a la versión 1 y se usa con la librería ethernet2 en lugar de la librería ethernet. https://www.arduino.cc/en/Reference/Ethernet
Chip W5500: http://wizwiki.net/wiki/lib/exe/fetch.php?media=products:w5500:w5500_ds_v106e_141230.pdf
Arduino Wifi Shield
Web: http://arduino.cc/en/Main/ArduinoWiFiShield
Permite conectar un Arduino a Internet mediante Wifi y hace uso de la librería WiFi Library http://arduino.cc/en/Reference/WiFi. También dispone de un slot para una tarjeta micro SD.
Este shield se comunica con Arduino a través del bus SPI mediante los pines ICSP y usa los pines 4 y 10 al igual que la Shield Ethernet. También hace uso del pin 7 que no puedes ser usado.
Debe tenerse en cuenta que dado que la tarjeta SD y la wifi usan el mismo bus SPI, no pueden trabajar simultáneamente, lo que es un punto importante durante la programación si usamos ambos periféricos. Esta tarjeta también dispone de unos interfaces en placa para actualizaciones de firmware y diagnósticos.
Este shield ya está descatalogado y ha sido sustituido por el Arduino WiFi Shield 101
Arduino WiFi Shield 101
Web: https://www.arduino.cc/en/Main/ArduinoWiFiShield101
Este nuevo shield es una mejora de la anterior wifi shield desarrollada junto con Atmel que usa el módulo WINC1500 y también añade funciones de cifrado hardware gracias al chip de cifrado ATECC508A diseñado para el mercado de IoT. Los pines 5 y 7 son usados por este shield.
Usa una nueva librería llamada WiFi101 https://www.arduino.cc/en/Reference/WiFi101 que también usan otros Arduinos con wifi integrado como el MKR1000. Esta librería es muy compleja y ocupa más del 60% de la memoria disponible en el Arduino UNO, dejando poco espacio para los sketches. Si se van a realizar programas complejos, este shield es recomendable usarlo con Arduino Zero, 101 o Mega.
Arduino GSM Shield V2
Web: http://arduino.cc/en/Main/ArduinoGSMShield
Esta placa sustituye a la GSM Shield V1: https://www.arduino.cc/en/Main.ArduinoGSMShieldV1
Conecta Arduino a Internet mediante GPRS, usando una tarjeta SIM. También permite enviar y recibir mensajes y llamadas de voz (SMSs)
Telefónica presentó la nueva versión del proyecto Arduino GSM/GPRS Shield, un dispositivo que incorpora conexión GPRS/GSM a una placa base de hardware libre, dando como resultado un dispositivo de bajo coste conectado gracias a la tecnología machine to machine (M2M) de Telefónica. ¿El fin? Abrir nuevas posibilidades para que el llamado internet de las cosas pueda prosperar de forma sencilla y económica con la colaboración de Arduino.
Como cualquier otro elemento de Arduino, está disponible la documentación de HW y SW y es open source. Usa los pines 2 y 3 (software serial) y el pin 7 (reset), pero hay una serie de condicionantes para su uso con los Arduinos Mega, Yun y Leonardo debido a que los pines que se usan para comunicar deben tener implementada interrupción en el pin 2.
Para su uso es necesaria la librería GSM Library: http://arduino.cc/en/Reference/GSM
En este caso por el consumo de esta shield, se hace necesario alimentar a Arduino mediante una fuente externa y no desde el USB ya que no es capaz de proporcionar suficiente energía. También es posible hacer llamadas de voz haciendo unas pequeñas modificaciones, añadiendo un micrófono y un altavoz.
Arduino Motor Shield
Web: http://arduino.cc/en/Main/ArduinoMotorShieldR3.
Permite manejar dos motores DC, controlando su dirección y velocidad. Está basado en un chip de doble puente H L298:
- Producto: http://www.st.com/en/motor-drivers/l298.html
- datasheet: https://www.sparkfun.com/datasheets/Robotics/L298_H_Bridge.pdf
Como veremos en este curso manejaremos un motor DC con otro integrado de puente H el L293 (http://www.ti.com/lit/ds/symlink/l293.pdf), pero este shield nos facilita mucho su uso.
Este shield usa dos canales y cada canal usa 4 pines, en total nos ocupa 8 pines del Arduino
Un módulo con el mismo puente H pero sin formato shield: http://tienda.bricogeek.com/motores/285-controlador-de-motores-doble-puente-h-l298.html
Arduino 4 Relay Shield
Web: https://www.arduino.cc/en/Main/Arduino4relayShield
Este shield permite usar 4 relés para manejar cargas mayores de las que soporta Arduino. Soporta cargas de hasta 2A a 30V DC
Nuevas Shields Incorporadas Recientemente
MKR Relay Proto Shield
Web: https://www.arduino.cc/en/Main/MKRRelayProtoShield
Con este shield se pueden usar 2 relés son cualquier placa de la familia MKR
Arduino Yun Shield
Web: https://www.arduino.cc/en/Main/ArduinoYunShield
Este shield permite ampliar las capacidades del arduino YUN a cualquier Arduino, es decir, añadir un microprocesador para realizar cálculos más potentes y conexión wifi y ethernet.
Getting started: https://www.arduino.cc/en/Guide/ArduinoYunShield
MKR ETH Shield
Web: https://store.arduino.cc/mkr-eth-shield
MKR IMU Shield
Web: https://store.arduino.cc/mkr-imu-shield
MKR ENV Shield
Web: https://store.arduino.cc/mkr-env-shield
MKR Therm Shield
Web: https://store.arduino.cc/mkr-therm-shield
MKR Can Shield
Web: https://store.arduino.cc/arduino-mkr-can-shield
MKR 485 Shield
Web: https://store.arduino.cc/arduino-mkr-485-shield
MKR Mem Shield
Web: https://store.arduino.cc/arduino-mkr-mem-shield
MKR Connector Carrier Shield
Web: https://store.arduino.cc/arduino-mkr-connector-carrier
MKR RGB Shield
Web: https://store.arduino.cc/mkr-rgb-shield
Otras Shields Oficiales
- MKR2UNO: https://www.arduino.cc/en/Main/MKR2UNOAdapter
- USB Host Shield: https://www.arduino.cc/en/Main/ArduinoUSBHostShield
- Proto Shield: https://www.arduino.cc/en/Main/ArduinoProtoShield
- MKR Proto Shield: https://store.arduino.cc/mkr-proto-shield
- Mega Proto Shield: https://www.arduino.cc/en/Main/ArduinoMegaProtoShield
- Wireless SD Shield: https://www.arduino.cc/en/Main/ArduinoWirelessShield
- Wireless Proto Shield: https://www.arduino.cc/en/Main/ArduinoWirelessProtoShield
Shields retiradas
Algunas shields han sido retiradas por versiones mejoradas:
- https://www.arduino.cc/en/Main.ArduinoGSMShieldV1
- https://www.arduino.cc/en/Main/ArduinoEthernetShieldV1
- Arduino 9 Axes Motion Shield: http://www.arduino.org/products/shields/arduino-9-axes-motion-shield basado en el sensor de Bosch BNO055
- NFC Shield: http://www.arduino.org/products/shields/arduino-nfc-shield
- Lucky Shield: http://www.arduino.org/products/shields/arduino-nfc-shield
Shields no oficiales
Además de las shields oficiales vistas, existen múltiples shields no oficiales de Arduino (no fabricadas por Arduino) que nos permiten ampliar las capacidades de la placa Arduino. Veamos unos ejemplos:
EmonTx Shield
Web: https://shop.openenergymonitor.com/emontx-arduino-shield-smt/
Wiki: https://wiki.openenergymonitor.org/index.php/EmonTx_Arduino_Shield
Github: https://github.com/openenergymonitor/emontx-shield
Un shield para medir corriente eléctrica bajo el proyecto open energy monitor: http://openenergymonitor.org/emon/
Posee 4 entradas para conectar 4 toroidales abiertos y una entrada para conectar el sensor de voltaje mediante un transformador AC-AC, también tiene la posibilidad de montar un transmisor RF.
Grove Shield
Web: https://www.seeedstudio.com/Base-Shield-V2-p-1378.html.
Un Shield para el sistema grove que facilita la conexión de sensores y actuadores.
Relay Shield
Web: https://www.seeedstudio.com/Relay-Shield-v3.0-p-2440.html
Wiki: http://wiki.seeed.cc/Relay_Shield_v3/
Este shield proporciona 4 relés para manejar dispositivos que no pueden controlarse directamente con las I/O de Arduino. Dispone de unos indicadores de uso de los relés.
En este caso se usan 4 pines digitales para usar cada uno de los relés.
¿Y si necesitamos más de 4 relés?
Shield Relay Driver de 8 canales
Este shield permite manejar hasta 8 relés (que no están en el shield) usando solo dos pines de I/O del Arduino. Se comunica con Arduino usando el bus I2C, de forma que apilando varias de estas shields podemos manejar 16, 24 y más relés.
Guía de uso: http://www.freetronics.com.au/pages/relay8-8-channel-relay-driver-shield-quickstart-guide#.VQyBVI5k6t8
GPS Shield
Web: http://www.adafruit.com/products/1272. Con un slot para micro SD donde guardar logs. No es compatible con Arduino Mega ni Due, RTC incluido. Conexión por puerto serie o conexión directa.
Más información en: https://learn.adafruit.com/adafruit-ultimate-gps-logger-shield
Xbee Shield
Webs:
- https://www.sparkfun.com/products/12847
- http://www.seeedstudio.com/depot/xbee-shield-v20-p-1375.html
Para comunicación inalámbrica mediante Xbee. Conexión a UART de la MCU o a cualquier otro puerto por software serial. Más información: http://www.seeedstudio.com/wiki/XBee_Shield_V2.0
TFT Shield
Web: https://www.seeedstudio.com/28-TFT-Touch-Shield-V20-p-1286.html
Wiki: http://wiki.seeed.cc/2.8inch_TFT_Touch_Shield_v2.0/
Pantalla TFT táctil resistiva con un slot para micro SD integrado. Comunicación a Arduino a través de bus SPI.
Bluetooth Shield
Web: https://www.seeedstudio.com/Bluetooth-Shield-V2-p-2416.html
Wiki: http://wiki.seeedstudio.com/wiki/Bluetooth_Shield_V2.0
Comunicación inalámbrica por bluetooth. Conecta con la UART del Arduino o software serial con selector de puerto serie.
Se trata de un shield al que le han incorporado un módulo bluetooth HC-05: http://tienda.bricogeek.com/modulos-bluetooth/800-modulo-bluetooth-hc-05.html
Terminal Shield
Web: http://www.freetronics.com.au/collections/shields/products/terminal-shield-for-arduino#.VQxwn45k6t8.
Shield con borneros y placa de prototipado que nos permite conectar fácilmente cualquier sensor o actuador a un Arduino.
GSM shield
Web: https://www.sparkfun.com/products/13120
Este Shield usa el módulo SM5100B y es similar al shield oficial de Arduino y usa comandos AT a través del puerto serie para manejar la comunicación.
LTE Shield
Web: http://www.gemalto.com/m2m/development/cinterion-connect-shield
Brochure: http://www.gemalto.com/brochures-site/download-site/Documents/m2m-connect-shield.pdf
Tools and documentation: https://developer.gemalto.com/documentation/cinterion%C2%AE-connect-shield-tools-documentation
Uso con raspberry Pi: https://developer.gemalto.com/tutorial/using-connect-shield-raspberry-pi
Otras Shields Interesantes
- Energy Shield para poner una batería a Arduino: http://www.ns-electric.com/products/energyshield/
- 1SHEELD usa tu movil como shield de Arduino: http://1sheeld.com/ y https://www.youtube.com/watch?v=o_a6tibEI5E
Existen muchísimos shields que seguro que se adaptan a nuestro proyecto. En cada web de los fabricantes tenemos variedad donde elegir.
- Sparkfun shields: https://www.sparkfun.com/categories/240
- Seeedstudio shields: http://www.seeedstudio.com/depot/s/shield.html?search_in_description=0
- Freetronics: http://www.freetronics.com.au/collections/shields
- Electan shields: http://www.electan.com/arduino-shields-arduino-c-337_343.html
Un listado completo donde encontrar cualquier tipo de shield aunque no actualizado desde hace tiempo: http://shieldlist.org/
Para aprender más sobre los shields: https://learn.sparkfun.com/tutorials/arduino-shields
Breakout Boards
Además de los Shield, también tenemos disponibles módulos independientes (breakout boards) para conectar directamente a Arduino:
- Modulo de relé: http://www.seeedstudio.com/depot/Electronic-brick-5V-Relay-module-digital-p-479.html
- Módulo GPS: https://www.sparkfun.com/products/12751
- Módulo bluetooth: http://tienda.bricogeek.com/modulos-bluetooth/629-bluefruit-ez-link-v10.html
- Módulo RF : http://shop.ninjablocks.com/blogs/how-to/7501042-adding-rf-433mhz-to-your-arduino
- Módulo RTC: http://www.adafruit.com/products/264
Y por supuesto tenemos kits de robótica:
También hay Shields para Raspberry Pi llamadas hats:
- Top ten: https://opensource.com/life/16/7/top-10-Raspberry-Pi-boards
- Adafruit: https://www.adafruit.com/category/286
- Pimoroni: https://shop.pimoroni.com/collections/hats
- Thepihut: https://thepihut.com/collections/raspberry-pi-hats
- http://www.hifiberry.com/products/dacplus
GrovePi
- Grove Pi: http://www.dexterindustries.com/GrovePi/
- Sensores: http://www.dexterindustries.com/GrovePi/supported-sensors/
- Un proyecto de uso: http://www.instructables.com/id/Home-Environment-Monitor/
- Librería para usar grove Pi: https://github.com/DexterInd/GrovePi
- Grove Pi tiene un “Arduino”: http://www.dexterindustries.com/GrovePi/engineering/port-description/
Y una librería en C++ para manejar las GPIO de Raspberry Pi para los que están familiarizados con Arduino: http://wiringpi.com/
Shields Wemos D1 Mini
La placa Wemos D1 Mini también usa el modelo de shields apilables, existen bastante modelos de shields disponibles.
Placas de Expansión
También hay disponibles placas de expansión de puertos para diversas placas de forma que podamos acceder más fácilmente a sus pines,
Node MCU:
Arduino Nano: