Que es un SHIELD?
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.
Un shield en Arduino es un placa que se apila sobre el arduino o sobre otro shield, de forma que nos permite ampliar el hardware/capacidades de Arduino.
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 standard 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 las 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 shiels pueden tener el pineado que no permita apilar más.Veamos los shields más importantes de Arduino:
Ethernet Shield:
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.
Arduino Wifi Shield:
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 implica que se debe tenerse este aspecto en cuenta 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.
Arduino GSM Shield:
http://arduino.cc/en/Main/ArduinoGSMShield
https://www.sparkfun.com/products/9607
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.
En el caso de la segunda Shield, usa el módulo SM5100B y es similar a la anterior shield y usa comandos AT a través del puerto serie para manejar la comunicación.
Arduino Motor Shield:
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 ST L298 http://www.st.com/web/en/catalog/sense_power/FM142/CL851/SC1790/SS1555/PF63147
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: http://tienda.bricogeek.com/motores/285-controlador-de-motores-doble-puente-h-l298.html
EmonTx Shield: http://openenergymonitor.org/emon/emontxshield/smt
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: http://www.seeedstudio.com/depot/Grove-Base-Shield-p-754.html
Un Shield para el sistema grove que facilita la conexión de sensores y actuadores.
Relay Shield: http://www.seeedstudio.com/depot/relay-shield-v20-p-1376.html?cPath=132_134
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.
Más información y ejemplos en: http://www.seeedstudio.com/wiki/Relay_Shield_V2.0
¿Y si necesitamos más de 4 relés?
Shield Relay Driver de 8 canales: http://www.freetronics.com.au/collections/shields/products/relay8-8-channel-relay-driver-shield#.VQxwlo5k6t8
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 aplilando 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: 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: https://www.sparkfun.com/products/12847 y 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: http://www.electan.com/arduino-shield-tft-tactil-color-240×320-p-3187.html
Pantalla táctil resistiva con un slot para micro SD integrado. Comunicación a Arduino a través de bus SPI.
Bluetooth Shield: http://www.seeedstudio.com/depot/Bluetooth-Shield-p-866.html
Comunicación inalámbrica por bluetooth. Conecta con la UART del Arduino o software serial con selector de puerto serie..
Terminal Shield: 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.
Además de los Shield, también tenemos disponibles módulos independientes 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
Existen muchísimos shields que seguro que se adaptan a nuestro proyecto. En cada web de los fabricantes tenemos variedad donde elegir.
Sparkfun tiene 75 tipo de shields: https://www.sparkfun.com/categories/240
Seeedstudio tiene 70 shileds: http://www.seeedstudio.com/depot/s/shield.html?search_in_description=0
Freetronics: http://www.freetronics.com.au/collections/shields
Electan tiene 57 shields: http://www.electan.com/arduino-shields-arduino-c-337_343.html
Un listado completo donde encontrar cualquier tipo de shield: http://shieldlist.org/
Para aprender más sobre los shields: https://learn.sparkfun.com/tutorials/arduino-shields
Ejercicio: ¿Que Shield necesitas para el proyecto plateado?
Ejemplo: Obtener datos de mi coche a través del conector ODB:
Para un Arduino un CAN-BUS Shield: https://www.sparkfun.com/products/10039
Para hacer telemetría un Shield 3G + GPRS/3G: http://www.cooking-hacks.com/documentation/tutorials/arduino-3g-gprs-gsm-gps
Un sonda de temperatura muy usada con Arduino es la DS18B20, esta usa un bus de comunicación multipunto llamado one wire, lo que nos permite leer muchas sondas con una sola i/o digital.
Sonda: http://www.seeedstudio.com/depot/One-Wire-Temperature-Sensor-p-1235.html
Datasheet sensor: http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Librería: http://playground.arduino.cc/Learning/OneWire
Última versión de la librería OneWire:
http://www.pjrc.com/teensy/td_libs_OneWire.html
https://github.com/PaulStoffregen/OneWire
Existen librerías para la sonda DS18B20 que facilita el trabajo:
https://github.com/milesburton/Arduino-Temperature-Control-Library
https://github.com/RobTillaart/Arduino/tree/master/libraries/DS18B20
Protocolo one-wire:
http://en.wikipedia.org/wiki/1-Wire
http://www.maximintegrated.com/en/app-notes/index.mvp/id/148
Esquema de montaje. El bus 1-Wire necesita una resistencia de pull-up de 4K7, y que podemos alimentar el sensor directamente a través del pin Vdd o usar el modo “parásito” y alimentarlo con la propia línea de datos.
Para poder usar las sonda DS18B20 necesitaremos las librerías OneWire y DallasTemperature. Solo hay que buscar e instalar la librería a través del Gestor de Librerías.
Leer la sonda conectada al pin 2:
Código: https://github.com/jecrespo/Arduino-Kit-China-Guide/blob/master/12-DS18B20/12-DS18B20.ino
Más información:
https://www.luisllamas.es/temperatura-liquidos-arduino-ds18b20/
https://programarfacil.com/blog/arduino-blog/ds18b20-sensor-temperatura-arduino/
Esta entrada se publicó en Arduino, Librerías Arduino, Práctica, Sensores, Taller Arduino Ingenia y está etiquetada con Arduino, DS18B20, Gestor Librerías, Librerías Arduino, Práctica, Sensor de Temperatura, Taller Arduino Ingenia en 12 marzo, 2019.
Los sensores son el primer eslabón de la cadena de IoT
Si se le ocurre una propiedad física, probablemente pueda comprar un sensor para medirla.
En su forma más abstracta, un sensor no es más que una caja negra que transduce un estado físico que queremos monitorear en una propiedad eléctrica que podemos medir. Puede ser tan simple como un conjunto de contactos que cambian entre abierto y cortocircuito cuando pulsamos un botón o abrimos una ventana. Puede ser un potenciómetro que cambia la resistencia cuando un humano gira un dial o un robot extiende un brazo.
También puede ser tan complicado como un circuito integrado que detecta la aceleración y el magnetismo a lo largo de tres ejes para determinar la orientación, la aceleración y el rumbo de la brújula hacia su dispositivo IoT.
La mayoría de los sensores se conectan a los nodos de IoT a través de una interfaz digital, serie o analógica. Las interfaces en serie se utilizan normalmente para sensores complejos como los acelerómetros que tienen un interfaz I2C.
Ejemplo Sensor DHT11
Conectar una sonda DHT11 a Arduino UNO con Ethernet Shield y publicar datos en el topic “Temperatura” cada 5 segundos con la temperatura detectada. Ver esos datos desde el cliente MQTT.fx
Conexión:
Usar la librería DHT de adafruit https://github.com/adafruit/DHT-sensor-library, recordad que tiene una dependencia de la librería Adafruit Unified Sensor: https://github.com/adafruit/Adafruit_Sensor
Si queremos que otro Arduino reciba datos por MQTT al suscribirse al topic “temperatura” usamos la función de callback que imprime el mensaje recibido:
1
2
3
4
5
6
7
8
9
10
void callback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
int i=0;
for (i=0;i<length;i++) {
Serial.print((char)payload[i]);
}
Serial.println();
}
Si quisiéramos guardar el mensaje recibido en una variable entonces la función de callback es:
1
2
3
4
5
6
7
8
9
String data;
void callback(char* topic, byte* payload, unsigned int length) {
char dataArray[length];
for (int i=0;i<length;i++) {
dataArray[i] = (char)payload[i];
}
data = str(dataArray)
}
Más información: https://ricveal.com/blog/arduino-mqtt/Esta entrada se publicó en Actuadores, Curso IoT Open Source, MQTT, Sensores y está etiquetada con Actuadores, Curso IoT Open Source, DHT11, MQTT, Sensores en 14 noviembre, 2018.
Hardware Arduino para la Educación
Hardware Arduino
Arduino es una plataforma para prototipado de electrónica basada en hardware y software libre y fácil de utilizar. Podemos construir circuitos electrónicos y programarlos con esta placa.
Realmente lo que estamos haciendo es programar un microcontrolador, estos dispositivos electrónicos programables nos rodean en nuestro día a día, en el coche, nuestra casa, el trabajo, etc…
Las principales características que podemos encontrar en nuestra placa de Arduino UNO son las siguientes:
El microcontrolador es un circuito integrado programable capaz de realizar operaciones matemáticas complejas a gran velocidad.
La alimentación de una placa de Arduino es mediante el puerto USB mientras se está programando. Una vez programado podemos desconectarlo del ordenador y que trabaje de forma autónoma y se alimenta Arduino mediante una fuente de alimentación o pila de 9V.
Tanto las entradas como las salidas dotan al sistema de información y realizan diferentes actuaciones.
Arduino contiene la siguiente distribución de pines:
Disponemos de 14 pines digitales que pueden ser configurados como entradas o salidas, de los cuales (serigrafiadas con el símbolo ~) pueden ser utilizados como señales digitales PWM 6 pines.
Igualmente disponemos de 6 pines analógicos serigrafiadas desde A0 hasta A5 para las entradas analógicas.
También disponemos de 3 pines GND para conectar a tierra nuestros circuitos.
Y por último 2 pines de alimentación de 5V y 3.3V respectivamente.
Para saber más:
El cable Amarillo: https://github.com/ElCableAmarillo/Introduccion-a-Arduino
Absolute Basics About Arduino Uno: https://www.youtube.com/watch?v=TSYWDnfYjrc
Entender Arduino: https://aprendiendoarduino.wordpress.com/2018/04/09/entender-arduino/
Cómo funciona Arduino: https://aprendiendoarduino.wordpress.com/2017/06/19/como-funciona-arduino-3/
Sensores
Un sensor es un dispositivo capaz de detectar magnitudes físicas o químicas, llamadas variables de instrumentación, y transformarlas en variables eléctricas.
Las variables de instrumentación pueden ser por ejemplo: temperatura, intensidad lumínica, distancia, aceleración, inclinación, desplazamiento, presión, fuerza, torsión, humedad, movimiento, pH, etc.
Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD), una capacidad eléctrica (como en un sensor de humedad o un sensor capacitivo), una tensión eléctrica (como en un termopar), una corriente eléctrica (como en un fototransistor), etc.
Un sensor nos va a poder medir/leer las variables ambientales de nuestro entorno para poder tomar decisiones en función de los cambios en el entorno.
Ejemplos de sensores. Kits Arduino: http://www.robotshop.com/en/37-modules-sensor-kit-arduino.html
Listado de componentes: http://tienda.bricogeek.com/upload/datasheets/SEN-0060/37-en-1-especificaciones.pdf
Actuadores
Un actuador es un dispositivo capaz de transformar energía hidráulica, neumática o eléctrica en la activación de un proceso con la finalidad de generar un efecto sobre elemento externo. Este recibe la orden de un regulador, controlador o en nuestro caso un Arduino y en función a ella genera la orden para activar un elemento final de control como, por ejemplo, una válvula.
Existen varios tipos de actuadores como son:
Electrónicos
Hidráulicos
Neumáticos
Eléctricos
Motores
Bombas
En determinadas ocasiones, necesitamos un “driver” o manejador para poder mandar órdenes desde Arduino.
Recordad que los pines de Arduino solo pueden manejar un máximo de 40mA y recomendable usar 20mA de forma continua.
Recordar que Arduino solo puede manejar un total de 200 mA de salida. Es decir que la corriente máxima que admite Vcc y GND son 200 mA.
Un actuador nos permite interactuar con el entorno.
Periféricos
Periférico es la denominación genérica para designar al aparato o dispositivo auxiliar e independiente conectado a la unidad central de procesamiento o en este caso a Arduino. Se consideran periféricos a las unidades o dispositivos de hardware a través de los cuales Arduino se comunica con el exterior, y también a los sistemas que almacenan o archivan la información, sirviendo de memoria auxiliar de la memoria principal.
Ejemplos de periféricos:
Pantallas LCD
Teclados
Memorias externas
Cámaras
Micrófonos
Impresoras
Pantalla táctil
Displays numéricos
Zumbadores
Indicadores luminosos, etc…
En ocasiones para usar un periférico con Arduino, necesitamos un “driver” o manejador para poder mandar órdenes desde Arduino.
Shields Arduino
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.
Existen miles de shields en función de lo que necessitemos: http://shieldlist.org/
Shields Educativos
Uno de los problemas que se encuentran a la hora de impartir un curso de electrónica y programación con Arduino en los colegios es la dificultad de comprobar los montajes de los circuitos de los alumnos. Sobre todo cuando se trata de los más pequeños.
Existen shields educativos que facilitan el trabajo en el aula. Son shields que o bien permiten conectar y listo o bien tienen varios componente integrados que evitan hacer cableados y no tener que saber de electrónica.
Shield Educativo Multifunción
Shield educativo + mblock https://www.prometec.net/blog-shield-educativo-multifuncion/
Echidna
EchidnaShield es un proyecto Open Source dirigido a facilitar el aprendizaje de la programación de sistemas físicos en los últimos cursos de Primaria y en Secundaria. Con este fin se ha diseñado un escudo para Arduino, pensando en su uso con entornos visuales de programación. El escudo está apoyado en una guía educativa con propuestas de actividades para el aula.
Toda la información en: http://echidna.es/
BQ Zum Kit
Web: https://www.bq.com/es/zum-kit
Grove Starter Kit
Web: https://www.seeedstudio.com/Grove-Starter-Kit-for-Arduino-p-1855.html
Grove System: http://www.seeedstudio.com/wiki/GROVE_System
Wiki: http://www.seeedstudio.com/wiki/Grove_-_Starter_Kit_v3
Kit conectar y listo: http://www.electan.com/arduino-shield-kit-modulos-conectar-listo-p-2987.html
Makey Makey
MaKey MaKey es una placa de circuito impreso con un microcontrolador ATMega32u4 que ejecuta el firmware de Arduino Leonardo. Utiliza el protocolo de dispositivos de interfaz humana (HID) para comunicarse con el ordenador, y puede enviar pulsaciones de teclas, clics del mouse y movimientos. Para detectar un circuito cerrado en los pines de entrada digital, usa switches de alta resistencia para que sea posible cerrar un interruptor incluso a través de materiales como la piel, hojas y play-doh. Usa una resistencia de pull-up de 22 mega ohms. Esta técnica atrae el ruido en la entrada, pero usa promediador para reducir el ruido mediante software, ahorrando dinero en el filtrado por hardware. Hay seis entradas en la parte frontal de la placa, que se pueden unir a través de conectores tipo cocodrilo o cualquier otro método que se te ocurra. Hay otras 12 entradas en la parte posterior, 6 para las teclas del teclado y 6 para el movimiento del mouse, a las que se puede acceder usando jumpers, clips o conectores de tipo cocodrilo de forma creativa alrededor de los conectores.
Más información:
faq: http://makeymakey.com/faq/
Labz con lo que hace la gente con Makey Makey: https://labz.makeymakey.com/
Avanzado de Makey Makey
http://www.instructables.com/id/Makey-Makey-MIDI-controller/
Guia Avanzada: https://learn.sparkfun.com/tutorials/makey-makey-advanced-guide
Remapping Pins: http://fablearn.stanford.edu/fellows/blog/advanced-makey-makey-remapping-pins
Firmware de Makey Makey: https://github.com/sparkfun/MaKeyMaKey/tree/master/firmware/Arduino/makey_makey
Repositorio Makey Makey: https://github.com/sparkfun/MaKeyMaKey
Web donde comprar: https://www.ro-botica.com/
Picuino
Picuino es una plataforma de hardware y software que facilita el desarrollo sencillo de proyectos interactivos.
Picuino: http://www.picuino.com/
NanoPlayBoard
NanoPlayBoard es un Shield educacional para Arduino Nano hecha en Almería.
Web del proyecto: http://nanoplayboard.org/
NanoPlayBoard tiene una librería ya configurada en la que está todo el código necesario para llevar a cabo esos experimentos básicos.
Una placa open sourece con muchas posibilidades:
Github: https://github.com/AntonioMR/Nano-Play-Board
Librería: https://github.com/josejuansanchez/NanoPlayBoard-Arduino-Library
App móvil: https://github.com/josejuansanchez/NanoPlayBoard-Android-App
Extension ScratchX: https://github.com/josejuansanchez/scratch-arduino-extension
Extensión con mBlock: https://github.com/josejuansanchez/NanoPlayBoard-mBlock-Extension
littleBits
littleBits es una empresa con sede en la ciudad de Nueva York que hace una biblioteca de código abierto de electrónica modular, que consiste en juntar piezas con pequeños imanes para la creación de prototipos. El objetivo de la compañía es democratizar el hardware de la misma forma que el software y la impresión se han democratizado. La misión de littleBits es “poner el poder de la electrónica en manos de todos y analizar tecnologías complejas para que cualquiera pueda construir, crear prototipos e inventar”.
El kit de codificación little littlebits Arduino permite a los usuarios comenzar a crear inventos que se comunican con el software (Processing, MaxMSP, etc.), con el apoyo de instrucciones paso a paso, recursos útiles en línea y 8 bocetos de muestra (código prefabricado) incluido. Aprende las habilidades del futuro: codificación, ingeniería y creatividad.
Un sensor es un dispositivo capaz de detectar magnitudes físicas o químicas, llamadas variables de instrumentación, y transformarlas en variables eléctricas.
Las variables de instrumentación pueden ser por ejemplo: temperatura, intensidad lumínica, distancia, aceleración, inclinación, desplazamiento, presión, fuerza, torsión, humedad, movimiento, pH, etc.
Una magnitud eléctrica puede ser una resistencia eléctrica (como en una RTD), una capacidad eléctrica (como en un sensor de humedad o un sensor capacitivo), una tensión eléctrica (como en un termopar), una corriente eléctrica (como en un fototransistor), etc.
Los sensores se pueden clasificar en función de los datos de salida en:
Digitales
Analógicos
Dependiendo del tipo de sensor, deberemos conectarlo a una entrada digital o analógica.
Y dentro de los sensores digitales, estos nos pueden dar una señal digital simple con dos estados como una salida de contacto libre de tensión o una salida en bus digital. En caso que el sensor use comunicación por bus, deberemos usar algunos de los buses que implementa Arduino o usar hardware adicional que nos proporcione un interfaz entre el Arduino y el bus.
Un ejemplo de sensor analógico sería el ACS714, es un sensor de efecto hall que mide las corrientes eléctricas que pasan a través del chip y devuelve un valor en voltaje proporcional a la corriente que circula por el sensor:
Datasheet: http://www.allegromicro.com/~/Media/Files/Datasheets/ACS714-Datasheet.ashx
Como medir corriente con Arduino y un sensor ACS714: http://playground.arduino.cc/Main/CurrentSensing
Tutorial de uso del sensor ACS714: http://www.instructables.com/id/How-to-Measure-AC-Current-using-Hall-Effect-Sensor/?ALLSTEPS
Características de los sensores
Rango de medida: dominio en la magnitud medida en el que puede aplicarse el sensor.
Precisión: es el error de medida máximo esperado.
Offset o desviación de cero: valor de la variable de salida cuando la variable de entrada es nula. Si el rango de medida no llega a valores nulos de la variable de entrada, habitualmente se establece otro punto de referencia para definir el offset.
Linealidad o correlación lineal.
Sensibilidad de un sensor: suponiendo que es de entrada a salida y la variación de la magnitud de entrada.
Resolución: mínima variación de la magnitud de entrada que puede detectarse a la salida.
Rapidez de respuesta: puede ser un tiempo fijo o depender de cuánto varíe la magnitud a medir. Depende de la capacidad del sistema para seguir las variaciones de la magnitud de entrada.
Derivas: son otras magnitudes, aparte de la medida como magnitud de entrada, que influyen en la variable de salida. Por ejemplo, pueden ser condiciones ambientales, como la humedad, la temperatura u otras como el envejecimiento (oxidación, desgaste, etc.) del sensor.
Repetitividad: error esperado al repetir varias veces la misma medida.
Más información: http://es.wikipedia.org/wiki/Sensor#Caracter.C3.ADsticas_de_un_sensor
Tipos de sensores: http://es.wikipedia.org/wiki/Sensor#Tipos_de_sensores
IMPORTANTE: A la hora de elegir un sensor, debemos leer detenidamente las características y elegir uno que sea compatible con nuestro sistema (intensidad y voltaje) y que sea sencillo de usar o nos faciliten una librería sencilla y potente.
Catálogo de sensores:
http://tienda.bricogeek.com/23-sensores
http://www.trossenrobotics.com/c/arduino-sensors.aspx
https://www.seeedstudio.com/s/sensors.html
https://www.sparkfun.com/categories/23
http://www.electronicaestudio.com/sensores.htm
Sensores con comunicación por bus.
Un bus (o canal) es un sistema digital que transfiere datos entre los componentes de una dispositivo electrónico o entre varios. Está formado por cables o pistas en un circuito impreso, dispositivos como resistencias y condensadores además de circuitos integrados.
La tendencia en los últimos años hacia el uso de buses seriales como el USB, Firewire, etc… para comunicaciones con periféricos, reemplazando los buses paralelos, a pesar de que el bus serial posee una lógica compleja (requiriendo mayor poder de cómputo que el bus paralelo) se produce a cambio de velocidades y eficacias mayores.
Arduino dispone de buses serie I2C y SPI para comunicarse con dispositivos sin necesidad de HW adicional
Bus RS485:
Más información en: http://es.wikipedia.org/wiki/Bus_(inform%C3%A1tica)
Existen muchos tipos de buses de comunicaciones, algunos de ellos los implementa arduino mediante controladores HW integrados en la MCU (I2C) o mediante una librería como one wire. En otros casos es necesario un hardware adicional para adaptar la señal con un transceiver y manejar el protocolo con un controlador, por ejemplo can bus o modbus.
Sondas DHT11 y DHT22
Los sensores DHT11 o DHT22 que son ampliamente usados con Arduino, son unos pequeños dispositivos que nos permiten medir la temperatura y la humedad. A pesar que estas medidas son analógicas, estos sensores los tendremos que conectar a pines digitales, ya que la señal de salida es digital a un bus punto a punto. Llevan un pequeño microcontrolador interno para hacer el tratamiento de señal. Estos sensores han sido calibrados en laboratorios, presentan una gran fiabilidad.
Estos sensores funcionan con ciclos de operación de duración determinada. En determinados casos de aplicaciones los tiempos de lectura de los sensores puede ser determinante a la hora de elegirlo.
Parámetro DHT11 DHT22
Alimentación 3Vdc ≤ Vcc ≤ 5Vdc 3.3Vdc ≤ Vcc ≤ 6Vdc
Señal de Salida Digital Digital
Rango de medida Temperatura De 0 a 50 °C De -40°C a 80 °C
Precisión Temperatura ±2 °C <±0.5 °C
Resolución Temperatura 0.1°C 0.1°C
Rango de medida Humedad De 20% a 90% RH De 0 a 100% RH
Precisión Humedad 4% RH 2% RH
Resolución Humedad 1%RH 0.1%RH
Tiempo de sensado 1s 2s
Tamaño 12 x 15.5 x 5.5mm 14 x 18 x 5.5mm
Más información sobre la sonda DHT22: http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro
Datasheet de sondas DHT22:
https://www.sparkfun.com/datasheets/Sensors/Temperature/DHT22.pdf
http://www.adafruit.com/datasheets/Digital%20humidity%20and%20temperature%20sensor%20AM2302.pdf
Este esquema explica como funciona este sensor y el protocolo de comunicación. La librería implementa el protocolo y facilita el uso de la sonda con Arduino.
Vemos como para un mismo sensor tenemos diferentes librerías con funciones y uso diferente en cada una de ellas. Cada uno de los distribuidores de estas sondas ha creado su propia librería.
https://github.com/Seeed-Studio/Grove_Temper_Humidity_TH02
https://github.com/sparkfun/RHT03
https://github.com/adafruit/DHT-sensor-library
http://playground.arduino.cc/Main/DHT11Lib incluye calculo punto de rocio
Sonda DHT18B20
Otra sonda de temperatura muy usada con Arduino es la DS18B20, esta usa un bus de comunicación multipunto llamado one wire, lo que nos permite leer muchas sondas con una sola i/o digital.
Sonda: http://www.seeedstudio.com/depot/One-Wire-Temperature-Sensor-p-1235.html
Datasheet sensor: http://datasheets.maximintegrated.com/en/ds/DS18B20.pdf
Librería: http://playground.arduino.cc/Learning/OneWire
Última version de la librería: http://www.pjrc.com/teensy/td_libs_OneWire.html
Protocolo one-wire:
http://en.wikipedia.org/wiki/1-Wire
http://www.maximintegrated.com/en/app-notes/index.mvp/id/148
Librería sonda DS18B20: https://github.com/RobTillaart/Arduino/tree/master/libraries/DS18B20
Otros Sensores
Ejemplos de sensores. Kits Arduino: http://www.robotshop.com/en/37-modules-sensor-kit-arduino.html
Listado de componentes: http://tienda.bricogeek.com/upload/datasheets/SEN-0060/37-en-1-especificaciones.pdf
Código fuente: http://tienda.bricogeek.com/upload/datasheets/SEN-0060/SEN-0036-Kit-37-sensores-src.zip
Sensor Temperatura
Leer la sonda de temperatura TMP36 y en función de unas condiciones de temperatura encender 3 LEDS. Encender el primero al alcanzar 22 grados, el segundo a los 24 y el tercero a los 26. También que muestre por pantalla la temperatura leída por el puerto serie en Celsius si lee una C por el puerto serie o en Fahrenheit si lee una F, en cualquier otro caso que muestre el texto: “¿En que formato quieres que muestre la temperatura?”
Hacer que se pueda ver por el serial plotter la gráfica de la temperatura, imprimiendo el valor cada 5 segundos con la librería mstimer2.
Datasheet sonda: https://www.arduino.cc/en/uploads/Main/TemperatureSensor.pdf
Esquema conexión (no conectar el módulo bluetooth):
Histeréis
Ver el efecto de parpadeo al no poner histéresis. Añadir una histéresis de 1 grado en cada salto de temperatura para iluminar el led.
Histeresis: https://es.wikipedia.org/wiki/Hist%C3%A9resis
Diagrama de Estados: