Final Project

For my final project I wanted to work on a product that incorporates concepts of landscaping, interior design and decoration that could be accessible, sustainable and interactive and responds to the user's needs in terms of connection with nature in urban environments.

Result

Concept

Fab&Plant is a revolutionary urban oasis, seamlessly merging technology and nature. It's not just a green facade; it's an ecological statement, transforming walls into vibrant ecosystems. Smart, interactive modules respond to your presence with a symphony of lights, and plant movement. Beyond aesthetics, Fab&Plant embodies sustainability, encouraging a hands-on connection with nature through manual irrigation. It's more than a project; it's a lifestyle, redefining urban living by bringing the tranquility of nature to your home.

Fab&Plant Q&A

  • What Fab&Plant does?
  • Who's done what beforehand?
  • What did I design?
  • What materials and components were used?
  • Where did they come from?
  • How much did they cost?
  • What parts and systems were made?
  • What processes were used?
  • What questions were answered?
  • What worked? What didn't?
  • How was it evaluated?
  • What are the implications?

Schedule

PDF Viewer

What Fab&Plant does?

Have you ever felt the yearning for a breath of fresh air, a connection to nature, right at your home in the heart of the bustling city?

In the concrete jungles we call cities, the touch of nature often eludes us. But what if I told you that you could bring a vibrant slice in your own house? Introducing Fab&Plant, the interactive modular vertical garden facade, a revolutionary leap towards reconnecting urban dwellers with the soothing embrace of nature.

Ecological impact: Imagine not just a green facade but a living, breathing ecosystem that transforms barren walls into vibrant canvases of life. Fab&Plant is not merely a decoration; it's an ecological statement. In a world racing against time to combat climate change, my project stands as a beacon of sustainable living. It embraces vertical space, offering a solution to the scarcity of green areas.

Interactive experience: But here's what sets Fab&Plant apart - it is not just a static garden; it is a living, interactive masterpiece. Picture this: as you approach your home, the modules come alive with a symphony of light, and the gentle rustle of leaves. It is not just a greeting; it is an immersive experience that connects you to the natural world. Each module senses your presence, responding with a welcome or bidding you a good day as you leave.

Smart sustainability: It goes beyond aesthetics; it is intelligent. Fab&Plant encourages a hands-on connection with nature through manual irrigation, allowing you to experience the joy of nurturing your own green oasis. Humidity sensors and illuminated icons in each module keep you informed and in control. Sustainability isn't just a buzzword; it's the heartbeat of Fab&Plant.

Fab&Plant is not just a product; it's a lifestyle. It's a step towards harmonizing urban living with nature, offering solace in the green oasis of your home. Join us in making cities greener, more interactive, and delightfully sustainable. Let's redefine urban living with Fab&Plant, the interactive modular vertical garden facade.

Research: Who's Done What Beforehand?

For inspiration and guidance, I reviewed Fab Academy final projects from the past few years.

2023

Author Project title Project video
Daniel Collins Moss Wheel Link
Sibin K S Gropod Link
Ekaterina Kormilitsyna Symbiotic Devices Link
Ryan Kim Rotary Hydroponics Garden Link
Lisa Schilling Selfwatering Flowerpot Link

2022

Author Project title Project video
Pablo Pastor García Smartpot Link
Paola Zanchetta Muñoz Fab, Meditation and Plants Link
Juan Carlos Cristaldo Shadowhouse Link
Rachelle DeCoste Demeter`s Garden Link
Lakshmi Selfwatering Pot Link
John Story Growing Microgreens Link

2021

Author Project title Project video
Ismael Larrea Bravo Seedling Nursery Link
Jeffery Naranjo Sustainable Bus Stop Link

2019

Author Project title Project video
Nagi Abdelnour Automated Indoor Hanging Garden Link

These references helped me understand the objective of the final project, guided me to solutions that could be used to solve similar conditions in my project, and inspired me to develop my final project.

Design Process: What Dit I Design?

My first ideas about fab&plant were to focus on the functionality of the vertical garden, as well as the interaction with users through movement.

First Ideas

First sketch of the front view of the final project

First sketch of the detail view of the final project

To make the plants move, they will rotate on their vertical axis when the motion sensor detects the user in the nearby environment.


Pot pivoting in its axis

Second sketch of the final project module

When testing the 2D design, the shape was complex (the module did not convince me) and I decided to concentrate on the design of the module.

Green Vertical Facade Module

By working form in combination with function, Fab&Plant changed, but its concept remained.

Vertical facade module

Vertical facade

Now the module was formally concentrated because I was already beginning to think not only about the form, but also about the components that would allow its operation and interaction.

Breathing Module

In week 5, I created a chainmail that inspired me for making the movement in my final project module.





Final project mockup

Final project mockup with icons

Modelling final project in Fusion 360

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Materials and components: What were used? Where did they come from? How much did they cost?

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Electronics: What parts and systems were made?

Inputs and Outputs

Input Output
Soil moisture sensor measures the percentage of humidity in the soil If humidity is less than 40%, the blue LED turns on lighting the thirsty drop icon | If humidity is 40% or more, the green LED turns on lighting the happy leaf icons
PIR sensor detects motion around the module If motion is detected, servomotor rotates its blades to allow pots with plants movement
Switch with ON/OFF option If switch in on the system starts | If the switch is off the system does not work even if the power supply is connected

Input/output scheme

Fab&Plant PCB diagram

Fab&Plant PCB schematics

Fab&Plant PCB traces

Fab&Plant PCB


Debugging PCB

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for blink LEDs and test the output pins with XIAO RP2040

// Define the pin for the LEDs
const int ledPin1 = D9;
const int ledPin2 = D3;
const int ledPin3 = D10;

// The setup function runs once when you press reset or power the board
void setup() {
  // Initialize digital pins ledPin1, ledPin2, and ledPin3 as outputs
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
  pinMode(ledPin3, OUTPUT);
}

// The loop function runs over and over again forever
void loop() {
  {  
  digitalWrite(ledPin1, HIGH);       // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin1, LOW);        // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  } {
  digitalWrite(ledPin2, HIGH);       // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin2, LOW);        // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  } {  digitalWrite(ledPin3, HIGH);  // turn the LED on (HIGH is the voltage level)
  delay(1000);                       // wait for a second
  digitalWrite(ledPin3, LOW);        // turn the LED off by making the voltage LOW
  delay(1000);                       // wait for a second
  }
}

Code in Arduino IDE for test the LEDs in Fab&Plant PCB

Debugging PCB

Testing Inputs

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Soil moisture sensor (analog pin) code in XIAO RP 2040 in Fab&Plant PCB

// constants
const int Moisture_signal = A0; //Analog pin A0 on the XIAO RP2040 for the soil moisture sensor signal
// variables									
int value;

void setup(){
	Serial.begin(9600); // Start the serial communication
}

void loop(){
  // when the plant is watered well the sensor will read a value 380∼400

  value = analogRead(Moisture_signal);  // read analog value
  value = constrain(value,400,1023);    // keep the ranges
  value = map(value,400,1023,100,0);    // map value: 400 will be 100 and 1023 will be 0
  Serial.print("Soil humidity: ");
  Serial.print(value);
  Serial.println("%");
  delay(5000);                          // read every 5 seconds
}

Code in Arduino IDE for test the humidity sensor in Fab&Plant PCB

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for blink LED when motion is detected by PIR sensor connected to XIAO RP2040

int pirPin = D1;
int ledPin = D3;
int pirValue;

void setup() {
  // put your setup code here, to run once:
  pinMode(ledPin, OUTPUT);
  pinMode(pirPin, INPUT);
  digitalWrite(ledPin, LOW);
}

void loop() {
  // put your main code here, to run repeatedly:
  pirValue = digitalRead(pirPin);
  digitalWrite(ledPin, pirValue);
}

Code in Arduino IDE for test the PIR sensor with LED in Fab&Plant PCB

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for PIR sensor (HC-SR501) connected to XIAO RP2040

const int pinPIR = D1;
int pirValue;

void setup() {
  // Start serial communication
  Serial.begin(115200);
  // Configure the PIR sensor pin as input
  pinMode(pinPIR, INPUT);
}

void loop() {
  // Read the state of the PIR sensor
  int pirState = digitalRead(pinPIR);

  // If motion is detected
  if (pirState == HIGH) {
	// Print "movement" message on the serial port
	Serial.println("Movement detected");
  } else {
	// Print "off" message on the serial port
	Serial.println("No movement detected");
  }

  // Wait for a brief period before reading again
delay(1000);
}

Code in Arduino IDE for test the PIR sensor in Fab&Plant PCB with serial monitor

Start switch test

To test the system start button, I worked with a 5V/3A power supply. Since I couldn't get this source, I used a USB type power cable (which then I connected to a cell phone charger to connect to an electrical outlet) and type C. I cut the type C input and found 4 cables: one red, the other white with black spots, another white and the last green. I identified that the white and green cables were for data, the red for VCC and the white with black GND. Based on this, I connected the VCC and GND cables to the XIAO RP2040 to perform the switch tests. For blinking the LED I used this code in Arduino IDE:

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for blink LED and test the switch that starts system with XIAO RP2040

// Define the pin for the LED
const int ledPin = D10;

// The setup function runs once when you press reset or power the board
void setup() {
  // Initialize digital pin ledPin as an output.
  pinMode(ledPin, OUTPUT);
}

// The loop function runs over and over again forever
void loop() {
  digitalWrite(ledPin, HIGH);     // turn the LED on (HIGH is the voltage level)
  delay(1000);                    // wait for a second
  digitalWrite(ledPin, LOW);      // turn the LED off by making the voltage LOW
  delay(1000);                    // wait for a second
}

Code in Arduino IDE for blinking LED

Start switch test

Testing Outputs

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for servomotor connected to XIAO RP2040

#include < Servo.h>

#define SERVO_PIN A3

Servo servoMotor;  // Create a servo object to control a servo

void setup() {
  servoMotor.attach(SERVO_PIN);  // Attaches the servo on pin A3 to the servo object
}

void loop() {
  // Move the servo to different positions
  servoMotor.write(0);    // Move the servo to 0 degrees
  delay(1000);            // Wait for 1 second
  servoMotor.write(90);   // Move the servo to 90 degrees
  delay(1000);            // Wait for 1 second
  servoMotor.write(180);  // Move the servo to 180 degrees
  delay(1000);            // Wait for 1 second
}

Code in Arduino IDE for test servomotor in Fab&Plant PCB

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for smooth transition of LED strips using PWM with XIAO RP2040

// Define the pin for the LED strips
const int ledPin1 = D9;   // Define the pin for blue LED strip
const int ledPin2 = D10;  // Define the pin for green LED strip

// The setup function runs once when you press reset or power the board
void setup() {
  // Initialize digital pins ledPin1 and ledPin2 as outputs
  pinMode(ledPin1, OUTPUT);
  pinMode(ledPin2, OUTPUT);
}

// The loop function runs over and over again forever
void loop() {
  // Gradually increase brightness
  for (int brightness = 0; brightness <= 255; brightness++) {
	analogWrite(ledPin1, brightness);
	analogWrite(ledPin2, brightness);
	delay(15); // Adjust delay for desired transition speed
  }

  // Gradually decrease brightness
  for (int brightness = 255; brightness >= 0; brightness--) {
	analogWrite(ledPin1, brightness);
	analogWrite(ledPin2, brightness);
	delay(15); // Adjust delay for desired transition speed
  }
}

Code in Arduino IDE for test LED strips in Fab&Plant PCB

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

Programming: What processes were used?

//Fab Academy 2024 - Fab Lab Peru - Maria Angela Mejia
//Code for Fab&Plant PCB with a XIAO RP2040

#include < Servo.h>

#define HUMIDITY_SENSOR A0
#define PIR_SENSOR D1
#define BLUE_LED D9
#define GREEN_LED D10
#define SERVO_PIN A3

Servo servoMotor;

void setup() {
  pinMode(HUMIDITY_SENSOR, INPUT);
  pinMode(PIR_SENSOR, INPUT);
  pinMode(BLUE_LED, OUTPUT);
  pinMode(GREEN_LED, OUTPUT);

  servoMotor.attach(SERVO_PIN);

  //LED strips are initially turned off
  digitalWrite(BLUE_LED, HIGH);
  digitalWrite(GREEN_LED, HIGH);  
}

void loop() {
  // Read sensors
  int humidityValue = analogRead(HUMIDITY_SENSOR);
  int pirState = digitalRead(PIR_SENSOR);

  // Map humidity value to percentage
  int humidityPercentage = map(humidityValue, 1023, 0, 0, 100);

  // If humidity is less than 40% and motion is detected, turn on blue LED
  if (humidityPercentage < 40 && pirState == HIGH) {
	digitalWrite(BLUE_LED, LOW);
	digitalWrite(GREEN_LED, HIGH);
	// Ensure servo motor is off
	servoMotor.write(0);
  } 
  // If humidity is 40% or higher and motion is detected, turn on green LED
  else if (humidityPercentage >= 40 && pirState == HIGH) {
	digitalWrite(BLUE_LED, HIGH);
	digitalWrite(GREEN_LED, LOW);
	// Rotate servo motor if humidity is 40% or higher
	servoMotor.write(0);   // Move the servo to 0 degrees
	delay(1000);           // Wait for 1 second
	servoMotor.write(90);  // Move the servo to 90 degrees
	delay(1000);           // Wait for 1 second
	servoMotor.write(180); // Move the servo to 180 degrees
	delay(1000);           // Wait for 1 second
	servoMotor.write(90);  // Move the servo back to 90 degrees
	delay(1000);           // Wait for 1 second
  } 
  // If no motion is detected, turn off both LEDs and servo motor
  else {
	digitalWrite(BLUE_LED, HIGH);
	digitalWrite(GREEN_LED, HIGH);
	servoMotor.write(0);
  }
}

Code in Arduino IDE for a Fab&Plant module


Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

What questions were answered?

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

What worked? What didn't?

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

How was it evaluated?

Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus.

What are the implications?

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean commodo ligula eget dolor. Aenean massa.

Conclusions

  • Conclusion 1.
  • Conclusion 2.
  • Conclusion 3.
  • Conclusion 4.

Special Thanks

Tutors:

Fellow students:

Files

Links