Skip to the content
PCBKitNew board
2 layers180 × 160.5 mmHomelab, the printed circuit board in 3D

Architecture of my home sensor system incl. esp32, raspberrypi etc.

Size
180 × 160.5 mm
Copper layers
2
Thickness
1.6 mm
Parts
11
Nets
52
Pads
95
Tracks, vias
156, 0
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
4 Aug 2025
Updated
4 Oct 2025

Overview

Homelab is an open-source printed circuit board by lal02, from the lal02/homesensor repository on GitHub, published under the MIT licence. It is a 2-layer board of 180 × 160.5 mm with 11 parts on 52 nets, routed with 156 tracks and 0 vias.

It is built around the DHT22 and TSL2561T. Its parts include 7 connectors, 1 resistor, 1 IC and 1 switch. It belongs with the ESP32 and ESP8266 boards of this library.

Main components

2

README

README.md

homesensor

Description

This project, which is built around the esp32 microcontroller, started out as a simple Spring Application while I was doing an internship as a part of my university's practical semester. The goal of the Spring Application was to get familiar with Spring in general.

The Spring application mentioned above has additional features that are not relevant to the homesensor setup and will therefore not be discussed in this repository.

The idea was to use the esp32 as a data source to get some hands-on experience with REST interfaces and Data Handling in Spring. Beyond just being a learning exercise, this project turned out to be really useful. By collecting and graphing temperature data, I was able to spot a problem with the underfloor heating in my apartment.

The esp32 collects data from a variety of sensors and transmits it to the Spring backend through REST interfaces. The Spring backend, in turn, offers multiple REST interfaces for both sending and retrieving data. Additionally, a Raspberry Pi controls a 64x64 LED matrix, which displays data received from the Spring backend. It also adjusts the brightness of the LED matrix based on the light intensity data obtained.

Overview

This sketch illustrates the structure of all the hardware and software components, as well as how they interact with each other.



architecture.jpeg

Esp32 and Sensor Integration

The project commenced as a modest undertaking, utilising an ESP32 microcontroller and a DHT22 sensor to gather and transmit temperature and humidity data. Subsequent to this, the setup was expanded by the addition of further sensors, including the TSL2561 for the purpose of measuring light intensity, and subsequently the MQ7 and MQ135 for the purpose of measuring air quality. In order to enhance the ease of use, a number of quality-of-life features have been incorporated. These included an LCD screen that displayed the IP address and the time until the next sensor reading. Furthermore, an HTTP server was configured on the ESP32, incorporating two endpoints. The primary endpoint facilitates the retrieval of hardware-related information in the form of an HTML file, encompassing details such as the IP address, MAC address, host name, WiFi SSID, and the list of connected sensors along with their respective functions. In conclusion, a touch button was incorporated, the actuation of which initiates a sensor reading. Presently, both the ESP32 and the sensors are stored within a cardboard box. This short term storage method will be replaced in the future by a custom 3D printed case.

Raspberry Pi no.1

The system is constructed around a Raspberry Pi 3, which hosts a variety of essential services. The system operates a Tomcat service, which contains a Spring application, thereby providing a robust backend for the management of a variety of tasks. Furthermore, the Raspberry Pi is equipped with a GitHub Actions runner, thereby enabling DevOps processes and continuous integration/continuous deployment (CI/CD) pipelines. It also manages a PostgreSQL database, thereby enabling efficient data storage and management. It is evident that when a multitude of applications are operating concurrently, the Raspberry Pi 3 reaches its maximum performance capacity. During periods of substantial data loading, such as retrieving large amounts of data via a REST Interface Call, the system encounters performance bottlenecks. This performance limitation suggests that, in the future, it might be beneficial to transfer these operations to a machine with greater computing power to ensure smoother and more efficient processing.

Raspberry Pi no.2

The Raspberry Pi is programmed to execute a Python script that enables the control of a connected 64x64 LED matrix. However, it should be noted that due to the utilisation of Python bindings, the performance is less than optimal which causes visible flickers caused by low Hz. The present script has been developed for interaction with the REST interface of a Spring application, with a view to both the display of data and the regulation of the brightness of the LED matrix. This objective is realised through the retrieval of the most recent light intensity data, which is then utilised to adjust the brightness. Furthermore, the script utilises the API of OpenWeatherMap to retrieve current weather information, thereby integrating external data into the display system.



matrix.jpeg

PCB

With the help of a friend I managed to design a pcb using KiCad and ordered it from pcbway. The PCB-Design is very basic and still has room for improvement. This is an area where I had no previous experience in and I learned a lot from tinkering around with KiCad.

image

This is the PCB Prototype before soldering all the components to it. Unfortunately the assembly and final test has to wait until my studies are finished.

pcb

Learnings

Throughout this project, I've gained a variety of skills and knowledge. This includes for example soldering and electronics, which were essential for building and troubleshooting hardware. I learned about the I2C protocol for device communication and improved my ability to read datasheets for component specifications. My Linux skills advanced, particularly in system configuration and hardware interaction. Additionally, I developed an understanding of hardware requirements, such as program storage size and computational power for running httpservers.

Potential Upgrades

In the future, there are a number of potential enhancements that could be made to this project. A notable enhancement would be Over-the-Air (OTA) updates on the esp32. This feature facilitates seamless, wireless updates to the system, thereby ensuring that upgrades and maintenance can be effortlessly executed without the necessity for physical access to the device. Furthermore, the utilisation of the available C++ bindings for the LED matrix is another possibility.. This would enhance performance and efficiency by leveraging the capabilities of C++, which has been demonstrated to offer superior resource management and faster execution compared to Python.

Parts

11
QtyValueFootprintReferences
1470 OhmResistor_THT:R_Axial_DIN0204_L3.6mm_D1.6mm_P1.90mm_VerticalR1
1DHT22Connector_PinHeader_2.54mm:PinHeader_1x03_P2.54mm_VerticalJ3
1ESP32 NodeMCURF_Module:ESP32-C3-DevKitM-1U2
1I2C AdapterConnector_PinSocket_2.54mm:PinSocket_1x16_P2.54mm_VerticalJ5
1I2C OutputConnector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_VerticalJ6
1MQ135Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_HorizontalJ4
1MQ7Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_HorizontalJ2
1SW_Push_DualButton_Switch_THT:SW_PUSH_6mmSW1
1TO-92 S9013 NPNConnector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_VerticalJ7
1TSL2561Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_VerticalJ1
1WC1602ADisplay:WC1602ADS1

Questions

How big is the Homelab PCB?

It measures 180 × 160.5 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Homelab use?

11 parts, built around the DHT22 and TSL2561T. 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 Homelab KiCad files?

From the lal02/homesensor repository on GitHub, at the commit this page was made from: the board is homelab.kicad_pcb and its schematic homelab.kicad_sch. PCBKit opens the board in the browser, with nothing to install.

Can I use the Homelab design in my own project?

Its repository publishes it under the MIT licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

Similar boards

  • 2 layers70.1 × 43.2 mmIaq device, the printed circuit board in 3D

    Iaq device

    nkitanov/iaq_board

    IAQ Board is a DIY (Do-It-Yourself) device for measuring internal air quality

    19 parts396
  • 4 layers68.1 × 66 mmAmbient, the printed circuit board in 3D

    Ambient

    lab11/signpost

    Exploring what happens when you put computers on sign posts.

    63 parts97Apache-2.0
  • 4 layers33.1 × 64.7 mmNrg3, the printed circuit board in 3D

    Nrg3

    panStamp/kicad

    Kicad projects

    135 parts15GPL-2.0
  • 6 layers48.4 × 48.4 mmSolar Panel Z-, the printed circuit board in 3D

    Solar Panel Z-

    PyCubed-Mini/avionics-solarpanels

    Solar panel boards for the PyCubed-Mini PocketQube platform

    88 parts2
  • 2 layers95.9 × 27.8 mmOpsx x, the printed circuit board in 3D

    Opsx x

    ZeshuLiu/SX-70-Mk2

    把板子上的U+ U- GND VCC焊到usb线上,连接电脑后可以当作树莓派Pico开发板进行操作,上传代码的参见这里(树莓派官网)。 \ 在将机身主控安装至机器内部之前需要将micropython固件及代码烧录至控制器中。后续可以通过机身控制器上的USB接口连接开发板并更新python代码。 将code根目录中的所有python文件上传至控制器(文件夹不需要),并且将gmain.py命名为…

    74 parts2GPL-3.0
  • 4 layers160 × 100 mmOSM env01, the printed circuit board in 3D

    OSM env01

    devtank-ltd/kicad_osm_env01

    This documentation describes Open Hardware and is Licensed under CERN-OHL-W v2.

    243 parts
  • 2 layers42.4 × 32 mmSensorbrd, the printed circuit board in 3D

    Sensorbrd

    dileepvr/sensorbrd

    KiCAD PCB design files for an external sensor board for the payload on a nearspace weather balloon.

    20 parts
  • 2 layers100 × 60 mmMedidor Wireless, the printed circuit board in 3D

    Medidor Wireless

    LuizFernandoOliveira/Medidor-de-Energy-Harvesting-Wireless

    This work is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International License][cc-by-nc-nd].

    131 parts