Archivo de la etiqueta: Práctica

Uso de Librerías Arduino

La instalación, actualización y manejo librerías en Arduino es un aspecto importante a la hora de usar Arduino, veamos unos ejemplos. Para aprender a instalar librerías lo mejor es practicar, veamos unos ejemplos de instalación de algunas librerías muy útiles.

Cuando se va a instalar una librería, la primera tarea es leer la documentación y aprender a usarla, ya sea leyendo el código, viendo los ejemplos o revisando la documentación si está disponible.

Pasos para realizar los ejemplos propuestos:

  • Leer la documentación y entender que hace la librería.
  • Buscar e instalar la librería desde el gestor de librerías, si está disponible.
  • Descargar el .zip del repositorio de github si no está en el gestor de librerías. Botón Download zip
  • Abrir alguno de los ejemplo suministrados por las librerías, leer el código, entender que hace y ejecutarlo en Arduino.

Desinstalar librerías: Para desinstalar una librería simplemente borrar el directorio de la librería situado en la ruta configurada en las preferencias de Arduino y reiniciar el IDE.

Librería MsTimer2

MsTimer2 nos ofrece muchas utilidades de temporización muy útiles en el trabajo diario con Arduino.

Instalar la librería MsTimer2 desde el gestor de librerías. Ejecutar el programa de ejemplo incluido en la librería para hacer blink (FlashLed) en el led integrado sin necesidad de usar la instrucción delay().

Esquema de conexiones:

Documentación de la librería: http://playground.arduino.cc/Main/MsTimer2

Nueva versión de la librería: http://www.pjrc.com/teensy/td_libs_MsTimer2.html

Repositorio: https://github.com/PaulStoffregen/MsTimer2 

Librería Timer

La librería Timer es otra de librería de muy interesante de temporización más flexible pero menos exacta de MsTimer2. Esta librería no está disponible en el gestor de librerías.

Documentación de la librería: http://www.doctormonk.com/2012/01/arduino-timer-library.html

Repositorio: https://github.com/JChristensen/Timer 

Instalar la librería timer y ejecutar los ejemplos blink2 y read_A0_flashLED.

Esquema conexión blink2 (prestar atención al código y poner los leds a los pines correctos):

Esquema conexión read_A0_flashLED (prestar atención al código y poner el led al pin correcto o cambiar el código):

Comparación comportamiento librería msTimer2 y Timer: https://github.com/jecrespo/Aprendiendo-Arduino/tree/master/Otros/compara_timers 

Librería Time

La librería Time que añade funcionalidades de mantenimiento de fecha y hora en Arduino sin necesidad de un hardware externo. También permite obtener fecha y hora como segundo, minuto, hora, día, mes y año.

Librería: http://playground.arduino.cc/Code/Time

Documentación: http://www.pjrc.com/teensy/td_libs_Time.html

Repositorio: https://github.com/PaulStoffregen/Time 

Instalar la librería Time desde el gestor de librerías y ejecutar el ejemplo TimeSerial. Para ver la hora que debemos mandar a Arduino en el ejemplo ver https://www.epochconverter.com/ 

Librería para sonda temperatura/humedad DHT.

Librería para manejar un elemento HW como la sonda de temperatura y humedad DHT22.

Señal de comunicación:

Web del sensor: http://www.seeedstudio.com/depot/grove-temperaturehumidity-sensor-pro-p-838.html 

Documentación: http://www.seeedstudio.com/wiki/Grove_-_Temperature_and_Humidity_Sensor_Pro

Datasheet: https://arduino-info.wikispaces.com/file/view/DHT22.pdf/556588503/DHT22.pdf 

Repositorio: https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor

En este caso en el gestor de librerías tenemos dos librerías disponibles:

Pero la tienda donde lo compro me recomienda usar la librería https://github.com/Seeed-Studio/Grove_Temperature_And_Humidity_Sensor

Además de estas tres librerías, existen muchas más. Cualquiera de las librerías para la sonda DHT22 vale para usarla, pero cada una de ellas funciona diferente y cada una de ellas tiene sus ventajas e inconvenientes.

Mi recomendación es la librería DHTstable de Rob Tillaart: https://github.com/RobTillaart/Arduino/tree/master/libraries/DHTstable 

Versión modificada de la librería: https://github.com/jecrespo/DHTlib 

Probar varias librerías y comparar su uso.

Librería Pantalla LCD I2C

Ver este ejemplo: https://aprendiendoarduino.wordpress.com/2018/10/17/pantalla-lcd-i2c-en-arduino/

Instalar la librería LiquidCrystal_I2C del gestor de librerías. Más información https://github.com/marcoschwartz/LiquidCrystal_I2C

En función de la pantalla que compremos TFT, LCD, OLED, etc… hay que buscar que chip disponen y seleccionar la librería adecuada:

Anuncios

Efectos con LEDs

Ya sabemos como hacer parpadear un led, podemos hacer efectos con leds, encendiendose y apagandose en una secuencia concreta para hacer efectos y comprender la programación de Arduino.

Coche Fantástico Simple

Hacer el efecto de las luces del coche fantástico con 5 leds conectados a los pines 2, 3, 4, 5 y 6.

Esquema de conexión:

Recordar poner la resistencia adecuada a cada led. Ley de ohm: V = I * R, si el voltaje es de 5 V y queremos que al LED sólo le lleguen entre 5 mA (0.005 A) y 20 mA (0.02 A), entonces usar una resistencia entre 250 y 1000 ohms.

Código de colores de las resistencias.

Como primera aproximación se puede ejecutar en cada loop el encendido y apagado de cada led esperando un tiempo entre cada encendido y apagado. Para hacer debug, sacar por puerto serie el estado de cada led. Es una extensión del programa blink pero para varios leds.

Solución Visualino:

Solución: Ejercicio06-CocheFantasticoSimple: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio06-CocheFantasticoSimple

Control Velocidad del Efecto de Leds

Con el mismo montaje anterior, añadir un potenciómetro para controlar la velocidad del efecto de los leds.

Añadir en el código al inicio del loop() la línea “timer = analogRead(A0);” para que la velocidad de los leds sea la leida de la entrada analógica de un potenciómetro. Descomentar la línea del código usado en el paso anterior.

Conexión del potenciómetro:

Diagrama:

Solución Visualino:

Solución: Ejercicio06-CocheFantasticoSimple: https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/tree/master/Ejercicio06-CocheFantasticoSimple descomentando la línea: “timer = analogRead(A0);”

Esta solución no es perfecta, puesto que la velocidad se actualiza solo cuando acaba el loop (un ciclo) y no es inmediato. Veremos una solución mejor utilizado el bucle for.

Leer este tutorial y ver solo la primera solución: http://www.arduino.cc/en/Tutorial/KnightRider, las otras soluciones la veremos justo después de ver arrays y nos servirá para entender mejor su uso.

Otros Efectos

Probar a cambiar el código para hacer otros efectos cambiando el código.

Probar este efecto: https://github.com/jecrespo/Aprendiendo-Arduino/blob/master/Ejercicio48-Efectos_Led/Ejercicio48-Efectos_Led.ino

Usando este esquema:

Primer Proyecto: “Blink”

En lugar del clásico “hola mundo” que es el primer programa que se hace cuando se aprende un lenguaje de programación, en Arduino el equivalente es el proyecto blink.

El primer programa o sketch será hacer parpadear el led integrado que lleva Arduino u otro led conectado a un pin digital a través de una resistencia.

NOTA: en caso de usar un led, no olvidar poner una resistencia con un valor entre 220 ohms y 1K ohms

Este es el esquema a usar:

Conexiones internas de la protoboard son así:

Cómo usar una protoboard o breadboard:

Esquema usando la protoboard:

Pasos a seguir:

  • Abrir la aplicación Arduino
  • Abrir el ejemplo blink

  • Leer el programar y entender lo que está haciendo
  • Seleccionar la placa y el puerto adecuado

  • Cargar el programa pulsando el botón “subir”. El programa se compila y luego se verá parpadeando los leds Tx y Rx de Arduino, indicando que se está cargando el fichero binario (.hex) en la flash del Arduino. Cuando aparezca el mensaje “subido” habremos acabado.
  • Unos segundos después veremos el LED parpadeando.

Cuando cargamos un programa en Arduino, estamos usando el bootloader de Arduino, que es un pequeño programa cargado en el microcontrolador que permite subir el código sin usar hardware adicional. El bootloader está activo unos segundos cuando se resetea la placa, después comienza el programa que tenga cargado el Arduino en su memoria Flash. El led integrado en la placa (pin 13) parpadea cuando el bootloader se ejecuta.

Una explicación completa del proyecto y enlaces a las funciones usadas está en: http://arduino.cc/en/Tutorial/Blink

Práctica: Probar a cambiar el valor de delay para hacer parpadear el led más rápido o más lento.

Solución: Ejercicio01-Blink https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio01-Blink/Ejercicio01-Blink.ino

Mejora blink con impresión por consola

Modificar el programa para que cada vez que encienda y apague imprima por el puerto serie la cadena “encendido”, “apagado” cuando corresponda. Luego guardarlo en nuestro entorno de trabajo.

Será necesario usar la librería Serial: http://arduino.cc/en/Reference/Serial

NOTA: Cuando programamos en cualquier lenguaje sobre un ordenador, para interaccionar con el programa usamos el standard input que generalmente es el teclado y el programa muestra los resultados por el standard output que en general es la pantalla. En Arduino esto no es así, sino que para interaccionar con el programa creado se hace a través de la comunicación del puerto serie entre arduino y el ordenador mediante el cable USB que hemos conectado. En este caso la salida del programa manda una cadena de texto por el puerto serie que podemos leer gracias al monitor serie.

Solución:  Ejercicio02-Blink_Mejorado https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio02-Blink_Mejorado/Ejercicio02-Blink_Mejorado.ino

Si queremos poner el led en otro de los pines como el 2, debemos cambiar digitalWrite(13, HIGH); por digitalWrite(2, HIGH); y digitalWrite(13, LOW); por digitalWrite(2, LOW);

Esquema:

Arduino Serial Plotter

Desde la versión 1.6.6 del IDE de Arduino disponemos de la herramienta Arduino Serial Plotter que hace la gráfica de los datos mandados por puerto serie.

Hacer la gráfica con Arduino Serial Plotter de la función y=x*x y otra con la función y=5*x+1 y ver la gráfica en el Serial Plotter. Siendo los valores de x entre -20 y 20.

Sacar También por pantalla con el serial plotter el valor que me devuelve un potenciómetro, girando para ver cómo cambia el valor.

Montaje:

Solución:  Ejercicio03-Serial_Plotter https://github.com/jecrespo/aprendiendoarduino-Curso_Arduino_2017/blob/master/Ejercicio03-Serial_Plotter/Ejercicio03-Serial_Plotter.ino

Usar el Serial Plotter con Blink

Serial plotter imprime 500 puntos en la pantalla, por lo tanto cuanto más lento mandemos los datos más lento se imprime. Si queremos sacar por el serial plotter el blink tenemos estas dos opciones:

Más prácticas

El IDE de Arduino trae muchos ejemplos que podemos ver y probar: https://www.arduino.cc/en/Tutorial/BuiltInExamples

Las 10 primeras cosas que debes hacer con tu arduino: http://antipastohw.blogspot.com.es/2009/12/first-10-things-everyone-does-with.html

Kit de Prácticas

Las prácticas de este curso están diseñadas para usar con los elementos disponibles en el kit de prácticas. Todo el material entregado es en préstamo y debe cuidarse al máximo, a la hora del montaje de las prácticas se seguirán las instrucciones para evitar dañar los componentes.

Todos los Kits, Arduinos y Shields en préstamo tienen un número de serie entre el 1 y el 21. A cada alumno se le asignará uno de ellos y es el que usará durante todo el curso.

Se entregará una hoja de préstamo de material que deberá estar rellenada con el número de kit entregado y firmada. Al final del curso se entregará otra hoja de devolución de material comprobando que todo el material está correcto.

Cada alumno tiene su propio kit con el número de kit. Recordad este número porque se usará durante las prácticas.

Conozcamos a fondo cada uno de los elementos del kit de prácticas.

Arduino UNO

El Arduino que usaremos durante el curso es el Arduino UNO. Es el Arduino más conocido y usado.

Arduino UNO: https://www.arduino.cc/en/Main/ArduinoBoardUno

Arduino Ethernet Shield

Un shield es una placa de circuito modular que se montan unas encima de otras para dar funcionalidad extra a un Arduino. Esta Shields son apilables.

Durante el curso usaremos el Ethernet Shield para conectar Arduino a una red interna o a Internet.

Ethernet Shield V1: https://www.arduino.cc/en/Main/ArduinoEthernetShieldV1

Se trata de la versión antigua del Ethernet Shield, ahora está la versión 2 https://store.arduino.cc/arduino-ethernet-shield-2 que usa el chip W5500 en lugar del chip W5100 que usa la placa que vamos a usar en el curso.

Arduino Starter Kit

Los elementos de los que disponemos como sensores, actuadores, motores y periféricos son los correspondientes al Arduino Starter Kit. Documentación Arduino Starter Kit: http://arduino.cc/en/Main/ArduinoStarterKit

Documentación Arduino Starter Kit: http://arduino.cc/en/Main/ArduinoStarterKit

20x Arduino Starter Kit (https://www.arduino.cc/en/Main/ArduinoStarterKit) que contiene un Arduino Uno, una serie de sensores y actuadores y diversos elementos electrónicos necesarios para realizar las prácticas y proyectos. Componentes:

El Arduino Starter Kit viene con un libro de ejercicios, es posible ver este libro en castellano en la url: http://www.slideshare.net/TinoFernndez/libro-de-proyectos-del-kit-oficial-de-arduino-en-castellano-completo-arduino-starter-kit-arduino-projects-book

Con este kit hay 15 proyectos muy interesantes propuestos:

  • GET TO KNOW YOUR TOOLS an introduction to the basics
  • SPACESHIP INTERFACE design the control panel for your starship
  • LOVE-O-METER measure how hot-blooded you are
  • COLOR MIXING LAMP produce any color with a lamp that uses light as an input
  • MOOD CUE clue people in to how you’re doing
  • LIGHT THEREMIN create a musical instrument you play by waving your hands
  • KEYBOARD INSTRUMENT play music and make some noise with this keyboard
  • DIGITAL HOURGLASS a light-up hourglass that can stop you from working too much
  • MOTORIZED PINWHEEL a colored wheel that will make your head spin
  • ZOETROPE create a mechanical animation you can play forward or reverse
  • CRYSTAL BALL a mystical tour to answer all your tough questions
  • KNOCK LOCK tap out the secret code to open the door
  • TOUCHY-FEEL LAMP a lamp that responds to your touch
  • TWEAK THE ARDUINO LOGO control your personal computer from your Arduino
  • HACKING BUTTONS create a master control for all your devices!

En esta lista de youtube hay varios video tutoriales de los proyecto propuestos por el Arduino Starter Kit: https://www.youtube.com/playlist?list=PLT6rF_I5kknPf2qlVFlvH47qHvqvzkknd

Video tutoriales con ejemplos de uso del Arduino Starter Kit: https://www.youtube.com/playlist?list=PLT6rF_I5kknPf2qlVFlvH47qHvqvzkknd

Arduino Leonardo

También disponemos de 10 unidades de Arduino Leonardo incluidos en el Kit XBee: http://www.digikey.es/product-detail/en/digi-international/XKB2-AT-WWG/602-1550-ND/5271212

Arduino Leonardo es otro de los Arduinos más usados y tiene como principal característica que el propio microcontrolador ya integra el interfaz USB.

Se usa un microcontrolador ATmega32u4 en lugar del ATmega328p del Arduino Uno.

Diferencias en entre Arduino UNO y Arduino Leonardo: http://www.tresdprinttech.com/cual-es-la-diferencia-entre-arduino-uno-y-arduino-leonardo/

Kit XBee

10x Kit XBee( http://www.digikey.es/product-detail/en/digi-international/XKB2-AT-WWG/602-1550-ND/5271212) para desarrollo de aplicaciones con XBee.

Datasheet: https://media.digikey.com/pdf/Data%20Sheets/Digi%20International%20PDFs/XBee_Arduino_Compatible_Coding_Platform.pdf.

Compuesto por:

  • Arduino Leonardo-compatible
  • XBee shield XBee 802.15.4 modules
  • XBee breadboard adapters
  • XBee USB adapter
  • One 2-axis joysticks
  • Six pushbuttons
  • Solderless breadboards
  • Breadboard power supplies
  • 18 LEDs
  • 10kΩ potentiometers
  • Package of 330Ω resistors
  • 9 V batteries and battery clips
  • Micro USB cable
  • Mini USB cable
  • Bundle – jumper wires

Kit Raspberry Pi

20x Kits Raspberry Pi compuestos por:

Kit Wemos D1 Mini

Kit Wemos D1 mini

Kit Comunicaciones

Módulos de comunicación:

Otros Elementos Disponibles

Disponemos de otros módulos para prácticas:

LDR con Arduino

Una fotorresistencia o LDR (por sus siglas en inglés “light-dependent resistor”) es un componente electrónico cuya resistencia varía en función de la luz.

Se trata de un sensor que actúa como una resistencia variable en función de la luz que capta. A mayor intensidad de luz, menor resistencia: el sensor ofrece una resistencia de 1M ohm en la oscuridad, alrededor de 10k ohm en exposición de luz ambiente, hasta menos de 1k ohm expuesto a la luz del sol. Aunque estos valores pueden depender del modelo de LDR.

El LDR actúa como una resistencia variable. Para conocer la cantidad de luz que el sensor capta en cierto ambiente, necesitamos medir la tensión de salida del mismo. Para ello utilizaremos un divisor de tensión, colocando el punto de lectura para Vout entre ambas resistencias. De esta forma:

Dónde Vout es el voltaje leído por el PIN analógico del Arduino y será convertido a un valor digital, Vin es el voltaje de entrada (5v), R2 será el valor de la resistencia fija colocada (10k ohm generalmente) y R1 es el valor resistivo del sensor LDR. A medida que el valor del sensor LDR varía, obtendremos una fracción mayor o menor del voltaje de entrada Vin.

El LDR que usamos: Photoresistor [VT90N2 LDR]

El valor de resistencia eléctrica de un LDR es bajo cuando hay luz incidiendo en él (puede descender hasta 50 ohms) y muy alto cuando está a oscuras (varios megaohmios).

Más información http://diwo.bq.com/descubre-el-ldr/

Ejemplos de uso:

Esquema de conexión:

Leer el valor del LDR cada 500ms y mostrarlo por el Serial Plotter. Usar delay para grabar cada 500ms.

Opcionalmente calcular el máximo y mínimo, mostrándolo por pantalla. Usar las funciones:

Esto nos puede servir para calibrar un elemento y conocer su máximo y mínimo para luego en función de esos valores regular otro elemento como la intensidad de un LED.

Solución: https://github.com/jecrespo/aprendiendoarduino-Curso_Programacion_Arduino/tree/master/Ejercicio02-LDR