Sommario:

Lora Gateway basato su MicroPython ESP32: 10 passaggi (con immagini)
Lora Gateway basato su MicroPython ESP32: 10 passaggi (con immagini)

Video: Lora Gateway basato su MicroPython ESP32: 10 passaggi (con immagini)

Video: Lora Gateway basato su MicroPython ESP32: 10 passaggi (con immagini)
Video: Corso per programmare ESP32 2024, Dicembre
Anonim
Lora Gateway basato su MicroPython ESP32
Lora Gateway basato su MicroPython ESP32
Lora Gateway basato su MicroPython ESP32
Lora Gateway basato su MicroPython ESP32

Lora è stata molto popolare negli ultimi anni. Il modulo di comunicazione wireless che utilizza questa tecnologia è generalmente economico (utilizzando lo spettro libero), di piccole dimensioni, efficiente dal punto di vista energetico e ha una lunga distanza di comunicazione ed è utilizzato principalmente per la comunicazione reciproca tra terminali IoT o lo scambio di dati con un host. Ci sono molti moduli LoRa sul mercato, come RFM96W, che è dotato di chip SX1278 (compatibile), che è molto piccolo. Lo uso con MakePython ESP32 come gateway.

Successivamente, utilizzerò due nodi LoRa per inviare i dati di temperatura e umidità al gateway, quindi caricarli su Internet tramite il gateway. Qui imparerai come caricare i dati remoti di più nodi LoRa nel cloud attraverso il gateway.

Passaggio 1: materiali di consumo

Forniture
Forniture

1 * MakePython ESP32

MakePython ESP32 è una scheda ESP32 con display OLED SSD1306 integrato.

2*Maduino LoRa Radio

Maduino Lora Radio è una soluzione IoT (Internet delle cose) basata sull'MCU Atmega328P di Atmel e sul modulo Lora. Può essere un vero progetto per progetti IoT (in particolare applicazioni a lungo raggio e a bassa potenza)

2*DHT11

1 * MakePython Lora

Passaggio 2: nodo LoRa

Nodo LoRa
Nodo LoRa
Nodo LoRa
Nodo LoRa

Questo è lo schema di Radio Maduino Lora.

Modulo Arduino Lora Radio come nodo LoRa, lo usiamo per inviare i dati di temperatura e umidità al gateway.

(Questo WiKi introduce come utilizzare Maduino Lora Radio e inviare e ricevere dati)

Passaggio 3: collegamento tra nodi e sensori

Collegamento del nodo e del sensore
Collegamento del nodo e del sensore
Collegamento del nodo e del sensore
Collegamento del nodo e del sensore

Il VCC e GND di DHT11 sono collegati a 3V3 e GND di Maduino e il pin DATA è collegato a D4 di Maduino.

Il nodo 0 è nel parco, il nodo 1 è nell'edificio degli uffici vicino all'azienda, sono a circa 2 chilometri di distanza, quindi ricevo i loro dati di temperatura e umidità a casa

Passaggio 4: inviare dati al gateway

Scarica TransmitterDHT11.ino, aprilo su Arduino IDE.

Quando si aggiunge un nodo, modificare di conseguenza il numero del nodo. Ad esempio, ora usa 2 nodi, il primo nodo per modificare nodenum = 0 per eseguire il programma, il secondo nodo per modificare nodenum = 1 per eseguire il programma e così via, puoi aggiungere più nodi.

int16_t numeropacchetto = 0; // contatore di pacchetti, incrementiamo per xmission

int16_t numero nodo = 0; //Modifica il numero di nodo

Raccogli i dati e stampali

Stringa messaggio ="#"+(Stringa)nodenum+" Umidità:"+(Stringa)umidità+"% Temperatura:"+(Stringa)temperatura+"C"+" num:"+(Stringa)packetnum;Serial.println(messaggio); numeropacchetto++;

Invia un messaggio a 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);

Apri il monitor seriale, puoi vedere i dati di temperatura e umidità raccolti e inviarli.

#0 Umidità:6,00% Temperatura:27,00C num:0

Trasmissione: Invio a rf95_server Invio… In attesa del completamento del pacchetto… In attesa di risposta… Nessuna risposta, c'è un ascoltatore in giro?

Mettilo da parte, ora dobbiamo realizzare il Lora Gateway.

Passaggio 5: MakePython Lora

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

Questo è il pin corrispondente del modulo RFM96W e MakePython ESP32. Per facilitare la connessione con MakePython ESP32, ho realizzato un circuito con il modulo RFM96W. Sì, ci sono due RFM96W su di esso, che possono inviare e ricevere dati contemporaneamente, ma ora ne ho bisogno solo uno.

Passaggio 6: gateway LoRaWAN

Gateway LoRaWAN
Gateway LoRaWAN

LoRaWAN è una rete WAN a bassa potenza basata su LoRa, che può fornire uno: basso consumo energetico, scalabilità, alta qualità del servizio e rete wireless sicura a lunga distanza.

Assemblare MakePython Lora ed ESP32 per creare un gateway in grado di ricevere dati remoti e caricarli su Internet.

Passaggio 7: Scarica il codice

Scarica tutti i file "xxx.py" da WiKi e caricali su ESP32.

Apri il file LoRaDuplexCallback.py, devi apportare alcune modifiche in modo che ESP32 possa connettersi alla rete e caricare i dati sul server.

Modifica l'API_KEY che hai ottenuto in ThingSpeak (introdurrò come ottenerla in seguito)

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

API_KEY='UBHIRHVV9THUJVUI'

Modifica SSID e PSW per connettere WiFi

ssid = "Makerfabs"

pswd = "20160704"

Passaggio 8: ricezione dei dati

Trova la funzione on_receive (lora, payload) nel file LoRaDuplexCallback.py, dove puoi dire a ESP32 cosa fare dopo aver ricevuto i dati. Il codice seguente analizza e visualizza i dati di temperatura e umidità ricevuti.

def on_receive(lora, carico utile):

lora.blink_led() rssi = lora.packetRssi() try: length=len(payload)-1 myStr=str((payload[4:length]), 'utf-8') length1=myStr.find(':') mioNum1=mioStr[(lunghezza1+1):(lunghezza1+6)] mioNum2=mioStr[(lunghezza1+20):(lunghezza1+25)] print("*** Messaggio ricevuto ***\n{}". format(payload)) if config_lora. IS_LORA_OLED: lora.show_packet(("{}".format(payload[4:length])), rssi) if wlan.isconnected(): global msgCount print('Invio alla rete…') node = int(str(payload[5:6], 'utf-8')) if 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) tranne Eccezione come e: print(e) print("with RSSI {}\n".format(rssi))

Giudicando il numero per distinguere i nodi e caricando i dati su Internet tramite l'URL, possiamo monitorare i dati remoti di diversi nodi in qualsiasi momento. Puoi aggiungere più nodi e apportare modifiche simili al codice.

se nodo == 0:

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

Passaggio 9: utilizzare ThingSpeak IoT

Usa ThingSpeak IoT
Usa ThingSpeak IoT
Usa ThingSpeak IoT
Usa ThingSpeak IoT
Usa ThingSpeak IoT
Usa ThingSpeak IoT

Passaggi:

  1. Registra un account in https://thingspeak.com/. Se ne hai già uno, accedi direttamente.
  2. Fare clic su Nuovo canale per creare un nuovo canale ThingSpeak.
  3. Immettere il nome, la descrizione, selezionare il campo 1. Quindi salvare il canale in basso.
  4. Fare clic sull'opzione Chiavi API, copiare la chiave API, la useremo nel programma.

Passaggio 10: risultato

Risultato
Risultato
Risultato
Risultato
Risultato
Risultato

Puoi vedere i dati del nodo 0 e del nodo 1 sullo schermo, sebbene siano distanti 2 chilometri.

Accedi al tuo account ThingSpeak e fai clic sul canale che hai creato, puoi vedere i dati di temperatura e umidità caricati.

Il grafico field1 e i grafici field2 sono i dati di umidità e temperatura del nodo Lora 0, e il grafico field3 e il grafico field4 sono i dati di umidità e temperatura del nodo Lora 1.

Consigliato: