# sybond/ble-pressure-transducer architecture

> Architecture diagram of the GitHub repository sybond/ble-pressure-transducer, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-27). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/sybond/ble-pressure-transducer
- Repository: https://github.com/sybond/ble-pressure-transducer

## Overview

This is ESP32 firmware for a Bluetooth pressure transducer used with espresso pressure-profiling apps. The documented workflow reads an analog pressure sensor, converts ADC readings to millibar using configurable calibration values, displays status and pressure on the board’s OLED, and sends readings over BLE. Calibration can be changed through a BLE characteristic or serial commands. The README documents these behaviors, but no source excerpts were provided, so internal implementation details and call relationships cannot be verified.

Main entry points: [`BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino) (Device firmware)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_hardware["Device hardware"]
  node_sensor(("Pressure transmitter"))
  node_board["ESP32 board"]
end

subgraph group_firmware["Firmware"]
  node_firmware_main["Device firmware"]
  node_pressure_calc["Pressure conversion"]
  node_oled["OLED display"]
  node_config_char["BLE config characteristic"]
  node_serial_config["Serial config interface"]
end

subgraph group_clients["Configuration and apps"]
  node_profile_apps(("Pressure profiling apps"))
  node_serial_terminal(("Bluetooth serial terminal"))
end

node_sensor -->|"analog signal"| node_board
node_board -->|"provides readings"| node_firmware_main
node_firmware_main -->|"converts ADC"| node_pressure_calc
node_firmware_main -->|"displays status"| node_oled
node_firmware_main -->|"sends via BLE"| node_profile_apps
node_profile_apps -->|"writes calibration"| node_config_char
node_serial_terminal -->|"sends commands"| node_serial_config
node_serial_config -->|"configures device"| node_firmware_main
node_config_char -->|"sets calibration"| node_firmware_main

click node_firmware_main "https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino"
click node_pressure_calc "https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino"
click node_oled "https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino"
click node_config_char "https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino"
click node_serial_config "https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_sensor,node_board toneBlue
class node_firmware_main,node_pressure_calc,node_oled,node_config_char,node_serial_config toneAmber
class node_profile_apps,node_serial_terminal toneMint
```

## Components

### Device hardware

- **Pressure transmitter**
- **ESP32 board**

### Firmware

- [Device firmware](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino): `BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`
- [Pressure conversion](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino): `BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`
- [OLED display](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino): `BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`
- [BLE config characteristic](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino): `BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`
- [Serial config interface](https://github.com/sybond/ble-pressure-transducer/blob/main/BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino): `BluetoothPressureTransducer_InternalLCD_v3/BluetoothPressureTransducer_InternalLCD.ino`

### Configuration and apps

- **Pressure profiling apps**
- **Bluetooth serial terminal**

## Connections

- Pressure transmitter → ESP32 board: analog signal
- ESP32 board → Device firmware: provides readings
- Device firmware → Pressure conversion: converts ADC
- Device firmware → OLED display: displays status
- Device firmware → Pressure profiling apps: sends via BLE
- Pressure profiling apps → BLE config characteristic: writes calibration
- Bluetooth serial terminal → Serial config interface: sends commands
- Serial config interface → Device firmware: configures device
- BLE config characteristic → Device firmware: sets calibration
