

Virtual Temperature Monitoring PCB
A computer-based design of a temperature-monitoring PCB using an STM32G431CBUx microcontroller.
- Size
- 137 × 83 mm
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 11
- Nets
- 46
- Pads
- 88
- Tracks, vias
- 63, 0
- Pours
- 2
- Routed
- Yes
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 23 Aug 2026
- Updated
- 23 Aug 2026
Overview
Virtual Temperature Monitoring PCB is an open-source printed circuit board by JoshuaSavunth, from the JoshuaSavunth/Virtual-Temperature-Monitoring-PCB-Design repository on GitHub. It is a 2-layer board of 137 × 83 mm with 11 parts on 46 nets, routed with 63 tracks and 0 vias.
It is built around the AMS1117-3.3. Its parts include 6 capacitors, 2 ICs, 2 connectors and 1 resistor. It belongs with the STM32 boards of this library.
Main components
1README
README.mdVirtual-Temperature-Monitoring-PCB-Design
A computer-based design of a temperature-monitoring PCB using an STM32G431CBUx microcontroller.
The project covers the design process from schematic capture and analog signal conditioning through SPICE simulation, PCB layout, firmware development, and manufacturing-file generation.
Overview
The system models a temperature sensor with a linear output of:
VTEMP = 0.02 × T
This gives a sensor output of 0 V at 0 °C and 2.0 V at 100 °C.
The sensor signal passes through a passive RC low-pass filter before being measured by the STM32 ADC. The calculated temperature is then reported through UART.
Signal Path
Temperature
↓
Virtual Sensor
↓
RC Low-Pass Filter
↓
STM32 ADC
↓
Temperature Calculation
↓
UART
↓
Host PCPower Path
5 V Input → AMS1117-3.3 → 3.3 V Rail → STM32 + Supporting CircuitryPCB Preview
3D representation of the virtual PCB design.
Main Specifications
| Parameter | Value |
|---|---|
| MCU | STM32G431CBUx |
| Intended temperature range | 0–100 °C |
| Sensor model | 0.02 V/°C |
| Sensor output | 0–2.0 V |
| ADC resolution | 12-bit |
| ADC reference | 3.3 V |
| RC filter | 1 kΩ / 100 nF |
| Filter cutoff frequency | 1.59 kHz |
| Supply input | 5 V |
| Regulated supply | 3.3 V |
| UART baud rate | 115200 bit/s |
Hardware Design
The PCB was designed in KiCad 10 and includes the STM32G431CBUx, analog input filtering, 3.3 V regulation, decoupling, power input, and UART interface.
The RC filter uses:
- R1 = 1 kΩ
- C1 = 100 nF
- Cutoff frequency ≈ 1.59 kHz
The 3.3 V supply is generated from the nominal 5 V input using an AMS1117-3.3 linear regulator.
Schematic
KiCad schematic showing the temperature-sensing, filtering, power, MCU, and UART sections.
PCB Layout
PCB layout showing component placement, routing, and ground copper.
Firmware
The STM32 firmware was developed in C using STM32CubeIDE and the STM32 Hardware Abstraction Layer (HAL).
The firmware configures:
- ADC1 on PA0 (ADC1_IN1)
- 12-bit, single-ended ADC conversion
- USART1 TX on PA9
- USART1 RX on PA10
- UART at 115200 bit/s
The ADC reading is converted to voltage using the 3.3 V reference and then converted to temperature using the sensor model.
Example UART output:
ADC: 1241, Voltage: 1.000 V, Temperature: 50.00 CThe theoretical ADC range extends to approximately 3.3 V. With the sensor model of 0.02 V/°C, this corresponds to a theoretical maximum of 165 °C, although the intended operating range is 0–100 °C.
Firmware Flow
Simulation and Analysis
SPICE transient simulation was used to examine the behaviour of the RC filter.
The simulated filtered signal showed the expected low-pass behaviour, smoothly approaching the applied sensor voltage following a step change.
The ideal 12-bit ADC resolution is:
3.3 V / 4096 ≈ 0.806 mV/countSome expected values are:
| Temperature | Sensor Voltage | Approx. ADC Code |
|---|---|---|
| 0 °C | 0.0 V | 0 |
| 25 °C | 0.5 V | 620 |
| 50 °C | 1.0 V | 1241 |
| 75 °C | 1.5 V | 1861 |
| 100 °C | 2.0 V | 2482 |
SPICE Simulation
Simulated transient response of the RC low-pass filter at 2.0V.
Verification
The project was verified using computer-based design and simulation tools.
Completed checks include:
- KiCad schematic and ERC verification
- SPICE transient simulation
- ADC resolution calculations
- PCB layout and 3D inspection
- Manufacturing-file generation
- STM32 firmware compilation
The final STM32 Debug build completed with:
0 errors
0 warningsThe build also generated the firmware output files required for future programming of the microcontroller.
Lessons Learned
This project provided hands-on experience with:
- Full PCB design workflow (schematic → layout → simulation → manufacturing outputs)
- RC filter analysis (time constant, cutoff frequency, transient response)
- ADC resolution and quantization analysis
- Power regulation and MCU decoupling strategies
- STM32 firmware development (ADC configuration, UART communication)
- Professional documentation and version control practices
Future Work
The next stage of the project would be to:
- Fabricate the PCB.
- Assemble the components.
- Program the STM32 with the completed firmware.
- Test the ADC using known input voltages.
- Verify temperature conversion and UART output.
- Compare measured results with the theoretical and simulated results.
Repository Structure
.
├── Firmware/
│ └── STM32CubeIDE project
│
├── KiCad/
│ ├── Schematic
│ ├── PCB layout
│ └── Project files
│
├── Simulation/
│ └── SPICE files
│
├── Manufacturing/
│ ├── Gerbers
│ ├── Drill files
│ └── BOM
│
├── Project Report
│
│
├── Images/
│ ├── pcb-3d.png
│ ├── schematic.png
│ ├── pcb-layout.pngTools
- KiCad 10 — schematic capture and PCB design
- STM32CubeIDE — firmware development
- SPICE — analog simulation
- Git / GitHub — project version control
Parts
11| Qty | Value | Footprint | References |
|---|---|---|---|
| 4 | 100n | Capacitor_SMD:C_0603_1608Metric | C1, C4, C5, C6 |
| 2 | 10u | Capacitor_SMD:C_0805_2012Metric | C2, C3 |
| 1 | 1k | Resistor_SMD:R_0603_1608Metric | R1 |
| 1 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U2 |
| 1 | Conn_01x02_Pin | Connector_PinHeader_2.54mm:PinHeader_1x02_P2.54mm_Vertical | J2 |
| 1 | Conn_01x03_Pin | Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_Vertical | J1 |
| 1 | STM32G431CBUx | Package_DFN_QFN:QFN-48-1EP_7x7mm_P0.5mm_EP5.6x5.6mm | U1 |
Similar boards
- 2 layers290.1 × 130 mm

- 2 layers26.2 × 45.5 mm

PL18 multiprotocol
pascallanger/DIY-Multiprotocol-TX-Module
Multiprotocol TX Module (or MULTI-Module) is a 2.4GHz transmitter module which controls many different receivers and models.
24 parts1.9kGPL-3.0 - 4 layers99 × 53.3 mm

PSLab
fossasia/pslab-hardware
PSLab Hardware Design and Schematics https://pslab.io
199 parts1.7kApache-2.0 - 4 layers85 × 56 mm

- 4 layers100 × 54 mm

32Bit shift register
MaltWhiskey/Mega-Cube
16x16x16 PL9823 Cube with Teensy 4.0 and FlexIO driver
64 parts766 - 2 layers44.2 × 29.3 mm

- 2 layers78 × 60 mm

- 2 layers59.1 × 99.9 mm

Cheap FOCer 2 60mm
shamansystems/Cheap-FOCer-2
Low-Cost Motor Controller based on the VESC 6
193 parts407
Questions
How big is the Virtual Temperature Monitoring PCB PCB?
It measures 137 × 83 mm and has 2 copper layers, 1.6 mm thick.
What parts does the Virtual Temperature Monitoring PCB use?
11 parts, built around the AMS1117-3.3. 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.
Where can I download the Virtual Temperature Monitoring PCB KiCad files?
From the JoshuaSavunth/Virtual-Temperature-Monitoring-PCB-Design repository on GitHub, at the commit this page was made from: the board is Virtual_Temperature_Monitoring_PCB/Virtual_Temperature_Monitoring_PCB.kicad_pcb and its schematic Virtual_Temperature_Monitoring_PCB/Virtual_Temperature_Monitoring_PCB.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Virtual Temperature Monitoring PCB design in my own project?
Its repository states no licence, so its author keeps all rights: ask JoshuaSavunth before reusing the design.