Code zoeken

13 Miles 20km zonder WiFi? Hoe LoRa spanning over krankzinnige afstanden stuurde! (Heltec WiFi LoRa 32 V3)

Deze les maakt deel uit van: Introductie tot WiFi LoRa

13 Miles 20km zonder WiFi? Hoe LoRa spanning over krankzinnige afstanden stuurde! (Heltec WiFi LoRa 32 V3)

Bouw een 13-mijl Off-Grid Spanningsmonitor met LoRa en ESP32

Heb je ooit een afgelegen stroombron moeten bewaken, zoals een zonnepaneel bij een hut, een accubank op een boot of apparatuur op een grote boerderij, op kilometers afstand? Deze projectgids leidt je door het bouwen van een langeafstands-, off-grid spanningsmonitor die gegevens kan verzenden over een ongelooflijke 13 mijl (of 21 kilometer), zonder abonnementskosten of afhankelijkheid van Wi-Fi of mobiele netwerken.

We gebruiken twee Heltec WiFi LoRa 32-modules, elk gehuisvest in een robuuste Meshnology N32-behuizing met een 3000mAh-accu, om een zender en een ontvanger te maken. De zender meet een doelspanning (van een paar volt tot 100V of meer) met behulp van een eenvoudige spanningsdelerschakeling en verzendt de meting draadloos via LoRa. De ontvanger geeft deze spanning vervolgens in realtime weer, zodat je je systemen op kilometers afstand kunt bewaken.


Hoe het werkt: de spanningsdeler

De kern van dit project is het vermogen om een breed scala aan spanningen te meten. Omdat de ingangspinnen van de ESP32 alleen veilig spanningen tot 3,3V kunnen meten, kunnen we een 12V- of 100V-bron niet direct aansluiten. Om dit op te lossen gebruiken we een eenvoudige schakeling, een spanningsdeler genaamd, die de spanning verlaagt naar een veilig niveau voor de microcontroller om te lezen. Dit wordt uitgelegd in de video op 12:26.

De schakeling gebruikt twee weerstanden (R1 en R2) in serie. De hoogspanningsbron (Vin) wordt over beide weerstanden aangelegd, en de ESP32 leest de lagere, proportionele spanning (Vout) over alleen de R2-weerstand. Met de juiste weerstandswaarden kun je zeer hoge spanningen nauwkeurig meten.

Circuitschema van een spanningsdeler met R1- en R2-weerstanden.

Bij het kiezen van je weerstanden is een goede vuistregel om waarden te selecteren die de uitgangsspanning ruim onder de 3,3V-limiet houden, zelfs bij het meten van de maximale spanning die je verwacht. Voor de beste nauwkeurigheid moet je de werkelijke weerstand van je weerstanden meten met een multimeter en die precieze waarden in de code gebruiken.

Formules voor het berekenen van de uitgangs- en ingangsspanning van een spanningsdeler.

Hardwaremontage en bedrading

De montage omvat het plaatsen van de Heltec LoRa 32-module en de 3000mAh-accu in de N32-behuizing. De behuizing heeft uitsparingen voor het scherm en de knoppen, en een gat voor de externe antennemontage. Een van de belangrijkste veiligheidsopmerkingen is om altijd de antenne aangesloten te hebben voordat je het apparaat inschakelt, omdat verzenden zonder antenne de LoRa-module kan beschadigen.

Hoofdbedradingsschema met spanningsdeler aangesloten op ESP32 en accu.
Foto van de daadwerkelijke projectbedrading met weerstanden en draden aangesloten.
Foto van het OLED-scherm van de zender met een 30V-meting.

Arduino IDE & bibliotheekinstelling

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

Om de Heltec-modules te programmeren, moet je eerst je Arduino IDE configureren. Deze eenmalige instelling is cruciaal en wordt gedetailleerd uitgelegd op 20:41 in de video.

  1. ESP32-boards installeren: Voeg de officiële Espressif ESP32-boards-URL toe in Bestand > Voorkeuren en installeer het "esp32"-pakket via de Boards Manager. 
  2. Heltec-ondersteuning installeren: Voeg de Heltec-specifieke JSON-URL toe aan je voorkeuren. Zoek vervolgens in de Boards Manager naar "Heltec ESP32" en installeer dit pakket.
  3. Vereiste bibliotheken installeren: Gebruik de Bibliotheekbeheer (Sketch > Bibliotheek gebruiken > Bibliotheken beheren) en installeer het volgende:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (en de afhankelijkheden)
  4. Robojax-bibliotheek installeren: Je moet de aangepaste Robojax_HeltecLoRa32-bibliotheek downloaden, die als .zip-bestand wordt geleverd. Installeer deze in de IDE via Sketch > Bibliotheek gebruiken > .ZIP-bibliotheek toevoegen.
  5. Het board selecteren: Ga ten slotte naar Extra > Board en selecteer de Heltec WiFi LoRa 32 (V3) en de juiste COM-poort.

Codeconfiguratie uitgelegd

Het project gebruikt twee afzonderlijke sketches: één voor de zender (TX) en één voor de ontvanger (RX). Je hoeft slechts een paar belangrijke instellingen in de zendercode te configureren om het te laten werken, zoals uitgelegd op 25:02. De ontvangercode vereist overeenkomende LoRa-instellingen.


#define VOLTAGE_READING_PIN 4  // De pin die de spanning leest
const int R1 = 39120; // Uw gemeten waarde voor R1 in ohm
const int R2 = 3312; // Uw gemeten waarde voor R2 in ohm

const float CALIB_FACTOR = 1.007f; // Kalibratiefactor om overeen te komen met een multimeter

const char *displayTexttitle = "Spanning:"; // Tekst voor de OLED
const char *displayTexTX = "(TX)";

// Deze beveiligingssleutel MOET IDENTIEK zijn op de TX- en RX-apparaten
const char *userKey = "YOUR_SECRE8888";

// Deze LoRa-instellingen MOETEN IDENTIEK zijn op de TX- en RX-apparaten
#define RF_FREQUENCY      915000000 // LoRa-frequentie in Hz
#define TX_OUTPUT_POWER   2         // TX-vermogen in dBm (2-21)
  • VOLTAGE_READING_PIN: De GPIO-pin op de ESP32 die u hebt aangesloten op uw spanningsdelersuitgang.
  • R1 en R2: Voer de exacte weerstandswaarden in van uw twee weerstanden zoals gemeten met een multimeter. Dit is cruciaal voor nauwkeurigheid.
  • CALIB_FACTOR: Als uw weergegeven spanning enigszins afwijkt van een betrouwbare multimeter, kunt u deze waarde naar boven of beneden aanpassen (bijv. 1.008 of 0.995) om de meting fijn af te stemmen. Stel deze in op 1.0 om uit te schakelen.
  • userKey: Dit is uw privébeveiligingssleutel. Alleen apparaten met exact dezelfde sleutel kunnen communiceren.
  • RF_FREQUENCY: De werkfrequentie voor LoRa. Deze moet op beide apparaten overeenkomen en legaal zijn voor uw regio (bijv. 915 MHz voor Noord-Amerika).
  • TX_OUTPUT_POWER: Het zendvermogen, van 2 (laag vermogen, kort bereik) tot 21 (hoog vermogen, lang bereik). Hoger vermogen verbruikt meer batterij. Voor de 13-mijlstest werd een waarde van 20 gebruikt. Voor testen op uw bureau is 2 voldoende.

De ontvangercode heeft vergelijkbare instellingen voor userKey en RF_FREQUENCY die moeten overeenkomen met de instellingen van de zender.


Live project in actie

Zodra de code is geüpload, begint de zendereenheid de spanning van uw aangesloten bron te meten, geeft deze weer op zijn eigen OLED-scherm met een "(TX)"-indicator en verzendt de gegevens via LoRa. De ontvangereenheid, wanneer geprogrammeerd met de overeenkomende beveiligingssleutel en frequentie, luistert naar het signaal. Zodra deze een geldige verzending ontvangt, geeft deze de identieke spanning weer op zijn scherm met een "(RX)"-indicator.

Zoals gedemonstreerd in de langeafstandstest op 31:39, is deze opstelling buitengewoon effectief. Met hoogwaardige antennes en een vrij zichtlijn verzond en ontving het systeem met succes nauwkeurige spanningsmetingen vanaf 13 mijl afstand, wat bewijst dat het een robuuste en betrouwbare oplossing is voor serieuze taken op afstand.


Video-hoofdstukken

  • 00:00 - Start
  • 03:33 - Introductie tot het bord en LoRa
  • 05:47 - N32-behuizing voor WiFi LoRa 32
  • 12:26 - Spanningsdeler om tot 150V te meten
  • 19:47 - Draad voorbereiden om spanning te meten
  • 20:41 - Bibliotheek installeren voor WiFi LoRa 32
  • 25:02 - Verzendcode uitgelegd
  • 27:16 - Ontvangstcode uitgelegd
  • 28:36 - Demonstratie van het lezen van spanning
  • 31:39 - Real-world afstandsbereiktest (13 mijl)
Geen code bijgevoegd.

Bestanden📁

Arduino-bibliotheken (zip)

Andere bestanden