Autor Tema: APORTE - Arduino con RF433MHz y Librería RadioHead  (Leído 261 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado humberto 02

  • PIC16
  • ***
  • Mensajes: 123
APORTE - Arduino con RF433MHz y Librería RadioHead
« en: 10 de Junio de 2021, 16:40:13 »
Buenas Tardes

Introducción:
Necesitaba enviar una señal inalámbrica y pensé en hacer dos interfaces para que me queden en futuras pruebas.

Además creí oportuno cambiar la librería Virtualwire.h por la RadioHead.h.

Todos los ejercicios (propuestos en la Web) tienen un pequeño error en el cual muchas personas expresaron que habían fracasado sus intentos con la librería de RadioHead.h .

Esto fue lo que me hizo intentar hacer el cambio de una librería por otra. Finalmente encontré el problema (y como siempre) quise dejar documentada la solución.

El problema radicaba en dos puntos.
1-   Declarar en el Sketch previamente las variables: uint8_t delaycounts; y char message;
2-   Remplazar la línea RH_ASK driver;   por RH_ASK driver(2000, 11, 12);   // 200bps, TX, RX

Conclusión:
Al compilar los Sketch’s existentes en la nube notaremos varios errores de compilación; pero si hacemos estos remplazos notaremos que la compilación será Exitosa; logrando Transmitir y Recibir sin ningún problema.

Link en los cuales obtener el material necesario para poder trabajar con la Librería RadioHead.

Apunte práctico de la librería:
https://www.gme.cz/data/attachments/dsh.772-146.1.pdf

Explicación detallada de la Librería:
https://www.airspayce.com/mikem/arduino/RadioHead/

Librería para Descargar:
https://electronoobs.com/eng_arduino_RadioHead.php

Resumen de los Sketch

EMISOR / TRANSMISOR
Código: [Seleccionar]
#include <RH_ASK.h>
#include <SPI.h> // No se usa pero es necesario compilarlo

uint8_t delaycounts;
char message;

//RH_ASK driver;
RH_ASK driver(200, 11, 12); // 200bps, TX en D3 (pin 2), RX en D4 (pin 3)

void setup() {
     Serial.begin(9600);

     pinMode(12,OUTPUT);
     pinMode(11,INPUT);

     pinMode(3,OUTPUT); digitalWrite(3,HIGH); // Activo nPn

     
     if (!driver.init())
     Serial.println("(init) Fallo la INICIALIZACION");
}

void loop() {
     const char *msg = "Hola Tito!";
     driver.send((uint8_t *)msg, strlen(msg));
     driver.waitPacketSent();
     Serial.println(msg);
     delay(2500);
}

RECEPTOR
Código: [Seleccionar]
#include <RH_ASK.h>
#include <SPI.h> // No se usa pero es necesario compilar

uint8_t delaycounts;
char message;
int k=0; // Contador de mensajes recibidos

//RH_ASK driver;
RH_ASK driver(200, 11, 12); // 200bps, TX en D3 (pin 2), RX en D4 (pin 3)

void setup(){
     Serial.begin(9600); // Solo depuracion
     pinMode(12,OUTPUT);
     pinMode(11,INPUT);
     if (!driver.init())
     Serial.println("(init) Fallo la INICIALIZACION");
     Serial.println("Comienzo Recepcion");
}

void loop() {
     uint8_t buf[12];
     uint8_t buflen = sizeof(buf);
     if (driver.recv(buf, &buflen)) {
         // Se recibe un mensaje con una buena suma de comprobacion, volcarlo.
         Serial.print("Mensaje: ");
         Serial.print((char*)buf);
         Serial.println(k++);
     }
}

Les deseo lo mejor y un cordial saludo desde Gualeguaychú.


 

anything