LED Bonsai Tree

This LED bonsai tree is a wire structure shaped like a bonsai tree with LEDs at the end of each branch. It can light up with different colors and patterns because it is controlled by an Arduino. The LEDs are connected using red and black wires to mimic a self-balancing binary search called a red-black tree.


Agnes G

Area of Interest

Aerospace Engineering and Computer Science


Head-Royce School


Incoming Sophomore


I gained many new skills from the experience of building this project. I learned basic electrical engineering skills such as soldering, wiring a breadboard, and using a multimeter. I also learned how to write simple code such as switch statements, for loops, arrays, and functions. I think that learning these new skills, combined with the exposure to engineering, piqued my interest in STEM-related topics.

Bill of Materials



Photo Gallery:

Final Milestone

My final milestone is connecting the Arduino to an HM-10 Bluetooth module and connecting the HM-10 Bluetooth module to my phone. By completing this milestone, I have the ability to control the tree from my phone. To reach this milestone, I first had to connect the HM-10 Bluetooth module to the Adruino with a breadboard and wires. Next, I had to use the Arduino’s software serial to enable communication between the Arduino and the Bluetooth module. Then, I had to use an app on my phone to connect the Bluetooth module to my phone. After my phone and the Bluetooth module were connected, I was finally able to control the Arduino from my phone.
The hardest part of reaching this milestone was learning how to use the Arduino’s software serial. I was completely new to software serial, so it was challenging for me to familiarize myself with it. Another difficult part of reaching this milestone was finding a good app on my phone to control the Arduino. I had to download several different apps before I found one that worked for me.

Second Milestone

My second milestone is getting the LEDs to work while attached to my wire tree structure. Reaching this milestone was very time-consuming, as it required a lot of gluing and soldering. First, I had to glue all of the LEDs onto the tree. The gluing was time-consuming because I had to wait for the glue to dry. While gluing the LEDs on, I accidentally got glue in some of the LEDs, which ruined them. Eventually, I got replacements for the broken LEDs, so everything worked out alright. Second, I had to connect and solder all the LEDs with red and black wires. The soldering also took a long time because there was a lot of back-and-forth between adding wires, testing LEDs, and soldering.
The hardest part about reaching my second milestone was troubleshooting whenever an LED wasn’t working. Whenever I had to troubleshoot, I had to inspect the “count” variable in my code and check the connections between the wires and the LEDs. If neither of those things were causing the issue, then I had to check if the LED itself worked. Troubleshooting and perseverance became the most important parts of this milestone.

First Milestone

My first milestone is controlling a strand of three LEDs by using the Arduino. The strand of three LEDs is connected to my Arduino, which is connected to my laptop. On my laptop, I use the Arduino IDE to write code that will control the LEDs. I used functions, 2D arrays, and for loops to create the code for color patterns for the LEDs. I made each color pattern into a function so it is easy to switch between patterns. So far I have the functions: Christmas, 4th of July, and rainbow. Christmas displays red and green; 4th of July displays red, white, and blue; rainbow displays ROYGBIV.
One challenge I faced when reaching this milestone was using a 2D array. It would be repetitive to make seven for loops for the ROYGBIV pattern, so I used a 2D array. Using the 2D array was difficult because I had trouble getting all the syntax and small details correct. Another challenge I had was testing the LEDs without soldering them. Obviously, I didn’t want to solder the LEDs together when they were not on the tree, so I tested them by just curling wire around them. The wire was not soldered, so it kept unwrapping and weakening the connection between the LEDs and the wire. When the wire became detached, it caused the LEDs to act up. All in all, I worked to overcome my challenges and reach my first milestone.

Helpful Links:

Instructables Basic Guide

Adafruit’s Overview of Neopixels

Martyn Currey’s Guide to HM-10 Bluetooth 4 BLE Modules

Starter Project: Minty Boost Portable Charger

For my starter project, I choose to make the Minty Boost portable charger. The Minty Boost uses two AA batteries to charge devices through a USB port. The two AA batteries can only provide 3V of charge, but a boost converter, or DC-to-DC power converter,  is used to change the 3V to 5V. The DC-to-DC power converter increases the voltage by using an inductor that builds up energy in a magnetic field and transfers it to a capacitor. The resistors in the circuit regulate the flow of electricity so that the DC-to-DC power converter can properly boost the 3V to 5V. All of these components are soldered onto the PCB, or printed circuit board. Altogether, everything fits within a small Altoids gum tin.
When making this project, I faced many challenges. First, I had to learn how to solder. Initially, soldering was very difficult, but eventually, I got the hang of it. The other challenge was desoldering. Desoldering is very annoying and time-consuming. Unfortunately, I had to desolder a lot because two of the wires kept breaking. I had to desolder and resolder each of the wires, which took a long time. I gained many new experiences and skills from making this project. As previously mentioned, I learned to solder and desolder; I also learned how to use a multimeter and tin snips. I’m happy with the final project I ended with.

Leave a Comment

Start typing and press Enter to search