viszlab / prototype

πŸ“Ÿ Code and models for the data physicalization prototype

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Bluebird

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.

Components

Controller

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.

Gateway

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.

Materials

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.

Installation

  1. Install a code editor such as VSCode
  2. Install the PlatformIO extension for VSCode.
  3. Clone this repository to your local machine.
$ git clone git@github.com:viszlab/prototype.git
  1. 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"
  1. Build and upload the controller.cpp to the Arduino UNO
  2. Build and upload the gateway.cpp to the NodeMCU

Wiring Diagram

Wire diagram

Project structure

β”œβ”€β”€ .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

Bill of materials

Electronics

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)

Cables

Qty Item
4x Jumper Wire female/male (Dupont Style 22AWG)
6x 1000mm RC Servo Extension Cables (Dupont Style)

Hardware

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)

Materials

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)

Tools

Qty Item
1x Screwdriver with small to large phillips bit
1x Soldering Iron preferably with Heat Set Insert tips

Recommended print settings

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

References

For the basics of working with servo motors this tutorial from DroneBot Workshop was used:

  1. 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:

  1. 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:

  1. Printables. (n.d.). Multiuse flexible fabric [Files]. Retrieved May 31, 2024, from https://www.printables.com/model/88579-multiuse-flexible-fabric/files

Project

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.

About

πŸ“Ÿ Code and models for the data physicalization prototype

License:MIT License


Languages

Language:C++ 100.0%