Soek Kode

13 Myl 20km sonder WiFi? Hoe LoRa spanning oor gekke afstande gestuur het! (Heltec WiFi LoRa 32 V3)

Hierdie les is deel van: Inleiding tot WiFi LoRa

13 Myl 20km sonder WiFi? Hoe LoRa spanning oor gekke afstande gestuur het! (Heltec WiFi LoRa 32 V3)

Bou 'n 13-Myl-Buite-netwerk Spanningsmonitor met LoRa en ESP32

Het jy al ooit 'n afgeleë kragbron, soos 'n sonpaneel by 'n hut, 'n batterybank op 'n boot, of toerusting op 'n groot plaas, van kilometers ver moet monitor? Hierdie projekgids sal jou deur die bou van 'n langafstand-, buite-netwerk spanningsmonitor lei wat data tot 'n ongelooflike 13 myl (of 21 kilometer) kan stuur, sonder intekengelde of afhanklikheid van Wi-Fi of sellulêre netwerke.

Ons sal twee Heltec WiFi LoRa 32-modules gebruik, elk gehuisves in 'n robuuste Meshnology N32-kas met 'n 3000mAh-battery, om 'n sender en 'n ontvanger te skep. Die sender sal 'n teikenspanning (van 'n paar volt tot 100V of meer) meet met behulp van 'n eenvoudige spanningsverdelerkring en die lesing draadloos via LoRa stuur. Die ontvanger sal dan hierdie spanning intyds vertoon, sodat jy jou stelsels van kilometers af kan monitor.


Hoe Dit Werk: Die Spanningsverdeler

Die kern van hierdie projek is die vermoë om 'n wye reeks spannings te meet. Aangesien die ESP32 se insetpenne slegs spannings tot 3.3V veilig kan meet, kan ons nie 'n 12V- of 100V-bron direk koppel nie. Om dit op te los, gebruik ons 'n eenvoudige kring genaamd 'n spanningsverdeler, wat die spanning afskaal na 'n veilige vlak vir die mikrobeheerder om te lees. Dit word in die video by 12:26 verduidelik.

Die kring gebruik twee resistors (R1 en R2) wat in serie gekoppel is. Die hoëspanningsbron (Vin) word oor beide resistors toegepas, en die ESP32 lees die laer, proporsionele spanning (Vuit) oor slegs die R2-resistor. Met die regte resistorwaardes kan jy baie hoë spannings akkuraat meet.

Kringdiagram van 'n spanningsverdeler met R1- en R2-resistors.

Wanneer jy jou resistors kies, is 'n goeie reël om waardes te kies wat die uitsetspanning goed onder die 3.3V-limiet hou, selfs wanneer jy die maksimum spanning wat jy verwag, meet. Vir die beste akkuraatheid moet jy die werklike weerstand van jou resistors met 'n multimeter meet en daardie presiese waardes in die kode gebruik.

Formules vir die berekening van spanningsverdeler-uitset- en insetspannings.

Hardeware-montering en Bedrading

Die montering behels die plasing van die Heltec LoRa 32-module en die 3000mAh-battery binne die N32-kas. Die kas het uitsnyings vir die skerm en knoppies, en 'n gaatjie vir die eksterne antenna-montering. Een van die belangrikste veiligheidsnotas is om altyd die antenna gekoppel te hê voordat die toestel aangeskakel word, aangesien uitsending sonder 'n antenna die LoRa-module kan beskadig.

Hoofbedradingsdiagram wat spanningsverdeler aan ESP32 en battery gekoppel toon.
Foto van die werklike projekbedrading met resistors en drade gekoppel.
Foto van die sender se OLED-skerm wat 'n 30V-meting vertoon.

Arduino IDE & Biblioteek-opstelling

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

Om die Heltec-modules te programmeer, moet jy eers jou Arduino IDE opstel. Hierdie eenmalige opstelling is noodsaaklik en word by 20:41 in die video in detail beskryf.

  1. Installeer ESP32-borde: Voeg die amptelike Espressif ESP32-borde-URL by File > Preferences en installeer die "esp32"-pakket vanaf die Boards Manager. 
  2. Installeer Heltec-ondersteuning: Voeg die Heltec-spesifieke JSON-URL by jou voorkeure. Soek dan in die Boards Manager na en installeer die "Heltec ESP32"-pakket.
  3. Installeer Vereiste Biblioteke: Gebruik die Biblioteekbestuurder (Sketch > Include Library > Manage Libraries) en installeer die volgende:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (en sy afhanklikhede)
  4. Installeer Robojax-biblioteek: Jy sal die pasgemaakte Robojax_HeltecLoRa32-biblioteek moet aflaai, wat as 'n .zip-lêer verskaf word. Installeer dit in die IDE via Sketch > Include Library > Add .ZIP Library.
  5. Kies die Bord: Gaan uiteindelik na Tools > Board en kies die Heltec WiFi LoRa 32 (V3) en die korrekte COM-poort.

Kode-konfigurasie Verduidelik

Die projek gebruik twee afsonderlike sketse: een vir die Sender (TX) en een vir die Ontvanger (RX). Jy hoef slegs 'n paar sleutelinstellings in die senderkode te konfigureer vir dit om te werk, soos by 25:02 verduidelik. Die ontvangerkode vereis ooreenstemmende LoRa-instellings.


#define VOLTAGE_READING_PIN 4  // Die pen wat die spanning lees
const int R1 = 39120; // Jou gemete waarde vir R1 in ohm
const int R2 = 3312; // Jou gemete waarde vir R2 in ohm

const float CALIB_FACTOR = 1.007f; // Kalibrasiefaktor om met 'n multimeter te pas

const char *displayTexttitle = "Spanning:"; // Teks vir die OLED
const char *displayTexTX = "(TX)";

// Hierdie sekuriteitsleutel MOET IDENTIES wees op die TX- en RX-toestelle
const char *userKey = "YOUR_SECRE8888";

// Hierdie LoRa-instellings MOET IDENTIES wees op die TX- en RX-toestelle
#define RF_FREQUENCY      915000000 // LoRa-frekwensie in Hz
#define TX_OUTPUT_POWER   2         // TX-krag in dBm (2-21)
  • VOLTAGE_READING_PIN: Die GPIO-pen op die ESP32 waaraan jy jou spanningsverdeler-uitset gekoppel het.
  • R1 en R2: Voer die presiese weerstandswaardes van jou twee resistors in soos deur 'n multimeter gemeet. Dit is noodsaaklik vir akkuraatheid.
  • CALIB_FACTOR: As jou vertoonde spanning effens afwyk van 'n betroubare multimeter, kan jy hierdie waarde op of af verstel (bv. 1.008 of 0.995) om die lesing fyn in te stel. Stel dit op 1.0 om dit te deaktiveer.
  • userKey: Dit is jou privaat sekuriteitsleutel. Slegs toestelle met presies dieselfde sleutel kan kommunikeer.
  • RF_FREQUENCY: Die werkfrekwensie vir LoRa. Dit moet op beide toestelle ooreenstem en wettig wees vir jou streek (bv. 915MHz vir Noord-Amerika).
  • TX_OUTPUT_POWER: Die transmissiekrag, van 2 (lae krag, kortafstand) tot 21 (hoë krag, langafstand). Hoër krag gebruik meer battery. Vir die 13-myl-toets is 'n waarde van 20 gebruik. Vir toetsing op jou lessenaar is 2 voldoende.

Die ontvangerkode het soortgelyke instellings vir userKey en RF_FREQUENCY wat met die sender se instellings moet ooreenstem.


Lewende Projek in Aksie

Sodra die kode opgelaai is, sal die sendereenheid begin om die spanning van jou gekoppelde bron te meet, dit op sy eie OLED-skerm met 'n "(TX)"-aanwyser vertoon, en die data via LoRa uitsaai. Die ontvangerseenheid, wanneer dit met die ooreenstemmende sekuriteitsleutel en frekwensie geprogrammeer is, sal na die sein luister. Sodra dit 'n geldige uitsending ontvang, sal dit die identiese spanning op sy skerm met 'n "(RX)"-aanwyser vertoon.

Soos gedemonstreer in die langafstandtoets by 31:39, is hierdie opstelling ongelooflik effektief. Met hoë-wins antennas en 'n duidelike siglyn, het die stelsel suksesvol akkurate spanningslesings van 13 myl af gestuur en ontvang, wat bewys dat dit 'n robuuste en betroubare oplossing is vir ernstige afstandmoniteringstake.


Video-hoofstukke

  • 00:00 - Begin
  • 03:33 - Inleiding tot die bord en LoRa
  • 05:47 - N32-kas vir WiFi LoRa 32
  • 12:26 - Spanningsverdeler om tot 150V te meet
  • 19:47 - Voorbereiding van draad om spanning te meet
  • 20:41 - Installeer biblioteek vir WiFi LoRa 32
  • 25:02 - Transmissiekode verduidelik
  • 27:16 - Ontvangerkode verduidelik
  • 28:36 - Demonstrasie van spanningslesing
  • 31:39 - Werklike wêreld afstandtoets (13 myl)
Geen kode aangeheg.

Lêers📁

Arduino Biblioteke (zip)

Ander lêers