Skip to the content
PCBKitNew board
2 layers55 × 22 mmNONIK0, the printed circuit board in 3D

It's a knicknack to indicate your name with the original design by me, Nick. Version 0. NONIK0 for short! The only version there will ever be.

Size
55 × 22 mm
Copper layers
2
Thickness
1.6 mm
Parts
27
Nets
26
Pads
101
Tracks, vias
352, 18
Routed
Yes
KiCad
KiCad 9.0 (file 20241229)
Created
1 Jan 2025
Updated
29 Aug 2026

Overview

NONIK0 is an open-source printed circuit board by nonik0, from the nonik0/NONIK0 repository on GitHub. It is a 2-layer board of 55 × 22 mm with 27 parts on 26 nets, routed with 352 tracks and 18 vias.

It is built around the ATTINY1604-SSF, 1N4148WT and S8050. Its parts include 4 connectors, 3 capacitors, 3 ICs, 3 switches and 2 resistors. It belongs with the AVR (ATmega, ATtiny) boards of this library.

Main components

3

README

README.md

Nick's Original Name Indicator Knicknack (version 0)

Overview

Front of NONIK0 board powered on and showing NONIK0 on display

It's a knicknack to indicate your name with the original design by me, Nick. Version 0. NONIK0 for short! The only version there will ever be. I wanted a name badge to wear sometimes and most other times just use for a fancy LED decoration, and also learn some more Rust. Add in a tad of scope creep and you have also have some games, beeps, and other extras, too. For more detail, I have a project writeup where I talk about my process of completing this project start to finish, with more of a focus my experience working with Rust.

Hardware

The hardware is designed in KiCad 8.0 and all design files are included in the hardware/kicad8.0 directory.

The main hardware components are:

Revision #1:

  • Swapped test pads and UPDI pads. The UPDI pads were opposite of the buzzer, which made getting the probe clip to remain clipped over the pads with the buzzer in the way more difficult than it needed to be.
  • Added solder jumper to HCMS-291x SEL pin. Can optionally cut jumper to Vcc and solder other side to ground to use external oscillator for display.
  • Optimized some routing for power and ground.

Revision #2:

  • Fixed I2C pin assignment for external JST-SH connector
  • Added piezo driver circuit

Firmware

The firmware is written in Rust and can be found in the firmware/rust directory. As part of the work, I wrote a new HCMS-29xx driver and forked avr-hal to add a Feather32u4 support, which I used for bootstrapping the HCMS-29xx driver work. There is also an older PlatformIO project targetting the Adafruit Feather in the firmware/cpp directory.

The firmware is navigated using two buttons. Navigation and control is done with the two push buttons. A short press on the right button is a "next" action and will show the next option in the current context (i.e. the menu or active mode). A short press on the left button depends on the given context, and is either a "previous" action or a "alternate" action. A long press on the right button is an "enter/confirm" action and will enter a mode from the menu or, from within a mode, change the current page or enter a submenu. A long press on the left button will do an "exit" action which exits from a mode to the menu, or exits from a submenu from a mode.

Modes
  • Name: The original inspiration for this project. Displays an 8 character name (or other string). Can enter an edit mode to update the name/value and is persisted in EEPROM.
  • Settings: Change the current max brightness and max current settings for HCMS-29XX display, in addition to toggling the button tones on or off.
  • Vibes: Inspired from the prototype's zigzag pattern I used for testing scrolling/smoothness. It reminded me of watching mountains pass by from a train windows, so I added this mode with mountains and clouds with a parallax effect. The speed of the clouds and mountains can be changed with buttons.
  • Sensors: The first of the scope creep feartures. Uses the ADC and can read various channels includes the internal temperature and references voltage, but primary the external voltage on the external JUST port pins for use as a simple voltmeter. Has a settings page where the various ADC parameter can be alterned, I used this for my own learning and understanding of the ADC parameters when implementing.
  • Random: A simple mode that has several pages to display random values for use as a decision tool: integer values, dice values, "eight ball" yes/maybe/no values, and random cuisine types.
  • Tunnel A basic tunnel game where you control a runner that moves up/down with left/right buttons and you try to survive as long as possible as the tunnel shrinks.
  • Traffic Another basic game where a you control a driver that advances to the right as you avoid other traffic (rectangles) progressing to the left.

Design Images

Parts

27
QtyValueFootprintReferences
4MountingHoleNONIK0:MountingHole_CustomH1, H2, H3, H4
210uNONIK0:C_0603_1608MetricC1, C3
2SW_PushNONIK0:SW_SPST_PTS526_JLeadsSW2, SW3
1180NONIK0:R_0603_1608MetricR2
11N4148WTNONIK0:D_SOD-523_NoSilkscreenD2
11kNONIK0:R_0603_1608MetricR1
11uNONIK0:C_0603_1608MetricC2
1AP3602ANONIK0:SOT-23-6_SmallerFootprintU3
1ATtiny1604-SSNONIK0:SOIC-14_3.9x8.7mm_P1.27mmU2
1AVR-UPDI-3NONIK0:Pads_1x3_2.54mmJ1
1Battery_CellNONIK0:BatteryHolder_Keystone_3034_1x20mmBT1
1Battery_CellNONIK0:SpareBatteryHolder_Keystone_3034_1x20mmBT2
1BuzzerNONIK0:CMT-322-65-SMT-TRBZ1
1LEDNONIK0:LED_0603_1608MetricD1
1LED_HCMS-2915NONIK0:HCMS-291XU1
1Qwiic/Stemma QTNONIK0:JST_SH_4P_No SilkscreenJ2
1S8050NONIK0:SOT-23-SmallerCourtyardQ1
1SW_SPSTNONIK0:SW_SPDT_PCM12SW1
1SolderJumper_2_BridgedNONIK0:SolderJumper_SmallerFootprintJP1
1SolderJumper_3_Bridged12NONIK0:SolderJumper-3_P1.3mm_Bridged12_RoundedPad1.0x1.5mmJP2
1Test PadsNONIK0:Pads_1x3_2.54mmJ4
1Test PadsNONIK0:Pads_1x5_1mmJ3

Questions

How big is the NONIK0 PCB?

It measures 55 × 22 mm and has 2 copper layers, 1.6 mm thick.

What parts does the NONIK0 use?

27 parts, built around the ATTINY1604-SSF, 1N4148WT and S8050. 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 NONIK0 KiCad files?

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

Can I use the NONIK0 design in my own project?

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

Similar boards

  • 2 layers233.6 × 171.5 mmDIY Inverter Circuit - KiCAD, the printed circuit board in 3D

    DIY Inverter Circuit - KiCAD

    BaselMohamed802/EyeTalk

    An Accessible AAC Device Using Visual Speech to empower and help disabled people talk and communicate, as a graduation project for my

    172 parts1GPL-3.0
  • 2 layers58 × 58 mmMiniwall1b6x6, the printed circuit board in 3D

    Miniwall1b6x6

    bitluni/magnetMatrix6x6

    83 parts306
  • 2 layers60 × 100 mmHpboard, the printed circuit board in 3D

    Hpboard

    c0pperdragon/HotPlate

    Cheap DIY solution to make a heater for hot-plate soldering.

    32 parts48
  • 2 layers19.8 × 17.8 mmAdapter, the printed circuit board in 3D

    Adapter

    c0pperdragon/RetroMouse

    Adapter to attach PS/2 compatible mice to retro computers

    6 parts18
  • 4 layers40 × 27 mmH2cboard, the printed circuit board in 3D

    H2cboard

    c0pperdragon/HDMI2SCART

    19 parts7
  • 2 layers50 × 40.9 mmGR ATTiny LFO, the printed circuit board in 3D

    GR ATTiny LFO

    GadgetReboot/ATTiny_LFO

    Dual low frequency oscillators using ATTiny and MCP4725 DACs

    36 parts3
  • 2 layers77.2 × 50.3 mmDischarger, the printed circuit board in 3D

    Discharger

    Alan-JH/Batt-Discharger

    High current battery storage discharger for TJ UAV

    30 parts2
  • 2 layers58.3 × 98.6 mmScythe badge, the printed circuit board in 3D

    Scythe badge

    linted/opensource-hardware

    Hardware creations for the masses

    29 parts2