Control remoto con Arduiono

control remoto para arduinoEn esta práctica vamos a utilizar el Control Remoto Inalámbrico IC 2262/2272 4 CH ( 4 canales )  315 Mhz para arduino y, lo vamos a poner en marcha desde cero.

1º Este dispositivo, para hacerlo funcionar, primero hay que comprarlo ( jejejeje ). Bueno, el último que compré me costo 1,70 € en aliexpress, así que no debe diferir hoy mucho de esa cantidad.

2º ¿ Que es ?. este pack está compuesto por un emisor que emite 4 señales codificada a una frecuencia de 315 Mhz, con posibilidad de poner antena receptora en el módulo receptor, lo que amplia el rango de trabajo.

Esta pareja de componente ( Emisor-receptor ) utilizan los C.I  PT2262/PT2272  que realizan un control remoto inalambrico básico. Se utilizan normalmente en sistemas económicos debido a que utilizan códigos fijos y no emiten la información encriptada.

Son comúnmente usados en  controles de garajes ( puertas ),  control de ventiladores, alarmas sencillas, juguetes, etc.

No son aconsejables cuando la seguridad sea importante.

Para hacer esta práctica necesitamos:

  • Arduino Uno
  • Cables de conexión ( hebra-macho )
  • kit de radiocontroles mencionados antes
  • Diodos leds con resistencias de protección

Un poco mas de este dispositivo

El radiocontrol emite la frecuencia codificada con 4 canales disponibles. Esto posibilita tener control sobre 4 variables. Si fuese el control de un coche, un canal puede ser para ponerlo en marcha, el otro para invertir giro del motor, otro para mover las ruedas y el 4º canal para alguna sirena.

Pasamos a explicar el programa

Xd-YK04En el detalle del receptor, tenemos la Masa ( GND ) y la alimentación de 5 voltios ( Vccc). Luego, obtenemos una salida llamada Vt que nos ofrece una salida cuando se ha recibido uno de los canales y, por último, D1, D2, D3 y D4 son las salidas de los canales, que generan una señal  ( High ) al recibir la señal de radio correspondiente a su canal.

Otro punto marcado en el módulo es el correspondiente a la Antena, que no será necesario para distancias cortas pero es muy útil si vamos a operar mas allá de los 10 metros.

El Tornillo marcado con tinte rojo es un condensador variable ajustado y, por tanto, no se debe tocar bajo ningún concepto

Como esos terminales van a ser salidas del receptor, lo tenemos que entrar en arduino por los puertos correspondientes. Podemos elegir que puertos podemos usar para recibir estas señales y hay que configurarlos como puertos de entrada.

Algo importante en este trabajo es que no vamos a necesitar ninguna librería.

En nuestro caso vamos a utilizar desde el puerto 7 en adelante

Programa:

void setup() -> Configuramos el programa
   {  Serial.begin (9600); -> Establecemos la velocidad del puerto serie
      pinMode (13, OUTPUT) ; -> el puerto 13 salida
      pinMode (12, OUTPUT) ; -> Puerto 12 salida
      for (int i = 7 ; i < 12 ; i++) -> *rutina para poner los pines a entrada
           pinMode(i, INPUT) ;
   }

*  En este caso, la explicación de esta rutina es la siguiente. La primera parte le asigna el valor i a 7 y dice que siempre que sea menor de 12 lo tiene que incrementar en uno

En la 2º parte pone el pinMode i, de forma que el primer i es 7, y lo pone como input, luego sube a la linea de arriba, se incrementa el i a 8, baja a la siguiente linea y pone el pin 8 a input. Así hasta el 12

Esto sería equivalente a decir

pinMode(7, INPUT) ;
pinMode(8, INPUT) ;
 pinMode(9, INPUT) ;
 pinMode(10, INPUT) ;
pinMode(11, INPUT) ;
pinMode(12, INPUT) ;

Otra instrucción nueva es el Serial.begin, que nos activa el puerto de salida para poder visualizar datos

2º parte:

void loop() -> Empieza el lazo
   {   
      if (digitalRead(7) )     // Si hay señal de radio válida
         {  Serial.print("Nos llega un valor. \t"); // se imprime Nos llega un valor 
            if (digitalRead(8))  // leemos el puerto 8 a ver si llega señal
                Serial.print( "Se ha pulsado el Botón A"); // Se imprime, Se ha pulsado ...
            if (digitalRead(9)) // se hace lo mismo con el 9
                Serial.print( "Se ha pulsado el Botón B");
            if (digitalRead(10)) // repetimos para el 10
              { 
                   Serial.print( "Ahora se ha pulsado el Botón C.");
                   digitalWrite (12, ! digitalRead(12)) ; // Sacamos por el puerto 12 el valor de 12
                   delay (500) ; // esperamos 0.5 segundos
               }
            if (digitalRead(11))
               { 
                   Serial.print( "Se ha pulsado el botón D");
                   digitalWrite (13, ! digitalRead(13)) ; // se activa la salida 13
                   delay (500) ; // se espera 0,5 segundos
               }
            Serial.println("\t"); // Imprime un tabulador
         } 
   }

3º Parte.

¿ Cómo incluir las instrucciones adecuadas para que, al pulsar un botón, el  motor cambie de estado ?.

Si hemos pulsado para que suba pero, queremos pararlo antes de tiempo, por ejemplo a mitad de camino, sin tener que esperar a que pare por el fin de carrera del motor, tenemos que incluir un código de forma que se lea la entrada y, sí había sido antes pulsado, se pare, y en caso contrario, se ponga a funcionar

Antes de seguir con el proyecto y, con la idea de incorporar esta función, aconsejo que se monte este programa o, se simule con tinkercad.com

int ledPin = 13; // Conectamos el led 13 y asignamos variable ledPin
int inPin = 7; // el botón de lectura es el 7. Lo llamamos inPin
int val = 0; // creamos variable val que leerá estado pin 7
int motor = 0;// variable interna que nos viene a decir cómo está el motor
void setup()
{
 pinMode(ledPin, OUTPUT); // ponemos el ledPin como salida
 pinMode(inPin, INPUT); // inPin como entrada
}
void loop()
{
 val = digitalRead(inPin); // el valor val toma la lectura del pin 7
  if (val ==HIGH && motor ==LOW ) 
/* En la linea anterior, si ha llegado un 1 ( se ha pulsado ) y el motor
está parado, entonces ponemos el motor a funcionar */ 
 {
 motor = 1; // se pone variable  motor a 1
 digitalWrite(ledPin, HIGH); // se activa motor
 
 delay (1000);// delay de un segundo
 // sets the LED to the button's value
 }
 val = digitalRead(inPin); // volvemos a leer el valor
 if (val ==HIGH && motor == 1 )
/* lo mismo que antes, pero si el motor estaba encendido, tenemos que 
apagarlo +/
 {
 motor = 0; // se pone variable motor a cero
 digitalWrite(ledPin, LOW); // se desactiva motor
  delay (1000);
 
 }

Ya estamos cerca. Tan solo hay que construir el programa ( no lo bajo para que se construya con el código dado arriba.

Actividad:

Parte 1. Montar el programa que se indica arriba y comprobar su funcionamiento.

Parte 2:  Montar un programa para que active un semáforo a distancia, de forma que se usen tres canales para cada una de las luces y se reserve un cuarto canal para cerrar una valla de acceso al garaje.

La idea es poder controlar el acceso a un garaje por un operario a distancia.

Las luces , a ser de potencia, necesitan un sistema de relés. Si no se dispone del mismo, usar diodos leds.

Para la barrera ( motor ), se puede usar una sirena u otro dispositivo.

Parte 3. Hacer un sistema codificado, que usando la entrada de los cuatro canales, se active un sistema de:

  1.  Arduino  empieza a leer la información dada por el transmisor cuando detecta la entrada Vt, y genera un espacio temporal de 10 segundos para tomar una decisión.
  2. Si después de los 10 segundos la secuencia que se ha entrado por los canales es correcta, se enciende una luz ( también se puede activar la apertura de una cerradura )
  3. Si a los 10 segundos, el código es erróneo, se dispara una alarma
  4. El código está compuesto por la secuencia de 8 entradas de los canales recibidos, correspondiente a los canales ABCDDCBA.

Proyecto domótico para controlar toldo

Con el proyecto del mando de RF , vamos a realizar  un trabajo final donde se controle la subida y bajada de un toldo, según condiciones atmosféricas ( sol , lluvia y viendo ) , junto con el control manual del mando y añadiendo un control de IOT ( Internet of Things ). Para esta última parte, tenemos que tener en consideración todo el trabajo que viene en el enlace Control de led con ESP8266

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies