Guida a Meshtastic – Funzionamento del Modulo Hardware Remoto

Il Modulo Hardware Remoto consente la lettura, la scrittura e il monitoraggio dei pin GPIO su un nodo remoto. Opzione di configurazione: Abilitato.
Nota: Per versioni firmware superiori alla 2.5.3, questo modulo richiede di compilare il proprio firmware rimuovendo il flag di build -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 da platformio.ini. Sebbene le opzioni di configurazione per questo modulo possano apparire nei client, l'impostazione e la lettura dei GPIO sono attualmente supportate solo tramite la CLI Python di Meshtastic.

Parametri di Configurazione Hardware Remoto

Assicurati che il modulo sia abilitato.

Disponibilità del Modulo Hardware Remoto nei Client

Android

Tutte le opzioni di configurazione per il Modulo Hardware Remoto sono disponibili nell'app Android. Apri l'app Meshtastic e vai su Impostazioni > Hardware Remoto.

Mela

Tutte le opzioni di configurazione per il Modulo Hardware Remoto sono disponibili nelle app iOS, iPadOS e macOS (versione e successive) sotto Impostazioni > Configurazione Modulo > Hardware Remoto.

CLI

Tutte le impostazioni di configurazione del Modulo Hardware Remoto possono essere gestite tramite la CLI Python.

Web

Non implementato.

Operazione del Modulo Hardware Remoto

Consiglio: Accedere ai pin GPIO comporta rischi intrinseci, poiché impostazioni errate possono danneggiare o distruggere il tuo hardware. Assicurati di comprendere appieno lo schema del tuo dispositivo specifico prima di procedere, poiché non è fornita alcuna garanzia. Usa questa funzione a tuo rischio e pericolo.

Operazioni Supportate

Puoi impostare qualsiasi GPIO, leggere qualsiasi GPIO e ricevere notifiche mesh ogni volta che un GPIO cambia stato. Nota che le transizioni rapide—come le pressioni di pulsanti—non possono essere rilevate; per questi casi d'uso, fai riferimento al modulo Sensore di Rilevamento. I risultati delle letture GPIO, così come le notifiche dei cambiamenti di stato GPIO, sono anche pubblicati su MQTT (se abilitato) in formato JSON (se abilitato).

Configurazione

Puoi installare gli ultimi strumenti Python e librerie eseguendo pip3 install --upgrade meshtastic su Windows, Linux o OS-X. Consulta la sezione Python per ulteriori dettagli.
Per prevenire accessi non autorizzati, devi prima creare un canale GPIO che fornisca accesso autenticato a questa funzione. Questo canale deve essere aggiunto sia al nodo locale che a quello remoto, e il modulo deve essere abilitato su entrambi i dispositivi.
I passaggi usando lo strumento da linea di comando Python sono i seguenti:
  1. Collega il dispositivo locale tramite USB
  2. Abilita il modulo Remote Hardware
 meshtastic --set remote_hardware.enabled true
  1. Crea un canale GPIO:
 meshtastic --ch-add gpio
  1. Verifica che il canale sia stato creato, quindi copia il lungo “URL completo” che include tutti i canali sul dispositivo.
 meshtastic --info
  1. Collega il dispositivo remoto tramite USB, oppure accedilo attraverso la mesh usando la funzione remote admin.
  2. Abilita il modulo Remote Hardware sul dispositivo remoto.
 meshtastic --set remote_hardware.enabled true
  1. Configura il dispositivo remoto per unirsi al canale GPIO che hai creato in precedenza.
 meshtastic --seturl theurlyoucopiedinstep3
Entrambi i dispositivi dovrebbero ora essere in grado di comunicare tramite il canale GPIO. Per confermare, invia un messaggio di testo da un dispositivo all'altro. Puoi anche eseguire --nodes per assicurarsi che il secondo nodo venga rilevato.

Maschere

Una maschera viene utilizzata per specificare quali GPIO controllare. Per GPIO 1, il bit 1 della maschera è impostato (esadecimale 0x2); per GPIO 2, il bit 2 della maschera è impostato (0x4); e così via. Per determinare la maschera corretta per il/i pin che vuoi usare, il programma Python (e il suo output) mostrato di seguito può essere utile.
 >>> for i in range(1,45):
...     print(f'GPIO:{i} mask:{hex(2**i)}')
...
GPIO:1 maschera:0x2
GPIO:2 maschera:0x4
GPIO:3 maschera:0x8
GPIO:4 maschera:0x10
GPIO:5 maschera:0x20
GPIO:6 maschera:0x40
GPIO:7 maschera:0x80
GPIO:8 maschera:0x100
GPIO:9 maschera:0x200
GPIO:10 maschera:0x400
GPIO:11 maschera:0x800
GPIO:12 maschera:0x1000
GPIO:13 maschera:0x2000
GPIO:14 maschera:0x4000
GPIO:15 maschera:0x8000
GPIO:16 maschera:0x10000
GPIO:17 maschera:0x20000
GPIO:18 maschera:0x40000
GPIO:19 maschera:0x80000
GPIO:20 maschera:0x100000
GPIO:21 maschera:0x200000
GPIO:22 maschera:0x400000
GPIO:23 maschera:0x800000
GPIO:24 maschera:0x1000000
GPIO:25 maschera:0x2000000
GPIO:26 maschera:0x4000000
GPIO:27 maschera:0x8000000
GPIO:28 maschera:0x10000000
GPIO:29 maschera:0x20000000
GPIO:30 maschera:0x40000000
GPIO:31 maschera:0x80000000
GPIO:32 maschera:0x100000000
GPIO:33 maschera:0x200000000
GPIO:34 maschera:0x400000000
GPIO:35 maschera:0x800000000
GPIO:36 maschera:0x1000000000
GPIO:37 maschera:0x2000000000
GPIO:38 maschera:0x4000000000
GPIO:39 maschera:0x8000000000
GPIO:40 maschera:0x10000000000
GPIO:41 maschera:0x20000000000
GPIO:42 maschera:0x40000000000
GPIO:43 maschera:0x80000000000
GPIO:44 maschera:0x100000000000

Gestione dei GPIO tramite la CLI Python

Nota: Puoi controllare o monitorare i GPIO del tuo nodo connesso via USB impostando --dest sull'ID del nodo locale. In questo caso, non è richiesto alcun canale GPIO.

Scrittura di un GPIO

Esempio: accensione di GPIO4

 meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058
 # Connesso alla radio
 # Scrittura maschera GPIO 0x10 con valore 0x10 a !28979058

Lettura di un GPIO

Esempio: lettura GPIO4
 meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058
 # Connesso alla radio
 # Lettura maschera GPIO 0x10 da !28979058
 # Risposta lettura GPIO gpio_value=16
Nota: Se la maschera e il gpio_value corrispondono, allora il valore è "on". Se il gpio_value è 0, allora il valore è "off".

Monitoraggio dei cambiamenti GPIO

Esempio: monitoraggio di GPIO4 per cambiamenti
 meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058
 # Connesso alla radio
 # Monitoraggio maschera GPIO 0x10 da !28979058
 # Ricevuto RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
 # Ricevuto RemoteHardware typ=GPIOS_CHANGED, gpio_value=0
 # Ricevuto RemoteHardware typ=GPIOS_CHANGED, gpio_value=16
 # < premi ctrl-c per uscire >

Test delle operazioni GPIO

Puoi eseguire operazioni GPIO direttamente dal tuo codice Python utilizzando la classe Meshtastic RemoteHardwareClient. Per ulteriori dettagli, consulta la documentazione API Python.
Per confermare che le operazioni GPIO funzionano correttamente, puoi collegare un semplice LED e resistenza come test. Usa il tutorial fornito come guida di riferimento.

Requisiti

  • 2× dispositivi Meshtastic (uno collegato a un computer locale, l'altro semplicemente alimentato e usato per la connessione del LED)
  • 2× fili (comunemente nero per massa e giallo per segnale, anche se possono essere usati colori qualsiasi)
  • LED
  • 1× resistenza da 220 Ω (opzionale ma consigliata)
  • 1× breadboard (opzionale)

Preparazione

  1. Scollega il dispositivo remoto dalla sua fonte di alimentazione (batteria o USB).
  2. Collega la resistenza al terminale più lungo (positivo) del LED, quindi collega il filo giallo all'altra estremità della resistenza.
  3. Collega l'estremità opposta del filo giallo a un pin GPIO sicuro (ad esempio, su TLoraV1 puoi usare GPIO21).
  4. Collega il filo nero di massa dal pin di massa del dispositivo (su TLoraV1, questo è il pin finale accanto al pulsante RST) al terminale più corto (negativo) del LED.
  5. Ripristina l'alimentazione al dispositivo.

Validazione

Per impostazione predefinita, un pin può essere “spento” o “acceso” (più comunemente “spento”). Consulta i passaggi seguenti per eseguire i comandi. Ad esempio, quando si utilizza GPIO21, il valore della maschera corrispondente è 0x200000.

Iscriviti alla nostra newsletter

Ottieni le ultime informazioni sui nostri prodotti e offerte speciali.