Introduction: Interactive Tree

An interesting tradition regarding the doctoral thesis and licentiate thesis is that they are hanged on a tree in the KTH main library prior to the public defence/seminar. Therefore, as a project for our Physical Interaction Design and Realization course, our group decided to commemorate this custom by creating an interactive version of the tree.

Step 1: What You Will Need


    • 1x Digital Scale (with 4 load cells)
    • Cleaning cloths made of cotton and cellulose (we used one cloth per flower, 6 in total)
    • 2x Foam Balls
    • Thread
    • 4x Wood Planks (ours were 22x170x1600 mm each)
    • 6x Outside Corner Moldings (2 of 27x27x750 mm, 2 of 27x27x600 mm and 2 of 27x27x1350 mm)
    • 1x Wood Board (no thicker than 6-7 mm)
    • 2x Wood Boards (2-3 cm thick, 45x45 cm)
    • Wires
    • Solder
    • Hot glue
    • Heat shrink tubes
    • Double Sided Adhesive Tape
    • 20x Universal screws (5x40 mm)
    • 20x Universal screws (3.0x12 mm)
    • 10x Reinforcement angles
    • 1x Stripboard (prototyping board)


    • 1x - Arduino Uno
    • 1x - Load cell amplifier
    • 1x - ESP8266 Huzzah Feather microcontroller
    • 1x - Adafruit RC522 RFID reader
    • 2x - Multiplexers (8-bit shift registers with 3-state output registers)
    • 16x - Red LEDs
    • 16x - Resistors
    • 6x - Servos - Hitec HS-422 (standard size)


    • Soldering iron
    • Hot glue gun
    • Hand Saw
    • Coping Saw
    • Power Screwdriver
    • Wood Rasp
    • Jigsaw Wood Cutting Tool

    Step 2: Connect the Digital Body Weight Bathroom Scale

    For this first step, we used 4 load cells from a digital body weight bathroom scale and the HX711 Load Cell Amplifier. The pins are labeled with colors: RED, BLK, WHT, GRN, and YLW, which correspond to the color coding of each load cell. They have been hooked up in a wheatstone bridge formation (see pictures). We apply an excitation on the Load Cell 1 and Load Cell 4 reds and we read the signals from the Load Cell 2 and Load Cell 3 reds (see link).

    Step 3: Setup the RFID Reader

    To assemble the scanner we used two pieces of hardware; the ESP8266 Huzzah Feather microcontroller and the Adafruit RC522 RFID reader.

    The ESP8266 and RC522 had 5 connections between them (see picture 1).

    The purpose of the scanner was to scan the KTH cards, 13.6MHz, and send the unique ID of the card, or in the ideal case the ID of the student, to a Google Firebase database. This was all done using prebuilt Arduino packages, MFRC522 for the RC522, ESP8266 for the wifi and Arduino Firebase for the firebase communication. Once the information was sent to the database a web page containing a tree was updated using D3.js animation to simulate a flower blooming on a virtual tree.

    The last part of the setup was to send the information that a card was scanned to the Arduino Uno microcontroller. The ESP8266 and Arduino Uno had 1 connection between them (see picture 1).

    Pin 16 was used specifically because it has a default value of LOW, while the other pins had default values of HIGH. When a card is scanned we sent a single HIGH pulse to the Arduino Uno which then executed the rest of the code.

    Step 4: LED Pathway Set Up

    In order to have a more meaningful interaction, as well as a visible feedback of certain user actions, we decided to arrange a pathway of LEDs that are lighting up towards the designated branch. Therefore, the user is guided to where he/she should specifically hang the thesis.

    For this we used two multiplexers: 8-bit shift registers with 3-state output registers and 16 red leds. The multiplexer provides control over 8 outputs at a time while taking up only 3 pins on our microcontroller. The connections have been made by “synchronous serial communication” (see link).

    Step 5: Compose the Flowers

    For this step, we used a light and bendable material - cleaning cloths. Petal shaped pieces were cut out of this material. Consequently, these petals are connected to a central structure, made out of a foam ball. Each petal is secured with a thread, so that when pulled the petal bends.

    Step 6: Build the Tree

    Our main material is wood. The tree is composed of four separate wood planks screwed together in a square shape (5 screws to connect 2 planks). The branches have been made from wood outside corner moulding. Square holes have been cut in the tree trunk to insert the branches. Each branch has either one LED at the extremity (the bottom and the top branch) or two LEDs (the middle branch). Each LED has been secured with glue.

    After the LEDs have been properly put in place, we have attached one flower on each branch. Each flower has a servo that controls the blooming (see pictures). The scale, the LEDs and the servo is connected to the Arduino, through the prototyping board made during Step 4. Each branch is secured to the trunk from the left and right side by using the reinforcement angles and the 3.0x12 mm universal screws.

    One of the thicker wood boards will be used as a base for the tree and the other will be cut in right triangle shapes which will be first screwed to the trunk of the tree and then secured to the wood board at the base.

    For the base wood board make a square hole fo the wires of the scale to go through and then secure the scale to the wood board with the double sided adhesive tape.

    The Arduino Uno was positioned at the base of the trunk as well as the prototyping board with all the corresponding connections.

    Before closing the tree, make a square hole in the last wood plank at it's base, in order to connect the computer to the Arduino and the ESP8266 Huzzah Feather microcontroller.

    Step 7: Decorate the Tree

    To improve the appearance of our prototype, we added some leaves on the branches that have been laser cut, as well as an owl (to symbolize the knowledge).

    Step 8: The Code

    Here you have different codes that you can use to test how each component works (calibration_test.ino for the scale, scanner.ino for the RFID Reader and servo_test.ino for the servos) and then everything in its entirety (light_test.ino as an initial test and main.ino as the final version).

    You will also need to install the HX711 library in order to be able to work with the scale (link to the library).

    Step 9: Create the Web App

    As an additional interaction, we added a digital feedback through a web app. The app receives the scanned ID and as a result for the hanged thesis, the flower on the virtual tree blooms as well.

    Step 10: Enjoy the Experience

    In the end, we were happy that we succeeded in making all of the components work together. The process has been both exciting and stressful, but despite all the challenges we are satisfied with the result and the experience has been interesting and most importantly, educational.