Embedded
Industrial Display Controller
An ESP32-S3 controller design combining a custom four-layer PCB, serial data handling, matrix-display firmware and a local browser interface.
The challenge
An industrial weight display needs a controller that translates serial data into clear, consistent readings and gives technicians a straightforward way to configure it.
How the system works
Serial inputs feed a parser and receiver state machine. Display formatting and scanning are separated from configuration and update handling. The PCB design brings together power conversion, processing, serial interfaces and display buffering.
Design decisions
- Kept display outputs disarmed after boot until explicitly enabled through the configuration workflow.
- Separated serial parsing, receiver state and display scanning so each could be exercised independently.
- Reviewed footprints, connector drills and component dissipation. Corrected a fuse footprint and increased the termination resistor rating.
- Added fallback glyphs and blanking for invalid display rows, with host-based regression tests.
What the evidence shows
Verification covered the firmware build, synthetic serial-protocol fixtures, host-based display tests, browser workflows and circuit modelling.
Engineering case study
Go deeper into the design choices, tests and lessons from the project.
Read the Industrial Display Controller case studyDevelopment and testing
- Schematic and PCB review
Reviewed schematic connectivity, footprints and connector drills in KiCad, including corrections to the fuse footprint and termination resistor rating.
- Firmware build
Compiled the ESP32-S3 firmware and checked image identity, partition placement and non-overlap.
- Serial protocols
Exercised fragmentation, corruption, timeouts, recovery and counter wraparound across 31 synthetic protocol profiles.
- Display logic
Host framebuffer and GPIO simulations checked glyph fallback, clipping, mirroring, row addressing, clock pulses, disarming and invalid-row blanking.
- Browser interface
Tested 31 protocol options and five configuration workflows against a mocked API, including JavaScript error and mobile overflow checks.
- Circuit modelling
Used ngspice for divider corners, reset timing and fixed-duty LC studies, with GNU Octave for analytical load-step and tolerance calculations.
- Mechanical exports
Prepared the board model and mounting exports and matched 88 SMT designators against the placement file.