Smart Plant Communication and Management:
Emoji-Based Interaction System Through
Real-Time Sensor Feedback
Jose Antonio Cruz Anchiraico Puviyarasu Ayyappan Rumit Kanubhai Kakadiya
Internet of Things and Machine Internet of Things and Machine Internet of Things and Machine
Intelligence — Sheridan College Intelligence — Sheridan College Intelligence — Sheridan College
Toronto, CA Toronto, CA Toronto, CA
[email protected] [email protected] [email protected] Abstract — This report introduces a sensor-based system for plant care that uses temperature, moisture and light
sensors to maintain optimal growth conditions. It leverages an Arduino Microcontroller to automate watering and
lighting to ensure plant health. It also implements the use of emojis, an unique approach that helps the plant-human
interaction.
Index Terms — Plant care, Arduino, sensors, environmental monitoring, emoji communication, automated systems.
PROBLEM STATEMENT
As the global population continues to rise, the demand for sustainable agricultural practices becomes increasingly critical.
Traditional farming methods often face challenges such as limited arable land, water scarcity, and the adverse effects of climate
change. Hydroponics presents a viable solution by enabling efficient crop production in controlled environments, yet it is not
without its limitations. Many existing hydroponic systems suffer from a lack of user engagement and real-time monitoring,
leading to inefficiencies and potential crop failures due to inadequate management.
One of the main issues with conventional hydroponic systems is their reliance on manual monitoring and adjustments, which can
be time-consuming and prone to human error. Users, especially those new to hydroponics, may struggle to interpret complex data
and make timely decisions based on environmental conditions. This challenge is compounded by the steep learning curve
associated with understanding optimal growth parameters, such as light intensity, nutrient levels, and temperature. As a result,
many individuals may abandon hydroponics due to perceived complexity or a lack of confidence in their ability to manage the
system effectively.
Additionally, recognizing the health of plants and actively assisting their growth is a crucial aspect often overlooked in traditional
setups. Users need timely information to identify potential issues—such as nutrient deficiencies or environmental stress—that
could hinder plant development. Without effective monitoring and feedback, it becomes difficult for users to take proactive
measures to support their plants, leading to suboptimal growth and decreased yields. This gap in real-time awareness can cause
frustration and discourage individuals from pursuing hydroponic gardening.
Furthermore, existing monitoring systems often present data in technical formats that may be difficult for novice users to
comprehend. This complexity can hinder effective decision-making and may discourage individuals from pursuing hydroponic
gardening altogether. To address these challenges, there is a pressing need for innovative solutions that simplify user interaction
while providing real-time feedback on critical environmental parameters.
SOLUTION
This project proposes a solution that integrates advanced sensor technology with an intuitive emoji-based interface. The
system employs photodiode, soil moisture, and temperature sensors to continuously gather data on essential environmental
parameters. This information is presented through easily understandable emojis, allowing users to quickly assess
conditions—such as optimal light and moisture levels. Real-time alerts and recommendations are sent directly to users'
devices, empowering them to make timely adjustments to support plant growth. By making data accessible and engaging, this
solution enhances user experience and understanding, fostering successful plant care and promoting sustainable agricultural
practices.
MARKET RESEARCH
● Click and Grow:
Click and Grow: This smart indoor garden uses a soilless growing system and features sensors that monitor light, water,
and nutrients. The companion app provides users with updates and guidance, although it doesn’t use emojis.
● AeroGarden:
AeroGarden Harvest Indoor Garden: An indoor gardening system that uses hydroponics to grow herbs and vegetables.
It includes a control panel that reminds users when to add water or nutrients and offers a companion app for monitoring.
● Plantui Smart Garden
Smart Garden 9 by Plantui: This indoor garden uses a hydroponic system and features a user-friendly app that helps
monitor growth stages and provides care instructions. It simplifies the process of growing plants indoors.
● The iHarvest® Complete Package | Indoor garden system kit – IGWorks
Hydroponics Systems by iHarvest: This vertical hydroponic garden comes with an app that offers guidance on plant care
and environmental monitoring, although it lacks the playful emoji interface.
VIVOSUN 4x4 Grow Tent - Hydroponics Indoor Plant Growing for VS4000/VS4300
Indoor Plant Growing by VIVOSUN: These systems integrate with various growing setups to provide real-time
monitoring and alerts about nutrient levels, moisture, and light, often paired with a companion app.
BILL OF MATERIALS
Item # Item Description Required Quantity
1 Light intensity sensor (a photodiode) 1
2 Grow Light 1
3 Soil moisture sensor 1
4 Submersible 3vdc Horizontal Pump 1
5 Analog temperature sensor M35 1
6 OLED DISPLAY 1
COMPONENT DESCRIPTIONS
1. Photodiode-Light Intensity Sensor
A photodiode is a semiconductor device that allows the conversion of light into electrical current. The amount of current
produced depends directly on the light intensity hitting its surface. It is very sensitive and able to detect a wide range of
wavelengths in light. They are used for applications such as light meters, automatic lighting controls, and safety devices.
Besides that, the photodiode might be used in the monitoring of the amount of ambient light that plants receive to ensure they
obtain sufficient sunlight or artificial lighting for growth.
2.Grow Light
Grow light refers to a special artificial source of light, normally an LED that produces a light spectrum just similar to that of
sunlight. That is very important during indoor gardening and hydroponic systems where there is not enough natural light.
Grow lights can be designed to provide specific wavelengths that accommodate the various stages of plant growth, whether
from germination to flowering. Grow lights can also be used to extend the growing seasons, improving yield, by gardeners
where normally such growth in a climate is impossible. Modern grow lights are very energy-efficient and can even be
programmed to simulate day-night change to even further optimize the health of a plant.
3.Soil Moisture Sensor
A soil moisture sensor measures the volumetric water content in the soil. It usually consists of two probes that get stuck into
the soil to measure the electrical resistance between the two. When the soil is wet, the resistance goes low, and when it is dry,
the resistance goes high. This information is very important to automated irrigation systems because it ensures that the plants
receive an appropriate volume of water, neither over nor under. With the right amount of soil moisture, gardeners can enjoy
healthier plants, conserve more water, and reduce labor.
4.Submersible 3VDC Horizontal Pump
The submersible 3V DC horizontal pump is a compact and efficient pump designed for underwater applications. It operates at
a low voltage of 3V DC and draws 100mA, making it suitable for use in battery-powered systems or low-voltage projects.
This pump is typically made of durable materials, ensuring resistance to corrosion and wear in wet environments. With a
horizontal orientation, it is easy to install and can handle various fluids, making it ideal for aquariums, fountains, and small
water transfer tasks.
5.Temperature Sensor
The M35 is an analog temperature sensor designed for precise temperature measurement, featuring a linear voltage output of
10 mV per degree Celsius. It operates over a wide temperature range from 0°C to +100°C, making it suitable for various
applications like HVAC systems and industrial equipment. With low power requirements, a compact size, and a fast response
time, the LM35 is ideal for accurate and reliable temperature sensing in monitoring and control systems.
6.OLED Display (0.96in)
The 0.96-inch OLED display is a compact, high-contrast display module featuring a resolution of 128 x 64 pixels, typically
available in monochrome colors like white, blue, or yellow. It offers wide viewing angles and fast response times, making it
ideal for dynamic content while consuming low power, especially when displaying darker images. Commonly using I2C or
SPI for easy integration with microcontrollers, this lightweight and thin display is perfect for embedded systems, wearables,
and consumer electronics. However, it may be susceptible to burn-in and has a limited lifespan compared to other display
technologies.
WIRING DIAGRAM
This diagram in Fig. 1 represents a Smart Plant Communication and Management system where an ESP32
microcontroller is used instead of an Arduino, and an OLED display replaces the LCD.
Fig 1. Circuit of the Automatic Watering/Lightning System
The ESP32 microcontroller connects and controls all system components. Pins 21 (SDA) and 22 (SCL)
facilitate I2C communication with the OLED display, which is powered by the ESP32’s 3.3V and GND pins.
The soil moisture sensor outputs analog data to Pin 34, with its VCC and GND connected to the ESP32 for
power. A 1kΩ resistor is integrated to stabilize the sensor signal, ensuring accurate readings.
PROGRAM CODE
//Importing Libraries for OLED UI
#include <Wire.h>
#include <Adafruit_GFX.h>
#include <Adafruit_SSD1306.h>
// Device in Blynk
#define BLYNK_TEMPLATE_ID "TMPL2Q0IJMWLi"
#define BLYNK_TEMPLATE_NAME "project"
#define BLYNK_AUTH_TOKEN "zqZhVBD6Qv1avZP3-LtqxFr7y6Qxih8b"
//Importing Libraries for Blynk
#include <WiFi.h>
#include <WiFiClient.h>
#include <BlynkSimpleEsp32.h>
//OLED display width and height in pixels
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
#define SCREEN_ADDRESS 0x3D
#define OLED_RESET -1
Adafruit_SSD1306 oled(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
const int lightSensorPin = 32; //GPIO32 (ADC1) Analog pin connected to the
Light Sensitivity Sensor
const int moistSensorPin = 34; //GPIO34 (ADC1) Analog pin connected to the
Soil Moisture Sensor
const int tempSensorPin = 35; //GPIO35 (ADC1) Analog pin connected to the
LM35
//Constants for ADC to convert measurement to value
const float voltageReference = 3.3; //ESP32 ADC reference voltage (in volts)
const int adcResolution = 4095; //ESP32 ADC resolution (12-bit)
//LM35 outputs 10mV per °C
const float tempCoefficient = 10.0;
// Wifi credentials
char ssid[] = "Happy Home";
char pass[] = "5194986859";
// Timer for periodic updates
BlynkTimer timer;
//SETUP FUNCTION
void setup() {
Serial.begin(115200);
// Connect to Blynk
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass);
// Setup timer to call sendToBlynk every 2 seconds
timer.setInterval(2000L, sendToBlynk);
Serial.println("ESP32 - TEMPERATURE, MOISTURE & LIGHT Sensing.");
//Initialize the OLED
if (!oled.begin(SSD1306_SWITCHCAPVCC, SCREEN_ADDRESS)) {
Serial.println("OLED initialization failed!");
while (true); //Halt execution if initialization fails
}
oled.clearDisplay();
oled.display();
}
//LOOP FUNCTION
void loop() {
//Calling the functions to get Temperature, Moisture and Light values
float currentTemp = getTemperature();
int currentMoisture = getSoilMoisture();
int currentLightLevel = getLightIntensity();
//Performing actions based on the obtained values
hydratePlant(currentMoisture);
adjustLighting(currentLightLevel);
//Display current status
updateDisplay(currentTemp, currentMoisture, currentLightLevel);
Blynk.run(); // Run Blynk
timer.run(); // Run the timer
}
/**************************************************
SENSING FUNCTIONS()
:Gathers sensors data on current readings
:Returns respective value
/**************************************************/
//TEMPERATURE
float getTemperature() {
//Read raw ADC value from the sensor pin
int tempAdcValue = analogRead(tempSensorPin);
//Convert ADC value to voltage
float tempVoltage = (tempAdcValue / (float)adcResolution) *
voltageReference;
//Convert voltage to temperature in Celsius
float temperatureC = tempVoltage * 1000 / tempCoefficient; // Convert
volts to millivolts
if(temperatureC > 0.00){
//Print temperature readings
Serial.print("Temperature: ");
Serial.print(temperatureC);
Serial.println(" °C");
Serial.print("Temperature Voltage: ");
Serial.print(tempVoltage);
Serial.println(" V\n");
}
return temperatureC;
}
//MOISTURE
int getSoilMoisture() {
//Read raw ADC value from the sensor pin
int moistAdcValue = analogRead(moistSensorPin);
//Convert ADC value to moistVoltage
float moistVoltage = (moistAdcValue / (float)adcResolution) *
voltageReference;
//Map moistVoltage to soil moisture level (optional)
int soilMoisture = map(moistAdcValue, 0, adcResolution, 0, 100); // 0% to
100% moisture
if(soilMoisture > 0.00 && moistVoltage > 0.00){
// Print soil moisture readings
Serial.print("Soil Moisture Level: ");
Serial.print(soilMoisture);
Serial.println(" %");
Serial.print("Moisture Voltage: ");
Serial.print(moistVoltage);
Serial.println(" V \n");
}
return soilMoisture;
}
//LIGHTLEVEL
int getLightIntensity(){
//Read raw ADC value from the LDR pin
int lightAdcValue = analogRead(lightSensorPin);
//Convert ADC value to voltage
float lightVoltage = (lightAdcValue / (float)adcResolution) *
voltageReference;
//Map voltage to light intensity (arbitrary scale, optional)
int lightLevel = map(lightAdcValue, 0, adcResolution, 0, 100); // 0% to
100% brightness
//Print light level and voltage
Serial.print("Light Intensity: ");
Serial.print(lightLevel);
Serial.println(" %");
Serial.print("Light Voltage: ");
Serial.print(lightVoltage);
Serial.println(" V\n");
return lightLevel;
}
/**************************************************
ACTUATOR FUNCTIONS()
:Performs actuator actions based on the sensing
:data gathered by the sensors.
/**************************************************/
//RELEASE WATER
void hydratePlant(int moisture){
// Perform an action based on provided moisture level
if(moisture < 40){
// Trigger motors to release water
}
}
//TOGGLE GLOW LIGHT
void adjustLighting(int lightLevel){
// Perform an action based on this Light Level
if(lightLevel < 20){
// Turn on or off the grow light
}
}
/**************************************************
DISPLAY FUNCTION()
:Updates the display with the current sensor
:reading in real-time
/**************************************************/
void updateDisplay(float temp , int moisture, int lightLevel){
oled.clearDisplay();
oled.setTextSize(1);
oled.setTextColor(WHITE);
oled.setCursor(0, 5);
oled.print("Temperature C : ");
oled.println(temp);
oled.print("Moisture % : ");
oled.println(moisture);
oled.print("Light % : ");
oled.println(lightLevel);
oled.println();
oled.setTextSize(2);
//Plant Health Status
if((temp>0 && temp <15) &&
(moisture>5 && moisture<100) &&
(lightLevel>30))
{
oled.println("<3 :D"); // Happy
}
else{
oled.println("</3 T-T"); // Sad
}
oled.display();
delay(1000);
}
// Function to send data to Blynk
void sendToBlynk() {
// Get real-time sensor readings
float temp = getTemperature(); // Read temperature
int soil = getSoilMoisture(); // Read soil moisture
int light = getLightIntensity(); // Read light intensity
Blynk.virtualWrite(V1, temp); // Send temperature to Virtual Pin V1
Blynk.virtualWrite(V2, light); // Send light level to Virtual Pin V3
Blynk.virtualWrite(V3, soil); // Send soil moisture to Virtual Pin V2
if(soil < 40){
Blynk.virtualWrite(V5, 1);
}
else{
Blynk.virtualWrite(V5, 0);
}
if(light < 20){
// Turn on or off the grow light
Blynk.virtualWrite(V6, 1);
}
else{
Blynk.virtualWrite(V6, 0);
}
if((temp>0 && temp <15) &&
(soil>5 && soil<100) &&
(light>30))
{
Blynk.virtualWrite(V7,":D"); // Happy
}
else{
Blynk.virtualWrite(V7,"T-T"); // Sad
}
DEMONSTRATION
Image 1: Circuit with all the sensors and display
Image 2: Display changing based on the status of configured ideal conditions
Screenshot 1. Blynk Integration for status monitoring over Cloud
ACHIEVEMENTS AND CONCLUSIONS
The Smart Plant Communication and Management System successfully integrates real-time sensor feedback to
interpret a plant's "emotions" through emojis. This system enhances communication between plants and owners by
displaying plant needs based on key environmental parameters such as temperature, soil moisture, and light
exposure. For this experiment, a basil plant was monitored, with its optimal conditions identified as a temperature
range of approximately 15°C, soil moisture 75%, and consistent light exposure.
To minimize manual supervision, an automated watering and lighting system was implemented, consisting of a
water pump and LED grow light as actuators. The entire system was controlled using an ESP32 microcontroller,
while the Blynk app provided a user-friendly interface for monitoring and interaction. Through the app, users can
access real-time parameter readings, verify the status of actuators, and monitor the plant’s overall condition
remotely.
In conclusion, the system successfully facilitates plant care by offering an interactive and intuitive platform. By
enabling timely preventive or immediate actions, it not only simplifies plant management but also encourages plant
cultivation among users, potentially attracting new enthusiasts and clients. The use of emojis to convey plant
conditions further enhances user engagement, bridging the gap between technology and everyday plant care.
REFERENCES
Light Intensity Sensor (Photodiode): The Basics of Photodiodes and Phototransistors - DigiKey
Grow Light: The 10 Best Grow Lights of 2024, Tested and Reviewed - The Spruce
Soil Moisture Sensor: Soil Moisture Sensors: How To Choose And Use For Irrigation - EOS
Submersible 3VDC Horizontal Pump: Adafruit Submersible 3V DC Water Pump - Horizontal Type
Analog Temperature Sensor (LM35): LM35 Temperature Sensor with Arduino Tutorial - Makerguides
OLED Display: What Is OLED? - Tom's Guide