Guide Meshtastic – Fonctionnement à distance du module matériel

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 :
  1. Connectez l'appareil local via USB
  2. Activez le module Remote Hardware
 meshtastic --set remote_hardware.enabled true
  1. Créez un canal GPIO :
 meshtastic --ch-add gpio
  1. 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
  1. Connectez l'appareil distant via USB, ou accédez-y via le maillage en utilisant la fonction remote admin.
  2. Activez le module Remote Hardware sur l'appareil distant.
 meshtastic --set remote_hardware.enabled true
  1. 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
 # Connecté à la radio
 # Écriture du masque GPIO 0x10 avec la valeur 0x10 vers !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)
  • DEL
  • 1× résistance de 220 Ω (optionnelle mais recommandée)
  • 1× breadboard (optionnel)

Préparation

  1. Déconnectez l’appareil distant de sa source d’alimentation (batterie ou USB).
  2. 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.
  3. Connectez l’autre extrémité du fil jaune à une broche GPIO sûre (par exemple, sur TLoraV1 vous pouvez utiliser GPIO21).
  4. 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.
  5. 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.

Barre latérale

Catégories de blog
Dernier article

Cette section ne contient actuellement aucun contenu. Ajoutez du contenu à cette section en utilisant la barre latérale.

Inscrivez-vous à notre newsletter

Obtenez les dernières informations sur nos produits et offres spéciales.