Conexión RF95 a Raspberry Pi y configuración de red IoT
Resumen
¿Cómo conectarse a un RFM95 con una Raspberry Pi?
Al integrar un módulo RFM95 con tu Raspberry Pi, puedes expandir sus capacidades para trabajar con protocolos LoraWAN e interactuar con diversas plataformas de IoT. Sigue este proceso detallado para conectar y configurar tu dispositivo de manera exitosa.
¿Qué necesitas configurar antes de empezar?
Asegúrate de tener todo el equipo necesario previamente configurado. Esto incluye tener una Raspberry Pi conectada a tu red. Si ya cumpliste con este paso, el siguiente será acceder a tu Raspberry Pi mediante una conexión SSH. Puedes utilizar utilidades como PuTTY o Kitty para establecer esta conexión.
¿Cómo habilitar el puerto SPI?
Una vez dentro de la consola de tu Raspberry Pi, el primer paso crucial es habilitar el puerto SPI, al cual estará conectado el módulo RFM95. Para ello, primero limpia la consola y luego sigue estos pasos:
Ejecuta el comando para abrir el menú de configuración de Raspberry Pi:
sudo raspi-config
Navega a la opción 5 Interfacing Options y selecciona SPI para activarla.
Una vez activado, sal del menú seleccionando Finish.
¿Cómo reiniciar y configurar la Raspberry Pi?
Una vez habilitado el puerto SPI, es importante reiniciar la Raspberry Pi para que los cambios tengan efecto. Usa el siguiente comando para apagar y reiniciar:
sudoreboot
Cuando la Raspberry Pi se haya reiniciado, tendrás que iniciar sesión nuevamente.
¿Cómo instalar la librería necesaria?
Para interactuar con el RFM95, necesitas una librería específica. Instálala usando el siguiente comando:
sudoaptinstall wiringpi
¿Cómo clonar y compilar el repositorio?
A continuación, clona el repositorio necesario para configurar y operar tu módulo RFM95. Este repositorio ya tiene todo lo que necesitas:
Clona el repositorio usando Git:
git clone <URL-del-repositorio>
Cambia al directorio del repositorio clonado:
cd<nombre-del-repositorio>
Una vez dentro del directorio, compila el proyecto usando el siguiente comando:
make
¿Cómo ejecutar el binario compilado?
Cuando la compilación haya finalizado, ejecuta el binario resultante:
sudo ./<nombre-del-binario>
Usando este binario, podrás comenzar a interactuar y reportar a un servidor mediante el protocolo LoraWAN.
¿Por qué es útil la conexión con LoraWAN?
Con el módulo RFM95 configurado y funcionando, puedes conectar tus dispositivos IoT con protocolos LoraWAN a Internet. Esto habilita la transmisión de datos a través de largas distancias con baja potencia. Además, integrar tus nodos con diferentes plataformas te permitirá almacenar, analizar y actuar sobre la información recopilada de forma eficiente.
Sigue explorando y expandiendo tus conocimientos. La Internet de las Cosas no solo implica conectar dispositivos, sino también entender y optimizar el flujo de información para aplicaciones prácticas. Con cada paso, aumentas el potencial de tus proyectos y mejoras el ambiente inteligente en el que operas.
algo importante que no se explico si tu estas usando una raspberry zero.
en el archivo main.cpp tienes que configurar en un apartado dondo que dice "eth0" por "wlan0" si no haces este cambio, el gateway te dara un id que no podras registrar al cambiarlo por wlan0 tomara un gateway correcto y lo podras registrar en ttn
Me gustaría mucho un curso de MQTT para el IoT
si el ejemplo en el repositorio de GitHub es para un solo canal.
¿que se debe cambiar en ese ejemplo para hacerlo de mas canales?
Es la misma duda que tengo por favor si pudieran orientarnos con eso...
También en lo ejemplos vimos el envío de información desde los nodos hacia The Things Network para monitorear temperatura pero me gustaria información de como hacerlo en sentido contrario es decir desde el dashboard poder controlar aspectos de los nodos finales.
Quien no tenga un TGGo sino un devkit 32 o similar con un modulo RF95 o Hpd13a puede usar este codigo:
Mapear en el cto los cables MISO, MOSI, SCK, y todas las GND del radio deben conectarse.
<#include <CayenneLPP.h>#include<lmic.h>#include<hal/hal.h>#include <SPI.h>#include<DHT.h>#define DHTPIN22#define DHTYPEDHT11#define LED_BUILTIN2DHTdht(DHTPIN,DHTYPE);CayenneLPPlpp(51);uint32_t DEV_ADDR= 0x260XXXX;uint8_t NET_SESS_KEY[16]={0xFE, 0xXX, 0xXX,0x91,0xD2,0x60, 0xXX,0x63,0xCA,0xC0,0x67,0xAB,0xA7,0xFF,0xBD,0x52};uint8_t APP_SESS_KEY[16]={ 0xXX, 0xXX, 0xXX,0xA2,0x8D,0x43,0xBD,0x07,0x61,0xAE,0xCF,0x8D,0x76, 0xXX, 0xXX, 0xXX };voidos_getArtEui(u1_t* buf){}voidos_getDevEui(u1_t* buf){}voidos_getDevKey(u1_t* buf){}const unsigned TX_INTERVAL=10;unsigned long previousMillis =0;const lmic_pinmap lmic_pins ={.nss=5,.rxtx=LMIC_UNUSED_PIN,.rst=14,.dio={26,33,32}};voidonEvent(ev_t ev){switch(ev){caseEV_TXCOMPLETE:Serial.println("[LMIC] Radio Tx Complete");digitalWrite(LED_BUILTIN,LOW);break;default:Serial.println("Evento Desconocido");break;}}voidenviar_datos(uint8_t *mydata, uint16_t len){if(LMIC.opmode&OP_TXRXPEND){Serial.println("[LMIC] OP_TXRXPEND, not sending");}else{LMIC_setTxData2(1,mydata,len,0);}}voidgetInfoAndSend(){digitalWrite(LED_BUILTIN,HIGH);// Leer sensores y transmitir float temp = dht.readTemperature(); lpp.addTemperature(1,temp);enviar_datos(lpp.getBuffer(),lpp.getSize());}voidsetup(){Serial.begin(115200);pinMode(LED_BUILTIN,OUTPUT);digitalWrite(LED_BUILTIN,HIGH);Serial.print("Led ON");Serial.println();delay(1000);digitalWrite(LED_BUILTIN,LOW);Serial.print("Led OFF");Serial.println();Serial.println("[INFO] Iniciando"); dht.begin();os_init();LMIC_reset();LMIC_setSession(0x1,DEV_ADDR,NET_SESS_KEY,APP_SESS_KEY);// put your setup code here, to run once:for(int chan=0; chan<72;++chan){LMIC_disableChannel(chan);}// Escojemos 904.3 Mhz, 915 Mhz en la banda de 902 - 928 MhzLMIC_enableChannel(10);LMIC_setLinkCheckMode(0);LMIC_setDrTxpow(DR_SF7,20); previousMillis =millis();}voidloop(){// put your main code here, to run repeatedly:if(millis()> previousMillis +(TX_INTERVAL*1000)){getInfoAndSend(); previousMillis=millis();}os_runloop_once();}>
hubiera sido interesante que explicaras al menos lo básico del código, solo te limitaste a clonar el repositorio, no explicas como cambiar la frecuencia de transmisión, ni el SF, ni el coding rate, ni el preamble, mejor dicho no explicaste nada relacionado a la configuracion del modulo LoRa y ps se supone que de eso trata esta etapa del curso.
yo conozco bastante de la tecnología LoRa y llevo mas de un año usando el sx1278, incluso cree mi propia librería y protocolo de red basado en datagramas y entro a este curso para aprender mas a profundidad sobre todo de LoRaWan por que quiero migrar a algo mas robusto y me encuentro con esta explicación tan vaga muy duro...
En el caso del SX1278 no me quiere conectar me arroja el error:
Unrecognized transceiver.
me pasa igual tengo un rf95 de 915 mhz y una raspbery pi 4 de 1 gb me sale igual
pi@raspberrypi: Unrecognized transceiver.
Compañeros! Les dejo un post que me ayudó, al parecer para la Raspi4 la versión de wiring es otra. Yo use el siguiente comando en la terminal y me salió ese error:
pi@raspberrypi:~$ gpio readall
Oops- unable to determine board type... model:17
Luego debí ejecutar los siguientes comandos:
cd /tmp
wget https://project-downloads.drogon.net/wiringpi-latest.debsudo dpkg -i wiringpi-latest.deb
y usamos para comprobar
gpio -v
Espero les sirva
Saludos!
Hola comunidad, ¿El chip RFM95W utilizado es el de 915 MHz?