Protofrenz Nano Firmware

Why ProtoFrenz Nano

A face that reacts, not just glows.

The ProtoFrenz Nano firmware turns a handful of MAX7219 matrices and a single touch sensor into an expressive, audio-reactive visor — fully designed in your browser, then saved to the device so it works anywhere, untethered.

🎨

Design every expression

Paint Idle, Surprised, Angry and Dead pixel-by-pixel right here in the browser. Draw the left half — the Nano mirrors it perfectly to the right.

🎵

Reacts to sound

The mouth opens and moves with your voice automatically. No setup — just talk, and your face talks back.

🪩

Dance Mode

Tap into a full-face party: audio-reactive VU bars on the mouth, eyes strobing on the beat, nose pulsing the inverse.

Beat-reactive
👆

One-touch control

A single nose "boop" sensor drives everything — tap to switch expressions, hold for a cute squint. No buttons, no app.

😍

Heart eyes & extras

Flip on animated heart eyes per expression, set auto-blink speed, and tune how long each reaction lingers.

🎛️

Tune it untethered

An on-device menu lets you set brightness, mic sensitivity and blink speed with no computer in sight. Everything saves to the device.

Before you start · Hardware

What you'll need

ProtoFrenz Nano runs on a few inexpensive, easy-to-find parts. The controller is required; the touch sensor and microphone unlock the interactive features.

🧠

Arduino Nano

The controller that drives the MAX7219 matrices and runs the firmware. Use the ATmega328P "Old Bootloader" variant.

Matrices → D9 · D11 · D13
👆

TTP223 / TTP223B touch sensor

The nose "boop" pad. Wire its OUT to D2 (plus 5V and GND). Either the TTP223 or TTP223B works.

OUT → D2
🎤

MAX9814 microphone

Auto-gain mic amp for sound reactivity. Its output runs through a simple envelope detector — an ordinary signal diode, a 47 µF capacitor and a 4.7 kΩ resistor — into analog pin A7. See the diagram below.

Envelope → A7

Wiring at a glance

PartConnections to the Nano
MAX7219 matrices5V · GND · DIN→D11 · CLK→D13 · CS→D9
TTP223 / TTP223B5V · GND · OUT→D2
MAX9814 envelope detector5V · GND · diode + 47 µF cap + 4.7 kΩ resistor → A7
5 V GND MAX9814 auto-gain mic amp VDD OUT GND Arduino Nano ATmega328P 5V A7 GND diode 4.7 kΩ + 47 µF
MAX9814 envelope detector. The mic output passes through an ordinary signal diode, then a 47 µF capacitor and 4.7 kΩ resistor to ground smooth it into a steady envelope for the Nano's A7 pin. Power the module from 5 V and GND.
Connect the sensors to get the interactive features. The MAX9814 mic must be wired in for sound reactivity (the mouth moving to sound and Dance Mode's audio bars), and the TTP223 touch sensor must be wired in for touch reactivity (tapping between expressions, hold-to-squint, the on-device menu, and starting Dance Mode). The matrices alone will still display your static faces.
Step 1 · Firmware

Install or update the firmware

New controller, or updating to the latest version? Flash the ProtoFrenz firmware straight from this page over USB — it takes about a minute, no software to install. Already running it and just want to change your face? Skip down to the editor.

1

Plug in your Nano

Connect the controller to your computer with a USB data cable (some cheap cables only charge). Use desktop Chrome or Edge — flashing isn't supported on Safari, Firefox, or phones/tablets.

2

Click Flash & pick the port

Press the button below. A small browser pop-up asks which device to connect — choose the one that looks like your Nano (often USB-SERIAL CH340, USB Serial Device, or Arduino) and click Connect.

3

Wait — don't unplug

The status line shows the progress (Downloading → Syncing → Flashing). When it says Done, your firmware is installed. Now scroll down to design your face.

or download the .hex file
Ready when you are.
🧯
If it won't connect: close the Arduino IDE or anything else using the serial port, try a different USB cable, unplug other USB-serial gadgets, then click Flash and reselect the port. The firmware installs over the Nano's Old Bootloader at 57600 baud.
Prefer to install manually? (avrdude)
  1. Download the .hex file using the link above.
  2. Install avrdude if you don't have it.
  3. Open a terminal / command prompt and run:
    avrdude -v -p atmega328p -c arduino -P COM# -b 57600 -D -U flash:w:protofrenz_nano_oldboot.ino.hex:i
    (Replace COM# with your Nano's serial port.)
◆ Nano Dot-Matrix

ProtoFrenz Face Editor

Draw the left half. The Nano mirrors it to the right. Use presets per component or paint pixels.

Not connected
Head model (sets mouth width). You can still edit any design regardless of model.
1
30 120
4s to 8s
Color is for editing only - matrix color won't change

Touch behavior for: Idle
Duration 0 means "stay until changed". Tap settings require firmware support.
Eye presets

Eyes (2 matrices)

Nose presets (half → mirrored)

Nose (1 matrix)

Mouth presets

Mouth (3-5 matrices depending on mode)

Click/drag to paint pixels on the canvases.

Preset files

Save/load your face edits as a .pfb file to share, back up, or copy to another Nano.
💾
Save your design

Click Save .pfb to download all four faces — plus brightness and tap settings — as one file. No connection needed; perfect for a backup or sharing a look with friends.

📂
Load a design

Pick a .pfb file to drop it into the editor. Your suit doesn't change until you Connect and click Upload at the top.

Log

Requires desktop Chrome/Edge for Web Serial. iOS browsers generally don't support it.

Once it's installed

Using your face in the suit

Everything is driven by the single touch sensor on the nose. There are just two gestures to learn.

TAP Touch and release quickly — under a second. Taps switch expressions and trigger Dance Mode.
HOLD Touch and keep holding for 3 seconds. After about half a second the eyes flash to confirm — keep holding until the display changes.

🙂 Everyday face

  • Tap to change expression — Surprised, Angry, Dead. Each holds for a set time, then returns to Idle on its own. (Tap counts and durations are configurable in the editor above.)
  • Hold while Idle for a squinty "booped" reaction.
  • Talk or play music — the mouth moves to the sound automatically.
  • Blinking & nose animate on their own at relaxed intervals.
🪩
Dance Mode. Tap the sensor 15 times quickly to drop into the audio-reactive light show. Tap once to exit. (You can also start it from the on-device menu.)

🎛️ On-device menu

Hold for 3 seconds to open the menu. The mouth shows the setting name, the eyes show its value. Tap for the next item (or to change a value); hold to select/confirm. It auto-saves and exits after 10 seconds.

ItemWhat it does
BRIGHTBrightness, 0 (dim) to F (brightest). Hold to edit, tap to step up, hold to confirm.
SENSMic sensitivity — 1 Low, 2 Medium, 3 High.
BLINKAuto-blink speed — 1 Slow, 2 Normal, 3 Fast.
LOCKExpression lock — 0 off, 1 on (taps ignored so the face stays put).
DANCEHold to start Dance Mode immediately.
🔧
Quick fixes. Face won't change on tap? Check LOCK is 0 and the touch sensor is enabled in the editor. Mouth not moving? Raise SENS and confirm the mic is enabled. Display garbled after a mode change? Power-cycle the device.