Bluebird is a hanging kinetic sculpture inspired by organic natural materials and the shapes of hanging planters with strings that encode the environmental properties of Indoor Air Quality (IAQ) data in the form of a data physicalization. It is meant to be hung from the ceiling in small to medium rooms and changes based on real-time air quality monitor data. Strings (plant branches) either become longer or smaller simulating the growth of a plant and the history and predictions of CO2 concentrations. Movements of the leaves indicate the freshness of air for a multi-sensory experience. The overall design philosophy of the shapes and forms uses the notion of calm technology to convey data with minimal interruption cost.
A controller device running on an Arduino Uno Rev3 microcontroller with a 16-Channel PWM/Servo Shield is used to control six 360Β° MG90S type Micro Servo Motors. Attached to these motors are pulleys with fishing lines simulating the growth of the hanging planter so that the string can be moved up and down.
A gateway device running on a NodeMCU (ESP8266-based) microcontroller through wi-fi IOTroam fetches the Lab42 building API to gather the latest real-time CO2 concentrations through the avaliable in-building sensors and sends them over UART to the controller device moving the servo motors.
The strings, leaves, and housings of the electronics and mechanical hardware are created using additive manufacturing (3D Printing) using a Fused deposition Modeling (FDM) technique using Polylactic acid (PLA) plastic filament in various colors. The electronics enclosures and plant models were modeled using computer-aided design (CAD) software.
- Install a code editor such as VSCode
- Install the PlatformIO extension for VSCode.
- Clone this repository to your local machine.
$ git clone [email protected]:viszlab/prototype.git
- Create a
config.h
file within the include folder with the WiFi SSID, WiFI Password and Lab42 API credentials.
/* Wi-Fi credentials to connect to accesspoint */
#define WIFI_SSID "SSID"
#define WIFI_PASSWORD "PASSWORD"
/* Lab42 Building API access credentials */
#define API_URL "URL"
#define API_ENDPOINT "ENDPOINT"
#define ROOM_ID "NUMBER"
#define API_USERNAME "USERNAME"
#define API_PASSWORD "PASSWORD"
- Build and upload the
controller.cpp
to the Arduino UNO - Build and upload the
gateway.cpp
to the NodeMCU
βββ .vscode # Platform IO configuration build files
βββ docs # Documentation files and images
βββ models # .stl files for the 3D models
βββ include # Platform IO include dependencies
β βββ config.h # WiFi and API credentials (.env)
βββ lib # Arduino custom libraries
βββ src # Platform IO include dependencies
β βββ gateway.cpp # Firmware for the NodeMCU gateway
β βββ controller.cpp # FIrmware for the Arduino controller
βββ test # Testing scripts
βββ platformio.ini # Platform IO environment config file
Qty | Item |
---|---|
1x | Arduino Uno (Rev3) Atmega328P microcontroller |
1x | 16-channel I2C PWM-Servo Controller (PCA9685) |
1x | Universal 5W 2A DC Power Supply Adapter |
1x | NodeMCU (ESP8266-based) microcontroller |
6x | Mini Servo (MG90S) Digital (360 continuous degrees) |
Qty | Item |
---|---|
4x | Jumper Wire female/male (Dupont Style 22AWG) |
6x | 1000mm RC Servo Extension Cables (Dupont Style) |
Qty | Item |
---|---|
6x | M2.5L25 DIN 965 countersunk phillips head screws |
12x | M2.5L25 DIN 965 countersunk phillips head screws |
12x | M2.5 Heat set Inserts (OD 5mm, L5mm) |
Qty | Item |
---|---|
1x | Spool of Greenish color (at least ~270g) of 1.75mm PLA (leaves) |
1x | Spool of Color of Choice (at least ~570g) of 1.75mm PLA (mounting plates) |
1x | Wooden MDF (or other wood type) plate (5mm thickness) |
5x | String or rope in color of choice in ~80cm in length (max 5mm thickness) |
Qty | Item |
---|---|
1x | Screwdriver with small to large phillips bit |
1x | Soldering Iron preferably with Heat Set Insert tips |
To increase the strength of the pulleys and mounting plates the following printer slicing settings are recommended:
- Layer Height: 0.24mm
- Infill Percentage: 50%
- Infill Pattern: Gyroid
- Perimeters: 4
- Top Layers: 5
- Bottom Layers: 5
For the basics of working with servo motors this tutorial from DroneBot Workshop was used:
- DroneBot Workshop. (n.d.). Servo motors with Arduino. Retrieved May 31, 2024, from https://dronebotworkshop.com/servo-motors-with-arduino/
The models of the leaves are based on this seat of Montsera leaves by user @TriTri_786325:
- Printables. (n.d.). 20 Monstera leaf coaster set [Files]. Retrieved May 31, 2024, from https://www.printables.com/model/831698-20-monstera-leaf-coaster-set/files
The printing parameters used for the leaves are based on these settings by user @Posix:
- Printables. (n.d.). Multiuse flexible fabric [Files]. Retrieved May 31, 2024, from https://www.printables.com/model/88579-multiuse-flexible-fabric/files
Viszlab is a tangible physical data visualization for the Lab42 building. An interactive experience using environment sensor data to offer Human Building-Interaction. Viszlab is developed as a Thesis and Graduation project for the Master (MSc) Information Studies: Information Systems (track) at the University of Amsterdam by part-time student Danny de Vries.
- Master: Master Information Studies: Information Systems (track)
- University: University of Amsterdam (UvA)
- Institute: Informatics Institute
- Faculty: Faculty of Science (FNWI)
- Research Group: Digital Interactions Lab (DIL)
- Student: BSc Danny de Vries (14495643)
- Supervisor: Dr. H. (Hamed) Seiied Alavi PhD
Viszlab Β© 2024 by Danny de Vries is licensed under CC BY-NC-SA 4.0.