Inhoudsopgave:

Lora Gateway gebaseerd op MicroPython ESP32 - Ajarnpa
Lora Gateway gebaseerd op MicroPython ESP32 - Ajarnpa

Video: Lora Gateway gebaseerd op MicroPython ESP32 - Ajarnpa

Video: Lora Gateway gebaseerd op MicroPython ESP32 - Ajarnpa
Video: TechTalk IIoT Protocol Gateway met LoRa juni 2023 2024, Juli-
Anonim
Lora Gateway gebaseerd op MicroPython ESP32
Lora Gateway gebaseerd op MicroPython ESP32
Lora Gateway gebaseerd op MicroPython ESP32
Lora Gateway gebaseerd op MicroPython ESP32

Lora is de laatste jaren erg populair. De draadloze communicatiemodule die gebruik maakt van deze technologie is meestal goedkoop (gebruikt vrij spectrum), klein van formaat, energiezuinig en heeft een grote communicatieafstand, en wordt vooral gebruikt voor onderlinge communicatie tussen IoT-terminals of data-uitwisseling met een host. Er zijn veel LoRa-modules op de markt, zoals RFM96W, die is uitgerust met een SX1278 (compatibele) chip, die erg klein is. Ik gebruik het met MakePython ESP32 als gateway.

Vervolgens zal ik twee LoRa-knooppunten gebruiken om de temperatuur- en vochtigheidsgegevens naar de gateway te sturen en deze vervolgens via de gateway naar internet te uploaden. Hier leert u hoe u externe gegevens van meerdere LoRa-knooppunten via de gateway naar de cloud kunt uploaden.

Stap 1: Benodigdheden

Benodigdheden
Benodigdheden

1*Maak Python ESP32

MakePython ESP32 is een ESP32-bord met een geïntegreerd SSD1306 OLED-scherm.

2*Maduino LoRa-radio

Maduino Lora Radio is een IoT-oplossing (Internet of Things) op basis van de Atmega328P MCU en Lora-module van Atmel. Het kan een echt project zijn voor IoT-projecten (vooral langeafstandstoepassing met laag vermogen)

2*DHT11

1*Maak Python Lora

Stap 2: LoRa-knooppunt

LoRa-knooppunt
LoRa-knooppunt
LoRa-knooppunt
LoRa-knooppunt

Dit is het schema van Maduino Lora Radio.

Arduino Lora Radio-module als LoRa-knooppunt, we gebruiken het om temperatuur- en vochtigheidsgegevens naar de gateway te sturen.

(Deze WiKi introduceert hoe je Maduino Lora Radio gebruikt en gegevens verzendt en ontvangt)

Stap 3: Knooppunt- en sensorverbinding

Knooppunt- en sensorverbinding
Knooppunt- en sensorverbinding
Knooppunt- en sensorverbinding
Knooppunt- en sensorverbinding

De VCC en GND van DHT11 zijn verbonden met 3V3 en GND van Maduino, en de DATA-pin is verbonden met D4 van Maduino.

Knooppunt 0 is in het park, knooppunt 1 bevindt zich in het kantoorgebouw bij het bedrijf, ze zijn ongeveer 2 kilometer van elkaar verwijderd, en dan krijg ik hun temperatuur- en vochtigheidsgegevens thuis

Stap 4: Gegevens naar de gateway verzenden

Download TransmitterDHT11.ino, open het op Arduino IDE.

Pas bij het toevoegen van een knooppunt het knooppuntnummer dienovereenkomstig aan. Gebruik nu bijvoorbeeld 2 knooppunten, het eerste knooppunt om het knooppunt = 0 te wijzigen om het programma uit te voeren, het tweede knooppunt om het knooppunt = 1 te wijzigen om het programma uit te voeren, enzovoort, u kunt meer knooppunten toevoegen.

int16_t pakketnummer = 0; // pakketteller, we verhogen per xmission

int16_t knoop = 0; // Wijzig het knooppuntnummer

Gegevens verzamelen en afdrukken

String message ="#"+(String)nodenum+" Vochtigheid:"+(String)humidity+"% Temperatuur:"+(String)temperature+"C"+" num:"+(String)packetnum;Serial.println(message); pakketnummer++;

Stuur een bericht naar rf95_server

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

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

Open de seriële monitor, u kunt de verzamelde temperatuur- en vochtigheidsgegevens bekijken en verzenden.

#0 Vochtigheid:6.00% Temperatuur:27.00C num:0

Verzenden: Verzenden naar rf95_server Verzenden… Wachten tot het pakket is voltooid… Wachten op antwoord… Geen antwoord, is er een luisteraar?

Leg het opzij, nu moeten we de Lora Gateway maken.

Stap 5: Maak Python Lora aan

MerknaamPython Lora
MerknaamPython Lora
MerknaamPython Lora
MerknaamPython Lora
MerknaamPython Lora
MerknaamPython Lora

Dit is de corresponderende pin van de RFM96W-module en MakePython ESP32. Om de verbinding met MakePython ESP32 te vergemakkelijken, heb ik een printplaat gemaakt met de RFM96W-module. Ja, er zitten twee RFM96W's op, die tegelijkertijd gegevens kunnen verzenden en ontvangen, maar nu heb ik er maar één nodig.

Stap 6: LoRaWAN-gateway

LoRaWAN-gateway
LoRaWAN-gateway

LoRaWAN is een low-power wide-area netwerk op basis van LoRa, dat één kan bieden: laag stroomverbruik, schaalbaarheid, hoge servicekwaliteit en veilig draadloos langeafstandsnetwerk.

Stel MakePython Lora en ESP32 samen om een gateway te maken die externe gegevens kan ontvangen en naar internet kan uploaden.

Stap 7: Code downloaden

Download alle 'xxx.py'-bestanden van WiKi en upload ze naar ESP32.

Open het bestand LoRaDuplexCallback.py. U moet enkele aanpassingen maken zodat uw ESP32 verbinding kan maken met het netwerk en gegevens naar de server kan uploaden.

Wijzig de API_KEY die u in ThingSpeak hebt verkregen (ik zal later introduceren hoe u deze kunt verkrijgen)

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

API_KEY='UBHIRHVV9THUJVUI'

Wijzig SSID en PSW om wifi te verbinden

ssid = "Makerfabrieken"

pswd = "20160704"

Stap 8: Gegevens ontvangen

Zoek de functie on_receive (lora, payload) in het bestand LoRaDuplexCallback.py, waar u ESP32 kunt vertellen wat te doen na ontvangst van de gegevens. De volgende code analyseert en toont de ontvangen temperatuur- en vochtigheidsgegevens.

def on_receive(lora, lading):

lora.blink_led() rssi = lora.packetRssi() probeer: 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("*** Bericht ontvangen ***\n{}". format(payload)) if config_lora. IS_LORA_OLED: lora.show_packet(("{}".format(payload[4:length])), rssi) if wlan.isconnected(): global msgCount print('Verzenden naar netwerk…') 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) uitzondering als e: print(e) print("with RSSI {}\n".format(rssi))

Door het aantal te beoordelen om de knooppunten te onderscheiden en de gegevens via de URL naar internet te uploaden, kunnen we de externe gegevens van verschillende knooppunten op elk moment controleren. U kunt meer knooppunten toevoegen en soortgelijke wijzigingen in de code aanbrengen.

als knooppunt == 0:

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

Stap 9: gebruik ThingSpeak IoT

Gebruik ThingSpeak IoT
Gebruik ThingSpeak IoT
Gebruik ThingSpeak IoT
Gebruik ThingSpeak IoT
Gebruik ThingSpeak IoT
Gebruik ThingSpeak IoT

Stappen:

  1. Maak een account aan op https://thingspeak.com/. Als je er al een hebt, meld je dan direct aan.
  2. Klik op Nieuw kanaal om een nieuw ThingSpeak-kanaal te maken.
  3. Voer naam in, Beschrijving, Selecteer veld 1. Sla vervolgens het kanaal onderaan op.
  4. Klik op de optie API-sleutels, kopieer de API-sleutel, we zullen deze in het programma gebruiken.

Stap 10: Resultaat

Resultaat
Resultaat
Resultaat
Resultaat
Resultaat
Resultaat

Je kunt de gegevens van knooppunt 0 en knooppunt 1 op het scherm zien, hoewel ze 2 kilometer van elkaar verwijderd zijn.

Log in op je ThingSpeak-account en klik op het kanaal dat je hebt gemaakt, je kunt de geüploade temperatuur- en vochtigheidsgegevens zien.

De veld1-grafiek en de veld2-grafieken zijn de vochtigheids- en temperatuurgegevens van het Lora-knooppunt 0, en de veld3-grafiek en de veld4-grafiek zijn de vochtigheids- en temperatuurgegevens van het Lora-knooppunt 1.

Aanbevolen: