Food is endlessly important for people, and although there is enough food in general for everyone on earth, some still suffer without it due to food waste, mismanagement, and the impact of climate change. If we can provide a real-time, low-latency health-monitoring system for people who grow the food that is so important to us, and then on top of that provide analytics and predictive modeling, we might be able to shrink the gap between the food that is grown or could be grown and the food that actually makes it to the people who want and need it. Moreover, we want to empower small farm owners to collaborate and network each other in order to share information about important information pertaining soil quality, conditions, and best practices.That's where our product comes in.
What it does
It is a service designed primarily to help owners of fields, gardens, urban agricultural centers, and anything with soil and plants monitor the health of their soil and transitively their plants through a real-time updating dashboard. In addition to that, in a highly controlled environment conducive to solving problems with automation (such as those in urban agriculture), this information and predictive modeling allows for a framework that is useful to both humans overseeing the process and the robotic control processes automating the work themselves. It takes a step to bridge the gap between humans and robots in the agricultural community among its users.
How I built it
Hardware: Arduino (Uno and 101) for separate nodes with sensors (moisture and air quality) attached use serial communication for data transfer and then stream the data over wifi to the backend in its original streaming format and a filtered (infinite impulse response filter) format for a more polished data. Server: Python/Flask deployed on Heroku connected to Google's Cloud Firestore for storing soil health status for users. Processes continuous requests from the sensors to update the farm status as well as relays this information to the front-end. Partial analysis of time-series data to generate predictions regarding when the farm will need attention next. UI/Front End: We first used Framer X to rapidly prototype our mockups and tried to validate our ideas by getting inputs from each of the team members and few mentors. After our validation, we used React.js as our primarily front-end framework to first create the User Interface for Web App and to work with the backend RestAPI in order to receive and update real-time data of soil quality.
Challenges I ran into
- Testing several different hardware components for both use and integration once proven is a difficult task, but it is a necessary one.
- Our team comprises 4 highly passionate individual people, each with a strong opinion on the project/features they wanted to work on so one of the primary struggles was debating what needs to get done next.
- Running short on time is a reality, and as you all know, things can break and go wrong quickly on little sleep.
- User research and a thorough understanding of the end user makes everything much easier. We are familiar with but are not ourselves in the agricultural community. So this made it difficult to build for what our end user would best be able to use.
Accomplishments that I'm proud of
- We worked on the project with user-centered design to deliver features that would truly address their needs. Also, the UI is incredibly pretty. 'nuff said.
- The data updates with low-latency under the conditions tested and actually is something I would use while growing my own plants.
What I learned
I learned what a full product in the IoT space involves when you want to provide analytics and monitoring to an end user.
What's next for Soil-ent
- We chose to sleep instead of getting the prediction to work on real-time sensor data and displaying a "Prediction time to next watering session" in the UI, so our first step would be to flesh out that feature.
- We as strong proponents of automation believe farmers should not have to concern themselves with watering (for instance) their soil at all. Water sprinklers could be hooked up to the system and configured to start watering the soil as soon as moisture drops below a certain level.
- We only used one moisture sensor as our data source for the time being, but the eventual goal would be to have multiple moisture sensors as well as using other sensors to determine the soil health holistically. If we manage to have enough data to make deterministic anomaly detections, we could add a feature to send push notifications in case we detect something unusual.
- We wish to make our web app responsive, as well as possibly introduce a mobile interface.
- Our product is a minimum viable product and a prototype, so there is much room to grow in hardware, software, and elsewhere. A case for the hardware would be greatly beneficial.