Turinys:

„Lora Gateway“, pagrįstas „MicroPython ESP32“: 10 žingsnių (su paveikslėliais)
„Lora Gateway“, pagrįstas „MicroPython ESP32“: 10 žingsnių (su paveikslėliais)

Video: „Lora Gateway“, pagrįstas „MicroPython ESP32“: 10 žingsnių (su paveikslėliais)

Video: „Lora Gateway“, pagrįstas „MicroPython ESP32“: 10 žingsnių (su paveikslėliais)
Video: Scentroid's CTAir Continuous Urban Air Quality Monitor Seminar A 12.08.2020 (Subtitled) 2024, Liepa
Anonim
„Lora Gateway“, pagrįstas „MicroPython ESP32“
„Lora Gateway“, pagrįstas „MicroPython ESP32“
„Lora Gateway“, pagrįstas „MicroPython ESP32“
„Lora Gateway“, pagrįstas „MicroPython ESP32“

Lora pastaraisiais metais buvo labai populiari. Belaidžio ryšio modulis, naudojant šią technologiją, paprastai yra pigus (naudojant laisvą spektrą), mažo dydžio, efektyvus energijos vartojimui ir turi didelį ryšio atstumą, daugiausia naudojamas abipusiam ryšiui tarp daiktų interneto terminalų arba keistis duomenimis su pagrindiniu kompiuteriu. Rinkoje yra daug „LoRa“modulių, pvz., RFM96W, kuriame yra labai mažas SX1278 (suderinamas) lustas. Aš naudoju jį su „MakePython ESP32“kaip vartai.

Toliau aš naudosiu du „LoRa“mazgus, norėdamas nusiųsti temperatūros ir drėgmės duomenis į šliuzą, o po to įkelsiu juos į internetą per šliuzą. Čia jūs sužinosite, kaip įkelti debesį per „Latea“kelių LoRa mazgų nuotolinius duomenis.

1 žingsnis: reikmenys

Prekės
Prekės

1*„MakePython ESP32“

„MakePython ESP32“yra ESP32 plokštė su integruotu SSD1306 OLED ekranu.

2*„Maduino LoRa“radijas

„Maduino Lora“radijas yra daiktų interneto (daiktų interneto) sprendimas, pagrįstas „Atmel“„Atmega328P MCU“ir „Lora“moduliais. Tai gali būti tikras IoT projektų projektas (ypač didelio nuotolio, mažos galios programa)

2*DHT11

1*„MakePython Lora“

2 žingsnis: „LoRa“mazgas

LoRa mazgas
LoRa mazgas
LoRa mazgas
LoRa mazgas

Tai yra „Maduino Lora“radijo schema.

„Arduino Lora“radijo modulį kaip „LoRa“mazgą, mes jį naudojame temperatūros ir drėgmės duomenims siųsti į vartus.

(Šiame „WiKi“pristatoma, kaip naudotis „Maduino Lora“radiju ir siųsti bei gauti duomenis)

3 žingsnis: mazgų ir jutiklių prijungimas

Mazgo ir jutiklio jungtis
Mazgo ir jutiklio jungtis
Mazgo ir jutiklio jungtis
Mazgo ir jutiklio jungtis

DHT11 VCC ir GND yra prijungti prie Maduino 3V3 ir GND, o DATA kaištis prijungtas prie Maduino D4.

Node 0 yra parke, 1 mazgas yra biurų pastate netoli įmonės, jie yra maždaug 2 kilometrų atstumu, tada aš gaunu jų temperatūros ir drėgmės duomenis namuose

4 žingsnis: Siųskite duomenis į „Gateway“

Atsisiųskite „TransmitterDHT11.ino“, atidarykite jį „Arduino IDE“.

Pridėdami mazgą, atitinkamai pakeiskite mazgo numerį. Pavyzdžiui, dabar naudokite 2 mazgus, pirmąjį mazgą, skirtą modifikuoti mazgą = 0, kad paleistumėte programą, antrąjį mazgą, kad pakeistumėte mazgą = 1, kad paleistumėte programą ir pan., Galite pridėti daugiau mazgų.

int16_t paketo numeris = 0; // paketų skaitiklis, mes didiname kiekvieną kartą

int16_t nodenum = 0; // Keisti mazgo numerį

Surinkite duomenis ir atsispausdinkite

Stygos pranešimas = "#"+(Styginių) mazgas+"Drėgmė:"+(Styginių) drėgmė+"% Temperatūra:"+(Styginių) temperatūra+"C"+"num:"+(String) paketo numeris; Serial.println (pranešimas); paketo numeris ++;

Siųskite pranešimą į 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);

Atidarykite serijinį monitorių, galite matyti surinktus temperatūros ir drėgmės duomenis ir juos išsiųsti.

#0 Drėgmė: 6.00% Temperatūra: 27.00C num: 0

Persiųsti: siunčiama į rf95_server Siunčiama … Laukiama, kol paketas bus baigtas … Laukiama atsakymo … Nėra atsakymo, ar šalia yra klausytojas?

Atidėkite jį, dabar turime padaryti „Lora Gateway“.

5 žingsnis: „MakePython Lora“

„MakePython Lora“
„MakePython Lora“
„MakePython Lora“
„MakePython Lora“
„MakePython Lora“
„MakePython Lora“

Tai yra atitinkamas RFM96W modulio ir „MakePython ESP32“kaištis. Kad būtų lengviau prisijungti prie „MakePython ESP32“, sukūriau plokštę su RFM96W moduliu. Taip, jame yra du RFM96W, kurie vienu metu gali siųsti ir gauti duomenis, bet dabar man reikia tik vieno.

6 veiksmas: „LoRaWAN Gateway“

„LoRaWAN“vartai
„LoRaWAN“vartai

„LoRaWAN“yra mažos galios plačiajuostis tinklas, pagrįstas „LoRa“, kuris gali suteikti vieną: mažos energijos sąnaudos, mastelio keitimas, aukšta paslaugų kokybė ir saugus tolimojo ryšio belaidis tinklas.

Surinkite „MakePython Lora“ir „ESP32“, kad sukurtumėte vartus, kurie galėtų priimti nuotolinius duomenis ir įkelti juos į internetą.

7 veiksmas: atsisiųskite kodą

Atsisiųskite visus „xxx.py“failus iš „WiKi“ir įkelkite juos į ESP32.

Atidarykite failą LoRaDuplexCallback.py. Turite atlikti kai kuriuos pakeitimus, kad jūsų ESP32 galėtų prisijungti prie tinklo ir įkelti duomenis į serverį.

Pakeiskite „ThingSpeak“gautą API_KEY (vėliau pristatysiu, kaip jį gauti)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Norėdami prijungti „WiFi“, pakeiskite SSID ir PSW

ssid = "Gamintojai"

pswd = "20160704"

8 veiksmas: gaukite duomenis

„LoRaDuplexCallback.py“faile raskite funkciją on_recept (lora, payload), kur galite nurodyti ESP32, ką daryti gavus duomenis. Šis kodas analizuoja ir rodo gautus temperatūros ir drėgmės duomenis.

def on_recept (lora, naudingoji apkrova):

lora.blink_led () rssi = lora.packetRssi () pabandykite: length = len (payload) -1 myStr = str ((naudingoji apkrova [4: ilgis]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(ilgis1+1):(ilgis1+6)] myNum2 = myStr [(ilgis1+20):(ilgis1+25)] print ("*** Gautas pranešimas *** / n {}". format (payload)) if config_lora. IS_LORA_OLED: lora.show_packet (("" {} ". format (payload [4: length])), rssi) if wlan.isconnected (): global msgCount print ('Siunčiamas tinklui …') mazgas = int (str (naudingoji apkrova [5: 6], 'utf-8'))) jei mazgas == 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) spausdinti (res.text), išskyrus išimtį kaip e: print (e) print (" su RSSI {} n ".format (rssi))

Sprendžiant pagal skaičių, kad būtų galima atskirti mazgus, ir įkeliant duomenis į internetą per URL, mes galime bet kuriuo metu stebėti nuotolinius skirtingų mazgų duomenis. Galite pridėti daugiau mazgų ir atlikti panašius kodo pakeitimus.

jei mazgas == 0:

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

9 veiksmas: naudokite „ThingSpeak IoT“

Naudokite „ThingSpeak IoT“
Naudokite „ThingSpeak IoT“
Naudokite „ThingSpeak IoT“
Naudokite „ThingSpeak IoT“
Naudokite „ThingSpeak IoT“
Naudokite „ThingSpeak IoT“

Žingsniai:

  1. Užregistruokite paskyrą https://thingspeak.com/. Jei jau turite, prisijunkite tiesiogiai.
  2. Spustelėkite Naujas kanalas, kad sukurtumėte naują „ThingSpeak“kanalą.
  3. Įvesties pavadinimas, Aprašymas, Pasirinkite 1 lauką. Tada išsaugokite kanalą apačioje.
  4. Spustelėkite parinktį API raktai, nukopijuokite API raktą, mes jį naudosime programoje.

10 žingsnis: rezultatas

Rezultatas
Rezultatas
Rezultatas
Rezultatas
Rezultatas
Rezultatas

Ekrane galite matyti 0 ir 1 mazgo duomenis, nors jie yra 2 kilometrų atstumu.

Prisijunkite prie „ThingSpeak“paskyros ir spustelėkite kanalą, kurį sukūrėte, ir pamatysite įkeltus temperatūros ir drėgmės duomenis.

Lauko 1 grafikas ir lauko 2 grafikas yra „Lora“mazgo 0 drėgmės ir temperatūros duomenys, o 3 lauko ir 4 lauko grafikas - 1 „Loros“mazgo drėgmės ir temperatūros duomenys.

Rekomenduojamas: