Cuprins:

Lora Gateway bazat pe MicroPython ESP32: 10 pași (cu imagini)
Lora Gateway bazat pe MicroPython ESP32: 10 pași (cu imagini)
Anonim
Lora Gateway Bazat pe MicroPython ESP32
Lora Gateway Bazat pe MicroPython ESP32
Lora Gateway Bazat pe MicroPython ESP32
Lora Gateway Bazat pe MicroPython ESP32

Lora a fost foarte populară în ultimii ani. Modulul de comunicație fără fir care utilizează această tehnologie este de obicei ieftin (utilizând spectru liber), de dimensiuni reduse, eficient din punct de vedere energetic și are o distanță mare de comunicare și este utilizat în principal pentru comunicarea reciprocă între terminalele IoT sau schimbul de date cu o gazdă. Există multe module LoRa pe piață, cum ar fi RFM96W, care este echipat cu cip SX1278 (compatibil), care este foarte mic. Îl folosesc cu MakePython ESP32 ca gateway.

Apoi, voi folosi două noduri LoRa pentru a trimite datele de temperatură și umiditate către gateway și apoi le voi încărca pe Internet prin gateway. Aici veți afla cum să încărcați date de la distanță ale mai multor noduri LoRa în cloud prin gateway.

Pasul 1: consumabile

Provizii
Provizii

1 * MakePython ESP32

MakePython ESP32 este o placă ESP32 cu un display SSD1306 OLED integrat.

2 * Maduino LoRa Radio

Maduino Lora Radio este o soluție IoT (Internet of Things) bazată pe modulul Atmel’s Atmega328P MCU și modulul Lora. Poate fi un proiect real pentru proiecte IoT (în special aplicații cu rază lungă de acțiune, cu consum redus de energie)

2 * DHT11

1 * MakePython Lora

Pasul 2: nodul LoRa

Nod LoRa
Nod LoRa
Nod LoRa
Nod LoRa

Aceasta este schema Radio Maduino Lora.

Modulul Arduino Lora Radio ca nod LoRa, îl folosim pentru a trimite date de temperatură și umiditate la gateway.

(Acest WiKi introduce modul de utilizare a Radio Maduino Lora și de trimitere și primire de date)

Pasul 3: Conexiune nod și senzor

Conexiune nod și senzor
Conexiune nod și senzor
Conexiune nod și senzor
Conexiune nod și senzor

VCC și GND din DHT11 sunt conectate la 3V3 și GND din Maduino, iar pinul DATA este conectat la D4 din Maduino.

Nodul 0 este în parc, nodul 1 se află în clădirea de birouri din apropierea companiei, sunt la aproximativ 2 kilometri distanță, iar apoi le primesc datele de temperatură și umiditate acasă

Pasul 4: Trimiteți date către Gateway

Descărcați TransmitterDHT11.ino, deschideți-l pe Arduino IDE.

Când adăugați un nod, modificați numărul nodului în consecință. De exemplu, utilizați acum 2 noduri, primul nod pentru a modifica nodenum = 0 pentru a rula programul, al doilea nod pentru a modifica nodenum = 1 pentru a rula programul și așa mai departe, puteți adăuga mai multe noduri.

int16_t packetnum = 0; // contor de pachete, creștem per xmission

int16_t nodenum = 0; // Modificați numărul nodului

Colectați date și imprimați-le

String message = "#" + (String) nodenum + "Umiditate:" + (String) umiditate + "% Temperatura:" + (String) temperature + "C" + "num:" + (String) packetnum; Serial.println (message); packetnum ++;

Trimiteți un mesaj către 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);

Deschideți monitorul serial, puteți vedea datele colectate de temperatură și umiditate și le puteți trimite.

# 0 Umiditate: 6.00% Temperatură: 27.00C num: 0

Transmit: Trimiterea către rf95_server Trimiterea … Se așteaptă finalizarea pachetului … Se așteaptă răspuns … Fără răspuns, există un ascultător în jur?

Lasă-l deoparte, acum trebuie să facem Lora Gateway.

Pasul 5: MakePython Lora

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

Acesta este pinul corespunzător al modulului RFM96W și al MakePython ESP32. Pentru a facilita conexiunea cu MakePython ESP32, am realizat o placă cu modulul RFM96W. Da, există două RFM96W pe el, care pot trimite și primi date în același timp, dar acum am nevoie doar de unul.

Pasul 6: Gateway LoRaWAN

LoRaWAN Gateway
LoRaWAN Gateway

LoRaWAN este o rețea cu suprafață redusă de consum redus, bazată pe LoRa, care poate oferi unul: consum redus de energie, scalabilitate, calitate ridicată a serviciului și rețea wireless sigură pe distanțe lungi.

Asamblați MakePython Lora și ESP32 pentru a crea un gateway care poate primi date la distanță și le poate încărca pe Internet.

Pasul 7: Descărcați codul

Descărcați toate fișierele ‘xxx.py’ din WiKi și încărcați-le în ESP32.

Deschideți fișierul LoRaDuplexCallback.py, trebuie să faceți unele ajustări, astfel încât ESP32 să se poată conecta la rețea și să încarce date pe server.

Modificați API_KEY pe care l-ați obținut în ThingSpeak (vă voi prezenta cum să îl obțineți mai târziu)

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

API_KEY = 'UBHIRHVV9THUJVUI'

Modificați SSID și PSW pentru a conecta WiFi

ssid = "Makerfabs"

pswd = "20160704"

Pasul 8: Primiți date

Găsiți funcția on_receive (lora, payload) în fișierul LoRaDuplexCallback.py, unde puteți spune ESP32 ce trebuie să faceți după primirea datelor. Următorul cod analizează și afișează datele de temperatură și umiditate primite.

def on_receive (lora, sarcină utilă):

lora.blink_led () rssi = lora.packetRssi () try: 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 ("*** Mesaj primit *** / n {}". format (încărcare utilă)) dacă config_lora. IS_LORA_OLED: lora.show_packet (("{}". format (încărcare utilă [4: lungime])), rssi) dacă wlan.isconnected (): msgCount global print ('Trimiterea către rețea …') nod = 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) nod elif == 1: URL =" https://api.thingspeak.com/update?api_key= "+ API_KEY +" & field3 = "+ myNum1 +" & field4 = "+ myNum2 res = urequests.get (URL) print (res.text) cu excepția excepției ca e: print (e) print (" cu RSSI {} n ".format (rssi))

Judecând numărul pentru a distinge nodurile și încărcând datele pe internet prin URL, putem monitoriza oricând datele de la distanță ale diferitelor noduri. Puteți adăuga mai multe noduri și puteți face modificări similare codului.

dacă nod == 0:

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

Pasul 9: utilizați ThingSpeak IoT

Folosiți ThingSpeak IoT
Folosiți ThingSpeak IoT
Folosiți ThingSpeak IoT
Folosiți ThingSpeak IoT
Folosiți ThingSpeak IoT
Folosiți ThingSpeak IoT

Pași:

  1. Înscrieți-vă un cont în https://thingspeak.com/. Dacă aveți deja unul, conectați-vă direct.
  2. Faceți clic pe Canal nou pentru a crea un nou canal ThingSpeak.
  3. Numele de intrare, Descriere, Selectați câmpul 1. Apoi salvați canalul în partea de jos.
  4. Faceți clic pe opțiunea Chei API, copiați cheia API, o vom folosi în program.

Pasul 10: Rezultat

Rezultat
Rezultat
Rezultat
Rezultat
Rezultat
Rezultat

Puteți vedea datele nodului 0 și nodului 1 pe ecran, deși sunt la 2 kilometri distanță.

Conectați-vă la contul dvs. ThingSpeak și faceți clic pe canalul pe care l-ați creat, puteți vedea datele de temperatură și umiditate încărcate.

Graficul câmp1 și graficul câmp2 sunt datele privind umiditatea și temperatura nodului Lora 0, iar graficul câmp3 și graficul câmp4 sunt datele privind umiditatea și temperatura nodului Lora 1.

Recomandat: