Skip to the content
PCBKitNew board
2 layers95 × 45 mmHdmi2c, the printed circuit board in 3D

A HTTP -> DDC (I2C) bridge

Size
95 × 45 mm
Copper layers
2
Thickness
1.6 mm
Parts
61
Nets
111
Pads
263
Tracks, vias
535, 60
Pours
2
Routed
Yes
KiCad
KiCad 6 (file 20211014)
Created
25 Jun 2021
Updated
11 Aug 2022

Overview

Hdmi2c is an open-source printed circuit board by wlcx, from the wlcx/hdmi2c repository on GitHub. It is a 2-layer board of 95 × 45 mm with 61 parts on 111 nets, routed with 535 tracks and 60 vias.

It is built around the ESP32-WROOM-32, MIC5205-5.0YM5 and MIC5504-3.3YM5, with the BSS138 and BSS83P among its other parts. Its parts include 23 resistors, 8 transistors, 6 capacitors, 5 ICs and 3 connectors. It belongs with the interfaces and adapters boards and the ESP32 boards of this library.

Main components

5

README

readme.md

HDMI2C Monitor Controller

HDMI2C allows network control (via WiFi) of monitors connected to it via HDMI (via DDC). This allows you to build your own tooling and control systems for your monitors, rather than relying on awkward inconvient buttons and OSDs. Think of it as an API for your monitors.

This repository contains the hardware design, made with KiCAD. You can see the generated BOM and schematic here.

What could you build with this

  • A physical brightness knob
  • Switch inputs of both monitors simultaneously when you wake up your desktop PC or connect your laptop to your dock
  • IDK probably some other weird shit

Features

  • ESP32 WiFi MCU
  • USB-C power and MCU serial connection
    • With blinkenlights
  • Two HDMI ports with:
    • Level shifters to bring 5v DDC signals to 3.3v for the MCU.
    • 5v HDMI presence detection, switchable from the MCU. This allows us to fake being unplugged and replugged from HDMI, if we need to.
  • Two forward facing buttons

Firmware

It's floating around somewhere, I'll tidy it up and upload it at some point.

A word on monitor compatibility

Not all monitors implement DDC that well. Particularly of annoyance, some models I tested would not listen to DDC commands on inputs that were not active, which, given this project relies on you having a spare HDMI input which never carries any video, is kind of a deal breaker.

Known good monitors

  • Dell U2515h - I personally have two of these and they work flawlessly.

Improvements for next rev

  • Just use M3 mounting holes, M2.5 was a terrible idea
  • Spare ESP32 IO broken out to headers for ease of hacking
  • More ambitious, HDMI passthrough to allow use of the project without taking up a whole spare HDMI port.

Is it that useful tho?

You can achieve the same thing without having to build your own hardware with a Raspberry Pi 4. Support for dual monitor I2C (DDC) was added shortly before I started this project - guess I didn't check enough :-). This is a much more accessible means to achieve the same goal. However, if you want a more minimal solution that doesn't require an entire embedded linux system, this project may be for you.

Parts

61
QtyValueFootprintReferences
710kResistor_SMD:R_0603_1608MetricR1, R2, R3, R7, R8, R9, R10
42kResistor_SMD:R_0603_1608MetricR11, R12, R13, R14
4BSS138Package_TO_SOT_SMD:SOT-23Q3, Q4, Q5, Q6
4MountingHole_2.2mm_M2_DIN965_Pad_with_pastehdmi2c:MountingHole_2.2mm_M2_DIN965_Pad_with_pasteM1, M2, M3, M4
31uFCapacitor_SMD:C_0603_1608MetricC2, C3, C5
22.2kResistor_SMD:R_0603_1608MetricR18, R20
22.2uFCapacitor_SMD:C_0603_1608MetricC1, C6
23.3kResistor_SMD:R_0603_1608MetricR19, R21
25.1kResistor_SMD:R_0603_1608MetricR16, R17
268RResistor_SMD:R_0603_1608MetricR5, R6
2BSS83PPackage_TO_SOT_SMD:SOT-23Q7, Q8
2MIC5205-5.0YM5Package_TO_SOT_SMD:SOT-23-5U4, U5
2Q_NPN_BECPackage_TO_SOT_SMD:SOT-23Q1, Q2
2SW_Push_shellhdmi2c:SW_TH_Tactile_Omron_B3F-312xSW2, SW3
1100kResistor_SMD:R_0603_1608MetricR4
110uFCapacitor_SMD:C_0603_1608MetricC4
11kResistor_SMD:R_0603_1608MetricR15
122kResistor_SMD:R_0603_1608MetricR22
147kResistor_SMD:R_0603_1608MetricR23
1CP2102N-Axx-xQFN24Package_DFN_QFN:QFN-24-1EP_4x4mm_P0.5mm_EP2.6x2.6mmU1
1ESP32-WROOM-32RF_Module:ESP32-WROOM-32U3
1G***hdmi2c:logosvg2mod
1HDMI1hdmi2c:WURTH_685119134923_HDMIJ7
1HDMI1_SCLJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP3
1HDMI1_SDAJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP4
1HDMI1_SH_GNDJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP1
1HDMI2hdmi2c:WURTH_685119134923_HDMIJ8
1HDMI2_SCLJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP7
1HDMI2_SDAJumper:SolderJumper-2_P1.3mm_Bridged_RoundedPad1.0x1.5mmJP8
1HDMI2_SH_GNDJumper:SolderJumper-2_P1.3mm_Open_RoundedPad1.0x1.5mmJP2
1MIC5504-3.3YM5Package_TO_SOT_SMD:SOT-23-5U6
1RXLED_SMD:LED_0603_1608MetricD2
1TXLED_SMD:LED_0603_1608MetricD1
1USB_C_Receptacle_USB2.0Connector_USB:USB_C_Receptacle_GCT_USB4085J1
1reset_swButton_Switch_SMD:SW_SPST_Omron_B3FS-101xPSW1

Questions

How big is the Hdmi2c PCB?

It measures 95 × 45 mm and has 2 copper layers, 1.6 mm thick.

What parts does the Hdmi2c use?

61 parts, built around the ESP32-WROOM-32, MIC5205-5.0YM5, MIC5504-3.3YM5 and BSS138. 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 Hdmi2c KiCad files?

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

Can I use the Hdmi2c design in my own project?

Its repository states no licence, so its author keeps all rights: ask wlcx before reusing the design.

Similar boards

  • 2 layers70.6 × 66.3 mmPrototype Rev-, the printed circuit board in 3D

    Prototype Rev-

    DiegoBriceno03/Portable-Biofeedback

    Portable Biofeedback device for anxiety management

    106 parts3
  • 2 layers68.6 × 53.3 mmKiCad Shield, the printed circuit board in 3D

    KiCad Shield

    thainnos/LICSTER

    A Low-cost ICS Security Testbed for Education and Research

    76 parts122
  • 2 layers99.9 × 51.4 mmGR AVR Programmer, the printed circuit board in 3D

    GR AVR Programmer

    GadgetReboot/AVR_Programmer

    Atmel AVR programmer based on Arduino Pro Micro, intended for development into ISP and HVSP using various AVR programming interfaces and protocols.

    52 parts7
  • 4 layers500 × 34 mmPrecision clock, the printed circuit board in 3D

    Precision clock

    Alan-JH/precision-clock

    ECE 362 Final Project

    150 parts
  • 2 layers31.5 × 96.7 mmGaussCheck, the printed circuit board in 3D

    GaussCheck

    xeno27/GaussCheck

    67 partsMIT
  • 2 layers50 × 50 mmRoom hub, the printed circuit board in 3D

    Room hub

    lucanastasio/myHomeAutomation

    Home automation stuff

    125 parts1
  • 2 layers21.4 × 37.8 mmCamera v2, the printed circuit board in 3D

    Camera v2

    proveskit/development_boards

    Miscellaneous dev boards to test the components of the PROVES Kit on a smaller scale.

    30 parts1