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
| Eigenschap | Waarde |
|---|---|
| UUID | 522b443a-4f53-534d-4000-420badbabe69 |
| Eigenschappen | READ, WRITE |
| Naamruimte | 0x4 (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 pin | ESP32 GPIO | Bordlocatie |
|---|---|---|
| 1 | GPIO 2 | Beschikbaar op de header |
| 2 | GPIO 15 | Beschikbaar op de header |
| 3 | GPIO 22 | Beschikbaar op de header |
| 4 | GPIO 33 | Beschikbaar 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:
highof1— Pin instellen op HIGH (3,3 V)lowof0— Pin instellen op LOW (0 V)
Voorbeelden:
| Commando | Effect |
|---|---|
1:high | Pin 1 (GPIO 2) instellen op HIGH |
2:low | Pin 2 (GPIO 15) instellen op LOW |
3:1 | Pin 3 (GPIO 22) instellen op HIGH |
4:0 | Pin 4 (GPIO 33) instellen op LOW |
Schrijfreacties
| Antwoord | Betekenis |
|---|---|
ok:1:high | Pin 1 is succesvol ingesteld op HIGH |
ok:2:low | Pin 2 is succesvol ingesteld op LOW |
error:invalid_format | Commandoformaat niet herkend |
error:pin_out_of_range | Pinnummer 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 (-) → GNDGebruik 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 GNDDe 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 DeviceBeperkingen
- 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
- Controleer of de BLE-verbinding actief is
- Controleer of het opdrachtformaat exact overeenkomt met
<pin>:<state> - Zorg ervoor dat het pinnummer 1-4 is
- Controleer met een multimeter of de spanning verandert
Het opdrachtformaat werd niet herkend. Geldige formaten:
1:high,1:low,1:1,1:02:high,2:low,2:1,2:0- enz.
Hoofdlettergebruik is niet van belang (HIGH en high werken beide).
Het pinnummer moet 1, 2, 3 of 4 zijn. Controleer uw opdracht.
- Controleer de spanning met een multimeter (moet 0 V of ~3,3 V zijn)
- Controleer de stroomvereisten: ESP32 GPIO is beperkt tot ~12 mA
- Zorg voor een gemeenschappelijke massa tussen OSSM en uw apparaat
- Overweeg het gebruik van een transistor of relais voor hogere stroombelastingen