Przewodnik Meshtastic – Zdalna obsługa modułu sprzętowego

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:
  1. Połącz lokalne urządzenie przez USB
  2. Włącz moduł Zdalnego Sprzętu
 meshtastic --set remote_hardware.enabled true
  1. Utwórz kanał GPIO:
 meshtastic --ch-add gpio
  1. Sprawdź, czy kanał został utworzony, a następnie skopiuj długi „Pełny URL”, który zawiera wszystkie kanały na urządzeniu.
 meshtastic --info
  1. Połącz zdalne urządzenie przez USB lub uzyskaj do niego dostęp przez sieć mesh, korzystając z funkcji remote admin.
  2. Włącz moduł Zdalnego Sprzętu na zdalnym urządzeniu.
 meshtastic --set remote_hardware.enabled true
  1. 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)
  • Dioda LED
  • 1× rezystor 220 Ω (opcjonalnie, ale zalecane)
  • 1× płytka stykowa (opcjonalnie)

Przygotowanie

  1. Odłącz zdalne urządzenie od źródła zasilania (bateria lub USB).
  2. Przymocuj rezystor do dłuższej (dodatniej) nóżki diody LED, a następnie podłącz żółty przewód do drugiego końca rezystora.
  3. Podłącz drugi koniec żółtego przewodu do bezpiecznego pinu GPIO (na przykład w TLoraV1 możesz użyć GPIO21).
  4. 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.
  5. 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.

Zarejestruj się do naszego newslettera

Otrzymuj najnowsze informacje o naszych produktach i specjalnych ofertach.

Website Feedback

Help us improve OpenELAB

Found a website issue or have an idea? Tell us what would make your experience better.