Le module matériel à distance permet la lecture, l’écriture et la surveillance des broches GPIO sur un nœud distant. Option de configuration : Activé.
Note : Pour les versions du firmware supérieures à 2.5.3, ce module nécessite de compiler votre propre firmware et de retirer le flag de compilation -DMESHTASTIC_EXCLUDE_REMOTEHARDWARE=1 du fichier platformio.ini. Bien que les options de configuration pour ce module puissent apparaître dans les clients, la configuration et la lecture des GPIO sont actuellement prises en charge uniquement via le CLI Python de Meshtastic.
Paramètres de configuration du matériel à distance
Assurez-vous que le module est activé.
Disponibilité du module matériel à distance dans les clients
Android
Toutes les options de configuration du module matériel à distance sont disponibles dans l'application Android. Ouvrez l'application Meshtastic et allez dans Réglages > Matériel à distance.
Pomme
Toutes les options de configuration du module matériel à distance sont disponibles dans les applications iOS, iPadOS et macOS (version et supérieure) sous Réglages > Configuration du module > Matériel à distance.
CLI
Tous les paramètres de configuration du module matériel à distance peuvent être gérés via le CLI Python.
Web
Non implémenté.
Fonctionnement du module matériel à distance
Conseil : L'accès aux broches GPIO comporte des risques inhérents, car des réglages incorrects peuvent endommager ou détruire votre matériel. Assurez-vous de bien comprendre le schéma de votre appareil spécifique avant de continuer, car aucune garantie n'est fournie. Utilisez cette fonctionnalité à vos risques et périls.
Opérations prises en charge
Vous pouvez configurer n'importe quel GPIO, lire n'importe quel GPIO, et recevoir des notifications du maillage chaque fois qu'un GPIO change d'état. Notez que les transitions rapides — comme les appuis sur bouton — ne peuvent pas être détectées ; pour ces cas d'utilisation, référez-vous au module Detection Sensor. Les résultats des lectures GPIO, ainsi que les notifications des changements d'état GPIO, sont également publiés via MQTT (si activé) au format JSON (si activé).
Configuration
Vous pouvez installer les derniers outils Python et bibliothèques en exécutant pip3 install --upgrade meshtastic sur Windows, Linux ou OS-X. Consultez la section Python pour plus de détails.
Pour empêcher tout accès non autorisé, vous devez d'abord créer un canal GPIO qui fournit un accès authentifié à cette fonctionnalité. Ce canal doit être ajouté aux nœuds local et distant, et le module doit être activé sur les deux appareils.
Les étapes utilisant l'outil en ligne de commande Python sont les suivantes :
-
Connectez l'appareil local via USB
-
Activez le module Remote Hardware
| meshtastic --set remote_hardware.enabled true |
-
Créez un canal GPIO :
| meshtastic --ch-add gpio |
-
Vérifiez que le canal a été créé, puis copiez la longue « URL complète » qui inclut tous les canaux sur l'appareil.
| meshtastic --info |
-
Connectez l'appareil distant via USB, ou accédez-y via le maillage en utilisant la fonction remote admin.
-
Activez le module Remote Hardware sur l'appareil distant.
| meshtastic --set remote_hardware.enabled true |
-
Configurez l'appareil distant pour rejoindre le canal GPIO que vous avez précédemment créé.
| meshtastic --seturl lurlquevousavezcopiéeàlétape3 |
Les deux appareils devraient maintenant pouvoir communiquer via le canal GPIO. Pour confirmer, envoyez un message texte d'un appareil à l'autre. Vous pouvez également exécuter --nodes pour s'assurer que le deuxième nœud est détecté.
Masques
Un masque est utilisé pour spécifier quels GPIO contrôler. Pour GPIO 1, le bit 1 du masque est défini (hexadécimal 0x2) ; pour GPIO 2, le bit 2 du masque est défini (0x4) ; et ainsi de suite. Pour déterminer le masque correct pour la ou les broches que vous souhaitez utiliser, le programme Python (et sa sortie) ci-dessous peut être utile.
| >>> for i in range(1,45): ... print(f'GPIO:{i} masque:{hex(2**i)}') ... GPIO:1 masque:0x2 GPIO:2 masque:0x4 GPIO:3 masque:0x8 GPIO:4 masque:0x10 GPIO:5 masque:0x20 GPIO:6 masque:0x40 GPIO:7 masque:0x80 GPIO:8 masque:0x100 GPIO:9 masque:0x200 GPIO:10 masque:0x400 GPIO:11 masque:0x800 GPIO:12 masque:0x1000 GPIO:13 masque:0x2000 GPIO:14 masque:0x4000 GPIO:15 masque:0x8000 GPIO:16 masque:0x10000 GPIO:17 masque:0x20000 GPIO:18 masque:0x40000 GPIO:19 masque:0x80000 GPIO:20 masque:0x100000 GPIO:21 masque:0x200000 GPIO:22 masque:0x400000 GPIO:23 masque:0x800000 GPIO:24 masque:0x1000000 GPIO:25 masque:0x2000000 GPIO:26 masque:0x4000000 GPIO:27 masque:0x8000000 GPIO:28 masque:0x10000000 GPIO:29 masque:0x20000000 GPIO:30 masque:0x40000000 GPIO:31 masque:0x80000000 GPIO:32 masque:0x100000000 GPIO:33 masque:0x200000000 GPIO:34 masque:0x400000000 GPIO:35 masque:0x800000000 GPIO:36 masque:0x1000000000 GPIO:37 masque:0x2000000000 GPIO:38 masque:0x4000000000 GPIO:39 masque:0x8000000000 GPIO:40 masque:0x10000000000 GPIO:41 masque:0x20000000000 GPIO:42 masque:0x40000000000 GPIO:43 masque:0x80000000000 GPIO:44 masque:0x100000000000 |
Gestion des GPIO via l’interface CLI Python
Note : Vous pouvez contrôler ou surveiller les GPIO de votre nœud connecté en USB en définissant --dest sur l’ID du nœud local. Dans ce cas, aucun canal GPIO n’est requis.
Écriture d'un GPIO
Exemple : activation de GPIO4
|
meshtastic --port /dev/ttyUSB0 --gpio-wrb 4 1 --dest 28979058 |
Lecture d'un GPIO
Exemple : lecture de GPIO4
| meshtastic --port /dev/ttyUSB0 --gpio-rd 0x10 --dest 28979058 # Connecté à la radio # Lecture du masque GPIO 0x10 depuis !28979058 # Réponse de lecture GPIO gpio_value=16 |
Note : Si le masque et la valeur gpio_value correspondent, alors la valeur est "activée". Si gpio_value est 0, alors la valeur est "désactivée".
Surveillance des changements GPIO
Exemple : surveillance de GPIO4 pour les changements
| meshtastic --port /dev/ttyUSB0 --gpio-watch 0x10 --dest 28979058 # Connecté à la radio # Surveillance du masque GPIO 0x10 depuis !28979058 # RemoteHardware reçu typ=GPIOS_CHANGED, gpio_value=16 # RemoteHardware reçu typ=GPIOS_CHANGED, gpio_value=0 # RemoteHardware reçu typ=GPIOS_CHANGED, gpio_value=16 # < appuyez sur ctrl-c pour quitter > |
Test des opérations GPIO
Vous pouvez effectuer des opérations GPIO directement depuis votre propre code Python en utilisant la classe Meshtastic RemoteHardwareClient. Pour plus de détails, consultez la documentation de l’API Python.
Pour confirmer que les opérations GPIO fonctionnent correctement, vous pouvez connecter une simple LED et résistance comme test. Utilisez le tutoriel fourni comme guide de référence.
Exigences
-
2× appareils Meshtastic (un connecté à un ordinateur local, l’autre simplement alimenté et utilisé pour la connexion de la LED)
-
2× fils (généralement noir pour la masse et jaune pour le signal, bien que toutes les couleurs puissent être utilisées)
-
1× DEL
-
1× résistance de 220 Ω (optionnelle mais recommandée)
-
1× breadboard (optionnel)
Préparation
-
Déconnectez l’appareil distant de sa source d’alimentation (batterie ou USB).
-
Fixez la résistance à la patte la plus longue (positive) de la LED, puis connectez le fil jaune à l’autre extrémité de la résistance.
-
Connectez l’autre extrémité du fil jaune à une broche GPIO sûre (par exemple, sur TLoraV1 vous pouvez utiliser GPIO21).
-
Connectez le fil noir de masse de la broche de masse de l’appareil (sur TLoraV1, c’est la broche d’extrémité à côté du bouton RST) à la patte la plus courte (négative) de la LED.
-
Rétablissez l’alimentation de l’appareil.
Validation
Par défaut, une broche peut être soit « désactivée » soit « activée » (le plus souvent « désactivée »). Reportez-vous aux étapes ci-dessous pour exécuter les commandes. Par exemple, lors de l’utilisation de GPIO21, la valeur de masque correspondante est 0x200000.

