GPIO-Steuerung

Steuern Sie die GPIO-Ausgangspins Ihres OSSM über Bluetooth Low Energy für Zubehör und Integrationen.

Das OSSM stellt vier GPIO-Pins zur Verfügung, die über Bluetooth Low Energy (BLE) gesteuert werden können. Verwenden Sie diese Pins, um externes Zubehör, Anzeigen, Relais oder andere Hardware-Integrationen auszulösen.

Die GPIO-Steuerung ist eine Entwickler-/Maker-Funktion. Zum Senden von Befehlen ist eine BLE-Clientanwendung erforderlich – es gibt keine Schnittstelle auf dem Gerät für die GPIO-Steuerung.

Überblick

Die GPIO-Charakteristik ermöglicht Ihnen:

  • Einen der 4 Pins auf HIGH oder LOW setzen
  • Aktuelle Fähigkeiten auslesen
  • Externe Hardware in Ihr OSSM integrieren

Anwendungsfälle

  • LED-Anzeigen – Den Gerätezustand an eine externe Beleuchtung signalisieren
  • Relaissteuerung – Externe Geräte ein- und ausschalten
  • Zubehörsynchronisierung – Mit anderer Hardware koordinieren
  • Benutzerdefinierte Integrationen – Eigene Steuerungssysteme entwickeln

BLE-Charakteristik

EigenschaftWert
UUID522b443a-4f53-534d-4000-420badbabe69
EigenschaftenREAD, WRITE
Namensraum0x4 (GPIO)

Die GPIO-Charakteristik ist Teil des Haupt-OSSM-BLE-Dienstes (522b443a-4f53-534d-0001-420badbabe69). Stellen Sie zunächst eine Verbindung zum Dienst her und greifen Sie dann auf diese Charakteristik zu.

Pin-Zuordnung

Die Firmware stellt 4 logische Pins bereit, die ESP32-GPIO-Nummern zugeordnet sind:

Logischer PinESP32 GPIOPosition auf der Platine
1GPIO 2Am Header verfügbar
2GPIO 15Am Header verfügbar
3GPIO 22Am Header verfügbar
4GPIO 33Am Header verfügbar

Diese GPIO-Pins sind direkt mit dem ESP32 verbunden. Sie geben 3,3-V-Logikpegel aus und haben eine begrenzte Strombelastbarkeit (~12 mA pro Pin). Verwenden Sie für Hochstromlasten geeignete Treiber.

Befehlsformat

Schreiben (Pin-Status festlegen)

Senden Sie eine Zeichenfolge im Format:

<pin_number>:<state>

Pin-Nummer: 1, 2, 3 oder 4

Statuswerte:

  • high oder 1 – Pin auf HIGH (3,3 V) setzen
  • low oder 0 – Pin auf LOW (0 V) setzen

Beispiele:

BefehlWirkung
1:highPin 1 (GPIO 2) auf HIGH setzen
2:lowPin 2 (GPIO 15) auf LOW setzen
3:1Pin 3 (GPIO 22) auf HIGH setzen
4:0Pin 4 (GPIO 33) auf LOW setzen

Schreibantworten

AntwortBedeutung
ok:1:highPin 1 erfolgreich auf HIGH gesetzt
ok:2:lowPin 2 erfolgreich auf LOW gesetzt
error:invalid_formatBefehlsformat nicht erkannt
error:pin_out_of_rangePin-Nummer nicht 1-4

Lesen (Fähigkeiten)

Das Lesen der Charakteristik gibt einen Hinweis auf verfügbare GPIO-Fähigkeiten zurück:

pins:[1,2,3,4]

Dies zeigt an, welche logischen Pins zur Steuerung verfügbar sind.

Beispielcode

// 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())

Hardware-Integration

Einfache LED-Anzeige

Schließen Sie eine LED mit Strombegrenzungswiderstand an:

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

Verwenden Sie für Standard-LEDs einen Widerstand von 220 Ω bis 470 Ω. Der 3,3-V-Ausgang des ESP32 liefert ausreichend Spannung für die meisten LEDs.

Relaissteuerung

Für Lasten mit höherem Strom verwenden Sie ein optoisoliertes Relaismodul:

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

Die meisten optoisolierten Relaismodule arbeiten mit 3,3-V-Logik. Überprüfen Sie die Spezifikationen Ihres Moduls.

Schließen Sie niemals Netzspannung (120 V/240 V) direkt an das OSSM an. Verwenden Sie immer ordnungsgemäß ausgelegte Relaismodule mit entsprechenden Sicherheitsvorkehrungen.

Umsetzung von Logikpegeln

Wenn Sie einen 5-V-Logikausgang benötigen:

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

Einschränkungen

  • Keine PWM-Unterstützung – Pins sind nur digital HIGH/LOW
  • Kein Eingabelesen – GPIO kann über diese Schnittstelle nur als Ausgang verwendet werden
  • Keine Persistenz – Pin-Zustände werden beim Neustart des Geräts auf LOW zurückgesetzt
  • Keine Interrupts – Keine Auslösung anhand externer Signale möglich
  • Stromgrenzen – ESP32-GPIO: maximal ~12 mA pro Pin, insgesamt 40 mA

Fehlerbehebung

Verwandte Seiten

Auf dieser Seite