Hardware design project — Altium Designer schematics and PCB layout for an ESP32-based multifunctional probe with CAN, Ethernet, USB-serial, and isolated AC/DC power input.
This repository contains the complete Altium Designer project — schematic sheets, PCB layout, and supporting reference documentation — for a single-board device ("Multifunctional Probe") built around an ESP32-WROOM module. It is a hardware-design repository: there is no firmware or application source code here, only the electrical design.
The Multifunctional Probe is a PCB designed to give an ESP32 core multiple physical-layer interfaces on one board — CAN bus, Ethernet (via a discrete PHY), USB-to-serial, general-purpose digital/analog I/O, and an isolated AC-to-DC input stage for powering the board from mains or field AC sources.
In practice, this repository is what you'd reach for if you need to:
- Review or modify the schematic of an ESP32-based industrial/field probe before fabrication.
- Reuse individual subsystem sheets (e.g. the isolated AC/DC front end, or the CAN transceiver stage) as a starting point in another design.
- Regenerate manufacturing outputs (BOM, Gerbers, drill files) from the native Altium project.
- Understand the board's signal architecture without opening Altium first, via this README and the bundled board report.
- Hardware/PCB engineers evaluating or extending this design.
- Firmware developers who need to know the ESP32 pin mapping and peripheral wiring before writing code for this board (no firmware repository currently exists — see Limitations).
- Anyone sourcing components or fabricating the board, using the PCB document and board report included here.
Altium Designer (or a compatible viewer) is required to open the native design files — this is not a repository you can build or run with a package manager.
The project is organized as a hierarchical Altium schematic. Dashboard - Multifunctional Probe.SchDoc is the top-level sheet; it instantiates six sub-sheets as sheet symbols, each covering one subsystem. This hierarchy is defined in Multifunctional Probe.PrjPcbStructure and compiles into the single PCB document Multifunctional Probe.PcbDoc.
flowchart TD
Top["Dashboard - Multifunctional Probe.SchDoc<br/>(top-level sheet)"]
PWR["Power Management.SchDoc"]
CAN["CAN.SchDoc"]
IO["Input - Output.SchDoc"]
USB["USB2Serial.SchDoc"]
CORE["Core-ESP32.SchDoc"]
ETH["Ethernet DP.SchDoc"]
PCB[("Multifunctional Probe.PcbDoc")]
Top --> PWR
Top --> CAN
Top --> IO
Top --> USB
Top --> CORE
Top --> ETH
PWR --> PCB
CAN --> PCB
IO --> PCB
USB --> PCB
CORE --> PCB
ETH --> PCB
A seventh schematic, AC-TO-DC-Input - Output Isolation.SchDoc, exists in the repository but is not currently referenced by Multifunctional Probe.PrjPcb (it does not appear as a sheet symbol or document entry in the project file). Treat it as a standalone reference/candidate sheet rather than part of the compiled design — why it was decoupled from the active hierarchy is Not yet documented.
flowchart LR
ACIN["AC Input"] --> ISO["Isolation Stage\n(AC-TO-DC sheet, not linked\ninto compiled project)"]
ISO -.-> PWR["Power Management"]
PWR --> CORE["ESP32 Core"]
CORE --> CANB["CAN Transceiver"]
CORE --> ETH["Ethernet PHY"]
CORE --> USB["USB-to-Serial"]
CORE --> IO["Digital/Analog I/O"]
The dashed link reflects that the isolation sheet is not wired into the compiled hierarchy today; power currently enters the Power Management sheet directly in the released project.
| Sheet / File | Responsibility | Source |
|---|---|---|
| Dashboard | Top-level sheet; instantiates and interconnects all subsystem sheets | Dashboard - Multifunctional Probe.SchDoc |
| Power Management | Board power supply and regulation | Power Management.SchDoc |
| Core-ESP32 | ESP32-WROOM module core circuit (boot straps, decoupling, programming header) | Core-ESP32.SchDoc, Core-ESP32.Harness |
| CAN | CAN bus transceiver and bus interface | CAN.SchDoc |
| Ethernet DP | Ethernet PHY and RMII/MII-style interface to the ESP32 | Ethernet DP.SchDoc, Ethernet DP.Harness |
| USB2Serial | USB-to-UART bridge for serial communication/programming | USB2Serial.SchDoc |
| Input - Output | General-purpose digital/analog I/O conditioning | Input - Output.SchDoc |
| AC-TO-DC Isolation (unlinked) | Isolated AC-to-DC front end | AC-TO-DC-Input - Output Isolation.SchDoc |
| PCB Layout | Physical board layout and routing | Multifunctional Probe.PcbDoc |
| Project File | Altium project definition and compiled document list | Multifunctional Probe.PrjPcb |
.Harness files (Core-ESP32.Harness, Ethernet DP.Harness) are Altium harness-connector definitions used to bundle related signals (e.g. the Ethernet PHY bus) between sheets — they are supporting design files, not standalone documentation.
- ESP32-WROOM core. Dedicated schematic sheet for the module, its boot/reset network, and programming interface. Reference datasheet (
esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf) is bundled in the repository. - CAN bus interface. Discrete transceiver sheet for connecting the ESP32 to a CAN network.
- Ethernet connectivity. Discrete PHY sheet (RMII-style bus, per
Ethernet DP.Harness) for wired networking. - USB-to-serial bridge. Dedicated sheet for host communication/programming over USB.
- General-purpose I/O. Separate sheet for digital/analog input and output conditioning.
- Isolated AC/DC power (in progress). A dedicated isolation sheet exists for powering the board from AC sources, but it is not yet integrated into the compiled project —
Planned/Requires validation. - Fully routed 2-layer PCB. Per the bundled board report, the current layout is 100% routed (411/411 connections) across 187 components.
| Layer | Technology | Purpose |
|---|---|---|
| Design tool | Altium Designer | Schematic capture and PCB layout (native .SchDoc / .PcbDoc / .PrjPcb files) |
| Core MCU | ESP32-WROOM-32D / 32U | Main processing module (per bundled Espressif datasheet) |
| Bus interfaces | CAN, Ethernet (PHY), USB | Physical-layer connectivity implemented on dedicated sheets |
| Power | AC/DC isolation + regulation | Board power supply; isolation sheet not yet linked into the compiled project |
No firmware toolchain, build system, or software dependency is present in this repository — it is an EDA (electronic design automation) project only.
There is no build/run step for this repository; "getting started" means opening the design in Altium Designer.
- Altium Designer (the exact version used to author the project is
Not yet documentedin the repo — treat compatibility with your installed version asRequires validation). - Sufficient disk space;
Multifunctional Probe.PcbDocalone is ~11 MB.
git clone https://github.com/Pouya-Mansournia/multifunctional-probe.git
cd multifunctional-probeThen, in Altium Designer:
- Open
Multifunctional Probe.PrjPcb. - Let Altium resolve the document list (
Dashboard - Multifunctional Probe.SchDocis the root sheet). - Compile the project (
Project → Compile PCB Project) to validate the design and regenerate the board information report. - Open
Multifunctional Probe.PcbDocto view/edit the physical layout.
Multifunctional Probe.html / Multifunctional Probe.txt are pre-generated Board Information Reports you can open directly (browser or text editor) without Altium, for a quick summary of board size, routing completion, and layer statistics.
multifunctional-probe/
├── README.md
├── Multifunctional Probe.PrjPcb # Altium project definition (compiled document list)
├── Multifunctional Probe.PrjPcbStructure # Sheet hierarchy (top sheet + sheet symbols)
├── Multifunctional Probe.PcbDoc # PCB layout (physical board)
├── Multifunctional Probe.Annotation # Component designator/sheet numbering state
├── Multifunctional Probe.html / .txt # Generated Board Information Reports
├── Dashboard - Multifunctional Probe.SchDoc # Top-level schematic sheet
├── Power Management.SchDoc
├── Core-ESP32.SchDoc
├── Core-ESP32.Harness # Harness connector definition for the ESP32 sheet
├── CAN.SchDoc
├── Ethernet DP.SchDoc
├── Ethernet DP.Harness # Harness connector definition for the Ethernet PHY bus
├── USB2Serial.SchDoc
├── Input - Output.SchDoc
├── AC-TO-DC-Input - Output Isolation.SchDoc # Present in repo, not linked into the compiled project
└── esp32-wroom-32d_esp32-wroom-32u_datasheet_en.pdf # Reference datasheet
Taken from the bundled Board Information Report (Multifunctional Probe.txt, generated by Altium):
| Metric | Value |
|---|---|
| Board size | 4822.55 mils × 3445.676 mils (≈122.5 mm × 87.5 mm) |
| Components on board | 187 |
| Layers | 2 (Top Layer, Bottom Layer) |
| Connections | 411 |
| Routing completion | 100.00% (411/411 routed) |
| Vias | 230 |
This report is a point-in-time snapshot from the design tool; re-run Reports → Board Information Report in Altium after any layout change to regenerate current figures.
- No firmware. This repository contains hardware design files only; no ESP32 application/firmware source is included or referenced.
- No license file. The repository currently has no
LICENSE; see License below. - AC/DC isolation sheet is not wired into the project.
AC-TO-DC-Input - Output Isolation.SchDocexists but is absent fromMultifunctional Probe.PrjPcb's document list, so it does not affect the compiled design or PCB today. - No exported manufacturing outputs. Gerbers, drill files, pick-and-place, and BOM exports are not present in the repository — only the native Altium
.PcbDoc. - No CI, tests, or automated validation. As an EDA project there is no software test suite; design validation happens via Altium's DRC/ERC and the Board Information Report.
- Altium Designer version requirement is undocumented — compatibility with a specific Altium release is
Requires validation.
Planned: Choose and add an explicit hardware/documentation license.Planned: Integrate or formally retire the AC-TO-DC isolation sheet.Planned: Export and commit manufacturing outputs (Gerbers, drill, BOM, pick-and-place).Planned: Publish firmware for the ESP32 core, if/when developed, likely as a companion repository.
No dated milestones are tracked in the repository; the above reflects logical next steps inferred from the current project state, not committed deadlines.
There is no CONTRIBUTING.md in this repository yet. If you'd like to propose changes:
- Open an issue describing the schematic/layout change and its rationale.
- If you have Altium Designer access, fork the repository, make changes on a branch, and open a pull request describing what changed and why (e.g. which sheet, which nets/components).
- Because these are binary/native Altium documents, describe changes in prose (and, where possible, exported PDFs or screenshots) — diffs of
.SchDoc/.PcbDocare not human-readable in GitHub's UI.
- Issues: use GitHub Issues on this repository for bugs, design questions, or proposed changes.
- No Discussions, chat, or other support channel is currently configured for this repository.
No license file is currently present. Add a license (for example an open hardware license such as CERN-OHL, or a standard document/code license if firmware and docs are added later) before treating this repository as reusable open-source hardware.
- Espressif Systems — ESP32-WROOM-32D/32U datasheet, bundled in this repository for reference.