Taula de continguts:

Lora Gateway basat en MicroPython ESP32: 10 passos (amb imatges)
Lora Gateway basat en MicroPython ESP32: 10 passos (amb imatges)

Vídeo: Lora Gateway basat en MicroPython ESP32: 10 passos (amb imatges)

Vídeo: Lora Gateway basat en MicroPython ESP32: 10 passos (amb imatges)
Vídeo: БОРЬКА В РЕСТОРАНЕ | Сериал БРАТИКИ - 90 Серия 2024, De novembre
Anonim
Lora Gateway basat en MicroPython ESP32
Lora Gateway basat en MicroPython ESP32
Lora Gateway basat en MicroPython ESP32
Lora Gateway basat en MicroPython ESP32

Lora ha estat molt popular en els darrers anys. El mòdul de comunicació sense fils que utilitza aquesta tecnologia sol ser barat (amb espectre lliure), de mida petita, eficient en energia i amb una distància de comunicació llarga, i s’utilitza principalment per a la comunicació mútua entre terminals IoT o per a l’intercanvi de dades amb un amfitrió. Hi ha molts mòduls LoRa al mercat, com ara RFM96W, que està equipat amb xip SX1278 (compatible), que és molt petit. L’utilitzo amb MakePython ESP32 com a passarel·la.

A continuació, utilitzaré dos nodes LoRa per enviar les dades de temperatura i humitat a la passarel·la i després les penjaré a Internet a través de la passarel·la. Aquí aprendreu com penjar dades remotes de diversos nodes LoRa al núvol a través de la passarel·la.

Pas 1: subministraments

Subministraments
Subministraments

1 * MakePython ESP32

MakePython ESP32 és una placa ESP32 amb una pantalla OLED SSD1306 integrada.

2 * Ràdio Maduino LoRa

Maduino Lora Radio és una solució IoT (Internet de les coses) basada en el mòdul Atmel’s Atmega328P MCU i Lora. Pot ser un projecte real per a projectes IoT (especialment aplicacions de llarg abast i de baix consum)

2 * DHT11

1 * MakePython Lora

Pas 2: node LoRa

Node LoRa
Node LoRa
Node LoRa
Node LoRa

Aquest és l'esquema de Maduino Lora Radio.

El mòdul Arduino Lora Radio com a node LoRa l’utilitzem per enviar dades de temperatura i humitat a la passarel·la.

(Aquest WiKi presenta com utilitzar la ràdio Maduino Lora i enviar i rebre dades)

Pas 3: connexió del node i del sensor

Connexió del node i del sensor
Connexió del node i del sensor
Connexió del node i del sensor
Connexió del node i del sensor

El VCC i el GND de DHT11 estan connectats a 3V3 i GND de Maduino i el pin DATA està connectat a D4 de Maduino.

El node 0 és al parc, el node 1 és a l’edifici d’oficines a prop de l’empresa, es troben a uns 2 quilòmetres de distància i després tinc les dades de temperatura i humitat a casa.

Pas 4: envieu dades al Gateway

Descarregueu TransmitterDHT11.ino, obriu-lo a Arduino IDE.

Quan afegiu un node, modifiqueu el número de node en conseqüència. Per exemple, ara utilitzeu 2 nodes, el primer node per modificar el nodenum = 0 per executar el programa, el segon node per modificar el nodenum = 1 per executar el programa, etc., podeu afegir més node.

int16_t packetnum = 0; // comptador de paquets, augmentem per xmissió

int16_t nodenum = 0; // Modifiqueu el número del node

Recopileu dades i imprimiu-les

Missatge de cadena = "#" + (Cadena) nodè + "Humitat:" + (Cadena) humitat + "% Temperatura:" + Temperatura (Cadena) + "C" + "num:" + (Cadena) paquet; Serial.println (missatge); packetnum ++;

Envieu un missatge 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);

Obriu el monitor sèrie, podeu veure les dades de temperatura i humitat recollides i enviar-les.

# 0 Humitat: 6.00% Temperatura: 27.00C num: 0

Transmetre: S'està enviant a rf95_server S'està enviant … S'està esperant que es completi el paquet … S'està esperant la resposta … No hi ha resposta, hi ha un oient al voltant?

Deixa-ho de banda, ara hem de crear el Lora Gateway.

Pas 5: MakePython Lora

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

Aquest és el pin corresponent del mòdul RFM96W i MakePython ESP32. Per tal de facilitar la connexió amb MakePython ESP32, vaig crear una placa de circuit amb el mòdul RFM96W. Sí, hi ha dos RFM96W que poden enviar i rebre dades alhora, però ara només en necessito una.

Pas 6: passarel·la LoRaWAN

Passarel·la LoRaWAN
Passarel·la LoRaWAN

LoRaWAN és una xarxa d’àrea ampla de baixa potència basada en LoRa, que pot proporcionar-ne un: baix consum d’energia, escalabilitat, alta qualitat de servei i xarxa sense fils de llarga distància segura.

Reuneu MakePython Lora i ESP32 per crear una passarel·la que pugui rebre dades remotes i penjar-les a Internet.

Pas 7: baixeu el codi

Baixeu-vos tots els fitxers ‘xxx.py’ de WiKi i pengeu-los a ESP32.

Obriu el fitxer LoRaDuplexCallback.py, heu de fer alguns ajustaments perquè el vostre ESP32 es pugui connectar a la xarxa i pujar dades al servidor.

Modifiqueu l'API_KEY que heu obtingut a ThingSpeak (introduiré com obtenir-lo més endavant)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Modifiqueu SSID i PSW per connectar WiFi

ssid = "Makerfabs"

pswd = "20160704"

Pas 8: rebre dades

Cerqueu la funció on_receive (lora, payload) al fitxer LoRaDuplexCallback.py, on podeu dir a ESP32 què fer després de rebre les dades. El codi següent analitza i mostra les dades de temperatura i humitat rebudes.

def on_receive (lora, càrrega útil):

lora.blink_led () rssi = lora.packetRssi () try: length = len (càrrega útil) -1 myStr = str ((càrrega útil [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1 + 1):(length1 + 6)] myNum2 = myStr [(length1 + 20):(length1 + 25)] print ("*** Missatge rebut *** / n {}"). format (càrrega útil)) si config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (càrrega útil [4: longitud])), rssi) si wlan.isconnected (): msgCount global print ('Sending to network …') node = int (str (càrrega útil [5: 6], 'utf-8')) si node == 0: URL = "https://api.thingspeak.com/update?api_key=" + API_KEY + "& field1 = "+ myNum1 +" & field2 = "+ myNum2 res = urequests.get (URL) print (res.text) node elif == 1: URL =" https://api.thingspeak.com/update?api_key= "+ API_KEY +" & field3 = "+ myNum1 +" & field4 = "+ myNum2 res = urequests.get (URL) print (res.text) excepte Excepció com a e: print (e) print (" amb RSSI {} n ".format (rssi))

A jutjar el nombre per distingir els nodes i carregar les dades a Internet mitjançant l’URL, podem controlar les dades remotes de diferents nodes en qualsevol moment. Podeu afegir més nodes i fer canvis similars al codi.

si node == 0:

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

Pas 9: utilitzeu ThingSpeak IoT

Utilitzeu ThingSpeak IoT
Utilitzeu ThingSpeak IoT
Utilitzeu ThingSpeak IoT
Utilitzeu ThingSpeak IoT
Utilitzeu ThingSpeak IoT
Utilitzeu ThingSpeak IoT

Passos:

  1. Registreu un compte a https://thingspeak.com/. Si ja en teniu, inicieu la sessió directament.
  2. Feu clic a Canal nou per crear un canal de ThingSpeak nou.
  3. Introduïu el nom, Descripció, seleccioneu el camp 1. A continuació, deseu el canal a la part inferior.
  4. Feu clic a l’opció Claus API, copieu la clau API, l’utilitzarem al programa.

Pas 10: Resultat

Resultat
Resultat
Resultat
Resultat
Resultat
Resultat

Podeu veure les dades del node 0 i del node 1 a la pantalla, tot i que es troben a 2 quilòmetres de distància.

Inicieu sessió al vostre compte de ThingSpeak i feu clic al canal que heu creat, podreu veure les dades de temperatura i humitat carregades.

El gràfic field1 i el field2 són les dades d’humitat i temperatura del node Lora 0, i el gràfic field3 i el gràfic field4 són les dades d’humitat i temperatura del node Lora 1.

Recomanat: