Search Code

DIY-afstandsrelaisproject: 21 kilometer zonder Wi-Fi/zonder SIM Heltec LoRa 32-module

Deze les maakt deel uit van: Introductie tot WiFi LoRa

DIY-afstandsrelaisproject: 21 kilometer zonder Wi-Fi/zonder SIM Heltec LoRa 32-module

Afstandsbediening over lange afstand met LoRa en Heltec WiFi LoRa 32

Stel je voor dat je een ventilator, een lamp, een waterpomp of een beveiligingsalarm kunt bedienen vanaf meer dan 24 kilometer afstand, zonder dat je een simkaart nodig hebt of kosten betaalt. Dit is mogelijk met LoRa-technologie (Long Range), en in deze handleiding laten we je precies zien hoe je zo'n systeem bouwt. We gebruiken de krachtige Heltec WiFi LoRa 32-module, handig geplaatst in de robuuste Meshnology N35-behuizing met een 3000mAh-accu voor langdurig gebruik.

Dit project laat zien hoe je een zender en ontvanger opzet om een belasting op twee manieren te bedienen: een eenvoudige aan/uit-functie en een schakelfunctie. We behandelen de hardwaremontage, bedrading, code-instellingen en tonen een praktische bereiktest.


Componenten en hardware

De kern van ons project bestaat uit een aantal belangrijke componenten die samenwerken voor maximaal bereik en betrouwbaarheid.

  • Heltec WiFi LoRa 32 V3: Dit is een veelzijdige microcontroller met een ingebouwde LoRa-communicatiechip, plus Wi-Fi- en Bluetooth-mogelijkheden. Hij is volledig programmeerbaar zoals een Arduino, zodat we inputs kunnen lezen en outputs kunnen aansturen.
  • Meshnology N35-behuizing en accu: Dit is een duurzame behuizing speciaal ontworpen voor de Heltec-module. Als kit gekocht, inclusief een 3000mAh-accu, essentieel voor langdurige verzending en ontvangst, vooral op afgelegen locaties.
  • Hoogwaardige antenne: Voor het beste mogelijke bereik gebruiken we een hoogwaardige antenne, die de signaalsterkte aanzienlijk verbetert vergeleken met de standaardantenne.
  • Relais of zoemer: Voor de ontvanger kun je een relais aansluiten om hoogvermogen AC- of DC-apparaten zoals ventilatoren en lampen te bedienen, of een eenvoudige zoemer voor alarmtoepassingen.

Hardwaremontage

Het monteren van het geheel is een eenvoudig proces, zoals te zien is in de video vanaf ongeveer 05:56. De N35-kit wordt geleverd met de Heltec-module, de 3000mAh-accu, de behuizing, een antenne met verlengkabel en pinheaders.

De belangrijkste stappen zijn: de knoppen in de behuizing plaatsen, de accukabel erdoorheen leiden, de antenneverlengkabel op de module aansluiten, de module erin plaatsen en de accu aansluiten. Daarna sluit je eenvoudig de behuizing en bevestig je de antennebevestiging aan de buitenkant. Het is vermeldenswaard dat een vroege versie van de behuizing een kleine aanpassing vereiste om de antennebevestiging te laten passen, maar Meshnology heeft dit in nieuwere batches verholpen.


Bedrading voor de belasting van de ontvanger

Aan de ontvangerzijde sluit je je uitvoerapparaat aan. Hieronder staan de bedradingsinstructies voor zowel een relais als een zoemer, zoals gedetailleerd in de video op 11:17.

Een relais bedraden

Een relais fungeert als een elektrisch bediende schakelaar, waarmee je een hoogvermogenbelasting kunt bedienen.

  • De signaalpin van het relais verbind je met pin 4 van de Heltec LoRa-module.
  • De aardingspin van het relais verbind je met een GND-pin op de module.
  • Belangrijk: De VCC-voedingspin van het relais moet worden gevoed door een externe 5V-voeding. De 3.3V-uitgang van de module kan de stroomvereisten van het relais niet betrouwbaar aan.
  • Je moet een gemeenschappelijke aarde creëren door de aarde van de externe voeding te verbinden met de aarde van de Heltec-module. Dit is cruciaal voor de werking van het circuit.
Helte_Wifi_LoRA 32

Een zoemer met een transistor bedraden

Voor een eenvoudig audio-alarm kun je een zoemer gebruiken. Om te voorkomen dat er te veel stroom uit de microcontrollerpin wordt getrokken, gebruiken we een 2N2222 NPN-transistor om deze aan te sturen.

  • Verbind pin 4 van de module met een 1kΩ-weerstand. Het andere uiteinde van de weerstand verbind je met de basis (middelste pin) van de transistor.
  • De emitter van de transistor (linkerpin, met de platte kant naar je toe) verbind je met GND.
  • De collector van de transistor (rechterpin) verbind je met de negatieve (-) aansluiting van de zoemer.
  • De positieve (+) aansluiting van de zoemer verbind je met de 3.3V-pin op de Heltec-module.
Helte_Wifi_LoRA 32 met zoemer

Arduino IDE en bibliotheekinstellingen

Voordat je de code kunt uploaden, moet je de Arduino IDE configureren om met de Heltec-boards te werken. Het proces begint op 14:37 in de video.

  1. ESP32-borden installeren: Ga in de Arduino IDE naar Boards Manager en zoek naar ESP32. Installeer het pakket van Espressif Systems.
  2. Heltec-bord-URL toevoegen: Ga naar Bestand > Voorkeuren. Voeg bij "Additional Boards Manager URLs" de JSON-link voor de Heltec ESP32-serie toe. Deze link wordt verstrekt op de bronnenpagina onder het artikel.
  3. Heltec ESP32-borden installeren: Ga terug naar Boards Manager, zoek naar Heltec ESP32 en installeer het pakket.
  4. Vereiste bibliotheken installeren: Ga naar Bibliotheekbeheer en installeer het volgende:
    • Heltec ESP32 dev boards
    • Adafruit GFX Library (en klik op "Install All" voor de afhankelijkheden)
  5. Robojax-bibliotheek installeren: Download de aangepaste Robojax Heltec LoRa 32 zip-bibliotheek van de bronnenpagina. Ga in de Arduino IDE naar Schets > Bibliotheek gebruiken > .ZIP-bibliotheek toevoegen en selecteer het gedownloade bestand.
  6. Het bord selecteren: Ga ten slotte naar Extra > Bord en selecteer de Heltec WiFi LoRa 32 (V3).

Code-instellingen uitgelegd

We hebben drie verschillende codeschetsen voor dit project: één voor de eenvoudige aan/uit-zender, één voor de toggle-zender en één voor de ontvanger. De bibliotheek handelt de complexe delen af, dus je hoeft slechts een paar instellingen bovenaan elk bestand aan te passen. De uitleg van de code begint bij 19:00 in de video.

Zender (TX) - Eenvoudige aan/uit-code-instellingen

Deze code schakelt het relais alleen in terwijl de knop wordt ingedrukt.

// Tekst om op het OLED-scherm weer te geven
const char *displayTexttitle = "Relais:";
const char *displayTextTX = "(TX)";
const char *displayTextRelayON = "AAN";
const char *displayTextRelayOFF = "UIT";

// Beveiligingssleutel en frequentie (MOET OVEREENKOMEN MET ONTVANGER)
const char *userKey = "6tfDs$wEq3!";
#define RF_FREQUENCY 915555000 

// Zendvermogen (2-21, hoger is sterker)
#define TX_OUTPUT_POWER 14 

Zender (TX) - Toggle-code-instellingen

Deze code schakelt de status van het relais om (van aan naar uit, of van uit naar aan) bij elke druk op de knop.

// Instellen op true voor seriële monitor debugging, false voor normaal gebruik
bool debug = true; 
// De ingebouwde gebruikersknop-pin is 0
#define PUSH_BUTTON_PIN 0  

// Tekst om op het OLED-scherm weer te geven
const char *displayTextTitle = "Relais:";
const char *displayTextTX = "(TX)";
const char *displayTextRelayToggleON = "TOG-AAN";
const char *displayTextRelayToggleOFF = "TOG-UIT";

// Beveiligingssleutel en frequentie (MOET OVEREENKOMEN MET ONTVANGER)
const char *userKey = "6tfDs$wEq3!"; 
#define RF_FREQUENCY 915555000 

// Zendvermogen (2-21)
#define TX_OUTPUT_POWER 2 

Ontvanger (RX) - Code-instellingen

Deze enkele ontvangercode werkt met zowel de eenvoudige als de toggle-zender.

// De pin die is aangesloten op de signaalingang van het relais
#define RELAY_CONTROL_PIN 4

// Tekst om op het OLED-scherm weer te geven
const char *displayTextTitle = "Relais:"; 
const char *displayTextTX = "(RX)"; 
const char *displayTextRelayON = "AAN"; 
const char *displayTextRelayOFF = "UIT"; 
const char *displayTextRelayToggleON = "TOG-AAN"; 
const char *displayTextRelayToggleOFF = "TOG-UIT"; 

// Beveiligingssleutel en frequentie (MOET OVEREENKOMEN MET ZENDER)
const char *userKey = "6tfDs$wEq3!";
#define RF_FREQUENCY 915555000 

Van cruciaal belang is dat de userKey en RF_FREQUENCY identiek moeten zijn op zowel de zender als de ontvanger om te kunnen communiceren.


Demonstratie en 13-mijls bereiktest

Het systeem werkt feilloos in een laboratoriumomgeving, waarbij het relais of de zoemer van de ontvanger onmiddellijk reageert op knopdrukken op de zender. Maar de echte kracht van LoRa is het bereik.

Er werd een langeafstandstest uitgevoerd, zoals te zien is vanaf 25:03. De zender werd ingesteld op een vermogensniveau van 20, uitgerust met een hoogwaardige antenne en op een statief geplaatst op ongeveer 10 meter boven het waterniveau aan de oever van een meer om een duidelijk zicht te garanderen. De ontvanger werd vervolgens naar de andere kant van het meer gebracht.

Het resultaat was een verbluffend succes. Er werd een stabiel signaal ontvangen vanaf een afstand van 13,04 mijl, oftewel 20,98 kilometer. Dit toont aan dat je met de juiste opstelling apparaten betrouwbaar over grote afstanden kunt bedienen, waardoor het perfect is voor toepassingen zoals landbouwmonitoring op afstand, poortbediening of een inbraakalarmsysteem over lange afstand.


Video-tijdstempels

  • 00:00 - Inleiding tot bediening over lange afstand
  • 02:42 - Wat is LoRa?
  • 03:20 - Overzicht van componenten (Heltec, N35-behuizing)
  • 05:56 - Uitpakken en hardwaremontage
  • 11:17 - Bedrading uitgelegd: relais en zoemer
  • 14:37 - Arduino IDE en bibliotheekinstallatie
  • 19:00 - Code-instellingen uitgelegd (TX en RX)
  • 25:03 - Demonstratie en 13-mijls bereiktest
Geen code bijgevoegd.

Bestanden📁

Arduino-bibliotheken (zip)

Andere bestanden