Spisu treści:

Lora Gateway oparta na MicroPython ESP32: 10 kroków (ze zdjęciami)
Lora Gateway oparta na MicroPython ESP32: 10 kroków (ze zdjęciami)

Wideo: Lora Gateway oparta na MicroPython ESP32: 10 kroków (ze zdjęciami)

Wideo: Lora Gateway oparta na MicroPython ESP32: 10 kroków (ze zdjęciami)
Wideo: #112 LoRa / LoRaWAN De-Mystified / Tutorial 2024, Lipiec
Anonim
Brama Lora oparta na MicroPythonie ESP32
Brama Lora oparta na MicroPythonie ESP32
Brama Lora oparta na MicroPythonie ESP32
Brama Lora oparta na MicroPythonie ESP32

Lora jest bardzo popularna w ostatnich latach. Moduł komunikacji bezprzewodowej wykorzystujący tę technologię jest zwykle tani (wykorzystując wolne widmo), niewielkich rozmiarów, energooszczędny i ma dużą odległość komunikacyjną i jest używany głównie do wzajemnej komunikacji między terminalami IoT lub wymiany danych z hostem. Na rynku dostępnych jest wiele modułów LoRa, takich jak RFM96W, który jest wyposażony w bardzo mały chip SX1278 (kompatybilny). Używam go z MakePython ESP32 jako bramą.

Następnie użyję dwóch węzłów LoRa do wysłania danych o temperaturze i wilgotności do bramki, a następnie prześlę je do Internetu przez bramę. Tutaj dowiesz się, jak przesyłać zdalne dane wielu węzłów LoRa do chmury za pośrednictwem bramy.

Krok 1: Materiały eksploatacyjne

Kieszonkowe dzieci
Kieszonkowe dzieci

1 * MakePython ESP32

MakePython ESP32 to płyta ESP32 ze zintegrowanym wyświetlaczem OLED SSD1306.

2 * Radio Maduino LoRa;

Maduino Lora Radio to rozwiązanie IoT (Internet rzeczy) oparte na MCU Atmega328P i module Lora firmy Atmel. Może to być prawdziwy projekt dla projektów IoT (zwłaszcza aplikacji dalekiego zasięgu, małej mocy)

2*DHT11

1 * MakePython Lora

Krok 2: Węzeł LoRa

Węzeł LoRa
Węzeł LoRa
Węzeł LoRa
Węzeł LoRa

To jest schemat Radia Maduino Lora.

Moduł Arduino Lora Radio jako węzeł LoRa, używamy go do przesyłania danych o temperaturze i wilgotności do bramki.

(To WiKi przedstawia sposób korzystania z radia Maduino Lora oraz wysyłania i odbierania danych)

Krok 3: Połączenie węzła i czujnika

Połączenie węzła i czujnika
Połączenie węzła i czujnika
Połączenie węzła i czujnika
Połączenie węzła i czujnika

VCC i GND DHT11 są podłączone do 3V3 i GND Maduino, a pin DATA jest podłączony do D4 Maduino.

Węzeł 0 jest w parku, węzeł 1 jest w biurowcu niedaleko firmy, są od siebie około 2 kilometry, a potem otrzymuję ich dane o temperaturze i wilgotności w domu

Krok 4: Wyślij dane do bramki

Pobierz TransmitterDHT11.ino, otwórz go w Arduino IDE.

Dodając węzeł, zmodyfikuj odpowiednio numer węzła. Na przykład, teraz użyj 2 węzłów, pierwszy węzeł do zmodyfikowania numeru węzła = 0, aby uruchomić program, drugi węzeł do zmodyfikowania numeru węzła = 1, aby uruchomić program, i tak dalej, możesz dodać więcej węzłów.

int16_t numer_pakietu = 0; // licznik pakietów, zwiększamy na xmisję

int16_t numer węzła = 0; //Zmień numer węzła

Zbierz dane i wydrukuj je

Komunikat ciągu ="#"+(Ciąg)nodenum+" Wilgotność:"+(Ciąg)wilgotność+"% Temperatura:"+(Ciąg)temperatura+"C"+" num:"+(Ciąg)numer pakietu;Serial.println(komunikat); numer pakietu++;

Wyślij wiadomość do rf95_server

uint8_t pakiet radiowy[wiadomość.długość()+1];

wiadomość.toCharArray(radioPacket, wiadomość.długość()+1); radioPacket[wiadomość.length()+1]= '\0'; rf95.send((uint8_t *)radioPacket, wiadomość.length()+1);

Otwórz monitor szeregowy, możesz zobaczyć zebrane dane dotyczące temperatury i wilgotności i wysłać je.

#0 Wilgotność:6,00% Temperatura:27,00C num:0

Transmit: Wysyłanie do rf95_server Wysyłanie… Oczekiwanie na zakończenie pakietu… Oczekiwanie na odpowiedź… Brak odpowiedzi, czy w pobliżu jest słuchacz?

Odłóż to na bok, teraz musimy zrobić Lora Gateway.

Krok 5: Stwórz Pythona Lora

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

Jest to odpowiedni pin modułu RFM96W i MakePython ESP32. W celu ułatwienia połączenia z MakePythonem ESP32 wykonałem płytkę drukowaną z modułem RFM96W. Tak, są na nim dwa RFM96W, które mogą jednocześnie wysyłać i odbierać dane, ale teraz potrzebuję tylko jednego.

Krok 6: Brama LoRaWAN

Brama LoRaWAN
Brama LoRaWAN

LoRaWAN to sieć rozległa o niskim poborze mocy oparta na LoRa, która zapewnia: niski pobór mocy, skalowalność, wysoką jakość usług oraz bezpieczną, długodystansową sieć bezprzewodową.

Połącz MakePython Lora i ESP32, aby stworzyć bramę, która może odbierać dane zdalne i przesyłać je do Internetu.

Krok 7: Pobierz kod

Pobierz wszystkie pliki „xxx.py” z WiKi i prześlij je do ESP32.

Otwórz plik LoRaDuplexCallback.py, Musisz dokonać pewnych korekt, aby ESP32 mógł łączyć się z siecią i przesyłać dane na serwer.

Zmodyfikuj API_KEY, który uzyskałeś w ThingSpeak (później przedstawię, jak go uzyskać)

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

API_KEY='UBHIRHVV9THUJVUI'

Zmodyfikuj SSID i PSW, aby połączyć się z Wi-Fi

ssid = "Twórcy"

pswd = "20160704"

Krok 8: Odbierz dane

Znajdź funkcję on_receive (lora, payload) w pliku LoRaDuplexCallback.py, gdzie możesz powiedzieć ESP32, co ma zrobić po otrzymaniu danych. Poniższy kod analizuje i wyświetla odebrane dane dotyczące temperatury i wilgotności.

def on_receive(lora, ładunek):

lora.blink_led() rssi = lora.packetRssi() try: length=len(payload)-1 myStr=str((payload[4:length]), 'utf-8') length1=myStr.find(':') mojaLiczba1=mojaStr[(długość1+1):(długość1+6)] mojaNum2=mojaStr[(długość1+20):(długość1+25)] print("*** Odebrana wiadomość ***\n{}". format(payload)) if config_lora. IS_LORA_OLED: lora.show_packet(("{}".format(payload[4:długość])), rssi) if wlan.isconnected(): global msgCount print('Wysyłanie do sieci…') node = int(str(payload[5:6], 'utf-8')) if node == 0: URL="https://api.thingspeak.com/update?api_key="+API_KEY+"&field1= "+mojaLiczba1+"&field2="+mojaLiczba2 res=urequests.get(URL) print(res.text) elif node == 1: URL="https://api.thingspeak.com/update?api_key="+API_KEY+" &field3="+mojNumer1+"&field4="+mojNumer2 res=urequests.get(URL) print(res.text) z wyjątkiem wyjątku jako e: print(e) print("with RSSI {}\n".format(rssi))

Oceniając liczbę w celu rozróżnienia węzłów i przesyłając dane do Internetu przez adres URL, możemy w dowolnym momencie monitorować zdalne dane różnych węzłów. Możesz dodać więcej węzłów i wprowadzić podobne zmiany w kodzie.

jeśli węzeł == 0:

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

Krok 9: Użyj ThingSpeak IoT

Użyj ThingSpeak IoT
Użyj ThingSpeak IoT
Użyj ThingSpeak IoT
Użyj ThingSpeak IoT
Użyj ThingSpeak IoT
Użyj ThingSpeak IoT

Kroki:

  1. Zarejestruj konto na https://thingspeak.com/. Jeśli już go masz, zaloguj się bezpośrednio.
  2. Kliknij Nowy kanał, aby utworzyć nowy kanał ThingSpeak.
  3. Nazwa wejścia, Opis, Wybierz pole 1. Następnie zapisz kanał na dole.
  4. Kliknij opcję API Keys, skopiuj API Key, użyjemy go w programie.

Krok 10: Wynik

Wynik
Wynik
Wynik
Wynik
Wynik
Wynik

Możesz zobaczyć dane węzła 0 i węzła 1 na ekranie, mimo że są od siebie oddalone o 2 kilometry.

Zaloguj się na swoje konto ThingSpeak i kliknij utworzony kanał, aby zobaczyć przesłane dane dotyczące temperatury i wilgotności.

Wykres pola 1 i wykres pola 2 to dane dotyczące wilgotności i temperatury węzła Lora 0, a wykres pola 3 i wykres pola 4 to dane wilgotności i temperatury węzła Lora 1.

Zalecana: