
Corrector de postura
agustin-arg/Posture
Dispositivo electrónico de corrección de postura corporal

OfficeBot is a connected indoor delivery and task-assignment robot prototype. An ESP32 controller receives employee delivery requests over Wi-Fi and MQTT, displays the robot state on a 16x2 I2C LCD, and exchanges…
Shiled esp32 officeBot is an open-source printed circuit board by loueydaly, from the loueydaly/OfficeBot repository on GitHub. It is a 2-layer board of 41.5 × 63.5 mm with 10 parts on 41 nets, routed with 33 tracks and 0 vias.
It is built around the NODEMCU-32SLUA. Its parts include 5 resistors, 2 connectors, 1 capacitor, 1 IC and 1 diode. It belongs with the ESP32 and ESP8266 boards of this library.
OfficeBot is a connected indoor delivery and task-assignment robot prototype. An ESP32 controller receives employee delivery requests over Wi-Fi and MQTT, displays the robot state on a 16x2 I2C LCD, and exchanges movement commands and status frames with a dedicated STM32 motion controller over UART.
The repository contains the controller firmware, the STM32 communication interface, the KiCad electronics project, and the current mechanical-project directory supplied with the internship project.
The checked-in firmware is an ESP32 controller and coordination layer. It is responsible for network communication, task parsing, user feedback, battery-state logic, and the serial protocol to the STM32. The actual motor and navigation implementation is expected to run on the STM32 side; this repository contains the ESP32-side protocol endpoints but no STM32 firmware source.
The Conception_OfficeBot directory is included for project structure compatibility but is empty in the supplied source folder. The populated hardware design is in Pcb_OfficeBot.
Web application / MQTT client
|
| officebot/command JSON
v
MQTT broker on local network
|
v
ESP32 OfficeBot controller
- Wi-Fi and MQTT
- JSON command validation
- employee coordinate mapping
- LCD status display
- button and LED interface
|
| UART2, 115200 baud, binary frames
v
STM32 motion controller
- movement execution
- odometry and motor control
- status responsesemployee and action fields0x27The firmware is in Code_OfficeBot/ and targets an ESP32 development board with PlatformIO and the Arduino framework.
The project target is esp32dev with these dependencies:
PlatformIO configuration is stored in Code_OfficeBot/platformio.ini. Downloaded libraries and build output are stored in .pio/ and are intentionally excluded from the repository.
| Interface | Pin or setting | Function |
|---|---|---|
| Wi-Fi | Configured credentials | MQTT network connection |
| I2C SDA | GPIO21 | LCD data |
| I2C SCL | GPIO22 | LCD clock |
| LCD address | 0x27 | 16x2 display |
| User button | GPIO4, INPUT_PULLUP | Increment task progress |
| Status LED | GPIO2 | MQTT connection indication |
| STM32 UART RX | GPIO16 | Receive STM32 status |
| STM32 UART TX | GPIO17 | Send STM32 commands |
| STM32 baud rate | 115200 | UART protocol speed |
At startup, the controller initializes Serial, GPIO, I2C, and the LCD, then connects to Wi-Fi and the MQTT broker. It initializes UART2 for the STM32 and shows an Office Robot status screen.
The main loop then:
The default configuration uses:
Broker: 192.168.1.100
Port: 1883
Client: officebot_esp32
Command topic: officebot/command
Status topic: officebot/statusReplace the Wi-Fi credentials and broker address in Code_OfficeBot/src/main.cpp before building. Do not commit real network passwords or production broker credentials.
The controller subscribes to officebot/command and expects a JSON object containing an employee and an action:
{
"employee": "Sara",
"action": "goto"
}Only the goto action is currently implemented. Invalid JSON, missing fields, empty employee names, and unknown actions are rejected and shown on the LCD.
The current source maps names to integer office coordinates:
| Employee | X | Y |
|---|---|---|
| Ali | 5 | 3 |
| Sara | 8 | 2 |
| Ahmed | 3 | 7 |
| Fatima | 10 | 5 |
| Omar | 2 | 9 |
| Unknown name | 1 | 1 |
Update getEmployeeCoordinates when the office map or employee list changes.
Every two seconds, the controller publishes a JSON status message on officebot/status:
{
"currentX": 3,
"currentY": 2,
"targetX": 8,
"targetY": 2,
"taskProgress": 4,
"batteryLevel": 96,
"lastCommand": "ASSIGN Sara",
"robotState": "MOVING",
"isMoving": true,
"timestamp": 123456
}The battery value is currently simulated by subtracting one percent every 30 seconds. Replace this logic with a voltage/current measurement before using the value for real battery protection.
All frames use 0xFF as the start byte and 0xFE as the end byte.
The ESP32 sends an 11-byte movement frame:
Byte 0: 0xFF
Byte 1: 0x01 (MOVE)
Bytes 2-5: X coordinate as 32-bit float
Bytes 6-9: Y coordinate as 32-bit float
Byte 10: 0xFECoordinates are copied using the ESP32 native float representation. The STM32 endpoint must use the same byte order and floating-point format, or the protocol should be changed to an explicit integer/fixed-point representation.
The ESP32 requests status with:
0xFF 0x03 0xFEThe expected response is a 17-byte frame:
Byte 0: 0xFF
Byte 1: 0x03 (STATUS)
Bytes 2-5: current X as 32-bit float
Bytes 6-9: current Y as 32-bit float
Bytes 10-13: heading as 32-bit float
Byte 14: reserved/status byte
Byte 15: reached flag
Byte 16: 0xFEThe ESP32 updates its position and isMoving state from this response. It discards bytes before a start marker and ignores frames with invalid command or end markers.
The LCD displays initialization, Wi-Fi, MQTT, JSON validation, task, battery, charging, and robot-state messages. The button on GPIO4 increments taskProgress after debounce and refreshes the display. The LED on GPIO2 is on when MQTT is connected and off after connection failure.
Pcb_OfficeBot/ contains the KiCad hardware project:
shiled_esp32_officeBot.kicad_pro: KiCad project settingsshiled_esp32_officeBot.kicad_sch: schematicshiled_esp32_officeBot.kicad_pcb: PCB layoutThe original project does not contain populated mechanical files in Conception_OfficeBot. Before manufacturing the board, run KiCad electrical rules checks, verify ESP32/module footprints, validate UART and I2C connector pinouts, and generate fabrication files from the current schematic and PCB layout.
Code_OfficeBot/ as the PlatformIO project directory.WIFI_SSID, WIFI_PASSWORD, and MQTT_SERVER in src/main.cpp.pio runpio run --target uploadpio device monitor -b 115200goto command and verify the LCD and serial logs.(1, 1); production software should reject them.Code_OfficeBot/
platformio.ini PlatformIO target and dependencies
src/main.cpp ESP32 Wi-Fi, MQTT, LCD, button, battery, and UART logic
stm32_navigation/ STM32 protocol/navigation support files, if present
MQTT_COMMANDS.md Command reference from the source project
Conception_OfficeBot/ Mechanical design directory from the supplied project
Pcb_OfficeBot/ KiCad schematic and PCB layout
README.md Detailed project documentationNo separate project license has been added. Add an appropriate license before distributing or publishing the repository.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 5 | 220 | Resistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P5.08mm_Horizontal | R1, R2, R3, R4, R5 |
| 1 | 470uf | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1 |
| 1 | Conn_01x05 | Connector_JST:JST_XH_B5B-XH-A_1x05_P2.50mm_Vertical | J1 |
| 1 | LED | LED_THT:LED_D3.0mm | D1 |
| 1 | NODEMCU-32S | esp32 node mcu:MODULE_NODEMCU-32S | U1 |
| 1 | Screw_Terminal_01x02 | TerminalBlock:TerminalBlock_Altech_AK300-2_P5.00mm | J2 |
It measures 41.5 × 63.5 mm and has 2 copper layers, 1.6 mm thick.
10 parts, built around the NODEMCU-32SLUA. The full list of its parts is on this page, with links to each part's symbol and footprint where PCBKit's library has them.
From the loueydaly/OfficeBot repository on GitHub, at the commit this page was made from: the board is Pcb_OfficeBot/shiled_esp32_officeBot.kicad_pcb and its schematic Pcb_OfficeBot/shiled_esp32_officeBot.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository states no licence, so its author keeps all rights: ask loueydaly before reusing the design.

agustin-arg/Posture
Dispositivo electrónico de corrección de postura corporal

unla-investigacion-desarrollo/ecosistema-iot
Antes de desarrollar el sistema final, realizamos una etapa de exploración donde investigamos y experimentamos con las siguientes tecnologías:


bytecod3/lora-life-jacket
Electronic device for life jackets with LORA data transmission

hopkinskong/eie553-iot-hardware
ESP32 IOT Smart Lock Device Hardware Schematic and PCB used in the course "EIE553 Security in Data Communication".

2026MakerClub/PCB
projects with pcb, custom and commonly used schemes, footprints...etc.

ANTzacalie/termo-pro-esp32
Full-featured smart thermostat built on the ESP32 platform.
