Përmbajtje:

Lora Gateway Bazuar në MicroPython ESP32: 10 hapa (me fotografi)
Lora Gateway Bazuar në MicroPython ESP32: 10 hapa (me fotografi)

Video: Lora Gateway Bazuar në MicroPython ESP32: 10 hapa (me fotografi)

Video: Lora Gateway Bazuar në MicroPython ESP32: 10 hapa (me fotografi)
Video: Использование комплекта Wi-Fi Heltec ESP32 OLED 2024, Korrik
Anonim
Lora Gateway Bazuar në MicroPython ESP32
Lora Gateway Bazuar në MicroPython ESP32
Lora Gateway Bazuar në MicroPython ESP32
Lora Gateway Bazuar në MicroPython ESP32

Lora ka qenë shumë e njohur vitet e fundit. Moduli i komunikimit pa tel që përdor këtë teknologji është zakonisht i lirë (duke përdorur spektër falas), i vogël në madhësi, me efikasitet energjetik dhe ka një distancë të gjatë komunikimi, dhe përdoret kryesisht për komunikim të ndërsjellë midis terminaleve IoT ose shkëmbimit të të dhënave me një host. Ka shumë module LoRa në treg, të tilla si RFM96W, e cila është e pajisur me çip SX1278 (të pajtueshëm), i cili është shumë i vogël. Unë e përdor atë me MakePython ESP32 si një hyrje.

Tjetra, unë do të përdor dy nyje LoRa për të dërguar të dhënat e temperaturës dhe lagështisë në portë, dhe pastaj t'i ngarkoj në internet përmes portës. Këtu do të mësoni se si të ngarkoni të dhëna të largëta të nyjeve të shumta LoRa në cloud përmes portës.

Hapi 1: Furnizimet

Furnizimet
Furnizimet

1*MakePython ESP32

MakePython ESP32 është një bord ESP32 me një ekran OLED të integruar SSD1306.

2*Maduino LoRa Radio

Maduino Lora Radio është një zgjidhje IoT (Internet of things) bazuar në modulin Atmel's Atmega328P MCU dhe Lora. Mund të jetë një projekt i vërtetë për projektet IoT (veçanërisht aplikimi me rreze të gjatë dhe fuqi të ulët)

2*DHT11

1*MakePython Lora

Hapi 2: Nyja LoRa

Nyja LoRa
Nyja LoRa
Nyja LoRa
Nyja LoRa

Kjo është skema e Radio Maduino Lora.

Moduli Arduino Lora Radio si nyje LoRa, ne e përdorim atë për të dërguar të dhëna të temperaturës dhe lagështisë në portë.

(Ky WiKi prezanton mënyrën e përdorimit të Radio Maduino Lora dhe dërgimin dhe marrjen e të dhënave)

Hapi 3: Lidhja e Nyjës dhe Sensorit

Lidhja e Nyjës dhe Sensorit
Lidhja e Nyjës dhe Sensorit
Lidhja e Nyjës dhe Sensorit
Lidhja e Nyjës dhe Sensorit

VCC dhe GND e DHT11 janë të lidhura me 3V3 dhe GND të Maduino, dhe kunja e të dhënave është e lidhur me D4 të Maduino.

Nyja 0 është në park, nyja 1 është në ndërtesën e zyrave pranë kompanisë, ato janë rreth 2 kilometra larg, dhe pastaj marr të dhënat e tyre të temperaturës dhe lagështisë në shtëpi

Hapi 4: Dërgoni të dhëna në Gateway

Shkarkoni TransmitterDHT11.ino, hapeni atë në Arduino IDE.

Kur shtoni një nyje, modifikoni numrin e nyjes në përputhje me rrethanat. Për shembull, tani përdorni 2 nyje, nyja e parë për të modifikuar nodenumin = 0 për të drejtuar programin, nyja e dytë për të modifikuar nodenumin = 1 për të drejtuar programin, dhe kështu me radhë, mund të shtoni më shumë nyje.

int16_t paketë = 0; // numëruesi i paketave, ne rrisim për lëshimin

int16_t nodenum = 0; // Modifikoni numrin e nyjes

Mblidhni të dhëna dhe shtypini ato

Mesazhi i vargut = "#"+(String) nodenum+"Lagështia:"+(String) lagështia+"% Temperatura:"+(String) temperatura+"C"+"num:"+(String) packetnum; Serial.println (mesazh); paketë ++;

Dërgo një mesazh te rf95_server

uint8_t radioPacket [mesazhi.gjatësia ()+1];

message.toCharArray (radioPaketë, mesazh.length ()+1); radioPaketë [mesazhi.gjatësia ()+1] = '\ 0'; rf95.send ((uint8_t *) RadioPaketë, mesazh.gjatësi ()+1);

Hapni monitorin serik, mund të shihni të dhënat e mbledhura të temperaturës dhe lagështisë dhe t'i dërgoni ato.

#0 Lagështia: 6.00% Temperatura: 27.00C num: 0

Transmetimi: Dërgimi te rf95_server Dërgimi … Në pritje të përfundimit të paketës … Në pritje të përgjigjes … Asnjë përgjigje, a ka ndonjë dëgjues përreth?

Lëreni mënjanë, tani na duhet të bëjmë Portën e Lorës.

Hapi 5: MakePython Lora

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

Kjo është kunja përkatëse e modulit RFM96W dhe MakePython ESP32. Për të lehtësuar lidhjen me MakePython ESP32, unë bëra një bord qark me modulin RFM96W. Po, ka dy RFM96W në të, të cilat mund të dërgojnë dhe marrin të dhëna në të njëjtën kohë, por tani më duhet vetëm një.

Hapi 6: Porta LoRaWAN

Porta LoRaWAN
Porta LoRaWAN

LoRaWAN është një rrjet me fuqi të ulët në zonë të gjerë i bazuar në LoRa, i cili mund të sigurojë një: konsum të ulët të energjisë, shkallëzueshmëri, cilësi të lartë të shërbimit dhe rrjet të sigurt pa tel me distanca të gjata.

Mblidhni MakePython Lora dhe ESP32 për të krijuar një portë që mund të marrë të dhëna në distancë dhe t'i ngarkojë ato në internet.

Hapi 7: Shkarkoni Kodin

Shkarkoni të gjithë skedarët ‘xxx.py’ nga WiKi dhe ngarkojini ato në ESP32.

Hapni skedarin LoRaDuplexCallback.py, Ju duhet të bëni disa rregullime në mënyrë që ESP32 juaj të lidhet me rrjetin dhe të ngarkojë të dhëna në server.

Ndryshoni API_KEY që keni marrë në ThingSpeak (do të prezantoj se si ta merrni më vonë)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Ndryshoni SSID dhe PSW për të lidhur WiFi

ssid = "Makerfabs"

pswd = "20160704"

Hapi 8: Merrni të dhënat

Gjeni funksionin on_receive (lora, payload) në skedarin LoRaDuplexCallback.py, ku mund t'i tregoni ESP32 çfarë të bëni pas marrjes së të dhënave. Kodi i mëposhtëm analizon dhe shfaq të dhënat e marra të temperaturës dhe lagështisë.

def on_receive (lora, payload):

lora.blink_led () rssi = lora.packetRssi () provo: 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 ("*** Mesazhi i marrë *** / n {}" format (ngarkesë)) nëse config_lora. IS_LORA_OLED: lora.show_packet ((""}}. format (ngarkesë [4: gjatësi])), rssi) nëse wlan.isconnected (): mesazhi global i printimit ('Po dërgon në rrjet …') nyja = int (str (ngarkesa [5: 6], 'utf-8')) nëse nyja == 0: URL = "https://api.thingspeak.com/update?api_key="+API_KEY+"& fushë1 = "+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) përveç Përjashtim si e: print (e) print (" me RSSI {} n ".format (rssi))

Duke gjykuar numrin për të dalluar nyjet, dhe duke ngarkuar të dhënat në internet përmes URL -së, ne mund të monitorojmë të dhënat në distancë të nyjeve të ndryshme në çdo kohë. Mund të shtoni më shumë nyje dhe të bëni ndryshime të ngjashme në kod.

nëse nyja == 0:

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

Hapi 9: Përdorni ThingSpeak IoT

Përdorni ThingSpeak IoT
Përdorni ThingSpeak IoT
Përdorni ThingSpeak IoT
Përdorni ThingSpeak IoT
Përdorni ThingSpeak IoT
Përdorni ThingSpeak IoT

Hapat:

  1. Regjistrohuni një llogari në https://thingspeak.com/. Nëse e keni tashmë një, regjistrohuni direkt.
  2. Klikoni në New Channel për të krijuar një kanal të ri ThingSpeak.
  3. Emri i hyrjes, Përshkrimi, Zgjidhni Fushën 1. Pastaj ruani kanalin në pjesën e poshtme.
  4. Klikoni opsionin API Keys, kopjoni API Key, ne do ta përdorim atë në program.

Hapi 10: Rezultati

Rezultati
Rezultati
Rezultati
Rezultati
Rezultati
Rezultati

Ju mund të shihni të dhënat e nyjës 0 dhe nyjes 1 në ekran, megjithëse ato janë 2 kilometra larg.

Hyni në llogarinë tuaj ThingSpeak dhe klikoni në kanalin që keni krijuar, mund të shihni të dhënat e ngarkuara të temperaturës dhe lagështisë.

Grafiku i fushës1 dhe grafikët e fushës2 janë të dhënat e lagështisë dhe temperaturës së nyjës Lora 0, dhe grafiku i fushës3 dhe grafiku i fushës4 janë të dhënat e lagështisë dhe temperaturës së nyjës 1 të Lorës.

Recommended: