lunes, 21 de marzo de 2016

Arduino: leer códigos de mando a distancia (Read remote control)

Buenas, hace un tiempo que quería hacer este ejemplo ya que considero que puede tener muchas posibilidades. Aunque en este ejemplo solo vamos a leer los códigos de un mando a distancia, lo bueno es que puede ser casi cualquier mando a distancia tanto de TV, DVD, etc. Con esto que podemos hacer, podemos por ejemplo encender luces conectadas a reles, subir y bajar unas persianas, abrir una puerta... en fin lo que se os pueda ocurrir.

Solo vamos a necesitar una librería llamada IRremote.h 

AVISO: esta librería me ha dado problemas ya que se supone que ya viene incluida en el IDE de Arduino, pero no se por que no funciono, leyendo en foros descrubrí que la mejor solución es reinstalar la librería. Para esto lo primero que tenemos que hacer es eliminar estos archivos que están alojados en libraries\RobotIRremote\IRremoteTools.cpp y libraries\RobotIRremote\IRremoteTools.h 

Estos archivos están alojados en la carpeta de librerías de ArduinoIDE que no es la misma que la carpeta donde se alojan las librerías que cargamos nosotros al añadir una libreria.


Dicho esto, solo nos queda conectar el receptor de infrarojos en Arduino y comenzar a recibir datos de nuestro mando. Para conectarlo hay que mirar que tipo de IR tenemos, en nuestro caso es el VS1838B cuyo patillaje es: 1-OUT, 2-GND, 3-VSS.



A la hora de crear el ejemplo en Fritzing solo me deja este tipo de sensor IR que en lo único que se diferencia es en la posición de las conexiones.
Una vez tenemos esto empezamos con este sencillo programa:

#include "IRremote.h"

/*Declarar Constantes*/
const int receiver = 11; //Declaramos que el pin de recepcion es el 11

/*Declarar objetos*/
IRrecv irrecv(receiver);  //Creamos una instancia para 'irrecv'
decode_results results;   //Creamos una instancia para 'decode_results'


void setup()   /*SETUP: solo se lee una vez*/
{
  Serial.begin(9600);
  Serial.println("Lector de infrarojos Infotronikblog ");
  irrecv.enableIRIn(); //Activar el receptor
}

void loop()   /*LOOP: se ejecuta constantemente */
{
  if (irrecv.decode(&results)) //Cuando recibe una señal IR

  {
    Serial.println(results.value, HEX);  // Imprime el codigo de cada boton
    irrecv.resume(); //Recibe el siguiente valor
    delay(100);
  }
}
 //FIN




domingo, 13 de marzo de 2016

Arduino: Efecto soldadura con arco para maquetas

Arduino es una plataforma que gracias a su bajo coste podemos incluir en nuestras maquetas con multiples efectos tanto visuales como sonoros.

En este caso vamos a tratar la soldadura con arco, un efecto que quedara muy vistoso en cualquier obra o taller de reparaciones que incluyamos en nuestra maqueta. 

El efecto se consigue con varios random para encender y apagar el led de manera aleatoria, dando así el efecto de un equipo de soldadura. 
La idea original y el programa lo he descargado de la web Locoduino donde también se pueden encontrar varios ejemplos con luces. 

El ejemplo traducido lo puedes descargar Aqui.

Este ejemplo también me ha servido para, haciendo algunos cambios, poder añadirlo a un a decodificador DCC también realizado con Arduino que podéis descargar Aqui.

Este proyecto solo lleva un led blanco conectado al pin13 y a GND.


domingo, 31 de enero de 2016

Arduino: Driver L298N y Bluetooth HC-06

Ya iba siendo hora de poner algo de comunicación serial, y aunque parezca ya un poco avanzado, es muy simple utilizar el bluetooth HC-06 en Arduino.

El módulo HC-06: 
El HC-06 es un dispositivo de comunicación inalambrica operando en la frecuencia de 2,4GHz.
Se conecta a en los pines TX y RX sus datos los envía y recibe con un protocolo serial de nivel lógico TTL.
Por defecto, viene con un usuario y un password por defecto que normalmente sera User: HC-06 y contraseña 1234. y el seteo de la velocidad de transmisión a 9600,8,N,1.
Para una mayor comodidad usare la librería SoftwareSerial. h para asignarle la entrada de datos a los puertos 2 y 3 y así no tener problemas a la hora de cargar el archivo por USB

El modulo L298N:
Es un driver de potencia basado en el chip L298N que permite controlar 2 motores de corriente
continua o un motor por pasos bipolar de hasta 2A.
Cuenta con diodos de protección y un regulador de 5V que suministra energía a la parte lógica, jumpers de selección para habilitar las salidas A y B de los motores. La salida A serigrafiada como OUT1 y OUT2 y la salida B con OUT3 y OUT4.
La parte de control del módulo están marcados como IN1, IN2, IN3, IN4.
ENA y ENB deberán estar conectados a +5V mediante el jumper o a una salida PWM de Arduino.

Y, por supuesto, nuestra placa Arduino. Para este proyecto he utilizado un Arduino Nano.
Otro complemento es un pequeño altavoz que nos hará de claxon.
Las conexiones quedarían así:



Este sería el esquema general, todo esto es lo que hay dentro de nuestro rover. Para la base del rover encontré en ebay unas orugas ya montadas de algún juguete por unos 10€, pero también venden los kits para motar como los de Tamiya.
En total el coste de los materiales no tendría que superar los 20€ más o menos.



Software para Android:
Bueno ya tenemos las conexiones para nuestro rover controlado por bluetooth, ahora le toca el paso a nuestro software para poder controlarlo desde cualquier dispositivo móvil o tablet que disponga de bluetooth.
Para estas pruebas me he descargado de google play el "Bluetooth RC Controller" que es bastante sencillo de configurar y usar.
Solo hay que emparejar el bluetooth y listo.



Fotos del montaje:







           








Descargar el software para Arduino: Arduino Rover Bluetooth V1




sábado, 19 de diciembre de 2015

Arduino: Leyendo paquetes DCC con RB_DCC_Sniffer

Bien después de la entrada anterior a alguno le picara la curiosidad de como conectar el sistema DCC al ordenador.
Bueno antes de empezar con las librerías y demás, lo primero que he hecho ha sido comprobar que el circuito con el 6N137 funciona correctamente. Para ello encontré este programa que es muy útil para comprobar que paquetes de datos circulan por nuestros railes.
El circuito es muy simple ya que solo hace falta el modulo y un Arduino conectado al PC. El modulo va conectado a Arduino en el pin 2.
El programa en si se llama  RB_DCC_Sniffer y como he dicho, no hace falta ningun tipo de libreria, solo cargar el sketch y a funcionar.






El programa es bastante simple nos manda en monitor serial de Arduino configurado a un Baudrate de 38400 una serie de datos como en número de locomotora, dirección, velocidad en la siguientes fotos se puede ver como funciona y los datos que recibe el ordenador a través de Arduino.
Además se puede configurar mediante entrada de comandos en el monitor serial y son los siguientes:
  • 1 = 1s Tiempo de refresco
  • 2 = 2s
  • 3 = 4s (por defecto)
  • 4 = 8s
  • 5 = 16s
  • 6 = 4 Tamaño del buffer DCC 
  • 7 = 8
  • 8 = 16
  • 9 = 32 (por defecto)
  • 0 = 64
  • a = Paquetes de accesorios on/ off
  • l = Paquetes de locomotoras on / off 



Las fuentes originales de donde he sacado la información y el programa es esta: Rudysmodelrailway


Descargar RB_DCC_Sniffer

martes, 24 de noviembre de 2015

Arduino: Lectura del sistema DCC NmraDCC

Buenas! Es sabido por parte de todos los que leéis este blog mi pasión por las maquetas de trenes y por supuesto a arduino. Bien ahora he descubierto (aunque no creo que sea algo nuevo) las librerías para poder conectar los Arduinos a el sistema DCC de la maqueta, Las librerías se llaman NmraDcc-master, LocoNet-master y DCC_Decoder. Las tenéis también en la sección de descargas de este mismo blog.

La idea la he sacado de esta web: http://mrrwa.org/ y de este magnifico manual Servos-DCC-Arduinos.pdf eso si ambas en  ingles. Yo voy a intentar traducir y hacer los ejemplos a poder ser con vídeos para mostrar lo sencillo que es conectar nuestro sistema DCC con Arduino.

Para empezar tenemos que conectar Arduino a las vías para poder leer la información que circula por ellas. Tengo que decir que en la pagina arriba descrita hay dos circuitos diferentes uno de lectura y otro de escritura, Yo para comenzar voy a probar el sistema de lectura. Para leer los paquetes solo necesitamos un pequeño optoacoplador 6n137, 1 resistencia de 1k, 2 resistencias de 10k y un diodo 1n4148.
Todo esto lo montaremos de la siguiente manera:



Bueno creo que es un circuito bastante sencillo y que casi cualquiera puede ponerse y construir, Pero si lo veis complicado, siempre podemos llegar a un acuerdo y suministrároslo desde esta web en el siguiente correo electrónico: peyutron@hotmail.com. Aunque aun es un poco pronto para eso ya que estoy esperando el pedido de los optoacopladores para poder hacer mis pruebas.

Bueno por lo pronto esto es todo, hasta que no tenga el material no podre empezar, pero es algo que en cuanto llegue me pondré e iré haciendo un pequeño tutorial.

 Un saludo a todos y espero que dentro de poco os pueda enseñar los resultados!!





martes, 6 de octubre de 2015

Moviendo desvíos con servos y Arduino

Buenas!!! después de estar mirando como poder mover los desvíos de mi nueva maqueta (aun en construcción) y viendo los precios y los diferentes sistemas (electroimanes, reles, motores caseros, etc..) me he decantado por los servos de modelismo.
El porque es muy sencillo, su bajo precio y lo fácil que son de instalar, si a eso le añadimos una placa arduino, la cosa se hace mucho más interesante. Ya no es que solo podamos mover el servo con arduino, sino que también podremos tener salidas para poder conectar semáforos o cualquier otra cosa que queramos como los corazones de los desvíos.

El servo en cuestión es este:
Y la placa de Arduino que he elegido para este proyecto es la Nano con un shield especial (o ideal) para este proyecto:

Arduino Nano

Shield Arduino Nano

Además el precio es más que asequible, en total las dos placas salen por menos de 8€.

En este caso, al no ir conectadas a ninguna central DCC, he tenido que construir un pequeño panel donde van 4 pulsadores y conectarlos a una entrada analógica. Si, se podrían haber conectado a pines analógicos pero he preferido hacerlo de manera analógica sobre todo por el tema del cableado
y por que así me sobran otros tantos pines para una posible ampliación o conectar cualquier otra cosa que se me ocurra, pero eso sera cuando este la maqueta más avanzada. En principio se quedara tal y como se ve en el vídeo.

Bien los pines asignados a los servos son 6, 7, 8 y 9 y los pines asignados a accesorios son los 10, 11, 12, 13.
Los pulsadores van conectados en el pin A0.

Conexión de los pulsadores a Arcuino

Pulsadores
Arduino + Shield y servos





El programa se queda un poco extenso para ponerlo en la web, pero lo tenéis Aquí o en la sección de descargas de esta misma pagina



Related Posts Plugin for WordPress, Blogger...