Szukaj kodu

13 Mil 20 km bez WiFi? Jak LoRa przesłało napięcie na szalone odległości! (Heltec WiFi LoRa 32 V3)

Ta lekcja jest częścią: Wprowadzenie do Wi-Fi LoRa

13 Mil 20 km bez WiFi? Jak LoRa przesłało napięcie na szalone odległości! (Heltec WiFi LoRa 32 V3)

Zbuduj 13-milowy monitor napięcia poza siecią z LoRa i ESP32

Czy kiedykolwiek musiałeś monitorować zdalne źródło zasilania, takie jak panel słoneczny w domku, bank baterii na łodzi lub sprzęt na dużej farmie, z odległości wielu kilometrów? Ten przewodnik projektowy przeprowadzi Cię przez budowę długozasięgowego monitora napięcia poza siecią, który może przesyłać dane na niewiarygodne 13 mil (lub 21 kilometrów), bez opłat abonamentowych i bez polegania na Wi-Fi lub sieciach komórkowych.

Użyjemy dwóch modułów Heltec WiFi LoRa 32, każdy umieszczony w wytrzymałej obudowie Meshnology N32 z baterią 3000mAh, aby stworzyć nadajnik i odbiornik. Nadajnik będzie mierzyć docelowe napięcie (od kilku woltów do 100V lub więcej) za pomocą prostego dzielnika napięcia i wysyłać odczyt bezprzewodowo za pomocą LoRa. Odbiornik będzie następnie wyświetlać to napięcie w czasie rzeczywistym, umożliwiając monitorowanie systemów z odległości wielu kilometrów.


Jak to działa: Dzielnik napięcia

Sednem tego projektu jest możliwość pomiaru szerokiego zakresu napięć. Ponieważ piny wejściowe ESP32 mogą bezpiecznie mierzyć napięcia tylko do 3,3V, nie możemy podłączyć źródła 12V lub 100V bezpośrednio. Aby to rozwiązać, używamy prostego obwodu zwanego dzielnikiem napięcia, który obniża napięcie do bezpiecznego poziomu dla mikrokontrolera. Jest to wyjaśnione na filmie w czasie 12:26.

Obwód używa dwóch rezystorów (R1 i R2) połączonych szeregowo. Źródło wysokiego napięcia (Vin) jest podłączone do obu rezystorów, a ESP32 odczytuje niższe, proporcjonalne napięcie (Vout) tylko na rezystorze R2. Przy odpowiednich wartościach rezystorów można dokładnie mierzyć bardzo wysokie napięcia.

Schemat obwodu dzielnika napięcia z rezystorami R1 i R2.

Wybierając rezystory, dobrą zasadą jest dobranie wartości, które utrzymają napięcie wyjściowe znacznie poniżej limitu 3,3V, nawet podczas pomiaru maksymalnego spodziewanego napięcia. Dla najlepszej dokładności należy zmierzyć rzeczywistą rezystancję rezystorów multimetrem i użyć tych dokładnych wartości w kodzie.

Wzory do obliczania napięcia wyjściowego i wejściowego dzielnika napięcia.

Montaż sprzętu i okablowanie

Montaż polega na umieszczeniu modułu Heltec LoRa 32 i baterii 3000mAh wewnątrz obudowy N32. Obudowa ma wycięcia na ekran i przyciski oraz otwór na zewnętrzny montaż anteny. Jedną z najważniejszych uwag dotyczących bezpieczeństwa jest to, aby zawsze mieć podłączoną antenę przed włączeniem urządzenia, ponieważ nadawanie bez anteny może uszkodzić moduł LoRa.

Główny schemat okablowania pokazujący dzielnik napięcia podłączony do ESP32 i baterii.
Zdjęcie rzeczywistego okablowania projektu z podłączonymi rezystorami i przewodami.
Zdjęcie ekranu OLED nadajnika wyświetlającego pomiar 30V.

Konfiguracja Arduino IDE i bibliotek

https://resource.heltec.cn/download/package_heltec_esp32_index.json

Aby zaprogramować moduły Heltec, musisz najpierw skonfigurować swoje Arduino IDE. Ta jednorazowa konfiguracja jest kluczowa i została szczegółowo opisana w czasie 20:41 na filmie.

  1. Zainstaluj płyty ESP32: Dodaj oficjalny adres URL płyt Espressif ESP32 w Plik > Preferencje i zainstaluj pakiet "esp32" z Menedżera płyt. 
  2. Zainstaluj wsparcie Heltec: Dodaj adres URL JSON specyficzny dla Heltec do swoich preferencji. Następnie w Menedżerze płyt wyszukaj i zainstaluj pakiet "Heltec ESP32".
  3. Zainstaluj wymagane biblioteki: Korzystając z Menedżera bibliotek (Szkic > Dołącz bibliotekę > Zarządzaj bibliotekami), zainstaluj następujące:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (i jej zależności)
  4. Zainstaluj bibliotekę Robojax: Będziesz musiał pobrać niestandardową bibliotekę Robojax_HeltecLoRa32, która jest dostarczana jako plik .zip. Zainstaluj ją w IDE przez Szkic > Dołącz bibliotekę > Dodaj bibliotekę .ZIP.
  5. Wybierz płytę: Na koniec przejdź do Narzędzia > Płyta i wybierz Heltec WiFi LoRa 32 (V3) oraz właściwy port COM.

Wyjaśnienie konfiguracji kodu

Projekt używa dwóch oddzielnych szkiców: jednego dla nadajnika (TX) i jednego dla odbiornika (RX). Musisz skonfigurować tylko kilka kluczowych ustawień w kodzie nadajnika, aby działał, jak wyjaśniono w czasie 25:02. Kod odbiornika wymaga dopasowanych ustawień LoRa.


#define VOLTAGE_READING_PIN 4  // Pin odczytujący napięcie
const int R1 = 39120; // Zmierzona wartość R1 w omach
const int R2 = 3312; // Zmierzona wartość R2 w omach

const float CALIB_FACTOR = 1.007f; // Współczynnik kalibracji do dopasowania do multimetru

const char *displayTexttitle = "Napięcie:"; // Tekst dla OLED
const char *displayTexTX = "(TX)";

// Ten klucz bezpieczeństwa MUSI być IDENTYCZNY na urządzeniach TX i RX
const char *userKey = "YOUR_SECRE8888";

// Te ustawienia LoRa MUSZĄ być IDENTYCZNE na urządzeniach TX i RX
#define RF_FREQUENCY      915000000 // Częstotliwość LoRa w Hz
#define TX_OUTPUT_POWER   2         // Moc TX w dBm (2-21)
  • VOLTAGE_READING_PIN: Pin GPIO na ESP32, do którego podłączyłeś wyjście dzielnika napięcia.
  • R1 i R2: Wprowadź dokładne wartości rezystancji swoich dwóch rezystorów zmierzone multimetrem. Jest to kluczowe dla dokładności.
  • CALIB_FACTOR: Jeśli wyświetlane napięcie nieznacznie odbiega od zaufanego multimetru, możesz dostosować tę wartość w górę lub w dół (np. 1.008 lub 0.995), aby precyzyjnie skalibrować odczyt. Ustaw na 1.0, aby wyłączyć.
  • userKey: To Twój prywatny klucz bezpieczeństwa. Tylko urządzenia z dokładnie tym samym kluczem mogą się komunikować.
  • RF_FREQUENCY: Częstotliwość robocza dla LoRa. Musi być taka sama na obu urządzeniach i zgodna z prawem w Twoim regionie (np. 915 MHz dla Ameryki Północnej).
  • TX_OUTPUT_POWER: Moc transmisji, od 2 (niska moc, krótki zasięg) do 21 (wysoka moc, długi zasięg). Wyższa moc zużywa więcej baterii. Do testu na 13 mil użyto wartości 20. Do testów na biurku wystarczy 2.

Kod odbiornika ma podobne ustawienia dla userKey i RF_FREQUENCY, które muszą być zgodne z ustawieniami nadajnika.


Projekt na żywo w działaniu

Po wgraniu kodu jednostka nadajnika zacznie mierzyć napięcie z podłączonego źródła, wyświetlając je na własnym ekranie OLED ze wskaźnikiem "(TX)" i przesyłając dane przez LoRa. Jednostka odbiornika, zaprogramowana z pasującym kluczem bezpieczeństwa i częstotliwością, będzie nasłuchiwać sygnału. Gdy tylko odbierze prawidłową transmisję, wyświetli identyczne napięcie na swoim ekranie ze wskaźnikiem "(RX)".

Jak pokazano w teście dalekiego zasięgu na 31:39, ta konfiguracja jest niezwykle skuteczna. Przy antenach o wysokim zysku i czystej linii widzenia system z powodzeniem transmitował i odbierał dokładne odczyty napięcia z odległości 13 mil, co dowodzi, że jest to solidne i niezawodne rozwiązanie do poważnych zadań zdalnego monitorowania.


Rozdziały wideo

  • 00:00 - Start
  • 03:33 - Wprowadzenie do płyty i LoRa
  • 05:47 - Obudowa N32 dla WiFi LoRa 32
  • 12:26 - Dzielnik napięcia do pomiaru do 150V
  • 19:47 - Przygotowanie przewodu do pomiaru napięcia
  • 20:41 - Instalacja biblioteki dla WiFi LoRa 32
  • 25:02 - Wyjaśnienie kodu transmisji
  • 27:16 - Wyjaśnienie kodu odbiornika
  • 28:36 - Demonstracja odczytu napięcia
  • 31:39 - Test zasięgu w rzeczywistych warunkach (13 mil)
Brak załączonego kodu.

Pliki📁

Biblioteki Arduino (zip)

Inne pliki