Meshtastic-guide – Fjärrstyrning av hårdvarumodul

Fjärrstyrd Hårdvarumodul möjliggör läsning, skrivning och övervakning av GPIO-stift på en fjärrnod. Konfigurationsalternativ: Aktiverad.
Observera: För firmwareversioner över 2.5.3 kräver denna modul att du kompilerar din egen firmware och tar bort -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1-byggflaggan från platformio.ini. Även om konfigurationsalternativ för denna modul kan visas i klienter, stöds GPIO-inställning och läsning för närvarande endast via Meshtastic Python CLI.

Konfigurationsparametrar för Fjärrstyrd Hårdvarumodul

Se till att modulen är aktiverad.

Tillgänglighet för Fjärrstyrd Hårdvarumodul i klienter

Android

Alla konfigurationsalternativ för Fjärrstyrd Hårdvarumodul finns i Android-appen. Öppna Meshtastic-appen och gå till Inställningar > Fjärrhårdvara.

Äpple

Alla konfigurationsalternativ för Fjärrstyrd Hårdvarumodul finns i iOS-, iPadOS- och macOS-apparna (version och senare) under Inställningar > Modulkonfiguration > Fjärrhårdvara.

CLI

Alla konfigurationsinställningar för Fjärrstyrd Hårdvarumodul kan hanteras via Python CLI.

Webb

Ej implementerat.

Fjärrstyrd hårdvarumoduloperation

Tips: Att komma åt GPIO-stift medför inneboende risker, eftersom felaktiga inställningar kan skada eller förstöra din hårdvara. Se till att du fullt ut förstår schemat för din specifika enhet innan du fortsätter, eftersom ingen garanti ges. Använd denna funktion på egen risk.

Stödda operationer

Du kan ställa in vilken GPIO som helst, läsa vilken GPIO som helst och ta emot mesh-notifikationer när en GPIO ändrar tillstånd. Observera att snabba övergångar—såsom knapptryckningar—inte kan detekteras; för dessa användningsfall, se modulen Detection Sensor. Resultaten av GPIO-läsningar, liksom notifikationer om GPIO-tillståndsförändringar, publiceras också över MQTT (om aktiverat) i JSON-format (om aktiverat).

Installation

Du kan installera de senaste Python-verktygen och biblioteken genom att köra pip3 install --upgrade meshtasticWindows, Linux eller OS-X. Se Python-avsnittet för ytterligare detaljer.
För att förhindra obehörig åtkomst måste du först skapa en GPIO-kanal som ger autentiserad åtkomst till denna funktion. Denna kanal måste läggas till både på den lokala och fjärranslutna noden, och modulen måste vara aktiverad på båda enheterna.
Stegen med Python-kommandoradsverktyget är följande:
  1. Anslut den lokala enheten via USB
  2. Aktivera Remote Hardware-modulen
 meshtastic --set remote_hardware.enabled true
  1. Skapa en GPIO-kanal:
 meshtastic --ch-add gpio
  1. Verifiera att kanalen har skapats, kopiera sedan den långa “Fullständiga URL:en som inkluderar alla kanaler på enheten.
 meshtastic --info
  1. Anslut den fjärranslutna enheten via USB, eller få åtkomst till den genom nätverket med hjälp av remote admin-funktionen.
  2. Aktivera Remote Hardware-modulen på den fjärranslutna enheten.
 meshtastic --set remote_hardware.enabled true
  1. Konfigurera den fjärranslutna enheten att ansluta till GPIO-kanalen du tidigare skapade.
 meshtastic --seturl theurlyoucopiedinstep3
Båda enheterna bör nu kunna kommunicera via GPIO-kanalen. För att bekräfta, skicka ett textmeddelande från en enhet till den andra. Du kan också köra --nodes för att säkerställa att den andra noden upptäcks.

Masker

En mask används för att specificera vilka GPIO:er som ska styras. För GPIO 1 sätts bit 1 i masken (hexadecimalt 0x2); för GPIO 2 sätts bit 2 i masken (0x4); och så vidare. För att bestämma rätt mask för den/de stift du vill använda kan Python-programmet (och dess utdata) nedan vara till hjälp.
 >>> for i in range(1,45):
...     print(f'GPIO:{i} mask:{hex(2**i)}')
...
GPIO:1 mask:0x2
GPIO:2 mask:0x4
GPIO:3 mask:0x8
GPIO:4 mask:0x10
GPIO:5 mask:0x20
GPIO:6 mask:0x40
GPIO:7 mask:0x80
GPIO:8 mask:0x100
GPIO:9 mask:0x200
GPIO:10 mask:0x400
GPIO:11 mask:0x800
GPIO:12 mask:0x1000
GPIO:13 mask:0x2000
GPIO:14 mask:0x4000
GPIO:15 mask:0x8000
GPIO:16 mask:0x10000
GPIO:17 mask:0x20000
GPIO:18 mask:0x40000
GPIO:19 mask:0x80000
GPIO:20 mask:0x100000
GPIO:21 mask:0x200000
GPIO:22 mask:0x400000
GPIO:23 mask:0x800000
GPIO:24 mask:0x1000000
GPIO:25 mask:0x2000000
GPIO:26 mask:0x4000000
GPIO:27 mask:0x8000000
GPIO:28 mask:0x10000000
GPIO:29 mask:0x20000000
GPIO:30 mask:0x40000000
GPIO:31 mask:0x80000000
GPIO:32 mask:0x100000000
GPIO:33 mask:0x200000000
GPIO:34 mask:0x400000000
GPIO:35 mask:0x800000000
GPIO:36 mask:0x1000000000
GPIO:37 mask:0x2000000000
GPIO:38 mask:0x4000000000
GPIO:39 mask:0x8000000000
GPIO:40 mask:0x10000000000
GPIO:41 mask:0x20000000000
GPIO:42 mask:0x40000000000
GPIO:43 mask:0x80000000000
GPIO:44 mask:0x100000000000

Hantera GPIO:er via Python CLI

Notera: Du kan styra eller övervaka GPIO:erna på din USB-anslutna nod genom att sätta --dest till den lokala nodens ID. I detta fall krävs ingen GPIO-kanal.

Skriver en GPIO

Exempel: slår 'på' GPIO4

 meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058
 # Ansluten till radio
 # Skriver GPIO-mask 0x10 med värde 0x10 till !28979058

Läser en GPIO

Exempel: läser GPIO4
 meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058
 # Ansluten till radio
 # Läser GPIO-mask 0x10 från !28979058
 # GPIO läs svar gpio_value=16
Notera: Om masken och gpio_value matchar, är värdet "". Om gpio_value är 0, är värdet "av".

Bevakar GPIO-förändringar

Exempel: bevakar GPIO4 för förändringar
 meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058
 # Ansluten till radio
 # Övervakar GPIO-mask 0x10 från !28979058
 # Mottog RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
 # Mottog RemoteHardware typ=GPIOS_CHANGED, gpio_value=0
 # Mottog RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
 # < tryck ctrl-c för att avsluta >

Test av GPIO-operationer

Du kan utföra GPIO-operationer direkt från din egen Python-kod genom att använda Meshtastic RemoteHardwareClient-klassen. För ytterligare detaljer, se Python API-dokumentationen.
För att bekräfta att GPIO-operationerna fungerar korrekt kan du ansluta en enkel LED och motstånd som test. Använd den medföljande handledningen som referens.

Krav

  • 2× Meshtastic-enheter (en ansluten till en lokal dator, den andra bara strömsatt och använd för LED-anslutningen)
  • 2× ledningar (vanligtvis svart för jord och gul för signal, men vilka färger som helst kan användas)
  • LED
  • 1× 220 Ω motstånd (valfritt men rekommenderas)
  • 1× breadboard (valfritt)

Förberedelse

  1. Koppla bort den fjärrstyrda enheten från dess strömkälla (batteri eller USB).
  2. Fäst motståndet på den längre (positiva) ledaren på LED-lampan, och anslut sedan den gula ledningen till den andra änden av motståndet.
  3. Anslut den motsatta änden av den gula ledningen till en säker GPIO-pin (till exempel kan du på TLoraV1 använda GPIO21).
  4. Anslut den svarta jordledningen från enhetens jordpinne (på TLoraV1 är detta ändpinnen bredvid RST-knappen) till den kortare (negativa) ledaren på LED-lampan.
  5. Återställ strömmen till enheten.

Validering

Som standard kan en pinne vara antingen "av" eller "på" (oftast "av"). Se stegen nedan för att köra kommandon. Till exempel, när du använder GPIO21, är motsvarande maskvärde 0x200000.

Sidopanel

Bloggkategorier
Senaste inlägg

Denna sektion innehåller för närvarande inget innehåll. Lägg till innehåll i denna sektion med hjälp av sidofältet.

Registrera dig för vårt nyhetsbrev

Få den senaste informationen om våra produkter och specialerbjudanden.