Project

# Title Team Members TA Documents Sponsor
32 Plant Notification System (Soilmate)
Emma Hoeger
Sigrior Vauhkonen
Ysabella Lucero
Zhuchen Shao
Plant Notification System (Soilmate)

Team Members:
- Emma Hoeger (ehoeger2)
- Ysabella Lucero(ylucero2)
- Sigrior Vauhkonen (sigrior2)

# Problem
Many house plant owners struggle taking proper care of their plants. It can be difficult to keep track of when to water them and where to keep them, based on their species of plant and stage of life. Since all of them require water at different frequencies and amounts, it’s also easy to forget to water the plants on time and meet their different schedules.

# Solution
Our solution is to create a notification system to inform houseplant owners of when they should water their different plants. It will also notify the owner of the conditions of the plant based on various sensors. This will be done by creating an app that the owner can download on their phone where they will be able to enter their type of plant. There have been many apps created to act as a reminder to water plants; however, the majority of them rely on a schedule rather than live data gathered from the plant. Also those that do have live data from the plant, do not track the weather. Our app will track where that plant is originally from and use the weather patterns in that area to determine when it should be watered (ie. when it’s raining). In addition, there will be a soil moisture sensor, humidity sensor, light sensor, and temperature sensor. The soil moisture sensor will also alert the owner to water the plant if the moisture is too low, and prevent overwatering of the plant if the moisture is too high. The humidity sensor will alert the owner when humidity is dangerously too high or low for the plant, which is especially useful for tropical plants in a non-tropical environment (many houseplants are of a tropical background). The temperature sensor will alert the owner when the room temperature is not in the optimal range for the specific plant.
With the integration of software and hardware subsystems, this effective plant notifying system will make taking care of houseplants easier for both beginner and experienced plant owners. Beginner plant owners will find it easier to learn of and keep track of the demands of their plants, preventing most common mistakes that result in the death of their plants. Many experienced plant owners have upwards of 20 plants, and this notification system would make it much simpler to keep track of when to water them all.

# Solution Components
- ESP32-C61-DevKitC-1-N8R2
- Moisture Sensor (SEN0114)
- Temperature & Humidity Sensor (SHTC3-TR-10KS/9477851)
- Light Sensor (BH1750)
- ADC Module
- 5V DC Converter

## Subsystem 1: App Configuration + Weather Data
The app (developed using Flutter/Android Studio) will allow the user to add a plant for monitoring- the user will select the plant species, size, light exposure, and the size of the pot. With this information, using a lookup table that holds information for plant species, the app will store target ranges for soil moisture, temperature, humidity, and light, as well as a “home location” (later used to check weather). In the event that a plant species is unknown to the app (not in the lookup table), the user can manually add this information.
Once per day, the app will call a weather API (OpenWeatherMap API) using the “home location” of a plant to check for rain in that region. This will be used as a supplementary factor to the data from the soil moisture sensor, and with this a decision will be made on whether to water the plant or not. If the plant should be watered, a notification will be generated to inform the user. The data from the temperature, light, and humidity sensor will also generate notifications if the temperature and/or humidity is out of the recommended range, informing the user that the environment is too hot or too cold, or too moist or dry. It will give recommendations to either turn down/up the temperature, place plant in a different facing window (north, east, south, west), mist with water if too dry, or open windows if too humid. This will make the app much more beginner plant friendly.

## Subsystem 2: Sensor Subsystem
The sensor subsystem will use a resistive moisture sensor (SEN0114), temperature and humidity sensor (SHTC3), and a light sensor (BH1750). All of these sensors except the SEN0114, which requires an ADC module, will use an I2C interface that is compatible with our microcontroller (ESP32). The sensors will send their measurements to the microcontroller to be interpreted and relayed through the app. Our power subsystem will supply the correct voltages to the rated amounts of the sensors.

## Subsystem 3: Microcontroller for Communication
We must be able to blend our app configuration with our live sensor subsystem to send an alert. We can do this by using the ESP32 microcontroller. It will provide wifi and bluetooth connectivity for our sensor devices to easily transfer the data to our app. It is cost-effective and has low power consumption which will make it easy to integrate with our design. Furthermore, our group has experience with this microcontroller so we are confident with its capabilities.

## Subsystem 4: Power Subsystem
The power subsystem will deliver power to the sensors and microcontroller systems. The ESP32 requires 5V while the temperature, humidity, moisture and light sensors require 3.3V. The 3.3V will come from the LDO on the microcontroller and we will use a 5V USB adaptor to convert the 120V AC from the bench to 5V.

# Criterion For Success (Pothos for example)
- Accurately gather soil moisture data
- 300-700 Ohms optimal for top 2 inches of soil
- Accurately gather temperature data
- 60 to 80 degrees farenheit
- Accurately gather humidity data
- 40 to 60%
- Accurately gather light data
- 1,000 to 3,000 lux
- Accurately transfer data from sensors to app via microcontroller
- Be able to track weather conditions
- Be able to send alerts through app using sensors/weather conditions
- Allow user to enter plant species, and size in app
- Ensure app can track weather for multiple plant species

Microcontroller-based Occupancy Monitoring (MOM)

Vish Gopal Sekar, John Li, Franklin Moy

Microcontroller-based Occupancy Monitoring (MOM)

Featured Project

# Microcontroller-based Occupancy Monitoring (MOM)

Team Members:

- Franklin Moy (fmoy3)

- Vish Gopal Sekar (vg12)

- John Li (johnwl2)

# Problem

With the campus returning to normalcy from the pandemic, most, if not all, students have returned to campus for the school year. This means that more and more students will be going to the libraries to study, which in turn means that the limited space at the libraries will be filled up with the many students who are now back on campus. Even in the semesters during the pandemic, many students have entered libraries such as Grainger to find study space, only to leave 5 minutes later because all of the seats are taken. This is definitely a loss not only to someone's study time, but maybe also their motivation to study at that point in time.

# Solution

We plan on utilizing a fleet of microcontrollers that will scan for nearby Wi-Fi and Bluetooth network signals in different areas of a building. Since students nowadays will be using phones and/or laptops that emit Wi-Fi and Bluetooth signals, scanning for Wi-Fi and Bluetooth signals is a good way to estimate the fullness of a building. Our microcontrollers, which will be deployed in numerous dedicated areas of a building (called sectors), will be able to detect these connections. The microcontrollers will then conduct some light processing to compile the fullness data for its sector. We will then feed this data into an IoT core in the cloud which will process and interpret the data and send it to a web app that will display this information in a user-friendly format.

# Solution Components

## Microcontrollers with Radio Antenna Suite

Each microcontroller will scan for Wi-Fi and Bluetooth packets in its vicinity, then it will compile this data for a set timeframe and send its findings to the IoT Core in the Cloud subsystem. Each microcontroller will be programmed with custom software that will interface with its different radio antennas, compile the data of detected signals, and send this data to the IoT Core in the Cloud subsystem.

The microcontroller that would suit the job would be the ESP32. It can be programmed to run a suite of real-time operating systems, which are perfect for IoT applications such as this one. This enables straightforward software development and easy connectivity with our IoT Core in the Cloud. The ESP32 also comes equipped with a 2.4 GHz Wi-Fi transceiver, which will be used to connect to the IoT Core, and a Bluetooth Low Energy transceiver, which will be part of the radio antenna suite.

Most UIUC Wi-Fi access points are dual-band, meaning that they communicate using both the 2.4 GHz and 5 GHz frequencies. Because of this, we will need to connect a separate dual-band antenna to the ESP32. The simplest solution is to get a USB dual-band Wi-Fi transceiver, such as the TP-Link Nano AC600, and plug it into a USB Type-A breakout board that we will connect to each ESP32's GPIO pins. Our custom software will interface with the USB Wi-Fi transceiver to scan for Wi-Fi activity, while it will use the ESP32's own Bluetooth Low Energy transceiver to scan for Bluetooth activity.

## Battery Backup

It is possible that the power supply to a microcontroller could fail, either due to a faulty power supply or by human interference, such as pulling the plug. To mitigate the effects that this would have on the system, we plan on including a battery backup subsystem to each microcontroller. The battery backup subsystem will be able to not only power the microcontroller when it is unplugged, but it will also be able to charge the battery when it is plugged in.

Most ESP32 development boards, like the Adafruit HUZZAH32, have this subsystem built in. Should we decide to build this subsystem ourselves, we would use the following parts. Most, if not all, ESP32 microcontrollers use 3.3 volts as its operating voltage, so utilizing a 3.7 volt battery (in either an 18650 or LiPo form factor) with a voltage regulator would supply the necessary voltage for the microcontroller to operate. A battery charging circuit consisting of a charge management controller would also be needed to maintain battery safety and health.

## IoT Core in the Cloud

The IoT Core in the Cloud will handle the main processing of the data sent by the microcontrollers. Each microcontroller is connected to the IoT Core, which will likely be hosted on AWS, through the ESP32's included 2.4GHz Wi-Fi transceiver. We will also host on AWS the web app that interfaces with the IoT Core to display the fullness of the different sectors. This web app will initially be very simple and display only the estimated fullness. The web app will likely be built using a Python web framework such as Flask or Django.

# Criterion For Success

- Identify Wi-Fi and Bluetooth packets from a device and distinguish them from packets sent by different devices.

- Be able to estimate the occupancy of a sector within a reasonable margin of error (15%), as well as being able to compute its fullness relative to that sector's size.

- Display sector capacity information on the web app that is accurate within 5 minutes of a user accessing the page.

- Battery backup system keeps the microcontroller powered for at least 3 hours when the wall outlet is unplugged.

Project Videos