49713 Designing for the Internet of Things
· 16 members
A hands-on introductory course exploring the Internet of Things and connected product experiences.
This project attempts to create a simulation of future bioluminescent plants that can provides an ambient atmospheric light after sunset and responds to humans by communicating in subtle ways.
It is predicted that by 2050, nearly 70% of the world's population will live in urban areas.* Thus, we can easily imagine a dystopia where there will be a constant struggle for resources, overpopulation, growth of urban sprawl and the concrete jungle overtaking the natural ones.
Another problem is that the electrical energy we consume today is still heavily dependent on non-renewable sources of electricity.
Imagine that instead of switching on a lamp when it gets dark, you could read by the light of a glowing plant on your desk. A team of scientists at MIT has found a way to give plants the ability to produce light. Current research is progressing along these lines to make bioluminescent and non-electric lighting possible. This could potentially lend a whole new meaning to the term “green energy.”
Though the research is preliminary, the researchers believe that bioluminescent plants may someday light our streets, parks, and even our homes. MIT engineers have taken a critical first step toward making that vision a reality. By embedding specialized nanoparticles into the leaves of a watercress plant, they induced the plants to give off dim light for nearly four hours. They believe that, with further optimization, such plants will one day be bright enough to illuminate a workspace.
(See References below)
This project is an attempt to simulate the revolutionary technology of non-electric bioluminescent plants that can be connected, controlled, responsive and alive, acting as the harbinger of change into a more enchanted, energy-optimised and brighter future (pun-intended)! Though it currently uses an electric circuit to simulate the future experience of bioluminescent plants and even trees, this step is crucial in triggering the imagination and sharing the vision of this research.
Looking for inspiration along the lines of glowing plants, I came across the above article where I found a project led by MIT engineers who by embedding specialized nanoparticles into the leaves of a watercress plant, induced the plants to give off dim light for nearly four hours. They believe that, with further optimization, such plants will one day be bright enough to illuminate a workspace. This technology is currently progressing as a crowd-funded kickstarter project.
If trees form an element of our urban spaces in the future that can be responsive to our interactions with them, glow and provide light, respond and connect with other trees, plants and humans through the internet, it would indeed create an amazing experience to be in natural urban environments, being under the trees at night time!
From this point, I imagined an interconnected network of plants and trees that communicate with humans in natural, subtle and elegant ways. The idea is to simulate the experience of interacting with bioluminescent plants as a supplement to the ongoing research. I also wanted to incorporate a sense of live connection, taking inspiration from the movie Avatar. The way the plant acts as a source of light for us could be ambient and yet the control of that ambience would also be an important component of the design
int TOUCH_PIN_IN = A1; // Pin connected to SIG at Touch-Sensor
int LED_PIN = D3; // LED pin
int TOUCH_PIN_INReading = 0;
int potPin = A5;
// Create a variable to hold the pot reading
int potReading = 0;
// Create a variable to store the LED brightness.
int ledBrightness = 125;
//Declare Button pin
int buttonPin=D3;
unsigned long lastmillis = 0; // time for interation the loop
void setup()
{
pinMode(TOUCH_PIN_IN, INPUT);
pinMode(LED_PIN, OUTPUT);
Particle.variable("intensity", ledBrightness);
Particle.variable("pressure", TOUCH_PIN_INReading);
}
void loop()
{
if ((millis() - lastmillis) > 10) { // play with the millis
lastmillis = millis();
readData();
}
}
void readData() {
int proximity = digitalRead(TOUCH_PIN_IN); // Read the state of the sensor
if (proximity == HIGH)
{
analogWrite(LED_PIN, 255); // Turn the LED on
}
else
{
analogWrite(LED_PIN, 5); // Turn the LED off
}
}
Click to Expand
//FAILURE:
// THE CODE TO CONTROL BRIGHTNESS THAT DID NOT WORK
// Definitions
int TOUCH_PIN_IN = A1; // Pin connected to SIG at Touch-Sensor
int LED_PIN = D2; // LED pin GREEN
int LED_PIN2 = D5; // LED pin BLUE
int photoCellPin = A0;
int photoCellReading = 0;
int TOUCH_PIN_INReading = 0;
// Create variable to store the LED brightness
int ledBrightness = 25;
int moistPin = A2;
int moistVal = 0; // Create variable to read soil moisture
unsigned long lastmillis = 0; // time for interation the loop
void setup()
{
pinMode(TOUCH_PIN_IN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
Serial.begin(9600);
// take readings of variables
Particle.variable("pressure", &TOUCH_PIN_INReading, INT);
Particle.variable("daylight", &photoCellReading, INT);
Particle.variable("waterlevel", &moistVal, INT);
Particle.function("LED Brightness",brightnessControl);
}
int brightnessControl(String command)
{
ledBrightness=command.toInt(); // convert toiint val
if( bright > 255 ) return -1; // take values only from 25-255
if( bright < 25 ) return -1;
return 1;
}
void readData() {
int proximity = digitalRead(TOUCH_PIN_IN); // Read the state of the sensor
if (proximity == HIGH) // when leaf is touched
{
for (int i=25 ; i<255 ; i=i+20) // glow or increase in brightness should be gradual
{
if(i<200){
analogWrite(LED_PIN, i); // Turn the leaf on full glow
delay(100);}
else{
analogWrite(LED_PIN, i);
delay(2500); // stay on glow for some time
}
Click to Expand
Amount | Part Type | Properties |
---|---|---|
1 | Particle Argon | variant variant 3 |
1 | Basic Force Sensing Resistor (FSR) | package THT; sensing area diameter .5 " |
1 | Blue smd LED | package 1206 [SMD]; color Green (565nm) |
1 | Blue LED - 5mm | package 5 mm [THT]; leg yes; color Blue (430nm) |
1 | FC-28 Soil Hygrometer Module | chip LM393; variant variant 3 |
1 | FC-28 Soil Hygrometer Module - Probe | variant variant 1 |
2 | 1k Ω Resistor | package 0603 [SMD]; tolerance ±5%; resistance 1kΩ |
1 | PHOTOCELL | package photocell; variant pth |
1 | 1k Ω Resistor | package THT; tolerance ±5%; bands 4; resistance 1kΩ; pin spacing 400 mil |
1 | 10k Ω Resistor | package THT; tolerance ±5%; bands 4; resistance 10kΩ; pin spacing 400 mil |
// Definitions
int TOUCH_PIN_IN = A1; // Pin connected to SIG at Touch-Sensor
int LED_PIN = D2; // LED pin GREEN
int LED_PIN2 = D5; // LED pin BLUE
int photoCellPin = A0;
int photoCellReading = 0;
int TOUCH_PIN_INReading = 0;
// Create variable to store the LED brightness
int ledBrightness = 25;
int moistPin = A2;
int moistVal = 0; // Create variable to read soil moisture
unsigned long lastmillis = 0; // time for interation the loop
void setup()
{
pinMode(TOUCH_PIN_IN, INPUT);
pinMode(LED_PIN, OUTPUT);
pinMode(LED_PIN2, OUTPUT);
Serial.begin(9600);
// take readings of variables
Particle.variable("pressure", &TOUCH_PIN_INReading, INT);
Particle.variable("daylight", &photoCellReading, INT);
Particle.variable("waterlevel", &moistVal, INT);
Particle.function("LED Brightness",brightnessControl);
}
int brightnessControl(String command)
{
ledBrightness=command.toInt(); // convert toiint val
// if( bright > 255 ) return -1; // take values only from 25-255
//if( bright < 25 ) return -1;
return 1;
}
void readData() {
int proximity = digitalRead(TOUCH_PIN_IN); // Read the state of the sensor
if (proximity == HIGH) // when leaf is touched
{
for (int i=25 ; i<255 ; i=i+20) // glow or increase in brightness should be gradual
{
if(i<200){
analogWrite(LED_PIN, i); // Turn the leaf on full glow
delay(100);}
else{
analogWrite(LED_PIN, i);
delay(2500); // stay on glow for some time
}
}
}
else if (photoCellReading<1500 && proximity == LOW) // in absence of daylight, plant should start glowing dim
{
analogWrite(LED_PIN, ledBrightness); // Make leaf glow dim
}
else
{
analogWrite(LED_PIN, 0); // Leaf does not need to glow during daytime
}
}
void blinkLED2() // function to blink leaf Blue
{ digitalWrite(LED_PIN2, HIGH);
delay(200);
digitalWrite(LED_PIN2, LOW);
delay(200);
}
void loop()
{
//Particle.function("LED Brightness",brightnessControl);
if ((millis() - lastmillis) > 10) { // play with the millis
lastmillis = millis();
readData();
}
photoCellReading = analogRead(photoCellPin);
TOUCH_PIN_INReading = analogRead(TOUCH_PIN_IN);
//ledBrightness = analogRead(LED_PIN); // reading glow brightness
moistVal = analogRead(moistPin); // reading water requirements
Serial.println(moistVal);
delay(100);
if (moistVal<2000) {
digitalWrite(LED_PIN2, LOW);
}else{
blinkLED2();
}
}
Click to Expand
To take this project further, the next steps would involve developing interconnected networks of plants that can
The most important and challenging aspect of this project, which is currently only a simulation, would be to integrate the embedded nanoparticles that make the bioluminescence possible connect to the internet the same way as an LED (or further exploration and research would be required to make this technology a reality).
Looking back, this project has taught me that implementing an idea from it's conception to the first prototype is a struggle that is worth undergoing. As a beginner to coding, I took a lot of time to understand how I could code and what activities, outputs and responses I could get to manifest my thinking. I also realise that throughout the process, my focus was more on simulating the experience and feel of the intended idea than including more complex methods of interactions with the plant. Demonstrating the purpose of the research and making the idea happen as the first experiential prototype was important to me.
While application of my learnings from class was an important hands-on step to improve what I had absorbed during skills development classes, taking the liberty to experiment, try different methods to communicate the idea, fail, re-try and fail again was excruciating. However, the final manifestation the circuit and code to documenting the process was great experience to finally make my imagination come to life. I believe there's a lot more to do from this point on and I'm excited to work on this idea further to explore more possibilities!
https://www.nbcnews.com/mach/science/glow-dark-plants-put-green-energy-whole-new-light-ncna830791
http://news.mit.edu/2017/engineers-create-nanobionic-plants-that-glow-1213
A hands-on introductory course exploring the Internet of Things and connected product experiences.
This project attempts to create a simulation of future bioluminescent plants that can provides an ambient atmospheric light after sunset and responds to humans by communicating in subtle ways.
November 7th, 2019