​Moving Light
Real time interaction between body movement and light

​Introduction
This is the final project of my elective, Make Things Interactive. The scope of this elective is about how to create physically interactive objects and environments with Java in Arduino. In addition, before this elective I also learnt Processing by myself, which implement the same coding language as Arduino, so I combined both coding tools as my challenge in this project.
Concept
This project aims to achieve real time interaction between participant and an interior space with kinetic light as well as reflective light.
Data inputs are from human’s body movement, while data outputs are transited into colour change of handheld installation and interactive graphic projected on the wall.
Inspiration





Experience
Most of my artistic inspirations derived from my life. Magic of light always attracts me with my photography hobby. I also have impressive experience that interactive light could enlighten personal and social activities. Therefore I decided to research kinetic interactive light in depth in this project.
TeamLab
TeamLab is a famous Japanese company installing a lot of exhibition, which shows that interactive light, object & screen could create enjoyable experience and commercial value. Considering lighting colour could be integrated both on screen and physical object, I think this is the opportunity that I can utilise different tools together with similar code.
Ideation

Through an initial technical research, I can translate body movement into XYZ value with IMU (Inertial Measurement Unit) sensor or accelerometer sensor. Once I mapped out the basic logic, two challenges appealed in terms of my original coding level:
1. There are only one serial port for data communication between Arduino and Processing. How can I split multiple values from one serial port?
2. How can I achieve wireless communication when a person is dancing?
Experimentation







Splitting Values
At the start of experimentation, I must wait for the sensor package delivery, but I still started to test how to split multiple values from Arduino to Processing with low-cost sensors as back-up plan, namely 2 LDR (light dependent resistors) and one potentiometer sensor. Fortunately I succeeded after I compared several resources from online forum.
Wireless Communication
via Online Server
In this stage I did several different experiments via online platform named Adafruit.io.
I used Huzzah as the mainboard because it is embedded with ESP8266 Wi-Fi module. In terms of digital input/out, it was easy to use online server to control led. However, when I tried to collect data from analog sensor into online server per second, it succeeded for a while, but the data limit reached quickly. Moreover, when I tried to send XYZ data from IMU sensor, the data amount became larger, and it added much more complexity in my Arduino code.
This experiment reveals that Wi-Fi protocol is only suitable for state machine with small amount of data communication. Real-time wireless interaction requires a large amount of data communication, therefore I need to consider local data communication but not via global online server in next stage.
Wireless Communication
via Bluetooth
In this step I tested two Bluetooth modules. XC4382 BLE Bluetooth Module is embedded with BLE (Bluetooth Low Energy), which couldn’t directly create a COM for serial communication, because the protocol of BLE is different from normal Bluetooth module.
In comparison, Bluetooth Module (HC-05) could directly create a COM after paired, and communicate with Arduino Serial Port as both master and slave configuration. Finally I succeed to achieve real-time wireless communication with this module.
As a bonus research, Bluetooth Module (HC-06) could only be used as slave configuration. In my project I used Arduino Nano to send data and control the computer, so it is not compulsory here.
Outcome
The final prototype achieved that participant could hold a lighting stick, and dance in an interior space. The data from participant’s body movement integrates colors of lighting stick and projected graphic. XY values are also translated as a brush in the projected screen to achieve real-time interaction, with a algorithm called particle system.

Circuit Diagram


Component List
Arduino Nano x1
1kOhm Resistor x3
HC-05 Bluetooth module x1
NeoPixel LED Ring x1
BNO055 IMU Fusion Breakout x1
Prototype
The materials of the final prototype are MDF and polypropylene. After a size calculation in Rhino, the materials could be digital fabricated with laser cut. Then I can bend the MDF in wooden kerf pattern. Also, a matt polypropylene is the best choice for light diffusion. Finally it was well assembled for the successful feasibility test.
