Nativity computer Arduino

Belén navideño animado con Arduino

Hola Yonkis de la robótica!

¿Cansado de los típicos belenes navideños? Con tu placa de Arduino puedes animarlo y sorprender a todos tus invitados.

Objetivo:

Animar un Belén navideño con luces, música y mensajes en pantalla LCD.

Características:

  • Tres tonos musicales que suenan aleatoriamente desde un buzzer pasivo.
  • Pantalla LCD 16×2 que muestra mensajes y los títulos de los tonos musicales que estan sonando.
  • Sensor de ultrasonidos que detecta proximidad para iniciar los tonos musicales.
  • Tiras de luces LED que se encienden al ritmo de los tonos musicales.

Materiales:

  • Placa Arduino Uno
  • Sensor de distancia por ultrasonidos
  • Pantalla LCD Azul 16×2
  • Adaptador IIC/I2C (no es necesario, pero ayuda a simplificar la instalación)
  • Tira de leds 12v
  • Fuente de alimentación DC 12V
  • Transistor NPN PN2222
  • Cables de conexión.

Índice

  1. Melodías navideñas con buzzer pasivo.
  2. Pantalla LCD 16X2
  3. Sensor de distancia ultrasónico
  4. Iluminación LED al ritmo de la música.

1. Melodías navideñas con buzzer pasivo.

Con este código suenan aleatoriamente tres melodías navideñas: Jingle Bells, Santa Claus is coming to town y We wish you a Merry Christmas.

Si abrimos el monitor serie veremos el título de la melodía que está sonando y el numeral de cada melodía.

Conexiones:

Conectar el Buzzer a la salida digital 9 y a GND.



Código melodías navideñas

Es necesaria la librería pitches.h

2. Pantalla LCD 16X2

Una vez configurada la parte de los tonos, pasamos a la pantalla LCD.

En ella mostraremos el título de la canción que está sonando y en la segunda línea mostraremos un mensaje de “Felices Fiestas!”

He usado el controlador I2C para controlar la pantalla a través de únicamente 4 hilos (5v, GND, SDA, SCL).

Incluimos las librerías para la pantalla y configuramos la dirección al inicio del programa: LiquidCrystal_I2C.h y Wire.h

En el Setup incluimos un mensaje de bienvenida

Añadimos el código del LCD después de cada serial.println (“título del tono”)

Así nos iría quedando el código:

Conexiones:

He de reconocer que tuve bastantes problemas a la hora de configurar el LCD con el controlador I2C. No me mostraban caracteres, solo se encendía la pantalla con bloques blancos. El I2C tiene un potenciómetro para regular el contraste, pero aún así no mostraba mas que bloques.

Usé este escáner para comprobar la dirección de mi I2C. Me marcaba que no reconocía ningún I2C. Intercambie las conexiónes de sda con scl y me detectó enseguida la dirección. La 0x3F.

3. Sensor de distancia ultrasónico

Por último, a nuestro código tenemos que añadirle el ingrediente final. Será un disparador que hará que arranque la fiesta.

La librería para el sensor: SR04.h

Añadir en el bucle un condicional para que se active la música cuando se detecte una distancia inferior a 20cm, es decir cuando pongas un obstaculo, como una mano por ejemplo, delante del sensor ultrasónico.

El código quedaría así definitivamente:

Conexiones:

Trig a D12; Echo a D11

4. Iluminación LED al ritmo de la música

En el código de las melodías está incluido el parpadeo del led 13, por lo tanto, en el pin 13 tenemos 5v a ritmo de la música. Yo he usado una tira de led de 12v, por lo que necesitamos instalar un transistor que nos alimente los led cuando haya un HIGH en el pin 13. He usado un transistor NPN PN2222 que me venía en el kit de elegoo.

La función del transistor es que cuando activemos la base 2 con el pin 13 del Arduino, tendremos paso de corriente entre el colector 3 y el emisor 1

¿Qué es Arduino?

Arduino es una plataforma de prototipos electrónica de código abierto (open-source) basada en hardware y software flexibles y fáciles de usar.

En la red dispones de muchos kits de aprendizaje de Arduino con los que podrás iniciarte en la programación de esta placa.

Ventajas

  • Barato
  • Multiplataforma
  • Entorno de programación simple y claro
  • Código abierto y hardware extensible
  • Codigo abierto y software extensible (C++)
  • Multitud de shields y de versiones de placas
  • Amplia comunidad de usuarios

¿Qué podemos hacer con Arduino?

Cómo controlar una cámara con Arduino

Se me plantea un problema a la hora de instalar una cámara. Necesito que mediante control remoto gire horizontalmente para que enfoque a otro punto. Dispongo de un grabador al que se conecta la cámara cctv que almacena las imágenes. Por suerte los DVR (grabador) disponen de una salida para controlar el PTZ (Pan Tilt Zoom) de las cámaras. Estos tienen acceso remoto por http y por apps en Android e IOS que incluyen además del visionado de las imágenes, el control del PTZ.

Con estos datos investigo acerca de estos puertos y descubro que son puertos serie RS485.

Afortunadamente encuentro un módulo para Arduino que me decodifica ese puerto.

Analizo las lecturas y el protocolo de comunicación, en este caso selecciono el PELCO D, uno de los más comunes.

Ya lo tenemos liado, pedido a Amazon que esto parece que se puede hacer.

Objetivo:

Controlar un motor en el eje x para que gire una cámara. El sistema tiene que controlarse con un grabador DVR.

Tecnologías a utilizar:

  • Transmisión serie rs485
  • Pelco D
  • Arduino
  • Controladora de motores paso a paso.

Materiales:

Pelco D

Antes de entrar en detalle, necesito saber un poco acerca del PELCO D.

Pelco D consiste en la transmisión de 7 bytes en hexadecimal.

Byte 0Byte 1Byte 2Byte 3Byte 4Byte 5Byte 6
SyncCamera AddressCommand 1Command 2Data 1Data 2Checksum

Prestando atención al Byte 1, que selecciona el canal, es decir, la cámara que queremos controlar, y al Byte 3 que contiene la información para los movimientos según la siguiente tabla:

 Bit 7Bit 6Bit 5Bit 4Bit 3Bit 2Bit 1Bit 0
Command 1SenseReservedReservedAuto / Manual ScanCamera on / offIris CloseIris OpenFocus Near
Command 2Focus FarZoom wideZoom TeleTilt DownTilt UpPan LeftPan RightFixed to 0

Por ejemplo:

Si el byte 3 es 00000010 (2 en decimal) Gira horizontalmente (pan) a la derecha.

Si el byte 3 es 00000100 (8 en decimal) Gira horizontalmente (pan) a la izquierda.

Pues tema resuelto. Dejo la demás información para si alguien necesita hacer más funciones.

Puente H – L298N

El L298N es un controlador de motores al cual podemos conectar 2 motores DC o un motor paso a paso de 2 bobinados.

Se alimenta a 12V, al igual que nuestro sistema de vigilancia, y además tiene una salida de 5V para alimentar nuestro Arduino.

Para activar nuestro motor DC que conectaremos a la salida 1 – 2, debemos actuar sobre las entradas IN 1 e IN 2.

Al dejar las dos en LOW el motor se para.

Si ponemos IN1 en HIGH e IN2 en LOW el motor gira a la Izquierda.

En el caso de invertir los estados de IN1 e IN2, el motor invierte el sentido.

Además, dispone de otros pines con los cuales podemos regular la velocidad de giro del motor, los cuales yo dejo puenteados porque no me hace falta. Se trata de los pines ENA y ENB.

Max RS485.

Modulo que usamos para leer las tramas serie que envía el controlador PELCO D de nuestro grabador DVR. En el código he añadido mensajes serie, asique podemos abrir la consola serie de Arduino para comprobar los datos recibidos del DVR cuando mandamos las ordenes.

Así quedaría nuestro código con el cual conseguimos que funcione nuestro proyecto.

 

Esquema de conexiones:

L298N:

  • IN1 – D7
  • IN2-D8
  • 12V – FUENTE 12V
  • GND – GND FUENTE 12V Y GND ARDUINO
  • 5V – salida 5v para Arduino a Vin

MAX RS485:

  • DI – TX1
  • DE- D2
  • RE – D2
  • RO – RX0
  • VCC- 5V ARDUINO
  • GND – GND ARDUINO
  • A – + DVR
  • B – – DVR
Esquema de conexión de arduino para controlar camara

Esquema de conexión de RS485, Arduino y L298N

En este caso uso las señales del PTZ emitidas por el grabador DVR para mover el motor DC, pero se me ocurren otras aplicaciones como activar relés para abrir puertas o encender luces, eso ya a gusto del consumidor.

 

Muchas gracias por leer el artículo, si te ha gustado deja un comentario, si no pues también.

Salu010 (010 = 2 = dos para los de letras)

Como controlar un led RGB con Arduino

Hola Yonkis de la Robótica!!

Hoy tengo un tuto con nuestra queridísima placa de Arduino que es canelita en rama para aquellos que les chiflan las lucecitas y efectos de iluminación.

Se trata de controlar un led RGB (Red Green Blue). Y… ¿qué es un led RBB?. Podés descubrirlo en este vínculo o os lo resumo: Un Led RGB es una luz que dispone de 4 patillas el cual puede emitir luz de toda la gamma cromática, ya que dispone de los tres colores básicos y puede regular cada una de sus intensidades con las que los emite. Para el control de este LED es común usar  un pin de conexión por cada color y uno para el nodo común. Este nodo común puede ser el cátodo o el ánodo como se muestra a continuación:

Cómo una imagen vale mas que mil palabras y para que no leáis el artículo en valde, os dejo un vídeo en el que se muestra perfectamente lo que vamos a realizar:

Lista de materiales a utilizar:

  • Placa Arduino UNO (o equivalente)
  • LED RGB de Cátodo común
  • Cables de conexión
  • Placa protoboard
  • Resistencias de 220ohm

Esquema de conexión:

Se deberá conectar a los pines PWM que dispone el Arduino. En este caso

  • Pin 11 – Rojo
  • Pin 10 – Verde
  • Pin 9 – Azul

Os muestro el código, o podéis descargarlo aquí:

Bien, podéis disfrutar de todos los colores con este código, solo tenéis que cargarlo en el Arduino con el IDE y listo.

 

Un salu010

 

Primeros pasos con Arduino – instalar en windows y encender led

Hola Yonkis de la robótica

Con este post inicio una serie de publicaciones acerca de Arduino, y ¿qué es Arduino?
Arduino es una plataforma que nos permite practicar con microcontroladores de forma fácil y sencilla, de código libre y de muy bajo coste.

Objetivo:

Hacer parpadear un led.

Materiales:

  • Arduino UNO (o elegoo UNO kit)
  • Ordenador
  • Cable USB
  • Led
  • Resistencia 220ohm.

INSTALACIÓN DEL IDE DE ARDUINO

En este enlace podéis encontrar la descarga para Windows:

https://www.arduino.cc/en/Guide/Windows

Una vez instalado, ejecutamos el programa y veremos una ventana como esta:

 

interfaz

 

Desde el menú programa, podemos gestionar las librerías, necesarias para facilitar el control de dispositivos como pantallas lcd, módulos, sensores… hay miles. Por ejemplo para controlar el LCD de texto se usa la librería LiquidCystal, pero de las librerías ya hablaremos mas adelante.

CONECTAR PLACA CON IDE

En el menú Herramientas, debemos elegir el modelo de nuestra placa, en este caso selecciono Arduino/Genuino Uno. En el puerto, debemos poner el puerto serie COMx que corresponda con nuestra placa. En este mi caso es el COM6.

 

Si no te detecta la placa, revisa desde Windows (botón derecho sobre Equipo, Administrar) en Administrador de dispositivos,  Puertos COM LPT,  o si hay algún dispositivo que no se ha reconocido, probablemente tengas que instalar los drivers de Arduino. Los tienes en C:\Program Files (x86)\Arduino\drivers.

PRACTICA PARPADEO DE LED

Para la practica vamos a usar los ejemplos que vienen por defecto con el IDE de arduino.

Usaremos en concreto el ejemplo blink, que lo encontramos en Archivo, Ejemplos, Básicos.

 

ejemplos

 

A continuación nos cargará el código de ejemplo que hará parpadear el led 13 que viene integrado en la placa.

El texto que aparece en gris claro, son comentarios, es decir, no afectan al programa, sirven para ayudar a su comprensión. La línea comentada comienza por // y el párrafo comentado se abre con /* y se cierra con */ .

En el apartado Void Setup es una función que se usa para establecer los parámetros iniciales del programa. El Void Loop es un bucle que se repite constantemente.

Aquí el código comentado en castellano para aclarar lo que significa cada línea.

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

El LED BUILTIN, lo declara como salida. En este caso usa la constante LED_BUILTIN para referirse al pin digital 13, es decir, que se puede sustituir la constant LED_BUILTIN por 13.

void loop() {
digitalWrite(LED_BUILTIN, HIGH);

En la función bucle, activa el led, es decir, pone 5v+ en la salida digital 13

delay(1000);

Delay 1000 es que espera 1000 ms, 1 segundo.

digitalWrite(LED_BUILTIN, LOW);
delay(1000);
}

Después, pone en low (bajo) o 0V en la salida digital 13 y espera otro segundo. Con el corchete cerrado finaliza el bucle y vuelve a empezar en la primera línea del void loop.

Por lo tanto, resumiendo:

  1. Declarar pin 13 como salida
  2. Encender el pin 13 y esperar un segundo.
  3. Apagar el pin 13 y esperar un segundo.
  4. Repetirse hasta el infinito o hasta que se apague la corriente del arduino…

 

CARGAR EL CÓDIGO EN LA PLACA

Para subir el código a la placa arduino, pulsar el botón con flecha a la derecha que está debajo de “Archivo”. Comenzará a reportar el proceso en la barra inferior del IDE donde indicará que todo esta ok con un avrdude done. Thank you.

Si hay errores en el código te los marcará, o podemos verificar el código antes de subirlo con el botón del tick que está a la izquierda de subir.

subir.png

Una vez subido el código, el arduino repetirá en bucle el void loop. si pulsamos el botón reset, comenzará el programa de nuevo.

Como prueba, podéis conectar un led, junto con su resistencia de 220ohm en serie, en el pin 13 el positivo y en gnd el negativo, y comprobar que parpadea junto con el led integrado de la placa.

Enhorabuena, ya has realizado tu primera práctica con arduino. Si te animas, sigue atento al blog que haremos mas!!!

Salu010   (010=2=dos)

Compras recomendadas: