Archivo de la etiqueta: Arduino

Arduino Conectado a Internet

TCP/IP

El modelo TCP/IP describe un conjunto de guías generales de diseño e implementación de protocolos de red específicos para permitir que un equipo pueda comunicarse en una red. TCP/IP provee conectividad de extremo a extremo especificando como los datos deberían ser formateados, direccionados, transmitidos, enrutados y recibidos por el destinatario.

Más información: https://es.wikipedia.org/wiki/Modelo_TCP/IP

La importancia del modelo TCP/IP es que es el modelo usado para acceder a Internet o a redes internas (Intranet) de ordenadores. Arduino va a permitir conectarse a Internet o a una red interna mediante TCP/IP y poder realizar múltiples operaciones o usarse como pasarela para conectar a Internet dispositivos que no tienen esa capacidad. La implementación de la pila de protocolos de TCP/IP en Arduino se hace mediante un shield o HW adicional que nos da la capa de acceso a red (ethernet o WiFi), internet (IP) y transporte. La capa de aplicación deberemos implementarla dentro de Arduino ya sea directamente o mediante una librería.

En el caso del protocolo TCP/IP la pila OSI se simplifica:

Protocolo HTTP

Hypertext Transfer Protocol o HTTP (en español protocolo de transferencia de hipertexto) es el protocolo de comunicación que permite las transferencias de información en la WWW. Se trata de un protocolo de capa 7 de aplicación.

En arduino con la librería ethernet solo trabajamos con la capa de aplicación, todas las otras capas de TCP/IP ya están implementadas por Hardware, ya sea con la ethernet shield o el módulo WiFi. Aunque si queremos realizar algunas funciones de capas inferiores, podemos hacerlo con los comandos adecuados comunicándonos con el chip ethernet o wifi via SPI.

Librerías que manejan la pila de pila de protocolos TCP/IP:

HTTP request

Un cliente HTTP debe formar una petición HTTP al servidor de una forma determinada para que sea entendida por el servidor. Cuando Arduino trabaja como cliente hay que programar esta petición correctamente.

Ejemplo de uso, Telegram Arduino

HTTP response

Después de recibir e interpretar el servidor un HTTP request, el servidor debe responder con un mensaje de respuesta:

Comunicación Ethernet

Para manejar el ethernet shield se usa la librería Ethernet que maneja la pila de protocolo TCP/IP, teniendo solo que implementar por programación el protocolo HTTP: https://www.arduino.cc/en/Reference/Ethernet

Arduino puede actuar como cliente para conectarse a Internet y recoger datos del exterior. Para ello se debe implementar un web client en Arduino como puede verse en: https://aprendiendoarduino.wordpress.com/2016/07/05/arduino-web-client/

Arduino también puede actuar como servidor web mostrando una web o aceptando ordenes remotas que llegan mediante protocolo HTTP, puede verse ejemplos en: https://aprendiendoarduino.wordpress.com/2016/07/06/arduino-web-server/

ESP8266

El ESP8266 es un chip Wi-Fi de bajo coste con pila TCP/IP completa y capacidad de MCU (Micro Controller Unit) producida por el fabricante chino Espressif Systems, con sede en Shanghai.

El chip primero llegó a la atención de los fabricantes occidentales en agosto de 2014 con el módulo ESP-01. Este pequeño módulo permite a los microcontroladores conectarse a una red Wi-Fi y realizar conexiones TCP/IP sencillas utilizando comandos de tipo Hayes. Sin embargo, en ese momento casi no había documentación en inglés sobre el chip y los comandos que aceptaba. El precio muy bajo y el hecho de que había muy pocos componentes externos en el módulo que sugiere que podría ser muy barato en el volumen, atrajo a muchos hackers para explorar el módulo, el chip y el software en él, así como para traducir La documentación china.

El ESP8285 es un ESP8266 con 1 MB de flash incorporado, lo que permite dispositivos de un solo chip capaces de conectarse a Wi-Fi. Muchos encapsulados del ESP8266 viene con 1 MB de flash.

Características:

  • 32-bit RISC CPU: Tensilica Xtensa LX106 running at 80 MHz*
  • 64 KiB of instruction RAM, 96 KiB of data RAM
  • External QSPI flash – 512 KiB to 4 MiB* (up to 16 MiB is supported)
  • IEEE 802.11 b/g/n Wi-Fi
  • 16 GPIO pins
  • SPI, I²C,
  • I²S interfaces with DMA (sharing pins with GPIO)
  • UART on dedicated pins, plus a transmit-only UART can be enabled on GPIO2
  • 1 port 10-bit ADC

Los módulos ESP8266 los podemos encontrar en diferentes encapsulados y placas:

En nuestro caso vamos a usar el ESP-01:

Uso ESP8266 con IDE Arduino

Firmware propio

El ESP8266 con su firmware de fábrica nos permite conectarnos a Internet desde Arduino conectando ambos módulos mediante el puerto serie y ejecutar comandos AT sobre el ESP8266 y recibiendo la respuesta en Arduino.

Tutorial uso ESP con comandos AT: https://create.arduino.cc/projecthub/user16726/configuring-the-esp8266-using-an-arduino-0ab2e6?ref=similar&ref_id=27809&offset=5

Programación IDE Arduino

El ESP8266 dispone internamente de un pequeño procesador, prácticamente es capaz de replicar casi cualquier cosa los Arduinos puedan hacer. Así que los proyectos con sensores más Arduinos que envían los datos a la WIFI mediante un ESP8266, es muy probable que podamos ahorrarnos el Arduino en el proceso, gracias a un firmware basado en C ++. Este permite que la CPU ESP8266 y sus componentes Wi-Fi sean programados como cualquier otro dispositivo Arduino.

  • Puedes desarrollar con el mismo IDE que ya conoces
  • Han hecho un Cross compiler, de forma que prácticamente utilizas los mismos comandos que utilizas con Arduino, con lo que te ahorras aprender nada nuevo
  • Dependiendo del modelo de ESP8266 que tengas, dispones de más o menos pines disponibles con PWM y otras cosas más como I2C y SPI, pero para el modelo ESP8266-01 solo tienes dos pines disponibles GPIO0 y GPIO2
  • Puedes programar el procesador de tu ESP8266 exactamente como si fuera un Arduino con los mismos comandos, y en lo que se refiere a la WIFI, puedes olvidarte de los comandos AT, porque incluye una serie de librerías, que imitan la librería WIFI de Arduino con lo que se pueden reutilizar muchos programas.  

El Arduino Core ESP8266 está disponible a través de GitHub: https://github.com/esp8266/Arduino

Reference de Arduino core a ESP8266: https://github.com/esp8266/Arduino/blob/master/doc/reference.md

Listado de URLs para soporte de tarjetas no oficiales: https://github.com/arduino/Arduino/wiki/Unofficial-list-of-3rd-party-boards-support-urls

Podemos instalar el soporte a terceros en nuestro IDE simplemente añadiendo el texto “http://arduino.esp8266.com/stable/package_esp8266com_index.json” en propiedades:

Y luego desde el gestor de tarjetas dar a instalar al soporte para ESP8266.

Para programar el microcontrolador del ESP8266 necesitamos un adaptador de USB a puerto serie, pero podemos usar el propio ATmega16U2 que viene en Arduino UNO para programarlo.

IMPORTANTE:

  • El ESP8266 va alimentado a 3,3V, ¡no alimentarlo con 5 voltios!
  • El ESP8266 necesita comunicarse vía serie a 3.3V y no tiene entradas tolerantes 5V, por lo que necesita la conversión de nivel para comunicarse con un microcontrolador 5V como la mayoría de los Arduinos

En este caso para poder programar el ESP8266, en el Arduino no puede haber ningún sketch con el puerto serie funcionando ya que interferiría con el puerto serie del ESP8266. Por ejemplo podemos cargar el blink.

IMPORTANTE: Cuando cargas un sketch en el ESP8266 con el IDE Arduino estamos cargando en la flash de ESP8266 un nuevo firmware borrando el que viene por defecto visto anteriormente para manejar el módulo con comando hayes.

Módulo:

Pines:

  • TX (goes to the 3.3V Rx of the UART USB adapter to the PC)
  • CH_PD (enable/power down, must be pulled to 3.3v directly or via resistor)
  • RESET
  • VCC (3.3v power supply)
  • GND (connect to power ground)
  • GPIO 2
  • GPIO 0 (leave open or pull up for normal, pull down to upload new firmware)
  • RX (goes to the 3.3V Tx of the UART USB adapter to the PC)

Vamos a programar el ESP8266 cargando los ejemplos de ESP8266 que vienen en el soporte para el IDE de Arduino, usando la librería ESP8266WiFi.h:

  • ESP8266Wifi/Wifiscan: Scan networks
  • ESP8266Wifi/WifiClient Conectar a wifi
  • ESP8266WebSerber/HelloServer: Servidor web wifi

Paso 1 – Cargar el programa blink en Arduino par que no haya interferencias por el puerto serie.

Paso 2 – Conexión:

Paso 3 – Con el IDE de arduino cargar cualquiera de estos tres programas de ejemplos y comprobar que funcionan:

  • ESP8266Wifi/Wifiscan: Scan networks
  • ESP8266Wifi/WifiClient Conectar a wifi
  • ESP8266WebSerber/HelloServer: Servidor web wifi

También se podría programar el blink de Arduino en la patilla GPIO2, que es la que nos queda libre y hacer parpadear el led:

void setup()
   { pinMode(2, OUTPUT); }

void loop()
   { digitalWrite(2, HIGH);  
     delay(1000);  
     digitalWrite(2, LOW);
     delay(1000);   
   }

Para probarlo, conectar independiente.

Transporte con Arduino

Drones

Otra de las aplicaciones de Arduino es su uso en drones.

Firmware usado con Drones con MCUs iguales a las de Arduino:

Ardupilot:

Placa de control:

Los motores brushless se usan habitualmente en los drones son trifásicos con un variador para controlar de forma muy exacta la velocidad del motor. Motores DC brushless: https://en.wikipedia.org/wiki/Brushless_DC_electric_motor

Para cotrolar los motores brushless necesitaremos un ESC (Electronic Speed Control) https://en.wikipedia.org/wiki/Electronic_speed_control

Y el esquema de conexiones en un drone es:

Más información: https://learn.adafruit.com/adafruit-motor-selection-guide/brushless-dc-motor-control  

Montar un drone es sencillo usando el programa de Ardupilot y el SW que facilita es el mission planner: http://ardupilot.org/planner/index.html

Rovers

Es muy habitual ver desarrollos de coches o rovers con Arduino e incluso ya venden kits para montar tu propio coche con Arduino

Hay coches basados en Arduino comerciales como Moway: http://moway-robot.com/category/productos-mowayduino/

KITs de coches:

También hay un proyecto Rover con Arduino derivado de ardupilot:

Robot 1 – Basado en el bq printbot evolution. Se puede comprar el kit completo o imprimir las pieza y comprar BQ zum kit y montarlo o incluso comprar las piezas por separado.

Programación con IDE Arduino o bitbloq: http://bitbloq.bq.com/#/

Montaje: http://diwo.bq.com/montaje-del-printbot-evolution/

Placa ZUM: http://diwo.bq.com/placa-controladora-conexion-zum/

Componentes electronicos: http://diwo.bq.com/descubre-los-componentes-electronicos-del-kit-de-robotica/

Partes imprimibles:

Robot 2 –  basado en el kit de chasis de coche 4×4 con 4 motores DC y reductora

Kit Chasis:

Montado:

En este caso se opta por un Arduino Yun al tener un interfaz wifi integrado y la posibilidad de poner una web embebida en el SO linux y usar la API REST para comunicar con el microcontrolador.

Driver: L298N Breakout Board (Esta breakout board es muy sencilla y bien documentada):

Specification:

  • chipset: L298N
  • Driving power supply voltage Vs: +5V  to +46V
  • Peak current of driving power supply Io: 2A
  • Vss: +5V to +7V
  • Current of logic power supply: 0 – 36mA
  • PWM control signal range:
    • Low level: -0.3V < Vin < 1.5V
    • High level: 2.3V < Vin< Vss
  • Enable signal range:
    • Low level: -0.3V
    • High level: 2.3V < Vin< Vss
  • Maximum power consumption: 25W
  • Working temperature: -25C to 130C
  • Regulador de tensión para los 5V.

Para las conexiones se usa un shield de conectores grove: Base Shield V2: http://www.seeedstudio.com/depot/Base-Shield-V2-p-1378.html?cPath=98_16

Esquema del shield: https://www.arduino.cc/en/uploads/Main/arduino_MotorShield_Rev3-schematic.pdf

Alimentación:

Código del proyecto: https://github.com/jecrespo/Coche_AprendiendoArduino

Máquinas CNC

El control numérico o control decimal numérico (CN) es un sistema de automatización de máquinas herramienta que son operadas mediante comandos programados en un medio de almacenamiento, en comparación con el mando manual mediante volantes o palancas.

Una fresadora CNC, es decir, una máquina controlada por ordenador que es capaz de moldear, grabar, tallar y fresar todo tipo de materiales de la forma y tamaño que deseemos. Se puede crear todas las piezas que necesites para tus proyectos con un solo click de ratón. Al igual que puedes hacer tus propias placas PCB o tallar esculturas 3D.

Para mecanizar una pieza se usa un sistema de coordenadas que especificarán el movimiento de la herramienta de corte. El sistema se basa en el control de los movimientos de la herramienta de trabajo con relación a los ejes de coordenadas de la máquina, usando un programa informático ejecutado por una ordenador.

En el caso de un torno, hace falta controlar los movimientos de la herramienta en dos ejes de coordenadas: el eje de las X para los desplazamientos longitudinales del carro y el eje de las Z para los desplazamientos transversales de la torre. En el caso de las fresadoras se controlan también los desplazamientos verticales, que corresponden al eje Y.

Con Arduino es posible hacer una máquina CNC muy similar a como sería una impresora 3D pero sustituyendo el extrusor por una fresa.

Tutorial para construir un router CNC con Arduino:

Cómo construir una fresadora:

Los motores utilizados para las máquinas CNC son motores paso a paso como los de las impresoras 3D y necesitamos un driver para poder controlarlos desde Arduino.

El driver:

Stepper drivers (the shield was designed to work with A4988 compatible pololu drivers):

Disponemos de shields específicas para routers CNCs y la más extendida es la grbl shield:

Pines usados:

Para el manejo de las máquinas CNC, el firmware más usado el el grbl:

Versión anterior del firmware:

El G-code es el nombre que habitualmente recibe el lenguaje de programación más usado en Control numérico (CNC), el cual posee múltiples implementaciones. Usado principalmente en automatización, forma parte de la ingeniería asistida por computadora. grbl es un interprete de g-code.

G-code:

GRBL setup guide: http://blog.protoneer.co.nz/quick-grbl-setup-guide-for-windows-arduino-g-code-interpreter/

GRBL con Arduino: http://blog.protoneer.co.nz/grbl-arduino-library/

Con el G-Code Sender podrás controlar tu placa GRBL-Arduino con comandos G-Code e incluso tiene botones de flecha para mover los motores paso a paso. G-code sender: https://github.com/grbl/Universal-G-Code-Sender

Además de compilar con el IDE de Arduino y cargar el programa de grbl u otros, es posible usar Xloader para cargar en Arduino los firmware en binario/hexadecimal (*.hex)

Existen máquinas CNC comerciales como x-carve

Impresoras 3D

Otros productos por los que conocemos Arduino son las impresoras 3D. El código, firmware o sketch que funcionan dentro de un Arduino usado en una impresora 3D están disponibles y podemos modificarlo. En este apartado no vamos a aprender a montar una impresora 3D, pero entenderemos que hace el Arduino usado en estos dispositivos y cómo usa los periféricos usados (motores, display, botones, etc…).

Este enlace explica los materiales necesarios para montar una impresora 3D con Arduino y algunos conceptos relacionados: http://saber.patagoniatecnology.com/kit-electronica-impresora-3d-arduino-argentina-ptec/

Firmware para impresoras 3D del proyecto reprap:

Componentes de una impresora 3D:

Interesante tutorial paso a paso para montar una impresora 3D: https://www.cooking-hacks.com/documentation/tutorials/3d-printer-step-by-step-tutorial-guide-prusa-it3 que usa el firmware Marlin.

Al final se trata de analizar el firmware de marlin que está disponible en: https://github.com/MarlinFirmware/Marlin y el fichero .ino es este https://github.com/MarlinFirmware/Marlin/blob/RC/Marlin/Marlin.ino y hay que ir tirando del hilo de las librerías y ficheros que llama para entender que hace.

Si nos descargamos todo el firmware y abrimos el fichero Marlin.ino con el IDE de Arduino y los compilamos en un Arduino Mega, obtendremos el firmware en binario listo para funcionar en un Arduino.

Pero hay más firmwares: http://reprap.org/wiki/List_of_Firmware

Ejemplo de kit para montar una impresora 3D: http://www.sainsmart.com/sainsmart-mega2560-a4988-ramps-1-4-3d-printer-kit-for-arduino-reprap.html. Este kit usa un shield donde conectar todos los sensores y actuadores y para manejar los motores paso a paso usa unos drivers que se encargan de mover los motores dándoles la potencia y los pulsos según lo programado en el firmware

La shield más famosa es la RAMPS:http://www.reprap.org/wiki/RAMPS_1.4/es

Otro shield usado para impresoras 3D es RUMBA: http://reprap.org/wiki/RUMBA

Proyectos Sencillos con Arduino

Hagamos unos proyectos sencillos con Arduino usando sensores, actuadores y comunicaciones.

Menú interactivo con Arduino

Con todo lo visto  anteriormente de comunicación serie, operadores, estructuras de control y funciones, hacer un ejemplo de un menú interactivo donde se dan varias opciones y pulsando cada una de ellas se ejecuta una acción concreta. Si el valor pulsado no es ninguna de las opciones avisar y volver a mostrar el menú hasta que se pulse una opción correcta.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio46-Estructuras_de_Control

Mover un Servo

Controlar la posición de un servo con un potenciómetro.

Tutorial: http://arduino.cc/en/Tutorial/Knob

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio55-Servo/Knob

Mover un Servo con un Acelerómetro

Una IMU (Inertial Measurement Unit) es un dispositivo capaz de medir la fuerza (aceleración) y la velocidad. Generalmente consta de un Acelerómetro y un Giroscopio. Por lo tanto una IMU no mide ángulos, por lo menos no directamente, requiere algunos cálculos.

Un dispositivo I2C muy interesante es el MPU-6050 que nos sirve para probar e introducirnos en el mundo de los giroscopios y acelerómetros.

Para esta práctica vamos a utilizar una Breakout board bastante típica llamada GY-521, que incluye la IMU MPU-6050 y un regulador de tensión, con lo que podemos alimentar a tanto 3.3V como a 5V.

El siguiente diagrama muestra la orientación de los ejes de sensibilidad y la polaridad de rotación.

El acelerómetro mide la aceleración. La aceleración puede expresarse en 3 ejes: X, Y y Z, las tres dimensiones del espacio. Por ejemplo, si mueves la IMU hacia arriba, el eje Z marcará un cierto valor. Si es hacia delante, marcará el eje X, etc. La gravedad de la Tierra tiene una aceleración de aprox. 9.8 m/s², perpendicular al suelo como es lógico. Así pues, la IMU también detecta la aceleración de la gravedad terrestre. Gracias a la gravedad terrestre se pueden usar las lecturas del acelerómetro para saber cuál es el ángulo de inclinación respecto al eje X o eje Y.

Supongamos que la IMU esté perfectamente alineada con el suelo. Entonces, como puedes ver en la imagen, el eje Z marcará 9.8, y los otros dos ejes marcarán 0. Ahora supongamos que giramos la IMU 90 grados. Ahora es el eje X el que está perpendicular al suelo, por lo tanto marcará la aceleración de la gravedad.

Si sabemos que la gravedad es 9.8 m/s², y sabemos qué medida dan los tres ejes del acelerómetro, por trigonometría es posible calcular el ángulo de inclinación de la IMU. Una buena fórmula para calcular el ángulo es:

Dado que el ángulo se calcula a partir de la gravedad, no es posible calcular el ángulo Z (giro sobre si mismo) con esta fórmula ni con ninguna otra. Para hacerlo se necesita otro componente: el magnetómetro, que es un tipo de brújula digital. El MPU-6050 no lleva, y por tanto nunca podrá calcular con precisión el ángulo Z. Sin embargo, para la gran mayoría de aplicaciones sólo se necesitan los ejes X e Y.

Esquema de conexión IMU:

Esquema conexión servo:

Mover el servo en función del ángulo en el eje x obtenido de la IMU.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio66-Servo_IMU/IMU_1servo

Hacer el mismo ejemplo pero con un sistema de dos grados de libertad con dos servos y moviéndose en función de los grados obtenidos del IMU en los ejes x e y.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio66-Servo_IMU/IMU_2servos

Proyectos con Piezas Impresas 3D

Ahora disponemos de las herramientas para hacer un proyecto completo, imprimiendo las piezas en 3D, montando un arduino y los sensores y actuadores en las piezas.

Robot impreso en 3D: http://otto.strikingly.com/

Tutoriales de construcción:

Código: https://github.com/OttoDIY

Brazo robot para montar con unos servos y tornillos:

Más proyectos impresos 3D con Arduino:

Comunicaciones Arduino

Una de las principales ventajas de Arduino es que podemos dotarlo de comunicación de una forma sencilla añadiendo un shield o una breakout board y dispondremos de casi cualquier tipo de comunicación tanto de acceso a Internet como de para comunicar arduinos entre sí o con otros dispositivos de una red privada.

Ethernet: la forma más clásica de comunicar arduino mediante el shield de ethernet. https://www.arduino.cc/en/Main/ArduinoEthernetShield

Wifi: Hay múltiples formas de conectar Arduino a internet mediante wifi:

Bluetooth: https://aprendiendoarduino.wordpress.com/2016/11/13/bluetooth-en-arduino/

Zigbee/XBee: IEEE 802.15.4 es un estándar que define el nivel físico y el control de acceso al medio de redes inalámbricas de área personal con tasas bajas de transmisión de datos (low-rate wireless personal area network, LR-WPAN). El grupo de trabajo IEEE 802.15 es el responsable de su desarrollo. También es la base sobre la que se define la especificación de ZigBee, cuyo propósito es ofrecer una solución completa para este tipo de redes construyendo los niveles superiores de la pila de protocolos que el estándar no cubre.

XBee es el nombre comercial del Digi de una familia de módulos de comunicación por radio y están basados en el estándar zigbee, pero digi tiene muchos Xbee y algunos son zigbee estándar y otros son propietarios o modificaciones del estándar. Existen muchos módulos Xbee basados en el estándar IEEE 802.15.4

Más información: https://aprendiendoarduino.wordpress.com/2016/11/16/zigbeexbee/

LoRaWAN: es una especificación de una red LPWAN (Low Power Wide Area Network) propuesta por la LoRa Alliance y pensada para comunicar dispositivos de bajo coste y bajo consumo alimentados por baterías. La especificación cubre las capas PHY y MAC de la red, dejando a las aplicaciones el resto de capas. En la banda ISM de 868MHz (915 MHz en otras regiones), con un bitrate de hasta decenas de kbps (de 0.3 kbps hasta  50 kbps).

nRF24: Este dispositivo NRF2401, integra en un único chip, toda la electrónica y bloques funcionales precisos, para establecer comunicaciones RF (Radio Frecuencia) entre dos o más puntos a diferentes velocidades, (Hasta 2  Mb/seg) con corrección de errores y protocolo de reenvío cuando es necesario, sin intervención del control externo, lo que nos permite aislarnos de todo el trabajo sucio y complicado relacionado con la transmisión física.

Información de producto: http://www.nordicsemi.com/eng/Products/2.4GHz-RF/nRF24L01

Sigfox: es una solución de conectividad celular mundial para el Internet of Things pensada para comunicaciones de baja velocidad que permite reducir los precios y el consumo de energía para los dispositivos conectados. La solución de conectividad SIGFOX se basa en una infraestructura de antenas y de estaciones de base totalmente independientes de las redes existentes.

En la red SIGFOX se transmiten mensajes de 12 bytes, pudiendo enviar 140 mensajes al día.

Sigfox trabaja con fabricantes como Texas Instruments, Atmel, Silicon Labs y otros para poder ofrecer distintos tipos de SOC, transceptores y componentes de conexión a su red. En el caso de smartphones y tablets, actualmente no son compatibles con esta red, pero, al no tener licencia de uso, su inclusión sería realmente económica y sencilla.

Sensores y Actuadores

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.

Los sensores se pueden clasificar en función de los datos de salida en:

  • Digitales
  • Analógicos
  • Comunicación por Bus

Los sensores van conectados a las entradas de Arduino.

A la hora de elegir un sensor, debemos leer detenidamente las características y elegir uno que sea compatible con nuestro sistema (tensión y voltaje) y que sea sencillo de usar o nos faciliten una librería sencilla y potente.

Ejemplos de Sensores:

Ejercicio con sensor de temperatura: https://aprendiendoarduino.wordpress.com/2016/07/02/sensor-de-temperatura/

Actuadores y Periféricos

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

Los actuadores van conectados a las salidas de Arduino.

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…

Para cada actuador o periférico, 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.
  • Recordar que los pines Arduino solo pueden tener los valores de 5V (3.3V en algunos modelos) y 0V. No es posible cualquier otro valor de tensión.

A la hora de seleccionar un actuador o periférico para usar con arduino habrá que ver sus características y cómo hacer el interface con arduino. En el playground de Arduino existe una gran base de datos de conocimiento para conectar Arduino con casi cualquier HW: http://playground.arduino.cc/Main/InterfacingWithHardware

Tutoriales para conectar Arduino con diversos dispositivos: http://playground.arduino.cc/Learning/Tutorials

Ejemplos de Actuadores y periféricos:

Otro tipo de actuadores son los motores. Más información de motores en: https://aprendiendoarduino.wordpress.com/2016/07/04/motores/