During the start of quarantine it seemed liked everyone was either redoing their bathroom, baking bread, or planting a garden. I’ve not lived in a place where I could plant my own outdoor garden, but I’ve wanted to be able to grow my own food for a while, mainly as a sense of pride, but also because I really believe in environmental sustainability. I don’t currently eat meat because of the amount of resources it consumes(1)(2) before it makes it to the table. I would love to be able to grow my own food to reduce my carbon footprint further.
But enough about me - let’s put this in a different perspective. 23.5-30 million Americans live in “food deserts”(3) areas of the country lacking an adequate supply of fresh foods and healthy whole foods. I think this is an issue that many people have become aware of and there are many different avenues people are going down to address this. Community gardens have become more common and more technical solutions such as “Freight Farms”(4) and "Local Roots"(5) companies manufacturing IoT powered farms inside freight containers. I’m excited that these options exist, but personally I don’t believe these solutions give the power to the end user.
So I envision a system where a hobbyist grower purchases a modular IoT powered farm that they can set up in their closet and donating a second farm to someone in need that expresses interest in growing their own food. It boils down to “give someone a fish they’ll eat for a day, teach them to fish and they’ll eat for a lifetime” Empowering people to not just take the produce that is given to them from a community farm, but allowing them to grow whatever food they may want from their own individual farm.
I’m just one person and I don’t currently have the knowledge or resources to build a whole IoT farm so I decided to start as small as possible, keeping one plant alive through an IoT planter pot.
My stepping stone for this project was to throw out some ideas of problems people might have with growing plants. I wrote out my assumptions of how most people go about caring for their plants. From those assumptions I was able to start to see where an automated planter pot might fit into someone's planting habits and draft up questions to ask potential users.
I put together a survey to better understand other individuals' planting habits and gauge potential interest in a product like this. In addition to those survey responses I also interviewed a few close friends. There were 16 survey questions, 13 survey responses, and 3 interviews.
Getting responses from survey participants about their planting processes really shattered some of my assumptions. Particularly how some of the more experienced plant growers water their plants more by feel than a weekly schedule. When I buy a new plant I start by getting something cause it looks cool and then finding a place to cram it into my apartment. A couple of my interviewees started by finding a place in their home they wanted a plant and then getting one that fit. I also assumed most people would repot their plants, but a lot of people left them in the plastic store pot and just put that inside of a nicer looking pot.
This was also a unique process in terms of UX design. In a sense there are two users; the consumer and the plant itself. There were some inevitable things that an automated planter would need and some inevitable things plants need. The pot has to do three main things: sense the conditions of the plant, calculate the needs of the plant, and relay that information to a user. The plant needs water, soil, and light.
I decided to work toward a prototype planter that I can then test along side a mobile app to relay the plant's information to the user.
Here is how I’m thinking about addressing the plant’s needs.
Water - I decided there would need to be a water reservoir at the base of the planter. Users would need easy access to refilling the reservoir. Then the water would be pumped with a small fountain pump up into the plant and it’s soil. The planter needs to know how much water to add and when to add it. At this point I’m working out a time based table to determine how much water to add. I’ll need to measure the flow rate of the pump and how quickly the water dissipates from the soil. As far as when to water the soil I had an idea for that.
Soil - I’ve decided to use FDR moisture sensor and will change them out if they end up not being exactly what the planter needs. They are relatively cheap and easy to connect to a microcontroller. When the sensor detects that the soil is at a percentage deemed too dry for the plant it triggers the water pump.
Soil nutrients - right now I don’t have an idea about automating this and for the moment I’m thinking users would have to add their own nutrients to the soil. There could be a reminder built into the app letting them know when to add nutrients. It’d like to look into automating this at some point.
Light - Light has been one of the biggest issues for me in the past so it was one of the first things I thought about with this planter. Plants don’t thrive in just any old light. They need certain wavelengths of UV light to really take off well. Different levels in that spectrum affect whether the plants flower or not and how quickly they may grow. The light will need to adjust in height so that it can be aimed at the plant’s leaves. There is ambient light in any given room that affect the placing of the planter. If it’s already a bright sunny environment the plant may only need the additional light on cloudy days vs if the plant is in a dark room the light may be needed constantly. So the planter would work best with a light sensor that could inform users if the placement of the planter is ideal for each plant.
Temperature - is another important thing to consider for plants. Currently the first three needs of the plant are already a lot of work for me and I’m developing this product for indoor plants so temperature is less of an immediate concern. But I did want to address that I know it is a factor for plant life. I do have plans to include temperature sensors down the line.
I believe the simplest way to show potential users information about their plant's status will be through a mobile app as it will eventually allow users to manage multiple plants at once. I downloaded a bunch of the top mobile apps for plants onto my phone to see how they went about displaying information about plants. Below are some graphics about my top three.
After getting some inspiration from other mobile plant apps I started in on some of the main screens for this app. I liked how Blossom gave so much information about their plants needs in a digestable way. I also worked out the first pass at a user flow. I usually try to hold back on doing any visual design decisions, but I also think that they get me more excited about a project so I started piecing together a mood board.
The Brain - ESP32
I’ve built a few things with Arduino and other microcontrollers before, but nothing this complex so I had to reach out and get some help. Luckily for me my cousin is a mechanical engineer and has made a lot of more complex robotics with various controllers. I told him about my idea and what I needed the controller to do and he suggested that an ESP32 was the way to go for creating IoT devices. It has bluetooth and wifi built onto the board which is imperative for IoT applications.
The Body - A Paint Can
While looking for some assets for an iPhone mockup for a different project I saw a mockup for a paint can. That paint can mockup made me think about all the old paint cans in my dad’s basement and the mountains of them in the paint shops when I was working in film. Where do all these paint cans go? I imagine a lot of people throw them in the trash when they’re done with them and a few probably go through the proper process of recycling them.
Almost inherently when making a new product you will be making something that creates waste, but there are opportunities to offset some of that. I think this is one of them. My eventual goal is to create this planter inside of old paint cans. Collect old paint cans from people, properly dispose of the old paint, and then clean up and put a new face on the old can so it’s ready for a consumer.Here are some design with that concept in mind.
For the prototype we wanted to be able to have the pot send information to a user’s phone and display it in a meaningful way for testing with potential users. So here we had a bit of a problem. We found the easiest way to display information from the ESP32 was to host a web server on it. Ideally we would then code a mobile app in Xcode to communicate with the web server. However with having some prior knowledge of HTML/CSS and next to no knowledge of Swift it was slightly easier to code a few screens in languages I kinda know. Once they're coded I can load them directly to the ESP32's onboard storage.
Sooooo I learned to code better. I used freecodecamp.org to get to a point where I could make passable mobile screens and load them onto the microcontroller. Are they the cleanest code in the world? No! Could an experienced developer do much better? Absolutely! If I turned this over to a developer would they just delete everything and start over? I hope not! I’m really proud of the screens I was able to code on my own for this prototype. I didn’t code every screen that was shown in the wireframe due to the limited storage on the ESP32 and it doesn’t feel necessary for testing the prototype. I can show users the full wireframe in my prototyping software and then provide just the relevant screens on their phone to get their feedback.