Innehållsförteckning:

Lora Gateway Baserat på MicroPython ESP32: 10 steg (med bilder)
Lora Gateway Baserat på MicroPython ESP32: 10 steg (med bilder)

Video: Lora Gateway Baserat på MicroPython ESP32: 10 steg (med bilder)

Video: Lora Gateway Baserat på MicroPython ESP32: 10 steg (med bilder)
Video: Using Heltec ESP32 OLED Wifi Kit 2024, November
Anonim
Lora Gateway Baserat på MicroPython ESP32
Lora Gateway Baserat på MicroPython ESP32
Lora Gateway Baserat på MicroPython ESP32
Lora Gateway Baserat på MicroPython ESP32

Lora har varit mycket populär de senaste åren. Den trådlösa kommunikationsmodulen som använder denna teknik är vanligtvis billig (använder fritt spektrum), liten i storlek, energieffektiv och har ett långt kommunikationsavstånd och används främst för ömsesidig kommunikation mellan IoT-terminaler eller datautbyte med en värd. Det finns många LoRa -moduler på marknaden, till exempel RFM96W, som är utrustad med SX1278 (kompatibelt) chip, som är mycket litet. Jag använder den med MakePython ESP32 som en gateway.

Därefter kommer jag att använda två LoRa -noder för att skicka temperatur- och luftfuktighetsdata till gatewayen och sedan ladda upp den till Internet via gatewayen. Här lär du dig hur du laddar upp fjärrdata för flera LoRa -noder till molnet genom gatewayen.

Steg 1: Tillbehör

Tillbehör
Tillbehör

1*MakePython ESP32

MakePython ESP32 är ett ESP32 -kort med en integrerad SSD1306 OLED -skärm.

2*Maduino LoRa Radio

Maduino Lora Radio är en IoT (sakernas internet) lösning baserad på Atmels Atmega328P MCU och Lora -modul. Det kan vara ett riktigt projekt för IoT-projekt (särskilt applikationer med lång räckvidd och låg effekt)

2*DHT11

1*MakePython Lora

Steg 2: LoRa -nod

LoRa -nod
LoRa -nod
LoRa -nod
LoRa -nod

Detta är schemat över Maduino Lora Radio.

Arduino Lora Radio -modul som LoRa -nod, vi använder den för att skicka temperatur- och luftfuktighetsdata till gatewayen.

(Denna WiKi introducerar hur man använder Maduino Lora Radio och skickar och tar emot data)

Steg 3: Nod- och sensoranslutning

Nod och sensoranslutning
Nod och sensoranslutning
Nod och sensoranslutning
Nod och sensoranslutning

VCC och GND för DHT11 är anslutna till 3V3 och GND för Maduino, och DATA -stiftet är anslutet till D4 i Maduino.

Nod 0 är i parken, nod 1 ligger i kontorsbyggnaden nära företaget, de är ungefär 2 kilometer från varandra, och då får jag deras temperatur- och luftfuktighetsdata hemma

Steg 4: Skicka data till gatewayen

Ladda ner TransmitterDHT11.ino, öppna den på Arduino IDE.

När du lägger till en nod, ändra nodnumret i enlighet därmed. Till exempel, använd nu 2 noder, den första noden för att ändra nodenum = 0 för att köra programmet, den andra noden för att ändra nodenum = 1 för att köra programmet, och så vidare kan du lägga till mer nod.

int16_t packetnum = 0; // paketräknare, vi ökar per xmission

int16_t nodenum = 0; // Ändra nodnumret

Samla in data och skriv ut dem

Strängmeddelande = "#"+(String) nodenum+"Luftfuktighet:"+(Sträng) luftfuktighet+"% Temperatur:"+(String) temperatur+"C"+"num:"+(String) packetnum; Serial.println (meddelande); packetnum ++;

Skicka ett meddelande till rf95_server

uint8_t radioPacket [meddelande.längd ()+1];

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

Öppna den seriella bildskärmen, du kan se de samlade temperatur- och luftfuktighetsdata och skicka ut den.

#0 Luftfuktighet: 6,00% Temperatur: 27,00C num: 0

Skicka: Skickar till rf95_server Skickar … Väntar på att paketet ska slutföras … Väntar på svar … Inget svar, finns det en lyssnare i närheten?

Lägg det åt sidan, nu måste vi göra Lora Gateway.

Steg 5: MakePython Lora

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

Detta är motsvarande stift för RFM96W -modulen och MakePython ESP32. För att underlätta anslutningen till MakePython ESP32 gjorde jag ett kretskort med RFM96W -modulen. Ja, det finns två RFM96W på den, som kan skicka och ta emot data samtidigt, men nu behöver jag bara en.

Steg 6: LoRaWAN Gateway

LoRaWAN Gateway
LoRaWAN Gateway

LoRaWAN är ett lågeffektsnät med stort område baserat på LoRa, som kan ge ett: låg energiförbrukning, skalbarhet, hög servicekvalitet och ett säkert trådlöst nätverk över långa avstånd.

Montera MakePython Lora och ESP32 för att skapa en gateway som kan ta emot fjärrdata och ladda upp den till Internet.

Steg 7: Ladda ner koden

Ladda ner alla xxx.py -filer från WiKi och ladda upp dem till ESP32.

Öppna LoRaDuplexCallback.py -filen. Du måste göra några justeringar så att din ESP32 kan ansluta till nätverket och ladda upp data till servern.

Ändra API_KEY som du fick i ThingSpeak (jag kommer att presentera hur du får det senare)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Ändra SSID och PSW för att ansluta WiFi

ssid = "Makerfabs"

pswd = "20160704"

Steg 8: Ta emot data

Hitta on_receive (lora, nyttolast) -funktionen i filen LoRaDuplexCallback.py, där du kan berätta för ESP32 vad du ska göra efter att ha tagit emot data. Följande kod analyserar och visar data om mottagen temperatur och luftfuktighet.

def on_receive (lora, nyttolast):

lora.blink_led () rssi = lora.packetRssi () försök: length = len (nyttolast) -1 myStr = str ((nyttolast [4: längd]), 'utf-8') length1 = myStr.find (':') myNum1 = myStr [(length1+1):(length1+6)] myNum2 = myStr [(length1+20):(length1+25)] print ("*** mottaget meddelande *** / n {}". format (nyttolast)) om config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (nyttolast [4: längd])), rssi) om wlan.isconnected (): global msgCount print ('Skickar till nätverk …') nod = int (str (nyttolast [5: 6], 'utf-8')) om nod == 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) utom Undantag som e: print (e) print (" med RSSI {} n ".format (rssi))

Att döma antalet för att skilja noder och ladda upp data till Internet via URL: en, vi kan när som helst övervaka fjärrdata från olika noder. Du kan lägga till fler noder och göra liknande ändringar i koden.

om nod == 0:

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

Steg 9: Använd ThingSpeak IoT

Använd ThingSpeak IoT
Använd ThingSpeak IoT
Använd ThingSpeak IoT
Använd ThingSpeak IoT
Använd ThingSpeak IoT
Använd ThingSpeak IoT

Steg:

  1. Registrera ett konto på https://thingspeak.com/. Om du redan har en, logga in direkt.
  2. Klicka på Ny kanal för att skapa en ny ThingSpeak -kanal.
  3. Inmatningsnamn, Beskrivning, Välj fält 1. Spara sedan kanalen längst ner.
  4. Klicka på alternativet API -nycklar, kopiera API -nyckeln, vi använder den i programmet.

Steg 10: Resultat

Resultat
Resultat
Resultat
Resultat
Resultat
Resultat

Du kan se data för nod 0 och nod 1 på skärmen, även om de är 2 kilometer från varandra.

Logga in på ditt ThingSpeak -konto och klicka på kanalen du skapade, du kan se uppladdade temperatur- och luftfuktighetsdata.

Fält1 -grafen och fält2 -graferna är luft- och temperaturdata för Lora -noden 0, och fält3 -grafen och fält4 -grafen är luft- och temperaturdata för Lora -noden 1.

Rekommenderad: