Tabla de contenido:

Lora Gateway basado en MicroPython ESP32: 10 pasos (con imágenes)
Lora Gateway basado en MicroPython ESP32: 10 pasos (con imágenes)

Video: Lora Gateway basado en MicroPython ESP32: 10 pasos (con imágenes)

Video: Lora Gateway basado en MicroPython ESP32: 10 pasos (con imágenes)
Video: Nodo LoRa con RFM95W y ESP32 | Añade comunicaciones de largo alcance a tus proyectos. 2024, Mes de julio
Anonim
Lora Gateway basado en MicroPython ESP32
Lora Gateway basado en MicroPython ESP32
Lora Gateway basado en MicroPython ESP32
Lora Gateway basado en MicroPython ESP32

Lora ha sido muy popular en los últimos años. El módulo de comunicación inalámbrica que utiliza esta tecnología suele ser económico (utiliza espectro libre), de tamaño pequeño, energéticamente eficiente y tiene una larga distancia de comunicación, y se utiliza principalmente para la comunicación mutua entre terminales de IoT o el intercambio de datos con un host. Hay muchos módulos LoRa en el mercado, como el RFM96W, que está equipado con el chip SX1278 (compatible), que es muy pequeño. Lo uso con MakePython ESP32 como puerta de enlace.

A continuación, usaré dos nodos LoRa para enviar los datos de temperatura y humedad a la puerta de enlace y luego los subiré a Internet a través de la puerta de enlace. Aquí aprenderá cómo cargar datos remotos de múltiples nodos LoRa a la nube a través de la puerta de enlace.

Paso 1: Suministros

Suministros
Suministros

1 * MakePython ESP32

MakePython ESP32 es una placa ESP32 con una pantalla OLED SSD1306 integrada.

2 * Radio Maduino LoRa

Maduino Lora Radio es una solución de IoT (Internet de las cosas) basada en el módulo Atmega328P MCU y Lora de Atmel. Puede ser un proyecto real para proyectos de IoT (especialmente aplicaciones de bajo consumo y largo alcance)

2 * DHT11

1 * MakePython Lora

Paso 2: Nodo LoRa

Nodo LoRa
Nodo LoRa
Nodo LoRa
Nodo LoRa

Este es el esquema de Maduino Lora Radio.

Módulo Arduino Lora Radio como nodo LoRa, lo usamos para enviar datos de temperatura y humedad a la puerta de enlace.

(Este WiKi presenta cómo usar Maduino Lora Radio y enviar y recibir datos)

Paso 3: Conexión de nodo y sensor

Conexión de nodo y sensor
Conexión de nodo y sensor
Conexión de nodo y sensor
Conexión de nodo y sensor

El VCC y GND de DHT11 están conectados a 3V3 y GND de Maduino, y el pin DATA está conectado a D4 de Maduino.

El nodo 0 está en el parque, el nodo 1 está en el edificio de oficinas cerca de la empresa, están a unos 2 kilómetros de distancia y luego obtengo sus datos de temperatura y humedad en casa.

Paso 4: enviar datos a la puerta de enlace

Descargue TransmitterDHT11.ino, ábralo en Arduino IDE.

Al agregar un nodo, modifique el número de nodo en consecuencia. Por ejemplo, ahora use 2 nodos, el primer nodo para modificar nodenum = 0 para ejecutar el programa, el segundo nodo para modificar nodenum = 1 para ejecutar el programa, y así sucesivamente, puede agregar más nodos.

int16_t packetnum = 0; // contador de paquetes, lo incrementamos por emisión

int16_t nodenum = 0; // Modifica el número de nodo

Recopile datos e imprímalos

Mensaje de cadena = "#" + (Cadena) nodenum + "Humedad:" + (Cadena) humedad + "% Temperatura:" + (Cadena) temperatura + "C" + "num:" + (Cadena) packetnum; Serial.println (mensaje); packetnum ++;

Envíe un mensaje a rf95_server

uint8_t radioPacket [message.length () + 1];

message.toCharArray (radioPacket, message.length () + 1); radioPacket [message.length () + 1] = '\ 0'; rf95.send ((uint8_t *) radioPacket, message.length () + 1);

Abra el monitor en serie, puede ver los datos recopilados de temperatura y humedad y enviarlos.

# 0 Humedad: 6,00% Temperatura: 27,00C num: 0

Transmitir: Enviando a rf95_server Enviando… Esperando que se complete el paquete… Esperando respuesta… No hay respuesta, ¿hay alguien que escucha?

Déjalo a un lado, ahora tenemos que hacer el Lora Gateway.

Paso 5: MakePython Lora

MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora
MakePython Lora

Este es el pin correspondiente del módulo RFM96W y MakePython ESP32. Para facilitar la conexión con MakePython ESP32, hice una placa de circuito con el módulo RFM96W. Sí, hay dos RFM96W en él, que pueden enviar y recibir datos al mismo tiempo, pero ahora solo necesito uno.

Paso 6: puerta de enlace LoRaWAN

Puerta de enlace LoRaWAN
Puerta de enlace LoRaWAN

LoRaWAN es una red de área amplia de baja potencia basada en LoRa, que puede proporcionar uno: bajo consumo de energía, escalabilidad, alta calidad de servicio y red inalámbrica segura de larga distancia.

Reúna MakePython Lora y ESP32 para crear una puerta de enlace que pueda recibir datos remotos y cargarlos en Internet.

Paso 7: Código de descarga

Descarga todos los archivos "xxx.py" de WiKi y súbelos a ESP32.

Abra el archivo LoRaDuplexCallback.py. Necesita hacer algunos ajustes para que su ESP32 pueda conectarse a la red y cargar datos al servidor.

Modifique la API_KEY que obtuvo en ThingSpeak (presentaré cómo obtenerla más adelante)

#https://thingspeak.com/channels/1047479

API_KEY = 'UBHIRHVV9THUJVUI'

Modifique SSID y PSW para conectar WiFi

ssid = "Makerfabs"

pswd = "20160704"

Paso 8: recibir datos

Busque la función on_receive (lora, payload) en el archivo LoRaDuplexCallback.py, donde puede decirle a ESP32 qué hacer después de recibir los datos. El siguiente código analiza y muestra los datos de temperatura y humedad recibidos.

def on_receive (lora, carga útil):

lora.blink_led () rssi = lora.packetRssi () try: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1 + 1):(length1 + 6)] myNum2 = myStr [(length1 + 20):(length1 + 25)] print ("*** Mensaje recibido *** / n {}". format (payload)) if config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (payload [4: length])), rssi) if wlan.isconnected (): global msgCount print ('Enviando a la red…') node = int (str (payload [5: 6], 'utf-8')) if node == 0: URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 = "+ myNum1 +" & field2 = "+ myNum2 res = urequests.get (URL) print (res.text) elif node == 1: URL =" https://api.thingspeak.com/update?api_key= "+ API_KEY +" & field3 = "+ myNum1 +" & field4 = "+ myNum2 res = urequests.get (URL) print (res.text) excepto Excepción como e: print (e) print (" con RSSI {} n ".format (rssi))

Juzgando el número para distinguir los nodos, y cargando los datos a Internet a través de la URL, podemos monitorear los datos remotos de diferentes nodos en cualquier momento. Puede agregar más nodos y realizar cambios similares en el código.

si nodo == 0:

URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 =" + myNum1 + "& field2 =" + myNum2 res = urequests.get (URL) print (res.text)

Paso 9: Utilice ThingSpeak IoT

Utilice ThingSpeak IoT
Utilice ThingSpeak IoT
Utilice ThingSpeak IoT
Utilice ThingSpeak IoT
Utilice ThingSpeak IoT
Utilice ThingSpeak IoT

Pasos:

  1. Registre una cuenta en https://thingspeak.com/. Si ya tiene uno, inicie sesión directamente.
  2. Haga clic en Nuevo canal para crear un nuevo canal ThingSpeak.
  3. Ingrese el nombre, la descripción, el campo de selección 1. Luego, guarde el canal en la parte inferior.
  4. Haga clic en la opción API Keys, copie la API Key, la usaremos en el programa.

Paso 10: Resultado

Resultado
Resultado
Resultado
Resultado
Resultado
Resultado

Puedes ver los datos del nodo 0 y del nodo 1 en la pantalla, aunque están separados por 2 kilómetros.

Inicie sesión en su cuenta de ThingSpeak y haga clic en el canal que creó, puede ver los datos de temperatura y humedad cargados.

El gráfico field1 y los gráficos field2 son los datos de humedad y temperatura del nodo Lora 0, y el gráfico field3 y el gráfico field4 son los datos de humedad y temperatura del nodo Lora 1.

Recomendado: