From BlinkenArea Wiki
Jump to: navigation, search
project overview
Zur deutschsprachigen Version dieser Seite
Year 2019
Number of pixels 34
Grayscales / Colors 8 grayscales
Illuminant SMD LEDs
Power input
Contact person Arne Rossius
Project website

The DuckMini is the SMD version of the THT Duck. The circuit and software are mostly identical. More detailed information about the circuit and software can be found on the Duck project page.

Version 1.0


The circuit is identical to the full-size duck except for the microcontroller. For cost reasons, the ATmega8 microcontroller was replaced with an ATtiny88 which is only available in an SMD package. Instead of the loose battery holder for 3 AA cells, this version uses a soldered-down holder for 3 AAA cells on the bottom side of the PCB. It is recommended to also stick a piece of double-sided foam tape (mirror mounting tape) in the corner opposite the battery holder's pins. Above the battery holder, the PCB is just large enough to provide space for the large tantalum capacitor and an ISP pin header.

Instead of using the large battery holder, the PCB also provides a footprint for a CR2032 button cell holder. Due to the lower voltage and the large internal resistance of the button cell, the quacking of the duck will be very quiet and the LEDs will be dimmer, but for a duck without sound which won't be turned on for days at a time, the button cell is still a good option.


Version 2.0


In version 2, the controller was replaced with a 14-pin type, either ATtiny84 or ATtiny804/814 can be used.

The LEDs are now controlled with Charlieplexing, requiring only 7 pins. The transistors have been rewired to an emitter follower configuration, eliminating the need for base resistors and making the arrangement compatible with Charlieplexing. One column of LEDs is selected by driving the corresponding pin high, causing the transistor to supply the LED anodes with voltage, and the cathode pins for all LEDs in that column which should light up are driven low, while the remaining pins remain floating (set to input). This cycles through all 6 columns and repeats (like multiplexing).


As the ISP interface is sharing pins with the LEDs in this version, the always-on jumper as used in version 1 is no longer possible. Instead, the always-on mode can be activated by holding down the button while inserting the batteries. An automatic power-on when voltage is applied is not possible.

ATtiny804/814 don't support the ISP interface, so the 2x3 pin header becomes useless when using these controllers. In-system programming is still possible by soldering a wire to the unused pin 10 if the controller and connecting it to a UPDI programmer. Of course, ground also has to be connected to the programmer.

The PWM pins are different between ATtiny804/814 and ATtiny84. Pin 6 (PA7/OC0B on ATtiny84) can be set to the PWM signal WO0 with PORTMUX, requiring only a simple register setting at the beginning of the program. On pin 5 (PB2/OC0A on ATtiny84), no PWM signal is available. Instead, the CCL module is used to internally pass the WO1 signal through to LUT1-OUT, which in turn can be output on pin 5.

Version 3.0/3.1


For version 3, the controller was replaced again, this time with a one-time programmable Padauk PMS152. Both the 14-pin and 16-pin versions can be used, the extra 2 pins are not used. For development, the pin-compatible PFS154 with flash memory is also supported, but the LED outputs have different pin driver strengths, so some LEDs will be brighter than others. With the PMS152, all pins used for the LEDs have the same drive strength.

As the PMS152 provides only 1280 14-bit words of ROM, an additional 24C64 EEPROM is necessary to hold the audio data. Larger EEPROMs can be used for longer audio. The audio format is the same as described in Duck, the raw audio file (with a zero byte at the end!) is programmed into the EEPROM starting at address 0.

Version 3.1 fixes two issues with version 3.0: it adds the missing pull-up resistor on the SDA line (SCL is always driven by the microcontroller) and it swaps PB3 & PB4.


The firmware must be assembled with AS and programmed with the Easy-PDK programmer. As mentioned above, the version 3.0 boards have a layout error that requires a firmware fix. For these boards only, "PCB_30_FIX" has to be set to 1.

If you hold down the button while inserting batteries, the firmware will enter always-on mode, which disables the power-on/off with the button (quacking still works). If you keep holding the button for 5 seconds, the Duck will enter a test mode in which the LEDs slowly light up in sequence. This mode is useful for checking that everything is soldered correctly and finding mistakes. Both modes can only be left by removing the batteries.


More photos at