INTRODUCCIÓN
Hoy en día existen varios tipos de comunicaciones inalambricas desde lo más simple hasta lo más complejo, una de las primeras comunicaciones es la comunicación RF como también conocido como Radio Frecuencia, al decir verdad este es una de las comunicaciones más sencillas de manejar. Por ende, en este episodio usaremos los módulos de radio frecuencia. En los mercado usualmente se encuentra módulos de Radio frecuencia con 4 canales, lo que significa que solo se podrá controlar 4 salidas individualmente, esto puede ser muy útil si se trata de controlar menos de 4 salidas, ahora, si se quiere controlar más de 4 salidas este deja de ser útil, sin embargo, si agregamos un microcontrolador al circuito receptor del RF se podrá controlar más de 10 salidas. Para ello crearemos una tarjeta PCB que tendrá 8 salidas de transistores y dos salidas de relays.
ESPECIFICACIONES TÉCNICAS
- Tensión de alimentación……………………….…………12VDC
- Corriente de alimentación………………….……………500mA
- Salidas de transistores…………………………………………..8
- Salidas de relés……………………………………………………….2
- Entorno de programación………………………..……..Arduino
- Condiciones ambientales min……………….…..….-10°
- Condiciones ambientales max……………………….60°
- Dimensiones………………………………………………….100x86mm
- Empotrable………………………………………….………Sí
DISEÑO PCB – Ordene ahora JLCPCB
LISTA DE COMPONENTES ELECTRÓNICOS
- U1; Microcontrolador ATmega328p-AU ( see & buy )
- U2; Circuito Integrado Transceiver USB CH340C ( see & buy )
- U3; Regulador de voltaje SMD (AMS 1117-5.0) 5.0V (see & buy)
- J1; Micro USB tipo B (see & buy)
- J2; Jack power 12V (see & buy)
- J3, J4; Pines espadines Macho (see & buy)
- J5; RF Receptor (see)
Emisor (see) - J6, J7; Borneras 2PIN (see & buy)
- J8, J9; borneras 3PIN (see & buy)
- D1, D2, D4, D5, D6; Led smd 1206 ( see & buy )
- D3; Diodo Schottky SS14-T (see & buy)
- D7, D8; Diodo rectificador SOD80 (see & buy)
- C1-C4, C9, C14; Capacitor cerámico 0.1uF (0603) ( see & buy )
- C5, C7; Capacitor ceramico 0.1uF(1206) (see & buy)
- C6, Capacitor electrolítico SMD 220uF ( see & buy )
- C8; Capacitor electrolítico SMD 47uF ( see & buy )
- Q1-18; Transistor DPAK NPN (see & buy)
- Q9-Q10; Transistor SOT23 NPN ( see & buy )
- R10-R17; Resistencia SMD 1/4W, 1k Ohm, package 1206 ( see & buy )
- R3-R6, R9, R18-R21 ; Resistencia SMD 1/10W, 1k Ohm, package 0603 ( see & buy )
- R2, R7, R8; Resistencia SMD 1/10W, 10k Ohm, package 0603 ( see & buy )
- R1; Resistencia SMD 1/10W, 1M Ohm, package 0603 ( see & buy )
- DSW1; DIP Switch 2pin (see & buy)
- RL1, RL2; Relay 12V (see & buy)
- BTN1; Pulsador SMD (see & buy)
- X1; Crystal SMD 16Mhz ( see & buy )
PASOS PARA SUBIR UN PROGRAMA
PASO 1 : SUBIR GESTOR DE ARRANQUE (BOOTLOADER)
Para poder usar un microcontrolador nuevo (atmega328p-U), es necesario subir un un gestor de arranque como también llamado “BOOTLOADER”, esto nos facilitará subir programas en futuras ocasiones.
finalmente para quemar el bootloader se tendrá que realizar a través de los pines ICSP, que prácticamente serían los pines [ (MOSI=11) (MISO = PIN12) (SCK=PIN13) (Slave=PIN10) ]. Para subir y quemar el gestor de arranque necesitaremos un arduino UNO ó MEGA y realizar las siguientes conexiones (ARDUINO UNO – MAIN BOARD RF).
PASO 2 : SUBIR PROGRAMA; PC – BOARD RF
Después de haber subido el gestor de arranque finalmente ya podremos subir cualquier programa como normalmente lo realizamos a través del puerto serie.
CÓDIGO
/* CREADO POR :{==[=======>>>> ELECTROALL <<<<<=======]==} INSTAGRAM : https://www.instagram.com/carlos_j_fuentess/ ó @carlos_j_fuentess FACEBOOK : https://web.facebook.com/ELECTROALL.ELECTRONICA/?_rdc=1&_rdr PÁGINA WEB : https://www.electroallweb.com/ YOUTUBE : https://www.youtube.com/c/ELECTROALL ________________________________________________________ {==[=======> (CONTROL INALAMBRICO MAS DE 10 SALIDIAS (CANALES)) <=======]==} ________________________________________________________ */ // {==[=======> (DEFINIMOS VARIABLES PARA LAS ENTRADAS) <=======]==} const int prender =2; const int apagar =3; const int activador =4; const int Rst =5; const int vt =6; const int A =7; const int B =8; // {==[=======> (DEFINIMOS VARIABLES PARA LAS SALIDAS) <=======]==} # define Q0 9 # define Q1 10 # define Q2 11 # define Q3 12 # define Q4 13 # define Q5 14 # define Q6 15 # define Q7 16 # define Q8 17 # define Q9 18 # define Q10 19 int estado_anterior = 0; int estado_anterior1 = 0; byte counter = 0; byte counter1 = 0; void setup() { Serial.begin(9600); // {==[=======> (DEFINIMOS VARIABLES COMO ENTRADAS) <=======]==} pinMode (prender, INPUT); pinMode (apagar, INPUT); pinMode (activador, INPUT); pinMode (Rst, INPUT); // {==[=======> (DEFINIMOS VARIABLES COMO SALIDAS) <=======]==} pinMode (Q0 , OUTPUT); pinMode (Q1 , OUTPUT); pinMode (Q2 , OUTPUT); pinMode (Q3 , OUTPUT); pinMode (Q4 , OUTPUT); pinMode (Q5 , OUTPUT); pinMode (Q6 , OUTPUT); pinMode (Q7 , OUTPUT); pinMode (Q8 , OUTPUT); pinMode (Q9 , OUTPUT); pinMode (Q10 , OUTPUT); } void loop() { int valor_prender = digitalRead (prender); int valor_apagar = digitalRead (apagar); int valor_activador= digitalRead (activador); int valor_rst = digitalRead (Rst); tone(Q0, 0.01); // señalizador de buen funcionamiento de la tarjeta // {==[=======> (FUNCION PARA EL CONTADOR ASCENDENTE (PRENDER)) <=======]==} if (valor_prender != estado_anterior) { //si valor es diferente a estado anterior if (valor_prender == HIGH) { counter++; Serial.println(counter); } } delay (50); estado_anterior = valor_prender; if(counter ==11){ delay(1000); counter=0; } // {==[=======> (FUNCION PARA EL CONTADOR ASCENDENTE (APAGAR)) <=======]==} if(valor_apagar != estado_anterior1){ if(valor_apagar ==HIGH){ counter1++; Serial.println(counter1); } } delay(50); estado_anterior1 = valor_apagar; if (counter1 == 11) { delay(1000); counter1 = 0; } // {==[=======> (FUNCION PARA ENCENDER LOS LEDS (SALIDAS)) <=======]==} if(counter==1&&valor_activador == HIGH){ digitalWrite(Q1,true); } if(counter==2&&valor_activador==HIGH){ digitalWrite(Q2,true); } if(counter==3&&valor_activador==HIGH){ digitalWrite(Q3,true); } if(counter==4&&valor_activador==HIGH){ digitalWrite(Q4,true); } if(counter==5&&valor_activador==HIGH){ digitalWrite(Q5,true); } if(counter==6&&valor_activador==HIGH){ digitalWrite(Q6,true); } if(counter==7&&valor_activador==HIGH){ digitalWrite(Q7,true); } if(counter==8&&valor_activador==HIGH){ digitalWrite(Q8,true); } if(counter==9&&valor_activador==HIGH){ digitalWrite(Q9,true); } if(counter==10&&valor_activador==HIGH){ digitalWrite(Q10,true); } // {==[=======> (FUNCION PARA APAGAR LOS LEDS (SALIDAS)) <=======]==} if(counter1==1&&valor_activador==HIGH){ digitalWrite(Q1,false); } if(counter1==2&&valor_activador==HIGH){ digitalWrite(Q2,false); } if(counter1==3&&valor_activador==HIGH){ digitalWrite(Q3,false); } if(counter1==4&&valor_activador==HIGH){ digitalWrite(Q4,false); } if(counter1==5&&valor_activador==HIGH){ digitalWrite(Q5,false); } if(counter1==6&&valor_activador==HIGH){ digitalWrite(Q6,false); } if(counter1==7&&valor_activador==HIGH){ digitalWrite(Q7,false); } if(counter1==8&&valor_activador==HIGH){ digitalWrite(Q8,false); } if(counter1==9&&valor_activador==HIGH){ digitalWrite(Q9,false); } if(counter1==10&&valor_activador==HIGH){ digitalWrite(Q10,false); } ////RESETEAMOS LOS VALORES ///////////////////////// if (valor_rst==1){ counter=0; } if ((valor_rst==1)&&(valor_activador==1)){ counter1=0; } /////////////////////////////////////////////////// }