Archivo de la categoría: Pantalla LCD

Iniciación a Arduino en 3 Directos de YouTube

En estos tres directos hechos en marzo de 2020 hago una iniciación a Arduino.

Primer Directo

Hablo de:

Enlaces del vídeo:

Segundo Directo

Hablo de:

  • Uso de una pantalla LCD con Arduino
  • Instalar una librería
  • Funciones Arduino
  • Debug de un Sketch de Arduino

Enlaces del vídeo:

Tercer Directo

Hablo de:

Enlaces del Vídeo:

Anuncio publicitario

Electrónica, Sensores, Actuadores y Periféricos

Conceptos Elementales

Corriente Continua

La corriente continua (CC en español, en inglés DC, de Direct Current) se refiere al flujo continuo de carga eléctrica a través de un conductor entre dos puntos de distinto potencial, que no cambia de sentido con el tiempo. A diferencia de la corriente alterna (CA en español, AC en inglés, de Alternating Current), en la corriente continua las cargas eléctricas circulan siempre en la misma dirección. Aunque comúnmente se identifica la corriente continua con una corriente constante, es continua toda corriente que mantenga siempre la misma polaridad, así disminuya su intensidad conforme se va consumiendo la carga (por ejemplo cuando se descarga una batería eléctrica). También se dice corriente continua cuando los electrones se mueven siempre en el mismo sentido, el flujo se denomina corriente continua y va (por convenio) del polo positivo al negativo.

Ley de Ohm

La ley de Ohm, postulada por el físico y matemático alemán Georg Simon Ohm, es una ley de la electricidad. Establece que la intensidad de la corriente I que circula por un conductor es proporcional a la diferencia de potencial V que aparece entre los extremos del citado conductor. Ohm completó la ley introduciendo la noción de resistencia eléctrica  R; esta es el coeficiente de proporcionalidad que aparece en la relación entre I y V.

Pulsador

Un botón o pulsador es un dispositivo utilizado para realizar cierta función. Los botones son de diversas formas y tamaños y se encuentran en todo tipo de dispositivos, aunque principalmente en aparatos eléctricos y electrónicos. Los botones son por lo general activados, al ser pulsados con un dedo. Permiten el flujo de corriente mientras son accionados. Cuando ya no se presiona sobre él vuelve a su posición de reposo.

Puede ser un contacto normalmente abierto en reposo NA o NO (Normally Open en Inglés), o con un contacto normalmente cerrado en reposo NC.

Cuando nos de desenvolvemos en el entorno de los microcontroladores, nos encontramos con un término poco común, me refiero a la polarización de una E/S, debemos saber que hay dos tipos de polarización, polarización alta la resistencia (término inglés Pullup) va conectada a + (5V) o polarización baja la resistencia (término inglés Pulldown) va conectada a masa – (0V). Siguen dos esquemas de estos términos:

Al trabajar con botones nos vamos a encontrar el problema de los rebotes o bouncing. La solución pasa por leer el estado del botón cuando se produce el borde ascendente de la tensión a extremos de los contactos del pulsador e introducir inmediatamente la salida con ese estado, el resto de entradas (se llama ruido) se inhiben o anulan mediante un lapsus de tiempo. Véase la imagen de debajo para entender mejor lo dicho.

Para solucionar el problema de los rebotes podemos hacerlo vía hardware o software:

  • Hardware: aquí se pueden utilizar diferentes técnicas, pero la más común es utilizar un condensador conectado en paralelo al pulsador. El condensador tardará cierto tiempo en cargarse y una vez que esté cargado, la señal de salida será igual a la señal de entrada.
  • Software: puede utilizarse solamente cuando tratemos la señal con un procesador, es decir, hay algún programa que lea la señal emitida por el pulsador. La técnica más utilizada consiste en ignorar las conmutaciones del valor del sensor si desde la última conmutación válida no ha pasado suficiente tiempo.

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

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.

A la hora de elegir un sensor para Arduino debemos tener en cuenta los valores que puede leer las entradas analógicas o digitales de la placa para poder conectarlo o sino adaptar la señal del sensor a los valores que acepta Arduino.

Una vez comprobado que el sensor es compatible con las entradas de Arduino, hay que verificar cómo leer el sensor mediante la programación, comprobar si existe una librería o es posible leerlo con los métodos disponibles de lectura de entrada analógica o digital.

Por último verificar cómo alimentar el sensor y comprobar si podemos hacerlo desde el propio Arduino o necesitamos una fuente exterior. Además, en función del número de sensores que queramos conectar es posible que Arduino no pueda alimentar todos. Para saber si podremos alimentar los sensores, debemos conocer las limitaciones de alimentación de Arduino que veremos en el capítulo 2 del curso http://www.aprendiendoarduino.com/arduino-avanzado-2016/

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

Ejemplos Sensores para Arduino

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

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.
  • La alimentación máxima del pin de 5V y del pin de 3.3V dependerá del regulador de tensión que tenga la placa, en el caso de Arduino UNO la limitación es 1 A para 5V y 150 mA para 3.3V

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 para Arduino

Práctica: Sensores y Actuadores

Smoothing: https://aprendiendoarduino.wordpress.com/2016/07/02/smoothing/

Sensor de Temperatura: https://aprendiendoarduino.wordpress.com/2016/07/02/sensor-de-temperatura/

Display LCD: https://aprendiendoarduino.wordpress.com/2016/07/03/display-lcd/

Motores: https://aprendiendoarduino.wordpress.com/2016/09/16/uso-de-motores-2/

Display LCD

Como ejemplo de periférico para Arduino, uno muy utilizado es el display LCD que permite mostrar información al exterior sin tener que estar conectado a Arduino por USB.

Ejercicio: La bola de cristal. Hacer que cada vez que mueva Arduino, detecte el movimiento con el tilt sensor y devuelva por la pantalla LCD una respuesta aleatoria.

Hacer que también funcione la bola de cristal al usar el puerto serie. Hacer una pregunta por el puerto serie, que se muestre la pregunta en la pantalla LCD y luego a los 5 segundos responda por la pantalla LCD y por el puerto serie.

Librería LCD: https://www.arduino.cc/en/Reference/LiquidCrystal

Tilt Sensor: https://www.arduino.cc/documents/datasheets/TiltSensor.PDF

LCD display: https://www.arduino.cc/documents/datasheets/LCDscreen.PDF

Conexiones:

 

Esquema eléctrico:

Los LCD tienen un interfaz paralelo, lo que significa que debe manipular varios pines del interfaz simultáneamente: RS, RW, Enable pin y data pins.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio23-LCD

Ejercicio: Controlar en qué dirección se mueve el display.

Solución: http://arduino.cc/en/Tutorial/LiquidCrystalTextDirection

Proyectos final de curso

Como final de curso, se propone realizar varios proyectos individualmente o en grupo que se presentarán el viernes 17 de abril.

El horario del taller del día 17 de abril, será de 17.30 a 21.30. Durante las 4 horas de taller se montarán los proyectos y se presentarán. También se resolverán todas las dudas que hayan surgido y se explicará el código.

Al finalizar el taller se entregará el material y se comprobará que está todo en perfecto estado y se firmará el documento de devolución de material.

Desde la finalización del curso hasta la realización del taller, se podrá consultar cualquier duda que surja sobre la realización de los proyectos. El método preferido será a través de la comunidad de google+ https://plus.google.com/communities/104107521992758374331, pero también por twitter o por correo electrónico.

Medios de contacto: https://aprendiendoarduino.wordpress.com/acerca-de/

Proyectos

  • Proyecto 1 – Estación meteorológica. Hacer una estación meteorológica con una sonda de temperatura y la pantalla LCD. Hacer que lea continuamente la temperatura y la muestre por pantalla. Poner un botón que al pulsarlo la primera vez muestre por pantalla la máxima temperatura leída, al volver a pulsarlo muestre la temperatura mínima leída y al volver a pulsarlo muestre la temperatura actual. Para resetear los valores máximo y mínimo, pulsar durante 5 segundos el botón y muestre por pantalla “valores reseteados”.
    Avanzado: Con el shield de ethernet conectarse a internet y mediante la API de http://openweathermap.org/ y obtener los datos de humedad y presion y mostrarlos por pantalla. Actualizar estos datos cada hora. También se pueden obtener los datos de la API de AEMET.

Información adicional:

API: http://openweathermap.org/API

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

Como usar la librería Ethernet: https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino-2/

JSON Parser: https://github.com/bblanchon/ArduinoJson

Datos para Logroño de http://openweathermap.org/

Datos para Logroño AEMET: http://www.aemet.es/xml/municipios/localidad_26089.xml

  • Proyecto 2 – Arranque y parada de motor DC controlado. Basándose en los ejercicios 9 y 10 del libro del Arduino Starter Kit, añadir una rampa de arranque y otra de parada cuando se detecte el encendido y apagado. También añadir una rampa de parada y arranque cuando se detecte un cambio de sentido. Añadir un botón de parada de emergencia, que al pulsarlo, se pare el motor inmediatamente.

Información adicional: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio21-MotorDC

  • Proyecto 3 – Juego de Sogatira. Hacer un juego con 7 leds y dos botones. El led central se ilumina y en función de quien más veces pulsa el botón el led encendido se va desplazando hacia él, hasta que gana cuando ha llegado al último led. En el inicio el led central parpadea y comienza el juego cuando se queda fijo, cada vez que se gana una posición el led parpadea y cuando gana el led final se queda parpadeando en un bucle infinito hasta que reseteo el Arduino para volver a jugar.

Información adicional:

Ejemplo: http://123d.circuits.io/circuits/463198-juego-sogatira

Ejemplo: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio13-sogatira


sogatira

  • Proyecto 4 – Simon. Hacer el juego de Simon con Arduino

Información adicional:

Juego: http://es.wikipedia.org/wiki/Simon_%28juego%29

Ejemplo: http://www.arduteka.com/2012/07/juego-simon-con-s4a-y-arduino/

Ejemplo: http://www.instructables.com/id/Arduino-Simon-Says/

Ejemplo: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio24-Simon

  • Proyecto 5 – Gráfica de datos de temperatura en plot.ly. Recoger datos de temperatura cada 5 segundos y mandarlos a la web de plot.ly para que nos los imprima en tiempo real. Será necesario conectarse a Internet y usar el Ethernet Shield.

Información adicional:

API Arduino para Plot.ly:https://github.com/plotly/arduino-api

Información: http://makezine.com/2014/01/21/streaming-data-with-plotly/

Ejemplo: https://plot.ly/arduino/dht22-temperature-tutorial/

Otro ejemplo: https://plot.ly/arduino/tmp36-temperature-tutorial/

  • Proyecto 6 – Gráfica de datos de temperatura con Processing. Enviar los datos de voltaje leídos a través de un potenciómetro a nuestro ordenador mediante el puerto serie e imprimirlos en una gráfica mediante processing.
    AVANZADO: Encender un Led al ejecutar una determinada acción sobre un programa en Processing.
    En lugar de processing se puede hacer con otros lenguajes como Python o .Net para hacer los dos ejemplos anteriores.

Información adicional:

Comunicar Arduino y Processing: http://playground.arduino.cc/interfacing/processing

Ejemplo: http://arduino.cc/en/Tutorial/Graph

Ejemplo Led: http://arduino.cc/en/Tutorial/PhysicalPixel

  • Proyecto 7 – Alerta de intrusión por email con plataforma IoT www.carriots.com. Poner un sensor de iluminación conectado al arduino y cuando se encienda la luz mande los datos a la plataforma carriots y configurar en ella un aviso por email de intrusión.

Información adicional:

Documentación: https://www.carriots.com/documentation

Librería Arduino de Carriots: https://github.com/carriots/arduino_library

API Rest de Carriots: https://www.carriots.com/documentation/api

Ejemplo: http://blog.biicode.com/iot-temperature-email-arduino-carriots/

Otro ejemplo: https://nukalamadhu.wordpress.com/2014/04/14/internet-of-things-with-arduino-carriots-m2m-cloud-platform/

Tutorial: https://www.carriots.com/tutorials/arduino_carriots/alert_system

  • Proyecto 8 – Comunicar dos Arduinos mediante I2C. Comunicar dos Arduinos para que se manden información vía I2C, ya sea el master quien lea datos y los envíe el slave o el master escriba y el slave lo lea.

Información adicional:

I2C: https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino-4/

Ejemplo1: http://arduino.cc/en/Tutorial/MasterReader

Ejemplo2: http://arduino.cc/en/Tutorial/MasterWriter

Otro ejemplo: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio33-I2C

  • Proyecto 9 – Servidor Web embebido. Hacer una sencilla web embebida en Arduino usando el ethernet shield. La web estará en una tarjeta SD dentro de un ficheo llamada index.html.

Información adicional:

Librería Ethernet: https://aprendiendoarduino.wordpress.com/2014/11/18/tema-6-comunicaciones-con-arduino-2/

Ejemplo: https://github.com/jecrespo/Aprendiendo-Arduino/blob/master/Ejercicio30-SD/Ejercicio30-SD.ino

Ejemplo: http://arduino.cc/en/pmwiki.php?n=Tutorial/WebServer

Tutorial: http://www.academia.edu/7510788/Embedded_Web_Server_using_Arduino_Ethernet_Shield

Otro tutorial: http://blog.startingelectronics.com/arduino-web-server-tutorial/

  • Proyecto 10 – Grabar datos de temperatura en una Raspberry Pi. Datalogger de los datos de temperatura leídos en una Raspberry Pi. Con una RPi que tenga un servidor LAMP instalado, grabar en una tabla de una BBDD MySQL los datos de temperatura que mande Arduino cada 5 segundo:

Información adicional:

Ejemplo: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio32-EnviaDatos

  • Proyectos libres. Proponer otros proyectos.

Práctica: Display LCD

Ejercicio: Ejemplo 11 del libro de prácticas, la bola de cristal. Hacer que cada vez que mueva Arduino, detecte el movimiento con el tilt sensor y devuelva por la pantalla LCD una respuesta aleatoria.

Mejora: Hacer que también funcione la bola de cristal al usar el puerto serie. Hacer una pregunta por el puerto serie, que se muestre la pregunta en la pantalla LCD y luego a los 5 segundos responda por la pantalla LCD y por el puerto serie.

Solución: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Ejercicio23-LCD

Ejercicio: Controlar en qué dirección se mueve el display.

Solución: http://arduino.cc/en/Tutorial/LiquidCrystalTextDirection

Esquemas:

EXTRA:

Ejemplo: Ejemplo de las zapatillas de John Luck:

El arduino que va montado y se ve en la foto, que vale 9.95$:https://www.sparkfun.com/products/11113

El modulo bluetooth, que vale 34.95$: https://www.sparkfun.com/products/12580

El sensor: https://www.sparkfun.com/products/10293, que vale 1.5$, posiblemente no sea este puesto que sería necesario un sensor con mucha más sensibilidad.

El resto  de elementos posiblemente sean para adaptar la señal del sensor piezo eléctrico y cargador de batería