Turn on Light with Reyax RYLR896 LoRa Modules with Acknowled
n this tutorial, you will learn how to use the Reyax RYLR896 LoRa modules to wirelessly and reliably control lights. We will take advantage
Components and supplies
1
Arduino Uno Rev3
1
Arduino Nano
Apps and platforms
1
rogerbit.
Project description
Code
Source code Emisor
c
Source code Emisor
1#include <U8glib.h> 2// Inicializa el display SH1106 3U8GLIB_SH1106_128X64 u8g(U8G_I2C_OPT_NONE); 4// Define el pin del botón 5const int pinBoton = 12; 6bool botonPresionado = false; 7bool mensajeEnviado = false; 8// Variables para los mensajes a mostrar en el display 9String mensajeDisplay = "Presiona la tecla"; 10// Configuración inicial 11void setup() { 12 // Configura el pin del botón como entrada con resistencia pull-up interna 13 pinMode(pinBoton, INPUT_PULLUP); 14 // Inicializa la comunicación serial 15 Serial.begin(9600); 16 // Dibuja el mensaje inicial en el display 17 dibujar(); 18} 19// Función para dibujar en el display 20void dibujar() { 21 u8g.firstPage(); 22 do { 23 u8g.setFont(u8g_font_unifont); 24 u8g.drawStr(0, 22, mensajeDisplay.c_str()); 25 } while (u8g.nextPage()); 26} 27// Loop principal 28void loop() { 29 // Lee el estado del botón (inverso porque estamos usando pull-up) 30 if (digitalRead(pinBoton) == LOW) { 31 if (!botonPresionado) { 32 botonPresionado = true; 33 mensajeEnviado = true; 34 // Envía el mensaje por el puerto serial con retorno de carro y nueva línea 35 Serial.print("AT+SEND=0,5,HELLO\r\n"); 36 // Cambia el mensaje del display 37 mensajeDisplay = "Mensaje enviado!"; 38 // Dibuja en el display 39 dibujar(); 40 // Espera para evitar rebotes del botón 41 delay(200); 42 } 43 } else { 44 botonPresionado = false; 45 } 46 // Revisa si hay datos disponibles en el puerto serial 47 if (Serial.available() > 0) { 48 // Lee la entrada serial 49 String entrada = Serial.readStringUntil('\n'); 50 // Procesa el mensaje recibido utilizando indexOf para buscar las palabras clave 51 if (entrada.indexOf("luzon") != -1) { 52 mensajeDisplay = "Luz encendida"; 53 dibujar(); 54 } else if (entrada.indexOf("luzoff") != -1) { 55 mensajeDisplay = "Luz apagada"; 56 dibujar(); 57 } 58 } 59 // Si no se ha enviado ningún mensaje aún, mantiene el mensaje inicial 60 if (!mensajeEnviado) { 61 dibujar(); 62 } 63}
Source code receiver
c
Source code receiver
1const int pinLed = 12; // Pin digital al que está conectado el LED 2bool estadoLed = false; // Variable para rastrear el estado del LED 3void setup() { 4 // Configura el pin digital como salida 5 pinMode(pinLed, OUTPUT); 6 // Inicia la comunicación serial a 9600 baudios 7 Serial.begin(9600); 8} 9void loop() { 10 // Verifica si hay datos disponibles en el puerto serial 11 if (Serial.available() > 0) { 12 // Lee la cadena entrante 13 String entrada = Serial.readStringUntil('\n'); 14 // Busca la palabra "HELLO" en la cadena 15 int indiceHello = entrada.indexOf("HELLO"); 16 // Si "HELLO" está presente, cambia el estado del LED 17 if (indiceHello != -1) { 18 estadoLed = !estadoLed; // Cambia el estado del LED 19 digitalWrite(pinLed, estadoLed ? HIGH : LOW); // Enciende o apaga el LED según el nuevo estado 20 // Envía el mensaje por el puerto serie según el estado del LED 21 if (estadoLed) { 22 Serial.println("AT+SEND=0,5,luzon\r\n"); 23 } else { 24 Serial.println("AT+SEND=0,6,luzoff\r\n"); 25 } 26 } 27 } 28}
Comments
Only logged in users can leave comments