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:
-
Collega il dispositivo locale tramite USB
-
Abilita il modulo Remote Hardware
| meshtastic --set remote_hardware.enabled true |
-
Crea un canale GPIO:
| meshtastic --ch-add gpio |
-
Verifica che il canale sia stato creato, quindi copia il lungo “URL completo” che include tutti i canali sul dispositivo.
| meshtastic --info |
-
Collega il dispositivo remoto tramite USB, oppure accedilo attraverso la mesh usando la funzione remote admin.
-
Abilita il modulo Remote Hardware sul dispositivo remoto.
| meshtastic --set remote_hardware.enabled true |
-
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 |
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)
-
1× LED
-
1× resistenza da 220 Ω (opzionale ma consigliata)
-
1× breadboard (opzionale)
Preparazione
-
Scollega il dispositivo remoto dalla sua fonte di alimentazione (batteria o USB).
-
Collega la resistenza al terminale più lungo (positivo) del LED, quindi collega il filo giallo all'altra estremità della resistenza.
-
Collega l'estremità opposta del filo giallo a un pin GPIO sicuro (ad esempio, su TLoraV1 puoi usare GPIO21).
-
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.
-
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.

