
Esp32-crystal ball
atomic14/esp32-crystal-balls
This PCB is now supporting two of my projects: Crystal Balls and my Flame Lamp.

Open source design for HID controlled relay
HIDRelayController is an open-source printed circuit board by JPEWdev, from the JPEWdev/hid-relay repository on GitHub, published under the GPL-2.0 licence. It is a 2-layer board of 45.7 × 30 mm with 19 parts on 33 nets, routed with 140 tracks and 14 vias.
It is built around the ATTINY261A-SU, ULN2803A and MBRX120LF. Its parts include 5 resistors, 4 capacitors, 4 connectors, 3 diodes and 2 ICs. It belongs with the home automation and IoT boards and the AVR (ATmega, ATtiny) boards of this library.
Open source design for HID controlled relay
This project provides an Open Source and Open Hardware implementation of the HID Relay board. These boards can be found for purchase from various vendors, and appear as a USB HID device. They can be controlled using either pyhid-usb-relay or usb-relay-hid.
The software aims to be 100% compatible with the board that can be purchased, allowing custom designed boards to be interchanged with the same host side control software (and possibly to even control things other than relays).
The main controller for the relay boards is some sort of Atmel AVR chip. The software uses the V-USB project to implement the USB protocol, and should be able to run on any chip that V-USB supports.
avrdude (e.g. sudo apt install avrdude)flash.hex, eeprom.hex and fuses.txt files for the device
you want to programavrdude -P <MY_PROGRAMMER> $(cat fuses.txt)avrdude -P <MY_PROGRAMMER> -p <MY_DEVICE> \
-U flash:w:flash.hex:i \
-U eeprom:w:eeprom.hex:imeson is used as the build configuration system for this project. In order to start compiling, you must first define a meson cross file to tell meson about the board you are targeting. The project comes with cross files for the included hardware designs and other platforms which can be found in the cross/ directory. If you are using a custom hardware design, look at these as a reference for how to define your own board.
Once you have a cross file that describes your board, configure the build with the command:
meson setup --cross-file path/to/my_cross.txt buildOnce this is complete, the main program can be built with:
ninja -C buildThe meson configure for this project contains several convenience commands to
help program a board after the software is built. The commands use the
avrdude program to interact with the board. By default, meson assumes you are
using a USB AVRISP MKII programmer, but this can be changed with the
avrdude_programmer and avrdude_port meson options, for example:
meson configure build -Davrdude_programmer=buspirateThe helper targets defined in meson are all invoked using the meson compile
command, like:
meson compile -C build COMMANDOr with ninja:
ninja -C build COMMANDThe included commands are:
| Command | Description |
|---|---|
writeflash | Write program and EEPROM memory to the device |
writefuses | Write the fuse configuration to the device |
readfuses | Display the current fuse configuration from the device |
readeeprom | Dump the current contents of the EEPROM to the file eeprom.hex |
readflash | Dump the current contents flash (program memory) to the file flash.hex |
stats | Show static memory usage |
fuses.txt | Generate fuses.txt file which contains the avrdude arguments to program fuses |
hidrelay.asm | Create hidrelay.asm file which contains interleaved disassembly |
The writefuses command can be particularly useful to provision a new fresh
AVR, as it runs at a slow speed so it can correctly program a device even if it
is still running slowly on the internal oscillator (the default from the
factory).
Thus, to program your board after compiling, run:
# Uncomment this line if this is a fresh chip that has never been programmed before
# ninja -C build writefuses
ninja -C build writeflashNOTE: Be careful when programming fuses as incorrect fuses can cause the AVR to be unprogrammable, which can only be corrected using High Voltage Serial Programming.
| Qty | Value | Footprint | References |
|---|---|---|---|
| 2 | 10uF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C1, C4 |
| 2 | 20pF | Capacitor_SMD:C_0603_1608Metric_Pad1.08x0.95mm_HandSolder | C2, C3 |
| 2 | 240 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R1, R2 |
| 2 | 68 | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R3, R4 |
| 2 | LED | LED_SMD:LED_0603_1608Metric_Pad1.05x0.95mm_HandSolder | D2, D3 |
| 1 | 1.5K | Resistor_SMD:R_0603_1608Metric_Pad0.98x0.95mm_HandSolder | R5 |
| 1 | 12MHz | Crystal:Crystal_SMD_HC49-SD_HandSoldering | Y1 |
| 1 | ATtiny261A-S | Package_SO:SOIC-20W_7.5x12.8mm_P1.27mm | U2 |
| 1 | AVR-ISP-6 | Connector_PinHeader_2.54mm:PinHeader_2x03_P2.54mm_Vertical | J4 |
| 1 | Conn_01x04_Female | Connector_PinHeader_2.54mm:PinHeader_1x04_P2.54mm_Vertical | J1 |
| 1 | Conn_01x11_Female | Connector_PinHeader_2.54mm:PinHeader_1x11_P2.54mm_Vertical | J2 |
| 1 | MBRX120LF | Diode_SMD:D_SOD-123 | D1 |
| 1 | ULN2803A | Package_SO:SOIC-18W_7.5x11.6mm_P1.27mm | U3 |
| 1 | USB_B_Micro | Connector_USB:USB_Micro-B_Wuerth_629105150521 | J3 |
It measures 45.7 × 30 mm and has 2 copper layers, 1.6 mm thick.
19 parts, built around the ATTINY261A-SU, ULN2803A and MBRX120LF. 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 JPEWdev/hid-relay repository on GitHub, at the commit this page was made from: the board is Hardware/HIDRelayController/HIDRelayController.kicad_pcb and its schematic Hardware/HIDRelayController/HIDRelayController.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Its repository publishes it under the GPL-2.0 licence: you may reuse it on that licence's terms (keep the author's notice, and for a copyleft licence share your changes alike).

atomic14/esp32-crystal-balls
This PCB is now supporting two of my projects: Crystal Balls and my Flame Lamp.

leomil72/LM80C
A Z80-based homebrew computer withTMS9918, AY-3-8910, Z80 CTC, Z80 PIO, and Z80 SIO

OverInvented/Flippy
The code needed to build a mechanical 7-segment display that uses electromagnets to display characters


crgarcia12/electronics-homeassistant-lightscontroll
A smart lighting controller PCB that integrates seamlessly with ESPHome and Home Assistant while maintaining full compatibility with traditional mechanical switches.


