Guía de Meshtastic – Operación Remota del Módulo de Hardware

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:
  1. Conecte el dispositivo local vía USB
  2. Habilite el módulo de Hardware Remoto
 meshtastic --set remote_hardware.enabled true
  1. Cree un canal GPIO:
 meshtastic --ch-add gpio
  1. Verifique que el canal ha sido creado, luego copie la “URL Completa” larga que incluye todos los canales en el dispositivo.
 meshtastic --info
  1. 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.
  2. Habilite el módulo de Hardware Remoto en el dispositivo remoto.
 meshtastic --set remote_hardware.enabled true
  1. 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)
  • LED
  • 1× resistencia de 220 Ω (opcional pero recomendado)
  • 1× placa de pruebas (opcional)

Preparación

  1. Desconecte el dispositivo remoto de su fuente de alimentación (batería o USB).
  2. Conecte la resistencia al terminal más largo (positivo) del LED, luego conecte el cable amarillo al otro extremo de la resistencia.
  3. Conecte el extremo opuesto del cable amarillo a un pin GPIO seguro (por ejemplo, en TLoraV1 puede usar GPIO21).
  4. 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.
  5. 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.

Regístrate en nuestro boletín

Obtén la información más reciente sobre nuestros productos y ofertas especiales.

Website Feedback

Help us improve OpenELAB

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