
SCREEN VERSION 1.1
Lucasmnascimento94/Smart-Shower
This is an extended version of the project I made for my computer arquitecture class.

This is an extended version of the project I made for my computer arquitecture class.
SCREEN VERSION 1.2 is an open-source printed circuit board by Lucasmnascimento94, from the Lucasmnascimento94/Smart-Shower repository on GitHub. It is a 6-layer board of 168.7 × 106.5 mm with 155 parts on 227 nets, routed with 1,857 tracks and 415 vias.
It is built around the ESP-12E, LM2576T-ADJ and AMS1117-3.3, with the BD80FC0WEFJ-E2 and RJ45 among its other parts. Its parts include 65 capacitors, 31 resistors, 13 connectors, 12 ICs and 12 diodes. It belongs with the ESP8266 and STM32 boards of this library.
This is an extended version of the project I made for my computer arquitecture class.
The Smart-Shower aims to provide a more efficient, personalized, and intelligent way to manage the shower experience. In many homes—mine included—it can take several minutes for water to reach a comfortable temperature due to the delay in hot water arriving through the pipes. Manually adjusting the valve each time is tedius and this system introduces a smart interface to control the shower valve (or other applicable valves) with a focus on user comfort, energy efficiency, and system safety.
-> Personalized Temperature Presets: Each user can save their preferred shower temperature settings for one-touch access.
-> Remote Start Functionality: Users can activate the shower remotely, allowing the water to reach the desired temperature before they step in—eliminating wait time.
-> Hot Water Monitoring: Tracks the decline of hot water temperature and alerts the user when they are about to run out—especially useful for homes that use hot water tanks.
-> Usage Tracking: Monitors water and energy usage per session. Data is logged and associated with individual users for long-term insights and potential conservation.
-> Cold Temperature Alert: Sends a warning if pipe temperatures drop too low, helping to prevent frozen or burst pipes—especially relevant for homes in colder northern climates (like mine).
-> Rich Media User Interface: Build an advanced touchscreen UI that supports media platforms such as Spotify and YouTube for a more immersive shower experience.
-> Metal Contamination Detection: Integrate a sensor to detect the presence of metals in the water—an issue that affects my home’s plumbing.
-> Smart Safety Alarms and Automation: Extend system logic to trigger alarms and automated valve actions based on detected anomalies in temperature or water quality.
The first version was made using an ATMEGA 168A, coded in assembly and all the assembled componnets were placed with loose wires in some protoboards.
-> Because this application utilizes threads, I started to move away from the HAL functions. At first, when I started migrating from one thread to another multithreaded environment, I started adapting my working functions within certain threads. However, it was later on determined that the HAL function are not thread safe, and the programming was breaking randomly when trying to run some HAL functions. To solve this issue, I started to manipulate the register in a low level manner. Trying to avoid reinventing the wheel, I started reading the STM documentation and controlling the registers using the variable names in the RM and the macros that are provided in the STM header files. With this approach it was possible to create mutaxes and make sure that no race condition is preventing my code from running.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 36 | 100n | Capacitor_SMD:C_0402_1005Metric | C3, C16, C17, C18, C19, C21, C29, C30, C31, C32, C33, C34, C35, C36, C37, C38 +20 |
| 10 | 1K5 | Resistor_SMD:R_0402_1005Metric | R14, R15, R16, R17, R19, R20, R21, R22, R24, R25 |
| 10 | LED | LED_SMD:LED_0603_1608Metric | D1, D3, D4, D5, D6, D7, D8, D9, D10, D11 |
| 7 | 22U | Capacitor_SMD:C_0805_2012Metric | C45, C48, C60, C61, C62, C73, C74 |
| 6 | 10k | Resistor_SMD:R_0402_1005Metric | R1, R2, R3, R5, R28, R31 |
| 5 | 1k5 | Resistor_SMD:R_0402_1005Metric | R4, R8, R9, R11, R26 |
| 4 | 10K | Resistor_SMD:R_0402_1005Metric | R6, R7, R10, R18 |
| 4 | Conn_01x02_Socket | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J2, J11, J12, J16 |
| 4 | MountingHole | MountingHole:MountingHole_3.2mm_M3 | H1, H2, H3, H4 |
| 3 | 2.2u | Capacitor_SMD:C_0402_1005Metric | C5, C6, C7 |
| 3 | 4.7u | Capacitor_SMD:C_0603_1608Metric | C28, C64, C72 |
| 3 | AMS1117-3.3 | Package_TO_SOT_SMD:SOT-223-3_TabPin2 | U9, U12, U13 |
| 2 | 0.1uF | Capacitor_SMD:C_0402_1005Metric | C1, C22 |
| 2 | 0.3K | Resistor_SMD:R_0402_1005Metric | R12, R13 |
| 2 | 100uF | Capacitor_SMD:C_1210_3225Metric_Pad1.33x2.70mm_HandSolder | C75, C76 |
| 2 | 10p | Capacitor_SMD:C_0402_1005Metric | C12, C15 |
| 2 | 10uF | Capacitor_SMD:C_0805_2012Metric | C25, C27 |
| 2 | 1u | Capacitor_SMD:C_0603_1608Metric | C46, C47 |
| 2 | 1uF | Capacitor_SMD:C_0603_1608Metric | C2, C20 |
| 2 | Conn_01x02_Pin | Connector_PinSocket_2.54mm:PinSocket_1x02_P2.54mm_Vertical | J5, J18 |
| 2 | Conn_01x04_Socket | Connector_PinSocket_2.54mm:PinSocket_1x04_P2.54mm_Vertical | J13, J15 |
| 2 | SW_SPDT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | SW6, SW9 |
| 2 | ~ | Library:TS5A23159DGSR | TS5A23159DGSR1, TS5A23159DGSR2 |
| 1 | 0.47uF | Capacitor_SMD:C_0603_1608Metric | C26 |
| 1 | 100 | Resistor_SMD:R_0402_1005Metric | R30 |
| 1 | 100uH | Library:SRN8040-101M | L2 |
| 1 | 120R | Inductor_SMD:L_0603_1608Metric | FB2 |
| 1 | 1N5822 | Diode_THT:D_DO-201AD_P15.24mm_Horizontal | D2 |
| 1 | 1U | Capacitor_SMD:C_0805_2012Metric | C53 |
| 1 | 1k | Resistor_SMD:R_0402_1005Metric | R29 |
| 1 | 1uF | Capacitor_SMD:C_0402_1005Metric | C23 |
| 1 | 26MHz | Crystal:Crystal_SMD_3225-4Pin_3.2x2.5mm_HandSoldering | Y1 |
| 1 | 2K49 | Resistor_SMD:R_0402_1005Metric | R23 |
| 1 | 4.7uF | Capacitor_SMD:C_0603_1608Metric | C24 |
| 1 | 4k | Resistor_SMD:R_0402_1005Metric | R27 |
| 1 | ADP2108AUJ-1.8 | Package_TO_SOT_SMD:TSOT-23-5 | U6 |
| 1 | BD80FC0WEFJ | Package_SO:HTSOP-8-1EP_3.9x4.9mm_P1.27mm_EP2.4x3.2mm | U1 |
| 1 | BOOT0_SWT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | BOOT_SWT |
| 1 | BYPASS_REG SWT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | BYPASS_REG_SWT |
| 1 | C106DGOS-ND | Package_SIP:SIP3_11.6x8.5mm | D14 |
| 1 | C_Polarized | Capacitor_THT:C_Disc_D3.0mm_W1.6mm_P2.50mm | 220UF1 |
| 1 | Conn_01x03_Pin | Connector_PinSocket_2.54mm:PinSocket_1x03_P2.54mm_Vertical | J14 |
| 1 | Conn_01x05_Pin | Connector_PinSocket_2.54mm:PinSocket_1x05_P2.54mm_Vertical | J3 |
| 1 | Conn_01x06_Socket | Connector_PinSocket_2.54mm:PinSocket_1x06_P2.54mm_Vertical | J10 |
| 1 | Conn_01x40 | Connector_FFC-FPC:Hirose_FH12-40S-0.5SH_1x40-1MP_P0.50mm_Horizontal | J1 |
| 1 | Conn_02x10_Odd_Even | Connector_IDC:IDC-Header_2x10_P2.54mm_Vertical | JTAG1 |
| 1 | ESP-12E | RF_Module:ESP-12E | U4 |
| 1 | FLASH_BOOT | UART SWT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | SW5 |
| 1 | L | Inductor_SMD:L_0603_1608Metric_Pad1.05x0.95mm_HandSolder | L1 |
| 1 | LM2576T-ADJ | Package_TO_SOT_THT:TO-220-5_Vertical | U14 |
| 1 | LOGO | LOGO | G*** |
| 1 | NRST_SWT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | NRST_SWT |
| 1 | PDR_ON SWT | Button_Switch_THT:SW_Slide_SPDT_Straight_CK_OS102011MS2Q | PDR_SWT |
| 1 | Polyfuse | Fuse:Fuse_1206_3216Metric | F1 |
| 1 | RJ45 | Connector_RJ:RJ45_Pulse_JXD6-0001NL_Horizontal | J17 |
| 1 | STM32F469IITx | Package_QFP:LQFP-176_24x24mm_P0.5mm | U2 |
| 1 | TL431DBZ | Package_TO_SOT_SMD:SOT-23 | U10 |
| 1 | ~ | Library:W9825G6KH | U8 |
| 1 | ~ | Library:R1501S050B-E2-FE | U7 |
| 1 | ~ | Connector_BarrelJack:BarrelJack_CUI_PJ-063AH_Horizontal | PJ-082BH1 |
| 1 | ~ | Library:W25M512JVFIQ | U5 |

Lucasmnascimento94/Smart-Shower
This is an extended version of the project I made for my computer arquitecture class.

Lucasmnascimento94/Smart-Shower
This is an extended version of the project I made for my computer arquitecture class.

nodep/NovaBox
Circuit and PCB design of simple Bluetooth stereo receiver and amplifier

BojanSof/Lab-Bench-PSU
Laboratory bench power supply with switching preregulator and LDO.


MSzalawiga/Payload-Control-Board
Science Payload Control Board for Queen's Space Engineering Team

phaenovum/RaspiCar
A model car equipped with a Raspberry Pi, intended for experimenting with tools and algorithms for autonomous navigation


UtilitechAS/amsreader-firmware
ESP8266 and ESP32 compatible firmware to read, interpret and publish data to MQTT from smart electrical meters, both DLMS and DSMR is supported

It measures 168.7 × 106.5 mm and has 6 copper layers, 1.6 mm thick.
155 parts, built around the ESP-12E, LM2576T-ADJ, AMS1117-3.3 and BD80FC0WEFJ-E2. 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 Lucasmnascimento94/Smart-Shower repository on GitHub, at the commit this page was made from: the board is KICAD/SCREEN/SCREEN_V1.2/SCREEN_VERSION_1.2.kicad_pcb and its schematic KICAD/MOTOR/ESP-12E.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 Lucasmnascimento94 before reusing the design.