Objetivos
Material requerido.
Arduino Uno o similar. | |
4 key EMisor/Receptor | |
Cables Dupont Macho-Hembra |
Los módulos RF
Hasta la fecha hemos ido dedicando toda una serie de sesiones a hablar de módulos de Radio Frecuencia RF, basados en diferentes normas y estándares que nos permitían comunicar nuestros humildes Arduinos con un mundo exterior que suele ser más o menos confuso.
Así hemos visto como enviar mensajes vía TCPIP mediante módulos WIFI del tipo del ESP8266 en sus distintas variantes y también usar el Bluetooth de nuestros teléfonos para comunicarnos con nuestros proyectos.
A más bajo nivel, presentamos los módulos de radio NRF24L01 que tienen la enorme virtud de tener un muy largo alcance si usamos la antena adecuada, mucho más que el WIFI o el Bluetooth y suelen ser más baratos.
Pero todos estos sistemas adolecen de un problema común: Que tenemos que construirnos el mando a distancia. Cierto que tenemos todo lo necesario, pero al final nuestro mando acaba pareciendo un cacharro salido de la pesadilla de un científico loco, por no hablar de la probabilidad de que algo se suelte en el peor momento (Por la ley de Murphy, ya sabes).
En muchas de esas ocasiones, en que necesitamos simplemente un control remoto sin complicaciones y con mucha frecuencia, de un alcance inferior a 15 metros, el tema de conseguir un mando a distancia cómodo y barato puede convertirse en el principal problema.
Por eso me ha parecido que podía ser interesante presentaros algunos componentes muy sencillos que por unos poco euros te resuelven la papeleta de conseguir un mando remoto práctico y un circuito sencillo que te permita manipular algo a no demasiada distancia.
La idea de esta sesión es presentaros una pareja de mando a distancia de 4 canales con su receptor correspondiente que podemos manejar en nuestros proyectos con la menor complicación, y para eso os tengo que hables de un par de chips que el mercado nos ofrece y en los que se basan los productos de esta sesión.
Los integrados 2262/2272
En las comunicaciones a distancia siempre tenemos un problema parecido. Necesitamos un emisor y un receptor y tener claro si la comunicación es unidireccional: Solo uno envía y el resto recibe, o si por el contrario la comunicación es bidireccional: Uno envía, pero el que recibe tiene que responder y por tanto ser también emisor.
Todas las sesiones previas que hemos presentado anteriormente, correspondían a módulos de comunicación que permitían establecer una comunicación bidireccional, y naturalmente nos parece lo normal y que no tendría sentido otra cosa.
Pero lo cierto es que hay muchas ocasiones en las que no se requiere la comunicación bidireccional. Imagínate el mando a distancia de la tele o de la puerta de un garaje. Basta con que el emisor envíe la orden y que el receptor demuestre que no estaba sordo haciendo la operación requerida.
No es necesario que la puerta del garaje nos informe de que nos ha oído. Basta con que inicie la apertura. Si trascurrido un par de segundos no vemos que nos haga caso, pulsamos de nuevo el mando y punto. La bi direccionalidad de la comunicación es superflua.
La ventaja de establecer comunicación unidireccional es que los circuitos de control son mucho más sencillos y baratos y nos solemos ahorrar cantidad de complicaciones.
Por ello el mercado, siempre atento a la oportunidad de olfatear negocio, vio una ocasión para proveernos con un par de chips que pretende esto exactamente, la pareja 2262 / 2272.
Estos son un par de chips de tecnología CMOS, tipo encoder / decoder, pensados para establecer una comunicación sencilla entre dos puntos en modo unidireccional y tienen la virtud de ser muy sencillos y baratos, y por eso hay cantidad de productos que se apoyan ellos.
Desde mandos a distancia de infrarrojos hasta pequeños módulos inalámbricos para puertas de garaje y similares. De hecho hay bastantes posibilidades de que tengáis alguno en casa o en la puerta del garaje, pero no os asustéis. Solo quería presentároslos y hablar de su utilidad.
Como el objetivo de estas páginas no es entrar en la electrónica de los integrados salvo que sea muy interesante, vamos a pasar directamente a ver algún producto que los usan para enviar señales sencillas que podamos usar en nuestros proyectos.
Control remoto a 315 MHz
Uno de los productos más divertidos y sencillos que podéis encontrar son esta pareja de emisor receptor por RF, que son de lo más molones para cualquier chapuza que os planteéis que necesite un control sencillo del tipo enciende apaga, son esta pareja:
Son básicamente un emisor de 4 canales con formato llavero y con antena retráctil, y un sencillo receptor basado en nuestro chip 2272, que activa uno de 4 pines en función del botón que se pulse en el mando remoto. ¿Fácil no?
Vamos a ver cómo se comporta el modulo receptor que podemos conectar a nuestros Arduinos para controlar lo que os parezca, empecemos describiendo los pines:
Las conexiones son triviales. Conectar tensión y Ground y después cuando se pulsa un botón el mando remoto, si la comunicación es correcta levanta el pin VT para indicar que ha detectado una transmisión valida (Valid Trans).
Por otra parte, los pines D0, D1, D2, D3 se activan con un HIGH, cuando se pulsa el botón A, B, C, D respectivamente, por lo que vamos a conectarlos a los pines digitales de Arduino 8, 9, 10, y 11. Y eso es todo, no tiene más complicación.
La conexión que vamos a usar en el programa será así de sencilla:
Alimentación | Valido | Datos | |||||
---|---|---|---|---|---|---|---|
Modulo RF | GND | Vcc | VT | D3 | D2 | D1 | D0 |
Arduino | GND | 5V | 7 | 11 | 10 | 9 | 8 |
Fijaros que además el receptor requiere que le conectéis una antena sencilla si os vais a alejar unos cuantos metros. Para eso basta con que soldéis un cable arrollado en espiral a la conexión de antena que veis en la esquina superior izquierda.
Podéis hacerlo simplemente arrollando un cable conductor alrededor de un lápiz tal y como indica Jesús en este proyecto.
Esto es la electrónica que me gusta sin complicaciones superfluas. Hace lo que tiene que hacer y punto.
El programa de control
Como la señal que nos entregan los módulos son muy simples el programa es igual de sencillo y rápido de poner en marcha, no requiere librerías ni otras zarandajas, simplemente leer y escribir pines digitales de Arduino. Sesion_129__1
Empezamos inicializando pines y puerta serie:
void setup() { Serial.begin (9600); pinMode (13, OUTPUT) ; pinMode (12, OUTPUT) ; for (int i = 7 ; i < 12 ; i++) pinMode(i, INPUT) ; }
Y ahora leemos los pines sin más:
void loop() { if (digitalRead(7) ) // Si hay dato valido { Serial.print("Valid trans. \t"); if (digitalRead(8)) Serial.print( "Boton A, pulsado"); if (digitalRead(9)) Serial.print( "Boton B, pulsado"); if (digitalRead(10)) { Serial.print( "Boton C, pulsado"); digitalWrite (12, ! digitalRead(12)) ; delay (500) ; } if (digitalRead(11)) { Serial.print( "Boton D, pulsado"); digitalWrite (13, ! digitalRead(13)) ; delay (500) ; } Serial.println("\t"); } }
Comprobamos con el pin digital 7 si hay una entrada valida de datos, es decir, si se ha pulsado un botón en el mando e imprimimos un mensaje de código valido recibido.
Cuando es así, sacamos un mensaje simple indicando que botón se ha pulsado y poco más. Si el botón pulsado es el D o B, levantamos el pin 13 o 12, para excitar lo que tengamos conectado, en mi caso un relé sencillo.
Además saca por la consola información sobre el botón pulsado (No está muy pulido que digamos).
Y para cerra aquí va un pequeño vídeo de muestra:
Resumen de la sesión