En este tutorial, aprenderás a utilizar los módulos LoRa Reyax RYLR896 para controlar luces de manera inalámbrica y confiable. Aprovecharemos la capacidad de estos módulos para enviar y recibir datos a largas distancias, así como su funcionalidad de acuse de recibo, para garantizar que las señales de encendido y apagado de la luz sean recibidas correctamente.
Tal vez pueda interesarte proyectos en arduino, pic, robótica, telecomunicaciones, suscribete en http://www.youtube.com/user/carlosvolt?sub_confirmation=1 mucho videos con código fuentes completos y diagramas
Contenido del Tutorial:
- Introducción a los Módulos LoRa RYLR896:
- Características y especificaciones técnicas.
- Configuración inicial y conexión.
- Materiales Necesarios:
- Módulos LoRa Reyax RYLR896 (dos unidades).
- Luces LED.
- Microcontroladores (Arduino uno y nano).
- Componentes adicionales (resistencias, cables, fuente de alimentación).
- Configuración del Hardware:
- Conexión de los módulos LoRa al microcontrolador.
- Montaje del circuito de control de las luces.
- Programación del Microcontrolador:
- Configuración del módulo LoRa para transmisión y recepción.
- Código para enviar la señal de encendido/apagado.
- Implementación del acuse de recibo para asegurar la recepción de la señal.
- Pruebas y Solución de Problemas:
- Verificación de la comunicación entre los módulos.
- Solución de problemas comunes y ajustes de configuración.
- Aplicaciones Prácticas:
- Ejemplos de uso en el hogar y proyectos de automatización.
- Expansión del proyecto para controlar múltiples luces o dispositivos.
Objetivos del Tutorial:
- Comprender el funcionamiento básico de los módulos LoRa Reyax RYLR896.
- Aprender a configurar y utilizar los módulos para la comunicación inalámbrica.
- Implementar un sistema de control de luces con confirmación de recepción de las señales.
- Desarrollar habilidades para integrar LoRa en proyectos de IoT y automatización.
Este tutorial es ideal para entusiastas de la electrónica y la automatización que desean explorar el potencial de la comunicación LoRa para aplicaciones prácticas y de largo alcance. Al finalizar, tendrás un sistema funcional que te permitirá controlar luces de manera inalámbrica y confiable.
Módulo transceptor de antena LoRa® de 868/915 MHz
- ◆ Certificación: NCC, FCC
- ◆ Rango de frecuencia: 868/915 MHz
- ◆ Motor Semtech SX1276
- ◆ Amplificador de potencia de alta eficiencia
- ◆ Excelente inmunidad al bloqueo.
- ◆ Baja corriente de recepción
- ◆ Alta sensibilidad
- ◆ Control fácil mediante comandos AT
- ◆ Rango dinámico RSSI de 127 dB
- ◆ Diseñado con antena integrada
- ◆ Cifrado de datos AES128
- ◆ Temperatura de funcionamiento: -40℃ a +85℃
- ◆ Dimensiones: 42,5 x 18,36 x 5,5 mm
- ◆ Peso: 7 g
Descripción
El módulo transceptor RYLR896 cuenta con el módem de largo alcance LoRa® que proporciona comunicación de espectro ensanchado de alcance ultralargo y alta inmunidad a interferencias, al tiempo que minimiza el consumo de corriente. El módulo está certificado por NCC y FCC.
Especificación
Artículo | Mín. | Típico | Máx. | Unidad | Condición |
---|---|---|---|---|---|
Fuente de alimentación VDD | 2 | 3.3 | 3.6 | EN | VDD |
Rango de potencia de salida de RF | -4 | 15 | dBm | ||
Pérdida de inserción del filtro | 1 | 2 | 3 | dB | |
Sensibilidad RF | -148 | dBm | |||
Nivel de entrada de RF | 10 | dBm | |||
Rango de frecuencia | 862 | 868/915 | 1020 | megahercio | |
Precisión de frecuencia | ±2 | ppm | |||
Alcance de la comunicación | 4.5 | 15 | km. | Depende del parámetro RF | |
Corriente de transmisión | 43 | mamá | RFOP = +15 dBm | ||
Recibir corriente | 16.5 | mamá | AT+MODO=0 | ||
Corriente de sueño | 0,5 | ua | AT+MODO=1 | ||
Tasa de baudios | 300 | 115200 | 115200 | puntos básicos | 8, N, 1 |
Nivel de entrada digital alto | 0,7*VDD | VDD | EN | VIH | |
Nivel de entrada digital bajo | 0 | 0,3*VDD | EN | VOLUNTAD | |
Nivel de salida digital alto | 0.9 | VDD | EN | VOH | |
Nivel de salida digital bajo | 0,1 | EN | VOL | ||
Ciclismo (borrar/escribir)Memoria de datos EEPROM | 300 | K | Ciclos | ||
Peso | 3.07 | gramo | |||
Temperatura de funcionamiento | -40 | 25 | +85 | C |
Componentes electrónicos del proyecto
Arduino Nano
El Arduino Nano es una placa pequeña, completa y compatible con la placa de pruebas basada en el ATmega328 (Arduino Nano 3.x). Tiene más o menos la misma funcionalidad del Arduino Duemilanove, pero en un paquete diferente. Solo carece de un conector de alimentación de CC y funciona con un cable USB Mini-B en lugar de uno estándar.
Microcontrolador | ATmega328 |
Arquitectura | AVR |
Tensión de funcionamiento | 5 V |
Memoria flash | 32 KB de los cuales 2 KB utiliza el gestor de arranque |
SRAM | 2 KB |
Velocidad de reloj | 16 MHz |
Pines analógicos IN | 8 |
EEPROM | 1 KB |
Corriente CC por pines de E / S | 40 mA (pines de E / S) |
Voltaje de entrada | 7-12 V |
Pines de E / S digitales | 22 (6 de los cuales son PWM) |
Salida PWM | 6 |
El consumo de energía | 19 mA |
Tamaño de PCB | 18 x 45 mm |
Peso | 7 g |
Diagrama de pines
Un Zócalo para arduino
Un diodo led de 5 mm
Pines hembra
Cables dupont hembra macho
Display oled sh1106
Se trata de un módulo de pantalla OLED monocromática DE 128×64 puntos con interface I2C .Que presenta varias ventajas en comparación con pantallas LCD, y podemos destacar su alto brillo, un muy buen contraste, un ángulo de visión más amplio, y bajo consumo de energía. ES compatible con Arduino Rasberry Pi y microcontroladores PIC entre otros. Trabaja con niveles lógicos de 3.3V a 5V tiene un angulo de visión mayor a los 160 grados. el Tamaño de la pantalla es de 1,3 pulgadas. Se alimenta con un voltaje de 3.3V a 5V Se lo puede usar en aplicaciones como relojes inteligentes, MP3, termómetros, instrumentos, y proyectos varios, etc.
Características
- Interface: I2C(3.3V / 5V logic level)
- Resolution: 128 x 64
- Angle of view: >160 degree
- Display color: Blue
- Display size: 1.3 inch
- Driver IC: SH1106
- Power supply: DC 3.3V~5V
- Operating temperature: -20~70’C
- Application: smart watch, MP3, thermometer, instruments, DIY projects, etc.
Un módulo pulsadaor KY-004
PCB
Diagrama electrónico del pcb
Circuito con arduino nano
Circuito con arduino Uno
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
#include <U8glib.h> // Inicializa el display SH1106 U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); // Define el pin del botón const int pinBoton = 12; bool botonPresionado = false; bool mensajeEnviado = false; // Variables para los mensajes a mostrar en el display String mensajeDisplay = "Presiona la tecla"; // Configuración inicial void setup() { // Configura el pin del botón como entrada con resistencia pull-up interna pinMode(pinBoton, INPUT_PULLUP); // Inicializa la comunicación serial Serial.begin(9600); // Dibuja el mensaje inicial en el display dibujar(); } // Función para dibujar en el display void dibujar() { u8g.firstPage(); do { u8g.setFont(u8g_font_unifont); u8g.drawStr(0, 22, mensajeDisplay.c_str()); } while (u8g.nextPage()); } // Loop principal void loop() { // Lee el estado del botón (inverso porque estamos usando pull-up) if (digitalRead(pinBoton) == LOW) { if (!botonPresionado) { botonPresionado = true; mensajeEnviado = true; // Envía el mensaje por el puerto serial con retorno de carro y nueva línea Serial.print("AT+SEND=0,5,HELLO\r\n"); // Cambia el mensaje del display mensajeDisplay = "Mensaje enviado!"; // Dibuja en el display dibujar(); // Espera para evitar rebotes del botón delay(200); } } else { botonPresionado = false; } // Revisa si hay datos disponibles en el puerto serial if (Serial.available() > 0) { // Lee la entrada serial String entrada = Serial.readStringUntil('\n'); // Procesa el mensaje recibido utilizando indexOf para buscar las palabras clave if (entrada.indexOf("luzon") != -1) { mensajeDisplay = "Luz encendida"; dibujar(); } else if (entrada.indexOf("luzoff") != -1) { mensajeDisplay = "Luz apagada"; dibujar(); } } // Si no se ha enviado ningún mensaje aún, mantiene el mensaje inicial if (!mensajeEnviado) { dibujar(); } } |
Código Fuente Receptor
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
const int pinLed = 12; // Pin digital al que está conectado el LED bool estadoLed = false; // Variable para rastrear el estado del LED void setup() { // Configura el pin digital como salida pinMode(pinLed, OUTPUT); // Inicia la comunicación serial a 9600 baudios Serial.begin(9600); } void loop() { // Verifica si hay datos disponibles en el puerto serial if (Serial.available() > 0) { // Lee la cadena entrante String entrada = Serial.readStringUntil('\n'); // Busca la palabra "HELLO" en la cadena int indiceHello = entrada.indexOf("HELLO"); // Si "HELLO" está presente, cambia el estado del LED if (indiceHello != -1) { estadoLed = !estadoLed; // Cambia el estado del LED digitalWrite(pinLed, estadoLed ? HIGH : LOW); // Enciende o apaga el LED según el nuevo estado // Envía el mensaje por el puerto serie según el estado del LED if (estadoLed) { Serial.println("AT+SEND=0,5,luzon\r\n"); } else { Serial.println("AT+SEND=0,6,luzoff\r\n"); } } } } |
No te pierdas ningún video más suscríbete a nuestro canal de telegram https://t.me/carlosvolt_electronica_robotica
PROYECTO RECOMENDADO