

Wires i2c
keep talkin and nobody goes poof :D
- Copper layers
- 2
- Thickness
- 1.6 mm
- Parts
- 22
- Nets
- 37
- Pads
- 87
- Tracks, vias
- 0, 8
- Routed
- Not yet
- KiCad
- KiCad 10.0 (file 20260206)
- Created
- 9 Dec 2024
- Updated
- 11 Aug 2026
Overview
Wires i2c is an open-source printed circuit board by danelynnn, from the danelynnn/ktane repository on GitHub. It is a 2-layer board with 22 parts on 37 nets.
It is built around the ATMEGA328P-PU, 74HC4051 and L7805. Its parts include 8 resistors, 3 ICs, 2 capacitors, 1 diode and 1 switch. It belongs with the AVR (ATmega, ATtiny) boards of this library.
Main components
3ATMEGA328P-PU
DIP-28-300mil-40℃~+85℃ 1.8V~5.5V 10bit 1KB 20MHz 23 2KB 32KB 8 Bit AVR Built-in FLASH DIP-28-300mil Microcontrollers (MCU/MPU/SOC) ROHSMicrochip TechnologyMicrocontrollers (MCU/MPU/SOC)74HC4051
SOP-16-40℃~+85℃ 1 170MHz 28ns 29ns 3V~9V 5ns 5pF 80Ω 8:1 SOP-16 Analog Switches, Multiplexers ROHSWuxi I-core ElecAnalog Switches, MultiplexersL7805
TO-220ST0℃~+125℃@(Tj) 1 1.2A 20V 2V@(1A) 42uV 500uA 5V 73dB@(120Hz) Fixed Positive Short Circuit Protection TO-220ST Voltage Regulators - Linear, Low Drop Out (LDO) Regulators ROHSOSENVoltage Regulators - Linear, Low Drop Out (LDO) Regulators
README
README.mdktane
keep talkin and nobody goes poof :D
this is a physical recreation of the... briefcase, from KEEP TALKING AND NOBODY <REDACTED>. the intention of this project is to be as faithful as possible to the original, so some modules might not be included or otherwise altered so that they can exist within the fabric of reality :]
at its core, the game might seem like a challenging engineering task, as the game's mechanics are governed by a large amount of arbitrary rules that would conceivably allude to the existence of a complex rats nest of circuits and logic. the idea that the serial number would make it so that the 4th wire should be cut instead of the 3rd wire? that must imply that the serial number is somehow mysteriously connected to the wiring of the wires?!? making a system that obeys those rules would be... impossible!
however, this is, in fact, a game. one specific wire isn't a safe wire because a specific quirk of the circuitry allows it to failsafe to prevent detonation, like it is in real... defusal situations. it's a safe wire because, well, "we said so". so, rather than thinking of the rules as implying its internals, we can instead implement it more simply: it is, at its core, a control panel. each module is a uniquely crafted box of buttons, dials, switches, lights, and other doodads that have no real significance other than that they make for a really fun game. the logic that one of those buttons is a good button and a bad button, is, as it is, all logic! and, rather than a control panel that controls, say, a vehicle, or a nuclear reactor, our briefcase is a control panel that plays a game.
as such, the meat of this project can be designated into a handful of sections:
-
circuit design
connecting all of our switches and blinkers to a brain that can accurately recognise its current status, and how it changes over time. -
logic programming
writing the rules of the game into that brain: that a bad switch flick causes mistakes, and a good switch flick causes lights to turn on. -
product design
wrapping all of the boilerplate setup into a housing, and then exposing the game's "interface" (the switches and blinkers)
gameplay loop
as reality is often disappointing, specifically, that it cannot be procedurally generated, the briefcase must be set up at a designated time before the game is considered "active", where every physical element can be assembled manually.
as such, the briefcase will have the following states:
enum Phase {
SETUP, ACTIVE, SOLVED
};-
setup (if applicable):
puzzle is inactive, time is frozen at starting time (e.g. 5:00)
modules can be inserted or disconnected
modules cannot cause strikes or be completed -
active: puzzle is active, time will start ticking down, and modules can be completed/cause strikes
-
solved (win/loss): puzzle is inactive, time is at 0:00
modules should not be connected or disconnected at this time
modules cannot cause strikes or be completed
modules
as the original game is grouped into modules, it'd be an absolute shame not to engineer the recreation as modular, as each physical "module" can roughly correspond to one virtual module.
generic module implementation
each of these modules will be designed as a standalone ATMega328p (IC from an Arduino R3), as this is a lot more cost-effective than dedicating an entire dev board to a module.
as the modules must stay in sync and send/receive information, they must be connected through communication. we're using a simple 2-wire I2C communication bus (for details, see "Communication")
all modules will have four pinouts to connect to a bus, aside from the exposed interfaces needed for the module:
- 5v (red)
- gnd (black)
- scl (white)
- sda (yellow)
further circuit schematics can be found in the kicad/ folder.
controller "module"
this isn't an actual module, but it has the same footprint and effectively acts as a normal module, so we're counting it here. this is the designated main hub for all of the briefcase's unique properties, including:
- battery count
- indicators
- serial number
- strikes
- timer
this controller will also include a handful of interactive elements, such as a speaker for sound effects and buttons to configure and advance state.
wires module (finally, the good stuff)
during setup phase, this module will accept any number of pin connections between the 6 left and 6 right terminals. these connections must be made with custom wires with a specific resistance to identify their colour, as follows:
- yellow: 100 Ω
- red: 220 Ω
- blue: 470 Ω
- black: 680 Ω
- white: 1k Ω
once setup phase is complete, the module will commit the final configuration of the wires as the "starting state", and any disconnections will cause either a strike or a completion.
any CONNECTIONS... i mean, idk man don't do that lol
communication
communication across the puzzle is handled through an I2C multi-master (different addresses can choose to initiate communication) bus. currently, there is no plan to implement arbitration, so a simple protocol must be created to prevent crosstalk. the general idea is that for any given "state change" event (e.g. user interacting with a module, module/controller connecting, needy module reactivating), only one address should be initiating communication, though this can include any number or combination of send/receives.
controller
always on address 8
possible initiations
- request state from module
- send reset signal to module
- send activate signal to module
format for <briefcase data>
first byte is header, second byte is data:
-
header: 0
data: serial#
0/1: mod of last digit -
header: 1
data: batteries0 less than 2 batteries 2 2 batteries 3 more than 2 batteries -
header: 2
data: timer
8 bits: [wwxxyyzz], each packet of 2 is based on each of the 4 digits:if digit is then not special 00 1 01 4 10 5 11 -
header: 3
data: number of strikes
module
allocated 56 addresses, could be between 9-64
there are 14 total modules, but addresses must be unique, so each module type can assign as one of 4 addresses:
| 9-12 | wires |
| 13-16 | button |
| 17-20 | keypad |
| 21-24 | simon says |
| 25-28 | who's on first |
| 29-32 | memory |
| 33-36 | morse code |
| 37-40 | complicated wires |
| 41-44 | wire sequences(??) |
| 45-48 | maze |
| 49-52 | password |
| 53-56 | gas |
| 57-60 | capacitor |
| 61-64 | knob |
possible initiations
- request data from controller
- send status to controller (-1/255 for "caused strike")
Parts
22| Qty | Value | Footprint | References |
|---|---|---|---|
| 8 | R | Resistor_THT:R_Axial_DIN0207_L6.3mm_D2.5mm_P10.16mm_Horizontal | R1, R2, R3, R4, R5, R6, R7, R8 |
| 6 | R | Resistor_THT:R_Axial_DIN0309_L9.0mm_D3.2mm_P25.40mm_Horizontal | wire1, wire2, wire3, wire4, wire5, wire6 |
| 2 | C | Capacitor_THT:CP_Radial_D5.0mm_P2.50mm | C1, C2 |
| 1 | 74HC4051 | Package_DIP:DIP-16_W7.62mm | U3 |
| 1 | ATmega328P-P | Package_DIP:DIP-28_W7.62mm | U1 |
| 1 | L7805 | Package_TO_SOT_THT:TO-220-3_Horizontal_TabDown | U2 |
| 1 | Resonator | Crystal:Resonator-3Pin_W10.0mm_H5.0mm | Y1 |
| 1 | reset | Button_Switch_SMD:SW_SPST_TS-1088-xR025 | SW7 |
| 1 | success | LED_THT:LED_D8.0mm | D1 |
More from danelynnn/ktane
1- 2 layers

Similar boards
- 2 layers162.8 × 100 mm

- 2 layers150 × 150 mm

- 2 layers90 × 80 mm

- 2 layers125.1 × 77.7 mm

- 2 layers80.2 × 55.5 mm

- 2 layers111.3 × 106.4 mm

Super Sixteen v1
matthewcieplak/super-sixteen
Code and schematics for the Super Sixteen Eurorack sequencer
141 parts171 - 2 layers20 × 110 mm

- 2 layers100 × 100 mm

Flipdot H Bridge
comakingspace/FlipDotDisplay
They were bought at the Makerfaire Hannover 2016.
76 parts3
Questions
What parts does the Wires i2c use?
22 parts, built around the ATMEGA328P-PU, 74HC4051 and L7805. 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 Wires i2c KiCad files?
From the danelynnn/ktane repository on GitHub, at the commit this page was made from: the board is kicad/wires_i2c/wires_i2c.kicad_pcb and its schematic kicad/analog_test/analog_test.kicad_sch. PCBKit opens the board in the browser, with nothing to install.
Can I use the Wires i2c design in my own project?
Its repository states no licence, so its author keeps all rights: ask danelynnn before reusing the design.