Zdalny Moduł Sprzętowy umożliwia odczyt, zapis i monitorowanie pinów GPIO na zdalnym węźle. Opcja konfiguracji: Włączony.
Uwaga: Dla wersji firmware powyżej 2.5.3, ten moduł wymaga samodzielnego kompilowania firmware i usunięcia flagi kompilacji -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 z platformio.ini. Chociaż opcje konfiguracji tego modułu mogą pojawiać się w klientach, ustawianie i odczyt GPIO są obecnie obsługiwane tylko przez Meshtastic Python CLI.
Parametry konfiguracji Zdalnego Sprzętu
Upewnij się, że moduł jest włączony.
Dostępność Zdalnego Modułu Sprzętowego w klientach
Android
Wszystkie opcje konfiguracyjne Zdalnego Modułu Sprzętowego są dostępne w aplikacji na Androida. Otwórz aplikację Meshtastic i przejdź do Ustawienia > Zdalny sprzęt.
Jabłko
Wszystkie opcje konfiguracyjne Zdalnego Modułu Sprzętowego są dostępne w aplikacjach iOS, iPadOS i macOS (wersja i wyższe) w Ustawienia > Konfiguracja modułu > Zdalny sprzęt.
CLI
Wszystkie ustawienia konfiguracyjne Zdalnego Modułu Sprzętowego można zarządzać za pomocą Python CLI.
Sieć
Nie zaimplementowano.
Zdalna obsługa modułu sprzętowego
Wskazówka: Dostęp do pinów GPIO niesie ze sobą ryzyko, ponieważ nieprawidłowe ustawienia mogą uszkodzić lub zniszczyć Twój sprzęt. Upewnij się, że dokładnie rozumiesz schemat swojego konkretnego urządzenia przed kontynuowaniem, ponieważ nie jest udzielana żadna gwarancja. Korzystaj z tej funkcji na własne ryzyko.
Obsługiwane operacje
Możesz ustawić dowolny GPIO, odczytać dowolny GPIO i otrzymywać powiadomienia mesh za każdym razem, gdy stan GPIO się zmienia. Zauważ, że szybkie przejścia — takie jak naciśnięcia przycisków — nie mogą być wykryte; w takich przypadkach odwołaj się do modułu czujnika detekcji. Wyniki odczytów GPIO, jak również powiadomienia o zmianach stanu GPIO, są również publikowane przez MQTT (jeśli jest włączone) w formacie JSON (jeśli jest włączone).
Konfiguracja
Możesz zainstalować najnowsze narzędzia Python i biblioteki, uruchamiając pip3 install --upgrade meshtastic na Windows, Linux lub OS-X. Zapoznaj się z sekcją Python, aby uzyskać dodatkowe informacje.
Aby zapobiec nieautoryzowanemu dostępowi, musisz najpierw utworzyć kanał GPIO, który zapewnia uwierzytelniony dostęp do tej funkcji. Ten kanał musi być dodany do obu węzłów, lokalnego i zdalnego, a moduł musi być włączony na obu urządzeniach.
Kroki przy użyciu narzędzia wiersza poleceń Python są następujące:
-
Połącz lokalne urządzenie przez USB
-
Włącz moduł Zdalnego Sprzętu
| meshtastic --set remote_hardware.enabled true |
-
Utwórz kanał GPIO:
-
Sprawdź, czy kanał został utworzony, a następnie skopiuj długi „Pełny URL”, który zawiera wszystkie kanały na urządzeniu.
-
Połącz zdalne urządzenie przez USB lub uzyskaj do niego dostęp przez sieć mesh, korzystając z funkcji remote admin.
-
Włącz moduł Zdalnego Sprzętu na zdalnym urządzeniu.
| meshtastic --set remote_hardware.enabled true |
-
Skonfiguruj zdalne urządzenie, aby dołączyło do kanału GPIO, który wcześniej utworzyłeś.
| meshtastic --seturl adresurlskopiowanywkroku3 |
Oba urządzenia powinny teraz móc komunikować się przez kanał GPIO. Aby to potwierdzić, wyślij wiadomość tekstową z jednego urządzenia do drugiego. Możesz także uruchomić --nodes aby upewnić się, że drugi węzeł zostanie wykryty.
Maski
Maska jest używana do określenia, które GPIO mają być kontrolowane. Dla GPIO 1, bit 1 maski jest ustawiony (szesnastkowo 0x2); dla GPIO 2, bit 2 maski jest ustawiony (0x4); i tak dalej. Aby określić właściwą maskę dla pinu(ów), które chcesz użyć, program Python (i jego wynik) pokazany poniżej może być pomocny.
>>> for i in range(1,45): ... print(f'GPIO:{i} maska:{hex(2**i)}') ... GPIO:1 maska:0x2 GPIO:2 maska:0x4 GPIO:3 maska:0x8 GPIO:4 maska:0x10 GPIO:5 maska:0x20 GPIO:6 maska:0x40 GPIO:7 maska:0x80 GPIO:8 maska:0x100 GPIO:9 maska:0x200 GPIO:10 maska:0x400 GPIO:11 maska:0x800 GPIO:12 maska:0x1000 GPIO:13 maska:0x2000 GPIO:14 maska:0x4000 GPIO:15 maska:0x8000 GPIO:16 maska:0x10000 GPIO:17 maska:0x20000 GPIO:18 maska:0x40000 GPIO:19 maska:0x80000 GPIO:20 maska:0x100000 GPIO:21 maska:0x200000 GPIO:22 maska:0x400000 GPIO:23 maska:0x800000 GPIO:24 maska:0x1000000 GPIO:25 maska:0x2000000 GPIO:26 maska:0x4000000 GPIO:27 maska:0x8000000 GPIO:28 maska:0x10000000 GPIO:29 maska:0x20000000 GPIO:30 maska:0x40000000 GPIO:31 maska:0x80000000 GPIO:32 maska:0x100000000 GPIO:33 maska:0x200000000 GPIO:34 maska:0x400000000 GPIO:35 maska:0x800000000 GPIO:36 maska:0x1000000000 GPIO:37 maska:0x2000000000 GPIO:38 maska:0x4000000000 GPIO:39 maska:0x8000000000 GPIO:40 maska:0x10000000000 GPIO:41 maska:0x20000000000 GPIO:42 maska:0x40000000000 GPIO:43 maska:0x80000000000 GPIO:44 maska:0x100000000000 |
Zarządzanie GPIO przez Python CLI
Uwaga: Możesz kontrolować lub monitorować GPIO swojego węzła podłączonego przez USB, ustawiając --dest na ID lokalnego węzła. W takim przypadku nie jest wymagany kanał GPIO.
Zapis GPIO
Przykład: włączanie GPIO4
|
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058 # Połączono z radiem # Zapis maski GPIO 0x10 z wartością 0x10 do !28979058
|
Odczyt GPIO
Przykład: odczyt GPIO4
meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058 # Połączono z radiem # Odczyt maski GPIO 0x10 z !28979058 # Odpowiedź odczytu GPIO gpio_value=16 |
Uwaga: Jeśli maska i gpio_value są zgodne, wartość to "włączone". Jeśli gpio_value wynosi 0, wartość to "wyłączone".
Oczekiwanie na zmiany GPIO
Przykład: obserwowanie GPIO4 pod kątem zmian
meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058 # Połączono z radiem # Obserwowanie maski GPIO 0x10 z !28979058 # Otrzymano RemoteHardware typ=GPIOS_CHANGED, gpio_value=16 # Otrzymano RemoteHardware typ=GPIOS_CHANGED, gpio_value=0 # Otrzymano RemoteHardware typ=GPIOS_CHANGED, gpio_value=16 # < naciśnij ctrl-c, aby wyjść > |
Testowanie operacji GPIO
Możesz wykonywać operacje GPIO bezpośrednio z własnego kodu Python, używając klasy Meshtastic RemoteHardwareClient. Szczegóły znajdziesz w dokumentacji API Pythona.
Aby potwierdzić poprawność działania operacji GPIO, możesz podłączyć prostą diodę LED i rezystor jako test. Skorzystaj z dostarczonego samouczka jako przewodnika.
Wymagania
-
2× urządzenia Meshtastic (jedno podłączone do lokalnego komputera, drugie po prostu zasilane i używane do połączenia z diodą LED)
-
2× przewody (zwykle czarny do uziemienia i żółty do sygnału, choć można użyć dowolnych kolorów)
-
1× Dioda LED
-
1× rezystor 220 Ω (opcjonalnie, ale zalecane)
-
1× płytka stykowa (opcjonalnie)
Przygotowanie
-
Odłącz zdalne urządzenie od źródła zasilania (bateria lub USB).
-
Przymocuj rezystor do dłuższej (dodatniej) nóżki diody LED, a następnie podłącz żółty przewód do drugiego końca rezystora.
-
Podłącz drugi koniec żółtego przewodu do bezpiecznego pinu GPIO (na przykład w TLoraV1 możesz użyć GPIO21).
-
Podłącz czarny przewód uziemiający z pinu uziemienia urządzenia (w TLoraV1 jest to końcowy pin obok przycisku RST) do krótszej (ujemnej) nóżki diody LED.
-
Przywróć zasilanie urządzenia.
Weryfikacja
Domyślnie pin może być w stanie „wyłączony” lub „włączony” (najczęściej „wyłączony”). Odnieś się do poniższych kroków, aby uruchomić polecenia. Na przykład, używając GPIO21, odpowiadająca wartość maski to 0x200000.