Remember the “SEP field” in Douglas Adams’ Life, the Universe and Everything? Our brains do not let us see Somebody Else’s Problem. A while ago, that was exactly what our office plants were going through. That is, until we developed Buff Plants — an IoT device that keeps our plants alive.
How Everything Started
Walking through our office, again and again, I noticed that lots of our office plants looked fairly unhappy. But what were we supposed to do? Their way of telling us this was not very nuanced. They simply started to die, without letting us know what is wrong. At some point, I could not stand that situation any longer. So, I figured that we needed an automatic solution to (1) keep our plants alive for a long period of time and (2) let people know how they can help. The idea for Buff Plants was born.
What I Tried At Home
A lot of motivation and inspiration came from my home plants: when I go on holiday, it is difficult to keep them watered. I had previously attempted a low-tech solutionusing pieces of old cloth to wick water out of a reservoir and into the soil. To my surprise, it seemed promising. But eventually, the weight of the water caused the cloth to bend, the water dripped all over my table, and left the soil dry — what chaos. The thing is, even if it had worked, it could have never been a long-term solution, as the cycle of wet/dry soil is important to allow the plant roots to breathe.
So, Is there A Better Way?
During one of our Discovery Sessions, where we invest 10% of our working time in non-operational projects, I shared my idea with other Motees. Luckily, I was not alone in my pity for our plants. A couple of others had similar ideas, and even more, people took an interest after we presented the problem. All in all, there were nearly 10 people involved in the project at one point or another. We agreed on a simple concept: keep plants alive with minimal human intervention and alert humans when intervention is required before it is too late for the plant. And what was the tech solution for that? An IoT system that would monitor the plants’ conditions, water them automatically and give feedback to humans. With our clear concept, it was time to start our mission: we, a bunch of motivated, dedicated and plant-loving Motees, set out to save our plants.
But wait — each project needs a systematic plan to actually work. So, before we started, we had to ask ourselves the right questions and understand what we want as an outcome:
- Which sensors do we need to understand how happy the plants are?
- What sort of interaction would buff plants have and how would it give the information to the user?
- What can be done automatically and what should be handed off to humans?
How Do I Choose The Right Sensors?
There are two basic things that plants need to be happy: sunlight and water. To measure the amount of light falling on plants, we used a lux sensor, and to track whether the soil is moist enough, we used a soil moisture sensor. Surprisingly, most sensors on the market corrode over time, meaning they will only last so long and need constant recalibration. Hence, we decided on the pricier, capacitive sensor. Since we wanted the plant to water itself from an internal tank, we also needed a water-level sensor to tell us when a human is needed to refill the tank. In addition, we got humidity and a temperature sensor. Why? Obviously, because we really care about our plants and want them to feel good on every level.
What’s Left For Humans?
Obviously, if the plant does not get enough sunlight, even our cyborg plant cannot do anything about it (yet) — so it should just tell people to move the plant somewhere brighter.
We tackled all our initial questions during the first design phase. After that, we had to decide what our prototype should look like. Then we started building the board, connecting the sensors to each other, and writing the software to control it all.
How We Iterated Towards A Perfect Design (& Annoyed All Motees)
The first iteration of our prototype was quite bulky, as we simply built a box around all of the components which we had loosely assembled. As a result, it could not actually fit neatly into a plant pot next to the plant and had to have its own stool nearby. This obviously would not do, so we had to make it smaller. We first targeted the bulky watering system. Actually, we had preferred a gravity-fed system in principle. But we had a simple small pump lying around the office, and no valves, so we went with a pumped solution. However, with the bulk of the pump now an issue, we needed to change.
Luckily, we had plenty of servos lying around, and with a bit of wood and heat shrink, we were able to turn one servo into a rudimentary valve, saving precious cubic centimeters. Keeping the board itself small was also a significant concern. In a previous Discovery session, a colleague had built “Mosense” — a general-purpose sensor board with a number of the sensors we would need. As it was compatible with the tiny Adafruit feather form factor, it made our decision easy.
However, the sheer number of sensors we had posed problems. We had to cut a few of the connections on the Mosense board’s unused components to avoid overlapping pins and to free up pins for our own use (luckily for us, the designer of the board was in our office, and happy to help).
Since Buff Plants is designed to sit next to a plant and needs to sometimes draw attention to itself, appearance is a pretty important concern. So we had to give it an attractive look. The case was designed in-house, and produced with our 3D printer. To attract attention to plants in need, we included LED strips that would let people know the mood at a glance. More nuanced information about the plant’s mood (or sometimes, a face) is given by a low-power E-ink display. Together with solar panels, it makes Buff Plants extra friendly to the plants we are trying to save.
An early version of the device would scream when attention was required too, but in fear of our colleagues destroying it as soon as it turned on, we regretfully removed this feature. As a consolation, we could save even more space by pulling out the speaker and soundboard.
Are We Having Fun Yet?
Discovery is meant to be a playful way of learning. So it was crucial for our team to let everybody do the things they have always wanted but been unable to try in their normal day-to-day. For example, as a web developer, I wanted to play around with embedded systems. Why? Because it offers a significantly different environment, and seeing your code do things in meat space (the real world) is always fun. But playing around also comes with challenges. For me personally, the biggest challenge was the reliability of information coming from sensors. For example, the data from the moisture sensor is very noisy and it is difficult to get a handle on when the soil actually needs to be watered again. But that is the fun part: we were constantly learning new things, either from more experienced colleagues in this area or by our own experimentation.
Why Buff Plant Is More Than Just A Sensor
We are not just playing buzzword bingo when we call Buff Plants an IoT device: it can accomplish tasks and transfer data online without human intervention. For the latter, we developed an app that would show the current conditions and the plant’s attitude towards it.
To build a mobile app, we used a framework called Vue Native which easily allows building native applications using the lovely Vue framework. It was developed within the Expoecosystem with a backend by Firebase.
Additionally, we also built a web app using the Rust framework yew. While this is far from a production-ready way to build web apps, Rust is the new hotness, and I wanted to see what it would be like to use it to make a website.
While these apps let anybody see the current conditions of the plant from anywhere, they do not let us track data over time. For this, we also integrated with Motius IO.
Motius IO is another previous Discovery project which provides a common platform for different devices to publish data. It enables us to simply publish the data as we collect it, and produces graphs of historical data in real-time. Actually, we will talk more about Motius IO soon — make sure to follow this blog, our Instagram, or subscribe to our biweekly Tech-Dosis if you do not want to miss out (#ShamelessSelfPromotion).