Large Neopixel Butterfly - Arduino Nano / ESP32C3 Supermini

Update 17.11.2025: ESP32C3 Supermini imlementation added.

This is a large print whose maximum dimension is 29 cm.

The butterfly changes its colors softly and accommodates its brightness with the environment. In the dark it is quite dim to serve as a nightlight. The brightness limits can be changed with sketch definitions minLight and maxLight.

Credits
This is a remix of Neopixel Butterfly by Regis.

Material
Black PLA
Opaque PLA
Neopixel strip, 60 LED/m, length of 40 LEDs
Arduino Nano or ESP32C3 Supermini
LDR, light sensitive resistor
Resistor, 47-51 kOhm
For ESP32C3, 470 Ohm and 1 kOhm resistors (voltage divider)
5V power source (USB charger)
Black tape
Double-sided tape
Kitchen tissue
Fishing line or applicable thread for hanging

Print settings I used
bf-body and bf-black: 2 walls, 0.2mm layers, 4 bottom and top layers in zig-zag, 12% zig-zag infill
bf-white: same, except 15% concentric infill and concentric topmost layer.

Construction
Glue bf-back on bf-white. On the underside, glue kitchen tissue and cut it in shape. Test that the assembly fits well in the body.

Cut the followings pieces of Neopixel strip:
4x 5 LEDs
4x 4 LEDs
2x 2 LEDs

Glue the LDR in its hole near the tail of the butterfly using clear epoxy. In the photo, the LDR is located under the front left wing, but I changed it nearer in subsequent butterflies.

Prepare the wiring of the strips without gluing them in place, following the order shown in the inside photo, making sure to connect the DO terminals of a strip to the DI terminals of a subsequent strip.

Connect the Arduino as follows:
Resistor between GND and A3
GND to Neopixel GND
+5V to Neopixel 5V and LDR
The other terminal of LDR to A3

Connect the ESP32C3 Supermini as follows (see image):
LDR between GND and A1
51k resistor between A1 and +5V
470 ohm resistor between GPIO10 and Neopixel DIN
1k resistor between Neopixel DIN and +5V
GND to Neopixel GND
+5V to Neopixel 5V
A simple resistor network is used to raise the level of 3.3V output of ESP32C3 for the Neopixel strip.

To prevent the LEDs from illuminating the LDR from inside, cover the LDR on inside with black tape. Connect the USB cable and upload the sketch to test the connections. Test the operation of the LDR by covering it with your finger. If the butterfly does not dim, it may be necessary to add more black tape on the rear of the LDR. To prevent the LED of Arduino from showing in the butterfly, cover it with black tape.

Glue the strips in place. I found it necessary to apply superglue, since the tape in the strips did not hold them too well. Attach the Arduino with a piece of two-sided tape. If necessary, glue the cables so that they do not cover the LEDs. Feed power cable through the middle hole.

If you plan to hang the butterfly on a wall, attach fishing line of applicable thread in the holes of the front wings.

Make one more test and glue the cover on the body. Relax and enjoy the beauty of the butterfly!