Inhaltsverzeichnis:

Lora Gateway basierend auf MicroPython ESP32 - Gunook
Lora Gateway basierend auf MicroPython ESP32 - Gunook

Video: Lora Gateway basierend auf MicroPython ESP32 - Gunook

Video: Lora Gateway basierend auf MicroPython ESP32 - Gunook
Video: LoRa ESP32 OLED Setup and First Test Wemos TTGO IoT Project From Banggood 2024, Juli
Anonim
Lora Gateway basierend auf MicroPython ESP32
Lora Gateway basierend auf MicroPython ESP32
Lora Gateway basierend auf MicroPython ESP32
Lora Gateway basierend auf MicroPython ESP32

Lora war in den letzten Jahren sehr beliebt. Das drahtlose Kommunikationsmodul, das diese Technologie verwendet, ist in der Regel billig (mit freiem Spektrum), klein, energieeffizient und hat eine große Kommunikationsentfernung und wird hauptsächlich für die gegenseitige Kommunikation zwischen IoT-Terminals oder den Datenaustausch mit einem Host verwendet. Es gibt viele LoRa-Module auf dem Markt, wie zum Beispiel RFM96W, das mit einem SX1278 (kompatiblen) Chip ausgestattet ist, der sehr klein ist. Ich verwende es mit MakePython ESP32 als Gateway.

Als nächstes werde ich zwei LoRa-Knoten verwenden, um die Temperatur- und Feuchtigkeitsdaten an das Gateway zu senden und sie dann über das Gateway in das Internet hochzuladen. Hier erfahren Sie, wie Sie Remote-Daten mehrerer LoRa-Knoten über das Gateway in die Cloud hochladen.

Schritt 1: Zubehör

Lieferungen
Lieferungen

1*MakePython ESP32

MakePython ESP32 ist ein ESP32-Board mit integriertem SSD1306-OLED-Display.

2 * Maduino LoRa-Radio

Maduino Lora Radio ist eine IoT-Lösung (Internet of Things), die auf der Atmega328P-MCU und dem Lora-Modul von Atmel basiert. Es kann ein echtes Projekt für IoT-Projekte sein (insbesondere Langstreckenanwendungen mit geringem Stromverbrauch)

2 * DHT11

1*MakePython Lora

Schritt 2: LoRa-Knoten

LoRa-Knoten
LoRa-Knoten
LoRa-Knoten
LoRa-Knoten

Dies ist der Schaltplan von Maduino Lora Radio.

Arduino Lora Radio-Modul als LoRa-Knoten verwenden wir es, um Temperatur- und Feuchtigkeitsdaten an das Gateway zu senden.

(Dieses WiKi stellt vor, wie man Maduino Lora Radio benutzt und Daten sendet und empfängt)

Schritt 3: Knoten- und Sensorverbindung

Knoten- und Sensorverbindung
Knoten- und Sensorverbindung
Knoten- und Sensorverbindung
Knoten- und Sensorverbindung

Der VCC und GND von DHT11 sind mit 3V3 und GND von Maduino verbunden, und der DATA-Pin ist mit D4 von Maduino verbunden.

Node 0 ist im Park, Node 1 ist im Bürogebäude in der Nähe der Firma, sie sind etwa 2 Kilometer voneinander entfernt, und dann bekomme ich ihre Temperatur- und Feuchtigkeitsdaten zu Hause

Schritt 4: Daten an das Gateway senden

Laden Sie TransmitterDHT11.ino herunter und öffnen Sie es in der Arduino IDE.

Ändern Sie beim Hinzufügen eines Knotens die Knotennummer entsprechend. Verwenden Sie nun beispielsweise 2 Knoten, den ersten Knoten zum Ändern von Knoten = 0 zum Ausführen des Programms, den zweiten Knoten zum Ändern von Knoten = 1 zum Ausführen des Programms usw. Sie können weitere Knoten hinzufügen.

int16_t Paketnum = 0; // Paketzähler, wir inkrementieren pro xmission

int16_t Knoten = 0; //Ändere die Knotennummer

Daten sammeln und ausdrucken

String message ="#"+(String)nodenum+" Humidity:"+(String)humidity+"% Temperature:"+(String)temperature+"C"+" num:"+(String)packetnum;Serial.println(message); Paketnum++;

Senden Sie eine Nachricht an 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);

Öffnen Sie den seriellen Monitor, Sie können die gesammelten Temperatur- und Feuchtigkeitsdaten sehen und versenden.

#0 Feuchtigkeit:6.00% Temperatur:27.00C Num:0

Senden: Senden an rf95_server Senden… Warten auf Paketabschluss… Warten auf Antwort… Keine Antwort, ist ein Listener in der Nähe?

Legen Sie es beiseite, jetzt müssen wir das Lora-Gateway bauen.

Schritt 5: MakePython Lora

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

Dies ist der entsprechende Pin des RFM96W-Moduls und MakePython ESP32. Um die Verbindung mit MakePython ESP32 zu erleichtern, habe ich eine Platine mit dem RFM96W-Modul erstellt. Ja, es sind zwei RFM96W drauf, die gleichzeitig Daten senden und empfangen können, aber jetzt brauche ich nur noch einen.

Schritt 6: LoRaWAN-Gateway

LoRaWAN-Gateway
LoRaWAN-Gateway

LoRaWAN ist ein Low-Power-Wide-Area-Netzwerk auf Basis von LoRa, das Folgendes bieten kann: geringer Stromverbrauch, Skalierbarkeit, hohe Servicequalität und sicheres drahtloses Langstreckennetzwerk.

Stellen Sie MakePython Lora und ESP32 zusammen, um ein Gateway zu erstellen, das Remote-Daten empfangen und in das Internet hochladen kann.

Schritt 7: Code herunterladen

Laden Sie alle 'xxx.py'-Dateien von WiKi herunter und laden Sie sie auf ESP32 hoch.

Öffnen Sie die Datei LoRaDuplexCallback.py. Sie müssen einige Anpassungen vornehmen, damit sich Ihr ESP32 mit dem Netzwerk verbinden und Daten auf den Server hochladen kann.

Ändern Sie den API_KEY, den Sie in ThingSpeak erhalten haben (ich werde später vorstellen, wie Sie ihn erhalten)

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

API_KEY='UBHIRHVV9THUJVUI'

Ändern Sie SSID und PSW, um WLAN zu verbinden

ssid = "Makerfabs"

pswd = "20160704"

Schritt 8: Daten empfangen

Suchen Sie die Funktion on_receive (lora, payload) in der Datei LoRaDuplexCallback.py, in der Sie ESP32 mitteilen können, was nach dem Empfang der Daten zu tun ist. Der folgende Code analysiert und zeigt die empfangenen Temperatur- und Feuchtigkeitsdaten an.

def on_receive(lora, Nutzlast):

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("*** Empfangene Nachricht ***\n{}". format(payload)) if config_lora. IS_LORA_OLED: lora.show_packet(("{}".format(payload[4:length])), rssi) if wlan.isconnected(): global msgCount print('An Netzwerk senden…') 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) außer Ausnahme als e: print(e) print("with RSSI {}\n".format(rssi))

Durch die Beurteilung der Anzahl zur Unterscheidung der Knoten und das Hochladen der Daten in das Internet über die URL können wir die Remote-Daten verschiedener Knoten jederzeit überwachen. Sie können weitere Knoten hinzufügen und ähnliche Änderungen am Code vornehmen.

wenn Knoten == 0:

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

Schritt 9: Verwenden Sie ThingSpeak IoT

Verwenden Sie ThingSpeak IoT
Verwenden Sie ThingSpeak IoT
Verwenden Sie ThingSpeak IoT
Verwenden Sie ThingSpeak IoT
Verwenden Sie ThingSpeak IoT
Verwenden Sie ThingSpeak IoT

Schritte:

  1. Registrieren Sie ein Konto bei https://thingspeak.com/. Wenn Sie bereits eine haben, melden Sie sich direkt an.
  2. Klicken Sie auf Neuer Kanal, um einen neuen ThingSpeak-Kanal zu erstellen.
  3. Name, Beschreibung, Feld auswählen eingeben 1. Anschließend den Kanal unten speichern.
  4. Klicken Sie auf die Option API-Schlüssel, kopieren Sie den API-Schlüssel, wir werden ihn im Programm verwenden.

Schritt 10: Ergebnis

Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis
Ergebnis

Sie können die Daten von Knoten 0 und Knoten 1 auf dem Bildschirm sehen, obwohl sie 2 Kilometer voneinander entfernt sind.

Melden Sie sich bei Ihrem ThingSpeak-Konto an und klicken Sie auf den von Ihnen erstellten Kanal. Sie können die hochgeladenen Temperatur- und Luftfeuchtigkeitsdaten sehen.

Das Feld 1-Diagramm und das Feld 2-Diagramm sind die Feuchtigkeits- und Temperaturdaten des Lora-Knotens 0, und das Feld 3-Diagramm und das Feld4-Diagramm sind die Feuchtigkeits- und Temperaturdaten des Lora-Knotens 1.

Empfohlen: