Contrôle GPIO

Contrôlez les broches de sortie GPIO sur votre OSSM via Bluetooth Low Energy pour les accessoires et les intégrations

L'OSSM expose quatre broches GPIO qui peuvent être contrôlées via Bluetooth Low Energy (BLE). Utilisez ces broches pour déclencher des accessoires externes, des indicateurs, des relais ou d'autres intégrations matérielles.

Le contrôle GPIO est une fonctionnalité de développeur/créateur. Il nécessite une application client BLE pour envoyer des commandes : il n'y a pas d'interface sur l'appareil pour le contrôle GPIO.

Aperçu

La caractéristique GPIO permet de :

  • Régler l'une des 4 broches sur HIGH ou LOW
  • Lire les capacités actuelles
  • Intégrer du matériel externe à votre OSSM

Cas d'utilisation

  • Indicateurs LED — Indiquer l'état de l'appareil au moyen d'un éclairage externe
  • Contrôle de relais — Déclencher l'activation/la désactivation d'appareils externes
  • Synchronisation des accessoires — Coordonner avec d'autres matériels
  • Intégrations personnalisées — Créez vos propres systèmes de contrôle

Caractéristique BLE

PropriétéValeur
UUID522b443a-4f53-534d-4000-420badbabe69
PropriétésREAD, WRITE
Espace de noms0x4 (GPIO)

La caractéristique GPIO fait partie du service principal OSSM BLE (522b443a-4f53-534d-0001-420badbabe69). Connectez-vous d'abord au service, puis accédez à cette caractéristique.

Cartographie des broches

Le firmware expose 4 broches logiques qui correspondent aux numéros GPIO ESP32 :

Broche logiqueESP32 GPIOEmplacement sur la carte
1GPIO 2Disponible sur le connecteur
2GPIO 15Disponible sur le connecteur
3GPIO 22Disponible sur le connecteur
4GPIO 33Disponible sur le connecteur

Ces broches GPIO sont directement connectées à l'ESP32. Elles produisent des niveaux logiques de 3,3 V avec une capacité de courant limitée (~12 mA par broche). Utilisez des circuits de commande/de puissance adaptés pour les charges à courant élevé.

Format de commande

Écriture (définition de l'état des broches)

Envoyez une chaîne au format :

<pin_number>:<state>

Numéro de broche : 1, 2, 3 ou 4

Valeurs d'état :

  • high ou 1 — Définir la broche sur HIGH (3,3 V)
  • low ou 0 — Définir la broche sur LOW (0 V)

Exemples :

CommandeEffet
1:highDéfinir la broche 1 (GPIO 2) sur HIGH
2:lowDéfinir la broche 2 (GPIO 15) sur LOW
3:1Définir la broche 3 (GPIO 22) sur HIGH
4:0Définir la broche 4 (GPIO 33) sur LOW

Réponses d'écriture

RéponseSignification
ok:1:highLa broche 1 a été définie avec succès sur HIGH
ok:2:lowLa broche 2 a été réglée avec succès sur LOW
error:invalid_formatFormat de commande non reconnu
error:pin_out_of_rangeNuméro de broche non 1-4

Lecture (capacités)

La lecture de la caractéristique renvoie une indication des capacités disponibles :

pins:[1,2,3,4]

Cela indique quelles broches logiques sont disponibles pour le contrôle.

Exemple de code

// Connect to OSSM (assumes already connected to service)
const gpioChar = await service.getCharacteristic(
  "522b443a-4f53-534d-4000-420badbabe69"
);

// Set pin 1 HIGH
await gpioChar.writeValue(new TextEncoder().encode("1:high"));

// Read the response
const response = await gpioChar.readValue();
console.log(new TextDecoder().decode(response));
// Output: "ok:1:high"

// Set pin 2 LOW
await gpioChar.writeValue(new TextEncoder().encode("2:low"));

// Read capabilities
const caps = await gpioChar.readValue();
console.log(new TextDecoder().decode(caps));
// Output: "pins:[1,2,3,4]"
import asyncio
from bleak import BleakClient

GPIO_UUID = "522b443a-4f53-534d-4000-420badbabe69"

async def control_gpio():
    async with BleakClient("OSSM") as client:
        # Set pin 1 HIGH
        await client.write_gatt_char(GPIO_UUID, b"1:high")

        # Read response
        response = await client.read_gatt_char(GPIO_UUID)
        print(response.decode())  # "ok:1:high"

        # Set pin 2 LOW
        await client.write_gatt_char(GPIO_UUID, b"2:low")

        # Set multiple pins
        await client.write_gatt_char(GPIO_UUID, b"3:high")
        await client.write_gatt_char(GPIO_UUID, b"4:low")

asyncio.run(control_gpio())

Intégration matérielle

Indicateur LED de base

Connectez une LED avec une résistance de limitation de courant :

GPIO Pin → 220Ω Resistor → LED Anode (+)
                           LED Cathode (-) → GND

Utilisez une résistance de 220 Ω à 470 Ω pour les LED standard. La sortie 3,3 V de l'ESP32 fournit une tension suffisante pour la plupart des LED.

Contrôle des relais

Pour les charges à courant plus élevé, utilisez un module relais opto-isolé :

GPIO Pin → Relay Module Signal
3.3V     → Relay Module VCC
GND      → Relay Module GND

La plupart des modules de relais avec opto-isolation fonctionnent avec une logique 3,3 V. Vérifiez les spécifications de votre module.

Ne connectez jamais la tension secteur (120 V/240 V) directement à l'OSSM. Utilisez toujours des modules de relais correctement dimensionnés ou homologués pour la tension et le courant concernés, avec les précautions de sécurité appropriées.

Conversion de niveau logique

Si vous avez besoin d'une sortie logique 5 V :

GPIO Pin → Level Shifter 3.3V Side
5V       → Level Shifter 5V Side
GND      → Level Shifter GND
           Level Shifter 5V Output → Your 5V Device

Limites

  • Pas de prise en charge PWM — Les broches sont uniquement numériques HIGH/LOW
  • Aucune lecture d'entrée — Le GPIO est uniquement utilisable en sortie via cette interface
  • Pas de persistance — Les états des broches sont réinitialisés à LOW au redémarrage de l'appareil
  • Aucune interruption – Impossible de déclencher en fonction de signaux externes
  • Limites de courant — GPIO ESP32 : ~12 mA maximum par broche, 40 mA au total

Dépannage

Pages connexes

Sur cette page