Providing plants with exactly what they need when they need it through sensor-data driven technology that automate the watering process and allow the user to tailor the setup exactly to the plants seasonal cycle.
Plant care can be a huge time investment. So why not automate the most tedious tasks?
I'm a plant person, and therefore my apartment is full of plants. I am also in the fortunate position of having a (south-facing!) balcony, which – as you might've guessed already, is also full of plants. Watering these plants can take some time, especially the ones on the balcony need a lot of running back and forth to the water source. And when you consider the fact that in the height of summer those plants have to sometimes be watered on a daily basis, this little hobby of mine is starting to turn into a huge time sink. So why not automate it?
Balconies offer the perfect stage for your green thumb.
The first setup consisted of a Raspberry Pi 3, a 12V water pump, some tubing (7 mm diameter), a capacitive soil humidity sensor, a reed-relais and a bucket to store the water. I also experimented with brightness-sensors to let the setup make decisions based on the time of day/amout of sun the plants are getting. For the (analog) light-sensors to work I had to add a MCP3008 ADC to convert analog signals to digital.
Before I gave the setup the permission to make its own decisions I started with manually measuring two very important values: the point where I would water the plant and the point where I think the plant had enough water. These two numbers define the minimum and maximum threshold in which the setup is either acting or observing. If the minimum amount is reached, a certain quantity of water gets dispersed.
After this step, the setup waits for a couple of minutes (timeout) to make sure that the water has permeated the soil properly and then – depending on the measurement, either disperses some more liquid or goes back into observation-mode.
My plants of choice in this case were succulents as they're generally quite sturdy and survive a wide temperature range that make them perfect outdoor-plants in my opinion. They also provided me with enough fail-resistance to easily make changes and iterations to the setup without dying on me, although now after several rounds of trial and error I am confident in the systems' ability to sustain even more delicate and sensitive plants.
After building a proven and reliable system it was time to consider refining and upgrading the user-interface from the existing command-line terminal to something more sophisticated. It was also time to consider adding some more functionality and ask users what they would wish for in a self-watering system.
Watering plants is as easy as ABC, right? After questioning plant-enthusiasts about the things they could see being improved here's what they mentioned were their main issues with the status quo.
- there's no general indication of when an individual plant needs water or doesn't
- watering plants can be a tedious chore and also a huge time investment that is not always desired
- depending on how many plants you own you have to make multiple trips to the water source
- individual plants have individual needs
- some plants don't need to be watered at all in certain periods of the year
- no overview of which plants have been watered recently or are in need of some more
Thankfully I have a lot of friends that share my passion for houseplants and horticulture in general, which is why I had the opportunity to talk to them about my project and gather issues they are facing with their houseplants and also some ideas on how to solve those problems.
The most common issue mentioned by them was simply the fact that having many plants requires a substantial time investment. It's no secret that every plant needs their own portion of attention, which doesn't only consist of watering it but instead also means that you have to check for individual indications and states the plant might display through its leaves, blossoms or the constitution of the soil. So the process of watering is pretty much the most basic activity when working with plants and automating it could free up some time that the gardener can instead spend on focusing on the other visual cues of the plant and facilitate its development.
Another big issue is the fact that individual plants have individual needs. Many people tend to stick to their routines and water their plants in fixed intervals (e.g. once every week). While it's very practical to have a set schedule it might lead to over-watering some plants while under-watering more needy ones. There's also the fact that some plants have watering-patterns that differ by season. Certain plants for example don't want to be watered in the winter months at all or only need a very minimal amount to sustain themselves, while others just stick to their habits all year long. So as you can see, watering plants is quite easy, however giving them exactly what they need when they need it is not and that's one of the main issues sensor-driven automation can solve.
Creating User Stories can give me additional insights into the intentions and expectations a user would approach and use a product with.
As a user I want to...
- check the present moisture level of the soil
- see for when the next automatic watering has been scheduled (approximately)
- know how much water has been used today
- be able to water the plant (manually)
- group plants together
- schedule the next watering manually
- see additional statistics and insights about the plants water consumption
- set an individual watering-period for each plant
Before heading into the drawing-phase I try to outline the features the product might have and also keep an eye on the information architecture.
- Plant Irrigation
- Soil-moisture indicator
- Manual watering functionality
- Next scheduled watering
- Manual scheduler
- Plant Profiler
- Plant naming
- Watering-patterns by month
- Plant grouping
- Plant statistics
- Moisture percentage
- Total water consumption
After gathering functionalities that the users want from an app that automates their plant watering and combining that information with the issues they're currently facing I am able to put together a very rough vision of the products' main screens. Starting with one big list of features I separate and group them by similarity and keep an eye on the information architecture. This means, that I try to predict where the user might be expecting a feature to be. I do this simply by relying on my common sense and the experience I gathered over the years. These assumptions then can be validated or iterated on in the following steps through user-testing and stakeholder interviews.
Sketching and wireframing a prototype to test on real users.
Starting with the first set of features and the aforementioned information architecture I sketch some of the first screens to see how the app might navigate and validate or change some of the first assumptions I made.
After sketching the first frames by hand I quickly transition into the wireframing-phase where I can work out some of the more in-depth details and interactions necessary for a working product.
These low-fidelity screens can (and will) also be used for user-testing.
Clickable Prototypes can already be used for testing-purposes and also allow the stakeholders to get a deeper understanding of the finalized product before heading into the high-fidelity phase.
Defining colors, fonts and other visual building-blocks.
While this isn't a full-fledged design system it still gives a good basic overview of the look and feel of a design.
In this product the design heavily revolves around the contrast of green and gold colors. The green in this case obviously symbolizes the plants whereas the gold should represent the light of the sun. The contrast is strong enough to be legible even with heavy visual impairments - something that I always keep in mind.
The two typefaces in this case – Termina and Barlow, are among my favorites. Their huge variety of weights allow me to be very flexible in my designs. I use two weights of Termina for headlines and screen-titles and Barlow for the more delicate parts of the interface such as descriptive sub-headlines and labels.
The usage of a texture is something you don't see that much in contemporary designs although I find that it gives the product a more organic and authentic feel - a desired attribute in this case. Used in moderation it still maintains a clean overall appearance.
The individual components of the products' main screens.
The plant-profiler, the irrigation-control and the watering statistics.
The main screens in an animated format to communicate the way certain features could be programmed to the developers.
Something I always try to provide in my projects unless I am coding them myself.
The Profiler
The Profilers goal is to provide the perfect biotope for your plants by creating an individual profile that is tailored to their needs. It allows you to take a picture of your plant to document its progress and give it a nickname to further differentiate it from your other plants. Tapping on the picture also allows you to switch between your other plants (as displayed in the wireframe-prototype).
The "watering period"-titled area gives the user the ability to pick the month in which the plant needs to be watered because certain species (some succulents for example) don't need to be watered in the winter months at all or only very rarely.
Further down there is a feature that lets the user group certain plants together. While this feature is only for organization purposes right now, this could allow the user to share certain profile-settings between the plants of a group in the future.
The Irrigation-Control
The most prominent feature in this screen is most certainly the water-indicator and its centered manual-watering button. The sun-ray shaped indicator made out of tiny golden droplets displays the amount of water-saturation the soil currently has according to the sensor-data. It goes from 0% to 100% in a clock-wise direction and triggers the automated watering as soon as it's empty. In case you feel like watering your plants manually there's also the option to push the button in the center of the rays.
The "next watering"-labeled clock-face below shows when the system anticipates the soil to be dry enough for the next automatic watering. You can also adjust the time manually by sliding the two dials (hours & minutes) to your preferred time, overwriting the systems set timer.
Watering your plants has never been so sexy.
The Statistics
Because you can't always keep an eye on your plants and the system, the statistics-page allows you to track what the setup has been up to. The diagram lets see you how the water-saturation of the soil has changed in a set amount of time.
The chart under the diagramm displays the daily total water consumption of the last seven days and highlights the "highscore" of the week.
Conclusion
Depending on how many plants you have, watering them all can take a lot of time – time we sometimes don't have or don't necessarily want to invest. The goal of this project was to allow people to enjoy their plants without some of the more tedious tasks surrounding it. Taking away the need to water your plants makes room for other more enjoyable activities. At the same time the setups' aim is to not only benefit the user but also the plant as it is tailored around providing exactly the amount of water the plant needs – a win-win-situation for both parties involved.