Indholdsfortegnelse:

Lora Gateway baseret på MicroPython ESP32: 10 trin (med billeder)
Lora Gateway baseret på MicroPython ESP32: 10 trin (med billeder)

Video: Lora Gateway baseret på MicroPython ESP32: 10 trin (med billeder)

Video: Lora Gateway baseret på MicroPython ESP32: 10 trin (med billeder)
Video: Using Heltec ESP32 OLED Wifi Kit 2024, November
Anonim
Lora Gateway Baseret på MicroPython ESP32
Lora Gateway Baseret på MicroPython ESP32
Lora Gateway Baseret på MicroPython ESP32
Lora Gateway Baseret på MicroPython ESP32

Lora har været meget populær i de seneste år. Det trådløse kommunikationsmodul, der bruger denne teknologi, er normalt billigt (ved hjælp af frit spektrum), lille i størrelse, energieffektivt og har en lang kommunikationsafstand og bruges hovedsageligt til gensidig kommunikation mellem IoT-terminaler eller dataudveksling med en vært. Der er mange LoRa -moduler på markedet, såsom RFM96W, som er udstyret med SX1278 (kompatibel) chip, som er meget lille. Jeg bruger det med MakePython ESP32 som en gateway.

Dernæst vil jeg bruge to LoRa -noder til at sende temperatur- og fugtighedsdata til gatewayen og derefter uploade dem til internettet via gatewayen. Her lærer du, hvordan du uploader fjerndata fra flere LoRa -noder til skyen via gatewayen.

Trin 1: Forbrugsvarer

Forbrugsvarer
Forbrugsvarer

1*MakePython ESP32

MakePython ESP32 er et ESP32 -kort med en integreret SSD1306 OLED -skærm.

2*Maduino LoRa Radio

Maduino Lora Radio er en IoT (tingenes internet) løsning baseret på Atmels Atmega328P MCU og Lora modul. Det kan være et rigtigt projekt for IoT-projekter (især langdistance, lav effekt applikation)

2*DHT11

1*MakePython Lora

Trin 2: LoRa Node

LoRa Node
LoRa Node
LoRa Node
LoRa Node

Dette er skematisk af Maduino Lora Radio.

Arduino Lora Radio modul som LoRa node, vi bruger det til at sende temperatur- og fugtighedsdata til gatewayen.

(Denne WiKi introducerer, hvordan man bruger Maduino Lora Radio og sender og modtager data)

Trin 3: Knude- og sensorforbindelse

Node- og sensorforbindelse
Node- og sensorforbindelse
Node- og sensorforbindelse
Node- og sensorforbindelse

VCC og GND for DHT11 er forbundet til 3V3 og GND for Maduino, og DATA -stiften er forbundet til D4 i Maduino.

Node 0 er i parken, node 1 er i kontorbygningen nær virksomheden, de er cirka 2 kilometer fra hinanden, og så får jeg deres temperatur- og fugtighedsdata derhjemme

Trin 4: Send data til gatewayen

Download TransmitterDHT11.ino, åbn den på Arduino IDE.

Når du tilføjer en knude, skal du ændre nodens nummer i overensstemmelse hermed. For eksempel, brug nu 2 noder, den første node til at ændre nodenum = 0 for at køre programmet, den anden node til at ændre nodenum = 1 for at køre programmet og så videre kan du tilføje flere node.

int16_t packetnum = 0; // pakketæller, vi øger pr. transmission

int16_t nodenum = 0; // Rediger nodens nummer

Indsaml data og udskriv dem

Stringbesked = "#"+(streng) nodenum+"luftfugtighed:"+(streng) luftfugtighed+"% temperatur:"+(streng) temperatur+"C"+"num:"+(streng) packetnum; Serial.println (meddelelse); packetnum ++;

Send en besked til 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);

Åbn den serielle skærm, du kan se de indsamlede temperatur- og fugtighedsdata, og sende dem ud.

#0 Fugtighed: 6,00% Temperatur: 27,00C nummer: 0

Send: Sender til rf95_server Sender … Venter på, at pakken skal udfyldes … Venter på svar … Intet svar, er der en lytter i nærheden?

Læg det til side, nu skal vi lave Lora Gateway.

Trin 5: MakePython Lora

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

Dette er den tilsvarende pin på RFM96W -modulet og MakePython ESP32. For at lette forbindelsen til MakePython ESP32 lavede jeg et printkort med RFM96W -modulet. Ja, der er to RFM96W på den, som kan sende og modtage data på samme tid, men nu mangler jeg kun en.

Trin 6: LoRaWAN Gateway

LoRaWAN Gateway
LoRaWAN Gateway

LoRaWAN er et lavt strømforbrugsområde baseret på LoRa, som kan levere et: lavt strømforbrug, skalerbarhed, høj kvalitet i servicen og sikkert trådløst langdistancenetværk.

Saml MakePython Lora og ESP32 for at lave en gateway, der kan modtage fjerndata og uploade dem til internettet.

Trin 7: Download kode

Download alle ‘xxx.py’ -filer fra WiKi, og upload dem til ESP32.

Åbn LoRaDuplexCallback.py -filen. Du skal foretage nogle justeringer, så din ESP32 kan oprette forbindelse til netværket og uploade data til serveren.

Rediger API_KEY, du har opnået i ThingSpeak (jeg introducerer, hvordan du får det senere)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Rediger SSID og PSW for at forbinde WiFi

ssid = "Makerfabs"

pswd = "20160704"

Trin 8: Modtag data

Find on_receive (lora, nyttelast) -funktionen i filen LoRaDuplexCallback.py, hvor du kan fortælle ESP32, hvad du skal gøre, efter at du har modtaget dataene. Følgende kode analyserer og viser de modtagne temperatur- og fugtighedsdata.

def on_receive (lora, nyttelast):

lora.blink_led () rssi = lora.packetRssi () prøv: length = len (nyttelast) -1 myStr = str ((nyttelast [4: længde]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1+1):(length1+6)] myNum2 = myStr [(length1+20):(length1+25)] print ("*** Modtaget besked *** / n {}". format (nyttelast)) hvis config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (nyttelast [4: længde])), rssi) hvis wlan.isconnected (): global msgCount print ('Sender til netværk …') node = int (str (nyttelast [5: 6], 'utf-8')) hvis 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) undtagen Undtagelse som e: print (e) print (" med RSSI {} n ".format (rssi))

At dømme antallet for at skelne mellem noder og uploade data til internettet via URL'en, kan vi til enhver tid overvåge fjerndata for forskellige noder. Du kan tilføje flere noder og foretage lignende ændringer i koden.

hvis node == 0:

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

Trin 9: Brug ThingSpeak IoT

Brug ThingSpeak IoT
Brug ThingSpeak IoT
Brug ThingSpeak IoT
Brug ThingSpeak IoT
Brug ThingSpeak IoT
Brug ThingSpeak IoT

Trin:

  1. Opret en konto på https://thingspeak.com/. Hvis du allerede har en, skal du logge ind direkte.
  2. Klik på Ny kanal for at oprette en ny ThingSpeak -kanal.
  3. Inputnavn, Beskrivelse, Vælg felt 1. Gem derefter kanalen i bunden.
  4. Klik på API -nøglerne, kopier API -nøglen, vi bruger den i programmet.

Trin 10: Resultat

Resultat
Resultat
Resultat
Resultat
Resultat
Resultat

Du kan se dataene fra knude 0 og knude 1 på skærmen, selvom de er 2 kilometer fra hinanden.

Log ind på din ThingSpeak -konto, og klik på den kanal, du har oprettet, du kan se de uploadede temperatur- og fugtighedsdata.

Field1 -grafen og field2 -graferne er fugtigheds- og temperaturdata for Lora -noden 0, og field3 -grafen og field4 -grafen er fugtigheds- og temperaturdataene for Lora -noden 1.

Anbefalede: