INHOUDSOPGAWE:

Lora Gateway Gebaseer op MicroPython ESP32: 10 stappe (met foto's)
Lora Gateway Gebaseer op MicroPython ESP32: 10 stappe (met foto's)

Video: Lora Gateway Gebaseer op MicroPython ESP32: 10 stappe (met foto's)

Video: Lora Gateway Gebaseer op MicroPython ESP32: 10 stappe (met foto's)
Video: Using Heltec ESP32 OLED Wifi Kit 2024, November
Anonim
Lora Gateway Gebaseer op MicroPython ESP32
Lora Gateway Gebaseer op MicroPython ESP32
Lora Gateway Gebaseer op MicroPython ESP32
Lora Gateway Gebaseer op MicroPython ESP32

Lora was die afgelope paar jaar baie gewild. Die draadlose kommunikasiemodule wat hierdie tegnologie gebruik, is gewoonlik goedkoop (met gratis spektrum), klein, energie-doeltreffend en het 'n lang kommunikasie-afstand, en word hoofsaaklik gebruik vir onderlinge kommunikasie tussen IoT-terminale of data-uitruil met 'n gasheer. Daar is baie LoRa -modules op die mark, soos RFM96W, wat toegerus is met 'n SX1278 (versoenbare) chip, wat baie klein is. Ek gebruik dit met MakePython ESP32 as 'n poort.

Vervolgens gebruik ek twee LoRa -nodusse om die temperatuur- en humiditeitsdata na die gateway te stuur en dit dan via die gateway na die internet op te laai. Hier leer u hoe u eksterne data van verskeie LoRa -nodusse deur die gateway na die wolk kan oplaai.

Stap 1: Voorrade

Voorrade
Voorrade

1*MakePython ESP32

MakePython ESP32 is 'n ESP32 -bord met 'n geïntegreerde SSD1306 OLED -skerm.

2*Maduino LoRa Radio

Maduino Lora Radio is 'n IoT (Internet of Things) -oplossing gebaseer op die Atmel's Atmega328P MCU en Lora -module. Dit kan 'n werklike projek wees vir IoT-projekte (veral langafstand-toepassings met lae krag)

2*DHT11

1*MakePython Lora

Stap 2: LoRa Node

LoRa Node
LoRa Node
LoRa Node
LoRa Node

Dit is die skema van Maduino Lora Radio.

Arduino Lora Radio module as LoRa node, ons gebruik dit om temperatuur- en humiditeitsdata na die gateway te stuur.

(Hierdie WiKi stel bekend hoe u Maduino Lora Radio kan gebruik en data kan stuur en ontvang)

Stap 3: Node- en sensorverbinding

Node- en sensorverbinding
Node- en sensorverbinding
Node- en sensorverbinding
Node- en sensorverbinding

Die VCC en GND van DHT11 is gekoppel aan 3V3 en GND van Maduino, en die DATA -pen is gekoppel aan D4 van Maduino.

Node 0 is in die park, node 1 is in die kantoorgebou naby die onderneming, hulle is ongeveer 2 kilometer van mekaar af, en dan kry ek hul temperatuur- en humiditeitsdata tuis

Stap 4: Stuur data na die gateway

Laai TransmitterDHT11.ino af, maak dit oop op Arduino IDE.

As u 'n knoop byvoeg, moet u die nodienommer dienooreenkomstig verander. Gebruik byvoorbeeld nou 2 nodusse, die eerste knoop om die nodenum = 0 te verander om die program uit te voer, die tweede node om die nodenum = 1 te verander om die program uit te voer, ensovoorts, kan u meer knoop byvoeg.

int16_t packetnum = 0; // pakkieteller, ons vermeerder per gestuur

int16_t nodenum = 0; // Verander die node nommer

Versamel data en druk dit af

Stringboodskap = "#"+(String) nodenum+"Humidity:"+(String) humiditeit+"% Temperatuur:"+(String) temperatuur+"C"+"num:"+(String) packetnum; Serial.println (boodskap); packetnum ++;

Stuur 'n boodskap aan 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);

Maak die seriële monitor oop, u kan die versamelde data oor temperatuur en humiditeit sien en dit stuur.

#0 Humiditeit: 6.00% Temperatuur: 27.00C nommer: 0

Stuur: Stuur na rf95_server Stuur … Wag vir pakkie om te voltooi … Wag vir antwoord … Geen antwoord nie, is daar 'n luisteraar?

Sit dit eenkant, nou moet ons die Lora Gateway maak.

Stap 5: MakePython Lora

Maak Python Lora
Maak Python Lora
Maak Python Lora
Maak Python Lora
Maak Python Lora
Maak Python Lora

Dit is die ooreenstemmende pen van die RFM96W -module en MakePython ESP32. Om die verbinding met MakePython ESP32 te vergemaklik, het ek 'n printplaat gemaak met die RFM96W -module. Ja, daar is twee RFM96W daarop, wat data tegelyk kan stuur en ontvang, maar nou het ek net een nodig.

Stap 6: LoRaWAN Gateway

LoRaWAN Gateway
LoRaWAN Gateway

LoRaWAN is 'n lae-krag wye gebiedsnetwerk gebaseer op LoRa, wat een kan bied: lae kragverbruik, skaalbaarheid, hoë kwaliteit diens en veilige langafstand-draadlose netwerk.

Monteer MakePython Lora en ESP32 om 'n gateway te maak wat eksterne data kan ontvang en na die internet kan oplaai.

Stap 7: Laai kode af

Laai alle ‘xxx.py’ -lêers van WiKi af en laai dit op na ESP32.

Maak die LoRaDuplexCallback.py -lêer oop; u moet 'n paar aanpassings aanbring sodat u ESP32 met die netwerk kan koppel en data na die bediener kan oplaai.

Verander die API_KEY wat u in ThingSpeak verkry het (ek sal u later vertel hoe u dit kan kry)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Verander SSID en PSW om WiFi aan te sluit

ssid = "Makerfabs"

pswd = "20160704"

Stap 8: Ontvang data

Vind die funksie on_receive (lora, payload) in die LoRaDuplexCallback.py -lêer, waar u ESP32 kan vertel wat u moet doen nadat u die data ontvang het. Die volgende kode ontleed en vertoon die ontvangde data oor temperatuur en humiditeit.

def on_receive (lora, loonvrag):

lora.blink_led () rssi = lora.packetRssi () probeer: length = len (payload) -1 myStr = str ((payload [4: length]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(lengte1+1):(lengte1+6)] myNum2 = myStr [(lengte1+20):(lengte1+25)] druk ("*** Ontvangen boodskap *** / n {}". formaat (loonvrag)) as config_lora. IS_LORA_OLED: lora.show_packet (("{}". formaat (laai [4: lengte])), rssi) as wlan.isconnected (): globale msgCount print ('Stuur na netwerk …') node = int (str (payload [5: 6], 'utf-8')) as 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) behalwe Exception as e: print (e) print (" with RSSI {} n ".format (rssi))

As ons die nommer beoordeel om die nodusse te onderskei en die data via die URL na die internet op te laai, kan ons die afstanddata van verskillende nodusse te eniger tyd monitor. U kan meer nodusse byvoeg en soortgelyke veranderinge aan die kode aanbring.

as node == 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

Stappe:

  1. Teken 'n rekening aan op https://thingspeak.com/. As u reeds een het, meld direk aan.
  2. Klik op Nuwe kanaal om 'n nuwe ThingSpeak -kanaal te skep.
  3. Invoernaam, beskrywing, kies veld 1. Stoor dan die kanaal onderaan.
  4. Klik op die API sleutels opsie, kopieer die API sleutel, ons sal dit in die program gebruik.

Stap 10: Resultaat

Uitslag
Uitslag
Uitslag
Uitslag
Uitslag
Uitslag

U kan die data van knoop 0 en node 1 op die skerm sien, alhoewel dit 2 kilometer van mekaar is.

Teken in op u ThingSpeak -rekening en klik op die kanaal wat u geskep het, u kan die opgelaaide temperatuur- en humiditeitsdata sien.

Die veld1 -grafiek en die veld2 -grafieke is die humiditeits- en temperatuurdata van die Lora -node 0, en die veld3 -grafiek en die veld4 -grafiek is die humiditeits- en temperatuurdata van die Lora -node 1.

Aanbeveel: