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 meshtastic på Windows, 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:
-
Anslut den lokala enheten via USB
-
Aktivera Remote Hardware-modulen
| meshtastic --set remote_hardware.enabled true |
-
Skapa en GPIO-kanal:
| meshtastic --ch-add gpio |
-
Verifiera att kanalen har skapats, kopiera sedan den långa “Fullständiga URL:en” som inkluderar alla kanaler på enheten.
| meshtastic --info |
-
Anslut den fjärranslutna enheten via USB, eller få åtkomst till den genom nätverket med hjälp av remote admin-funktionen.
-
Aktivera Remote Hardware-modulen på den fjärranslutna enheten.
| meshtastic --set remote_hardware.enabled true |
-
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 |
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 "på". 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)
-
1× LED
-
1× 220 Ω motstånd (valfritt men rekommenderas)
-
1× breadboard (valfritt)
Förberedelse
-
Koppla bort den fjärrstyrda enheten från dess strömkälla (batteri eller USB).
-
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.
-
Anslut den motsatta änden av den gula ledningen till en säker GPIO-pin (till exempel kan du på TLoraV1 använda GPIO21).
-
Anslut den svarta jordledningen från enhetens jordpinne (på TLoraV1 är detta ändpinnen bredvid RST-knappen) till den kortare (negativa) ledaren på LED-lampan.
-
Å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.

