GPIO-besturing

Bedien GPIO-uitgangspinnen op uw OSSM via Bluetooth Low Energy voor accessoires en integraties

De OSSM maakt vier GPIO-pinnen beschikbaar die via Bluetooth Low Energy (BLE) kunnen worden bediend. Gebruik deze pinnen om externe accessoires, indicatoren, relais of andere hardware-integraties te activeren.

GPIO-besturing is een functie voor ontwikkelaars/makers. Er is een BLE-clienttoepassing nodig om opdrachten te verzenden; er is geen interface op het apparaat voor GPIO-besturing.

Overzicht

Met het GPIO-kenmerk kunt u:

  • een van de vier pinnen op HIGH of LOW instellen
  • de huidige mogelijkheden uitlezen
  • externe hardware met uw OSSM integreren

Gebruiksgevallen

  • LED-indicatoren — De apparaatstatus naar externe verlichting signaleren
  • Relaisbesturing — Externe apparaten in- en uitschakelen
  • Accessoiresynchronisatie — Met andere hardware coördineren
  • Aangepaste integraties — Eigen regelsystemen bouwen

BLE-kenmerk

EigenschapWaarde
UUID522b443a-4f53-534d-4000-420badbabe69
EigenschappenREAD, WRITE
Naamruimte0x4 (GPIO)

Het GPIO-kenmerk maakt deel uit van de hoofd-OSSM-BLE-service (522b443a-4f53-534d-0001-420badbabe69). Maak eerst verbinding met de service en krijg vervolgens toegang tot dit kenmerk.

Pin-toewijzing

De firmware biedt vier logische pinnen die zijn toegewezen aan ESP32 GPIO-nummers:

Logische pinESP32 GPIOBordlocatie
1GPIO 2Beschikbaar op de header
2GPIO 15Beschikbaar op de header
3GPIO 22Beschikbaar op de header
4GPIO 33Beschikbaar op de header

Deze GPIO-pinnen zijn rechtstreeks verbonden met de ESP32. Ze voeren logische niveaus van 3,3 V uit met een beperkte stroombelastbaarheid (~12 mA per pin). Gebruik geschikte stuurcircuits voor belastingen met een hoge stroomsterkte.

Commando-indeling

Schrijven (pinstatus instellen)

Stuur een string in het formaat:

<pin_number>:<state>

Pinnummer: 1, 2, 3 of 4

Statuswaarden:

  • high of 1 — Pin instellen op HIGH (3,3 V)
  • low of 0 — Pin instellen op LOW (0 V)

Voorbeelden:

CommandoEffect
1:highPin 1 (GPIO 2) instellen op HIGH
2:lowPin 2 (GPIO 15) instellen op LOW
3:1Pin 3 (GPIO 22) instellen op HIGH
4:0Pin 4 (GPIO 33) instellen op LOW

Schrijfreacties

AntwoordBetekenis
ok:1:highPin 1 is succesvol ingesteld op HIGH
ok:2:lowPin 2 is succesvol ingesteld op LOW
error:invalid_formatCommandoformaat niet herkend
error:pin_out_of_rangePinnummer niet 1-4

Lezen (mogelijkheden)

Het lezen van het kenmerk geeft een overzicht van de beschikbare mogelijkheden.

pins:[1,2,3,4]

Dit geeft aan welke logische pinnen beschikbaar zijn voor besturing.

Voorbeeldcode

// 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-integratie

Basis LED-indicator

Sluit een LED met stroombegrenzende weerstand aan:

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

Gebruik een weerstand van 220 Ω tot 470 Ω voor standaard-LED's. De 3,3 V-uitgang van de ESP32 biedt voldoende spanning voor de meeste LED's.

Relaisbesturing

Gebruik voor hogere stroombelastingen een optogeïsoleerde relaismodule:

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

De meeste opto-geïsoleerde relaismodules werken met 3,3 V-logica. Controleer de specificaties van uw module.

Sluit nooit netspanning (120 V/240 V) rechtstreeks op de OSSM aan. Gebruik altijd relaismodules met de juiste specificaties en neem passende veiligheidsmaatregelen.

Conversie van logicaniveau

Als u een logische 5 V-uitgang nodig heeft:

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

Beperkingen

  • Geen PWM-ondersteuning — Pinnen zijn alleen digitaal HIGH/LOW
  • Geen ingangen uitlezen — GPIO is via deze interface uitsluitend een uitgang
  • Geen persistentie — Pinstatussen worden bij het opnieuw opstarten van het apparaat teruggezet naar LOW
  • Geen interrupts — Kan niet activeren op basis van externe signalen
  • Stroomlimieten — ESP32 GPIO maximaal ~12 mA per pin, 40 mA in totaal

Problemen oplossen

Gerelateerde pagina's

Op deze pagina