Overview • Screenshots • Hardware Requirements • Installation • Authors • Credits • License
SmartGarden is a smart plant management and monitoring system that enables users to take care of their plants remotely via a mobile app. The system utilizes various sensors and pumps controlled by an Arduino to measure various plant health metrics (moisture, brightness, humidity, temperature) and to remotely water the plant when needed. The Arduino sends data and receives commands from an Node.js server hosted on a headless Raspberry Pi via a serial port. The Raspberry Pi uses a camera to measure the height of the plant, and to display the latest image to the user. Data is stored in a MongoDB database, and the React Native app displays all of the data by fetching from a REST API on the server built with Express.
This project was built for the University of Waterloo SE 101 final project.
- Arduino Uno
- Raspberry Pi running Raspberry Pi OS
- DHT series Temperature/Humidity Sensor
- Arduino Soil Moisture Sensor
SmartGarden requires at least version 14.x of Node.js (which comes with npm) and Python version 3.7+ installed on the server. Begin by installing and starting the server:
# Clone this repository
$ git clone https://github.com/sunny-zuo/smart-garden.git
# Navigate into the server folder of the repository
$ cd smart-garden/server
# Install JS dependencies
$ npm install
# Install Python dependencies
$ python3 -m pip install -r camera/requirements.txt
# Run the server
$ npm start
Configure pin numbers in arduino/main/main.ino
and upload the sketch to the Ardunio.
The app is built with Expo. With Expo installed, from the root directory of the repository:
# Navigate into the app folder of the repository
$ cd app
# Install dependencies
$ npm install
# Run the app
$ npm start
- Plant icon by Pixel perfect from Flaticon
This project is licensed under the terms of the MIT license.