El Módulo de Hardware Remoto permite leer, escribir y monitorear los pines GPIO en un nodo remoto. Opción de configuración: Habilitado.
Nota: Para versiones de firmware superiores a 2.5.3, este módulo requiere compilar tu propio firmware y eliminar la bandera de compilación -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 de platformio.ini. Aunque las opciones de configuración para este módulo pueden aparecer en los clientes, la configuración y lectura de GPIO actualmente solo se soportan a través de la CLI de Python de Meshtastic.
Parámetros de Configuración del Hardware Remoto
Asegúrate de que el módulo esté habilitado.
Disponibilidad del Módulo de Hardware Remoto en Clientes
Android
Todas las opciones de configuración para el Módulo de Hardware Remoto están disponibles en la app de Android. Abre la app Meshtastic y ve a Configuración > Hardware Remoto.
Manzana
Todas las opciones de configuración para el Módulo de Hardware Remoto están disponibles en las apps para iOS, iPadOS y macOS (versión y superiores) bajo Configuración > Configuración del Módulo > Hardware Remoto.
CLI
Todas las configuraciones del Módulo de Hardware Remoto pueden gestionarse mediante la CLI de Python.
Web
No implementado.
Operación del Módulo de Hardware Remoto
Consejo: Acceder a los pines GPIO conlleva riesgos inherentes, ya que configuraciones incorrectas pueden dañar o destruir tu hardware. Asegúrate de comprender completamente el esquema de tu dispositivo específico antes de continuar, ya que no se ofrece ninguna garantía. Usa esta función bajo tu propio riesgo.
Operaciones Soportadas
Puedes configurar cualquier GPIO, leer cualquier GPIO y recibir notificaciones de malla cada vez que un GPIO cambia de estado. Ten en cuenta que las transiciones rápidas—como las pulsaciones de botones—no pueden detectarse; para esos casos de uso, consulta el módulo de Sensor de Detección. Los resultados de las lecturas de GPIO, así como las notificaciones de cambios de estado de GPIO, también se publican a través de MQTT (si está habilitado) en formato JSON (si está habilitado).
Configuración
Puede instalar las últimas herramientas Python y bibliotecas ejecutando pip3 install --upgrade meshtastic en Windows, Linux o OS-X. Consulte la sección de Python para más detalles.
Para evitar accesos no autorizados, primero debe crear un canal GPIO que proporcione acceso autenticado a esta función. Este canal debe añadirse tanto a los nodos local como remoto, y el módulo debe estar habilitado en ambos dispositivos.
Los pasos usando la herramienta de línea de comandos Python son los siguientes:
-
Conecte el dispositivo local vía USB
-
Habilite el módulo de Hardware Remoto
| meshtastic --set remote_hardware.enabled true |
-
Cree un canal GPIO:
-
Verifique que el canal ha sido creado, luego copie la “URL Completa” larga que incluye todos los canales en el dispositivo.
-
Conecte el dispositivo remoto vía USB, o acceda a él a través de la red mesh usando la función de administración remota.
-
Habilite el módulo de Hardware Remoto en el dispositivo remoto.
| meshtastic --set remote_hardware.enabled true |
-
Configure el dispositivo remoto para unirse al canal GPIO que creó previamente.
| meshtastic --seturl laurlquecopiasteenelpaso3 |
Ambos dispositivos ahora deberían poder comunicarse a través del canal GPIO. Para confirmar, envíe un mensaje de texto de un dispositivo al otro. También puede ejecutar --nodos para asegurar que se detecte el segundo nodo.
Máscaras
Se usa una máscara para especificar qué GPIOs controlar. Para GPIO 1, se establece el bit 1 de la máscara (hexadecimal 0x2); para GPIO 2, se establece el bit 2 de la máscara (0x4); y así sucesivamente. Para determinar la máscara correcta para el(los) pin(es) que desea usar, el programa Python (y su salida) que se muestra a continuación puede ser útil.
>>> para i en rango(1,45): ... print(f'GPIO:{i} máscara:{hex(2**i)}') ... GPIO:1 máscara:0x2 GPIO:2 máscara:0x4 GPIO:3 máscara:0x8 GPIO:4 máscara:0x10 GPIO:5 máscara:0x20 GPIO:6 máscara:0x40 GPIO:7 máscara:0x80 GPIO:8 máscara:0x100 GPIO:9 máscara:0x200 GPIO:10 máscara:0x400 GPIO:11 máscara:0x800 GPIO:12 máscara:0x1000 GPIO:13 máscara:0x2000 GPIO:14 máscara:0x4000 GPIO:15 máscara:0x8000 GPIO:16 máscara:0x10000 GPIO:17 máscara:0x20000 GPIO:18 máscara:0x40000 GPIO:19 máscara:0x80000 GPIO:20 máscara:0x100000 GPIO:21 máscara:0x200000 GPIO:22 máscara:0x400000 GPIO:23 máscara:0x800000 GPIO:24 máscara:0x1000000 GPIO:25 máscara:0x2000000 GPIO:26 máscara:0x4000000 GPIO:27 máscara:0x8000000 GPIO:28 máscara:0x10000000 GPIO:29 máscara:0x20000000 GPIO:30 máscara:0x40000000 GPIO:31 máscara:0x80000000 GPIO:32 máscara:0x100000000 GPIO:33 máscara:0x200000000 GPIO:34 máscara:0x400000000 GPIO:35 máscara:0x800000000 GPIO:36 máscara:0x1000000000 GPIO:37 máscara:0x2000000000 GPIO:38 máscara:0x4000000000 GPIO:39 máscara:0x8000000000 GPIO:40 máscara:0x10000000000 GPIO:41 máscara:0x20000000000 GPIO:42 máscara:0x40000000000 GPIO:43 máscara:0x80000000000 GPIO:44 máscara:0x100000000000 |
Gestionando GPIOs a través de la CLI de Python
Nota: Puedes controlar o monitorear los GPIOs de tu nodo conectado por USB configurando --dest con el ID del nodo local. En este caso, no se requiere canal GPIO.
Escribiendo un GPIO
Ejemplo: encendiendo GPIO4
|
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058 # Conectado a la radio # Escribiendo máscara GPIO 0x10 con valor 0x10 a !28979058
|
Leyendo un GPIO
Ejemplo: leer GPIO4
meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058 # Conectado a la radio # Leyendo máscara GPIO 0x10 de !28979058 # Respuesta de lectura GPIO gpio_value=16 |
Nota: Si la máscara y el gpio_value coinciden, entonces el valor es "encendido". Si el gpio_value es 0, entonces el valor es "apagado".
Observando cambios en GPIO
Ejemplo: observando GPIO4 para cambios
meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058 # Conectado a la radio # Observando máscara GPIO 0x10 desde !28979058 # Recibido RemoteHardware typ=GPIOS_CHANGED, gpio_value=16 # Recibido RemoteHardware typ=GPIOS_CHANGED, gpio_value=0 # Recibido RemoteHardware typ=GPIOS_CHANGED, gpio_value=16 # < presione ctrl-c para salir > |
Prueba de operación GPIO
Puede realizar operaciones GPIO directamente desde su propio código Python usando la clase Meshtastic RemoteHardwareClient. Para más detalles, consulte la documentación de la API de Python.
Para confirmar que las operaciones GPIO funcionan correctamente, puede conectar un simple LED y resistencia como prueba. Use el tutorial proporcionado como guía de referencia.
Requisitos
-
2× dispositivos Meshtastic (uno conectado a una computadora local, el otro simplemente alimentado y usado para la conexión del LED)
-
2× cables (comúnmente negro para tierra y amarillo para señal, aunque se pueden usar otros colores)
-
1× LED
-
1× resistencia de 220 Ω (opcional pero recomendado)
-
1× placa de pruebas (opcional)
Preparación
-
Desconecte el dispositivo remoto de su fuente de alimentación (batería o USB).
-
Conecte la resistencia al terminal más largo (positivo) del LED, luego conecte el cable amarillo al otro extremo de la resistencia.
-
Conecte el extremo opuesto del cable amarillo a un pin GPIO seguro (por ejemplo, en TLoraV1 puede usar GPIO21).
-
Conecte el cable negro de tierra desde el pin de tierra del dispositivo (en TLoraV1, este es el pin final junto al botón RST) al terminal más corto (negativo) del LED.
-
Restaurar la energía al dispositivo.
Validación
Por defecto, un pin puede estar “apagado” o “encendido” (más comúnmente “apagado”). Consulte los pasos a continuación para ejecutar comandos. Por ejemplo, al usar GPIO21, el valor de máscara correspondiente es 0x200000.