nanoupdi

Public

@umbertoragone

Download board files

Files for version 1. Pick what you came for.

Share nanoupdi

Check access before sharing the link.

Who can open this board

Anyone can open this board. No sign-in is required.

This link opens the latest version. Copying it does not grant additional access.

Loading 3D model… large boards can take a moment.

README

NanoUPDI

The smallest USB Type-C Serial UPDI programmer for your projects. Available for purchase on Tindie or Lectronz!

What is UPDI?

UPDI is a proprietary programming interface developed by Atmel/Microchip, similar to the JTAG/SWD interfaces used for ARM microcontrollers. It's the default programming interface for several newer AVR microcontrollers, including models like the ATTINY212, ATTINY412, ATTINY414, etc. It only requires a single pin for programming, so it's more convenient and efficient.

Features

  • CH340E/CH340X USB to Serial converter: A compact version of the well-known WCH CH340x series, which doesn't require an external crystal oscillator.
  • Compact Form Factor: At only 10 x 22 mm (excluding header pins), it is the smallest serial UPDI programmer on the market.
  • VCC Voltage Selector: Easily switch between 3.3V (3V3) and 5V logic voltages with a simple flick of a switch.
  • USB Type-C: Compatible with any USB Type-C cable that supports both power and data (USB 2.0 or greater). The reversible USB Type-C connector allows the cable to be plugged in either orientation, maintaining full functionality (data and power).
  • 2.54mm Pitch Pin Header: Designed for right-angle (horizontal) pin headers with a 0.1" (2.54mm) pitch pin headers (breadboard compatible), it also allows for custom wires or connectors to be soldered based on your needs.
  • Status LEDs: Includes a green LED for power (PWR) and a red LED that blinks during data transfer (TX).
  • Inspired by Stefan Wagner's SerialUPDI Programmer.

Installation and how to use

No installation required, it is Plug&Play with the majority of operating systems since the CH340x is a commonly used USB-to-serial converter.

Avrdude

If you use avrdude to program your UPDI compatible AVR microcontrollers, you simply need to specify serialupdi as the programmer:

avrdude -c serialupdi -p t414 -P /dev/tty.usbserial-10

Make sure to specify the correct serial device: on Linux devices, NanoUPDI might show up as /dev/ttyUSBX, while on MacOS it might show as /dev/tty.usbserial-XX.

Arduino IDE

To use NanoUPDI with the Arduino IDE, first install the megaTinyCore board support package, then choose Serial UPDI as the programmer in the dropdown menu.

WebUPDI

For a browser-based programming option, you can use WebUPDI — a lightweight tool that runs entirely in your browser with Web Serial API support. Simply connect your NanoUPDI, select your target device, and flash firmware without installing any additional software. Works on Chrome, Edge, Opera and other Chromium-based browsers.

Kicad files

If you want to open and modify the original project in Kicad 8 (>=8.0.6), you can find both the .kicad_sch and .kicad_pcb files in the kicad folder in this repository. I recommend you use the latest Kicad 8 version available for better compatibility.

Gerber files

If you want to fabricate your own PCBs from a PCB manufacturer of your choice, you can go ahead and download the Gerber-v2.x.zip file from the gerber folder in this repository. Upload it or send it to the PCB fabrication house and select the following specifications (if not already filled out):

  • Layers: 2
  • PCB Thickness: 1.6 mm
  • PCB Color: any (green is usually cheaper and faster to produce, but black looks nicer)
  • Outer Copper Weight: 1 oz
  • Via Covering: Tented
  • Mark on PCB: Remove Mark (JLCPCB specific, now free of charge)

BOM and assembly

Included in this repository is the HTML BOM (ibom.html) to help you in the assembly/soldering process after you received your PCBs. You can access the Interactive HTML BOM here, without having to download the .html file. Also, here is the list of components you will have to source and solder yourself:

Reference(s)ValueFootprintLCSC Part #Qty
C1, C4, C5100nF 50V 10% X7RC_0603_1608MetricC146633
C2, C310uF 10V 10% X7RC_0805_2012MetricC2374932
R1, R25k1 1%R_0402_1005MetricC259052
R3, R6470R 1%R_0402_1005MetricC251172
R40R 1%R_0603_1608MetricC211891
R51k 1%R_0402_1005MetricC117021
D11N4148D_SOD-523C7271121
D2EMERALD/GREENLED_0603_1608MetricC9658041
D3REDLED_0603_1608MetricC9657991
U1CH340EMSOP-10_3x3mm_P0.5mmC996521
SW1MSK12C02MSK12C02C4315401
FB1220R @ 100MHzL_0805_2012MetricC858401
USB1USB_C_Receptacle_USB2.0TYPE-C-31-M-12C29883691
VREG1AP2112K-3.3SOT-23-5C511181
J1Conn_01x03PinHeader_1x03_P2.54mm_VerticalC921591

Component substitutions

  • U1: in case the CH340E is not available, the CH340X should be a drop in replacement for the CH340E: same footprint, same pinout and basically the same function—at least in the scope of this UPDI programmer.
  • FB1: you can use a 0R 0805 resistor or solder a jumper wire in place to make it work. The ferrite bead is there to reduce possible noise from the VBUS (5V) line generated by your computer, so it is generally recommended for stability, but not critical. If you leave it empty, the rest of the board will have no power.
  • C1: it is a decoupling capacitor for VBUS, marked as "do not place", since it is redundant. In fact, on the boards I sell on my Tindie store, it is not populated by default.
  • D1: it can be swapped with a 1k 0402 resistor (loopback resistor between RX and TX). Both solutions will work the same.

Prebuilt option

If you're looking for a NanoUPDI programmer that's already assembled and ready to go, I offer a prebuilt option that's perfect for those who want a plug-and-play solution without the hassle of sourcing and assembling components. Each unit is handcrafted and fully tested before shipping. Check it out on my Tindie store or on Lectronz.

Comments

No comments yet. Be the first to ask about this board.

Ask about this board

Sign in to BoardRepo

New here? Signing in creates your account; there is no separate sign-up.