- Componentes requeridos
- Software utilizado
- Módulo transmisor y receptor de RF de 433 MHz
- Diagrama de circuito
- Creando el proyecto para Atmega 8 usando CodeVision
- CÓDIGO y explicación
- Sube el código a Atmega8
Hacer que nuestros proyectos sean inalámbricos siempre hace que se vea genial y también amplía el rango en el que se puede controlar. Desde el uso de un LED IR normal para control inalámbrico a corta distancia hasta un ESP8266 para control HTTP en todo el mundo, hay muchas formas de controlar algo de forma inalámbrica. En este proyecto aprendemos a construir proyectos inalámbricos utilizando un módulo RF de 433 MHz y un microcontrolador AVR.
En este proyecto hacemos las siguientes cosas: -
- Usamos Atmega8 para el transmisor de RF y Atmega8 para la sección del receptor de RF.
- Conectamos un LED y un pulsador con microcontroladores Atmega8.
- En el lado del transmisor, hacemos Interface Pushbutton con Atmega y transmitimos los datos. En el lado del receptor, recibiremos los datos de forma inalámbrica y mostraremos la salida en LED.
- Usamos codificador y decodificador IC para transmitir datos de 4 bits.
- La frecuencia de recepción es de 433 Mhz utilizando un módulo RF TX-RX económico disponible en el mercado.
Componentes requeridos
- Microcontrolador Atmega8 AVR (2)
- Programador USBASP
- Cable FRC de 10 pines
- Tabla de pan (2)
- LED (2)
- Pulsador (1)
- Par HT12D y HT12E
- Módulo de RF RX-TX
- Resistencias (10k, 47k, 1M)
- Cables de puente
- Fuente de alimentación 5V
Software utilizado
Usamos el software CodeVisionAVR para escribir nuestro código y el software SinaProg para cargar nuestro código en Atmega8 usando el programador USBASP.
Puede descargar estos softwares desde los enlaces dados:
CodeVisionAVR :
SinaProg:
Antes de entrar en los esquemas y códigos, comprendamos el funcionamiento del módulo de RF con los circuitos integrados de codificador-decodificador.
Módulo transmisor y receptor de RF de 433 MHz
Esos son los módulos transmisores y receptores que estamos usando en el proyecto. Es el módulo más barato disponible para 433 MHz. Estos módulos aceptan datos en serie en un canal.
Si vemos las especificaciones de los módulos, el transmisor está clasificado para una operación de 3.5-12V como voltaje de entrada y la distancia de transmisión es de 20-200 metros. Transmite en protocolo AM (Modulación de audio) a una frecuencia de 433 MHz. Podemos transferir datos a una velocidad de 4 KB / S con una potencia de 10 mW.
En la imagen superior podemos ver el pin-out del módulo Transmisor. De izquierda a derecha, los pines son VCC, DATA y GND. También podemos agregar la antena y soldarla en el punto indicado en la imagen de arriba.
Para la especificación del receptor, el receptor tiene una clasificación de 5 VCC y una corriente de reposo de 4 mA como entrada. La frecuencia de recepción es de 433,92 MHz con una sensibilidad de -105DB.
En la imagen de arriba podemos ver el pin-out del módulo receptor. Los cuatro pines son de izquierda a derecha, VCC, DATA, DATA y GND. Esos dos pines del medio están conectados internamente. Podemos usar cualquiera o ambos. Pero es una buena práctica utilizar ambos para reducir el acoplamiento de ruido.
Además, una cosa no se menciona en la hoja de datos, el inductor variable o POT en el medio del módulo se usa para la calibración de frecuencia. Si no pudiéramos recibir los datos transmitidos, existe la posibilidad de que las frecuencias de transmisión y recepción no coincidan. Este es un circuito de RF y necesitamos sintonizar el transmisor en el punto de frecuencia de transmisión perfecto. Además, al igual que el transmisor, este módulo también tiene un puerto de antena; Podemos soldar alambre en forma enrollada para una recepción más larga.
El rango de transmisión depende del voltaje suministrado al transmisor y la longitud de las antenas en ambos lados. Para este proyecto específico no usamos una antena externa y usamos 5V en el lado del transmisor. Lo comprobamos con 5 metros de distancia y funcionó perfectamente.
Obtenga más información sobre el par de RF en el circuito del transmisor y receptor de RF. Puede comprender más sobre el funcionamiento de RF al verificar los siguientes proyectos que usan par de RF:
- Robot controlado por RF
- Circuito convertidor de IR a RF
- LED de RF controlados a distancia con Raspberry Pi
- Electrodomésticos controlados por RF
Diagrama de circuito
Diagrama de circuito para el lado del transmisor de RF
- Pin D7 de atmega8 -> Pin13 HT12E
- Pin D6 de atmega8 -> Pin12 HT12E
- Pin D5 de atmega8 -> Pin11 HT12E
- Pin D4 de atmega8 -> Pin10 HT12E
- Pulsador al Pin B0 de Atmega.
- Resistencia de 1M ohmios entre los pines 15 y 16 de HT12E.
- Pin17 de HT12E al pin de datos del módulo transmisor de RF.
- Pin 18 de HT12E a 5V.
- GND pin 1-9 y Pin 14 de HT12E y Pin 8 de Atmega.
Diagrama de circuito para el lado del receptor de RF
- Pin D7 de atmega8 -> Pin13 HT12D
- Pin D6 de atmega8 -> Pin12 HT12D
- Pin D5 de atmega8 -> Pin11 HT12D
- Pin D4 de atmega8 -> Pin10 HT12d
- LED al Pin B0 de Atmega.
- Pin14 de HT12D al pin de datos del módulo receptor de RF.
- Resistencia de 47Kohm entre los pines 15 y 16 de HT12D.
- GND pin 1-9 de HT12D y pin 8 de Atmega.
- LED al pin 17 de HT12D.
- 5V al pin 7 de Atmega y pin 18 de HT12D.
Creando el proyecto para Atmega 8 usando CodeVision
Después de instalar estos softwares, siga los pasos a continuación para crear un proyecto y escribir código:
Paso 1. Abra CodeVision Haga clic en Archivo -> Nuevo -> Proyecto . Aparecerá el cuadro de diálogo de confirmación. Haga clic en Sí
Paso 2. Se abrirá CodeWizard. Haga clic en la primera opción, es decir, AT90 , y haga clic en Aceptar.
Paso 3. Elija su chip microcontrolador, aquí tomaremos Atmega8 como se muestra.
Paso 4: - Haga clic en Puertos. En la parte del transmisor, Pushbutton es nuestra entrada y salen 4 líneas de datos. Entonces, tenemos que inicializar 4 pines de Atmega como salida. Haga clic en el puerto D. Haga que los bits 7, 6, 5 y 4 salgan haciendo clic en él.
Paso 5: - Haga clic en Programa -> Generar, guardar y salir . Ahora, más de la mitad de nuestro trabajo está terminado
Paso 6: - Cree una nueva carpeta en el escritorio para que nuestros archivos permanezcan en la carpeta, de lo contrario, se dispersarán por toda la ventana del escritorio. Nombra tu carpeta como quieras y sugiero usar el mismo nombre para guardar archivos de programa.
Tendremos tres cuadros de diálogo uno tras otro para guardar archivos. Haga lo mismo con los otros dos cuadros de diálogo que aparecerán después de guardar el primero.
Ahora, su espacio de trabajo se ve así.
La mayor parte del trabajo se completa con la ayuda del Asistente. Ahora, tenemos que escribir solo unas pocas líneas de código para la parte del transmisor y el receptor y eso es todo…
Siga los mismos pasos para crear archivos para la parte del receptor. En la parte del receptor, solo Led es nuestra salida, así que convierta el bit del puerto B0 en out.
CÓDIGO y explicación
Escribiremos el código para alternar el LED de forma inalámbrica usando RF. El código completo para Atmega en el lado del transmisor y del receptor se proporciona al final de este artículo.
Código Atmega8 para transmisor de RF:
Primero, incluya el archivo de encabezado delay.h para usar delay en nuestro código.
#incluir
Ahora, vamos a las últimas líneas de código en el que se encuentra un tiempo de bucle. Nuestro código principal estará en este bucle.
En el bucle While , enviaremos 0x10 bytes a PORTD cuando se presione el botón y enviaremos 0x20 cuando no se presione el botón. Puede utilizar cualquier valor para enviar.
while (1) { if (PINB.0 == 1) { PORTD = 0x10; } si (PINB.0 == 0) { PORTD = 0x20; } } }
Código Atmega para receptor de RF
Primero declare las variables arriba de la función principal nula para almacenar caracteres entrantes del módulo RF.
#incluir
Ahora vamos a la mientras bucle. En este bucle, almacene los bytes entrantes en un byte de variable char y verifique si el byte entrante es el mismo que escribimos en nuestra parte del transmisor. Si los bytes son iguales, haga que PortB.0 sea alto y NO tome PORTB.0 para alternar el LED.
while (1) { byte = PIND; si (PIND.7 == 0 && PIND.6 == 0 && PIND.5 == 0 && PIND.4 == 1) { PORTB.0 = ~ PORTB.0; delay_ms (1000); }}}
Construye el Proyecto
Nuestro código está completo. Ahora tenemos que construir nuestro proyecto . Haga clic en Crear el icono del proyecto como se muestra.
Después de construir el proyecto, se genera un archivo HEX en la carpeta Debug-> Exe que se puede encontrar en la carpeta que ha creado previamente para guardar su proyecto. Usaremos este archivo HEX para cargar en Atmega8 usando el software Sinaprog.
Sube el código a Atmega8
Conecte sus circuitos de acuerdo con el diagrama dado para programar Atmega8. Conecte un lado del cable FRC al programador USBASP y el otro lado se conectará a los pines SPI del microcontrolador como se describe a continuación:
- Pin1 del conector hembra FRC -> Pin 17, MOSI de Atmega8
- Pin 2 conectado a Vcc de atmega8, es decir, Pin 7
- Pin 5 conectado a Reset de atmega8 es decir Pin 1
- Pin 7 conectado a SCK de atmega8 es decir Pin 19
- Pin 9 conectado a MISO de atmega8, es decir, Pin 18
- Pin 8 conectado a GND de atmega8, es decir, Pin 8
Conecte los componentes restantes en la placa de pruebas según el diagrama de circuito y abra el Sinaprog.
Cargaremos el archivo hexadecimal generado anteriormente usando Sinaprog, así que ábralo y elija Atmega8 en el menú desplegable Dispositivo. Seleccione el archivo HEX de la carpeta Debug-> Exe como se muestra.
Ahora, haga clic en Programa.
Ha terminado y su microcontrolador está programado. Siga los mismos pasos para programar otro Atmega en el lado del receptor.
El código completo y el video de demostración se proporcionan a continuación.