Who among us hasn’t killed a houseplant or two? Or maybe 10? With the memory of a recently deceased office fern fresh in our minds, the DevNow FedEx team conceived of Bright Pot: an Arduino-powered smart planter that informs plant owners on the condition of their plants through LED lighting. The initial idea was simple – change the LEDs based on the reading from a soil moisture sensor. A blue light indicates an over-watered plant, red means the plant is in dire need of moisture, and green shows when the moisture level is balanced.
With only a week from conception to completion, Bright Pot was a variation on the ‘FedEx’ project, a concept popularized by software company Atlassian. The FedEx day is an opportunity for software developers to create and deliver a project in only 24 hours. FedEx projects allow developers to experiment with ideas and technologies that they may not be able to explore during traditional work hours. As a team of three mobile developers, we knew we eventually wanted to add native and/or web apps with the ability to interact with the smart pot. With that in mind, we designed Bright Pot to be a scalable project that we could revisit and continue to build upon in the future.
Bright Pot Technology
The technical implementation of this project can be split into two decoupled parts;
Arduino UNO and Moisture Sensor
We used the Arduino UNO along with a soil moisture sensor to capture the moisture levels of the plant soil. We made sure to get a corrosion resistant sensor, to give it a longer life span. In order to be able to send the sensor data to our API, we used a WiFi shield to give our Arduino internet access. This part was very difficult to debug, as the generic error messages could refer to a large number of issues, both software and hardware related.
Raspberry Pi + Fadecandy
We chose individually addressable LED strips to allow us more customization for this project in the future. To control them, we used a Fadecandy, making it very quick and easy to set up a server and control the LEDs. In order to make this project less bulky, we used the Raspberry Pi to host both the Fadecandy server and the API used for receiving sensor data. When the API receives sensor data, it does calculations to determine what color the LEDs should turn, then sends it to the Fadecandy server, which then talks to the LEDs and tells them to turn the appropriate color.
Bright Pot Methodology
From the onset of this project, we decided not to embrace any traditional methods of parsing out tasks through creating and pointing stories, or making a Trello board of tasks to be done. Instead, we found that simply working together closely and parsing up tasks as they were needed worked best in this situation. Working collaboratively through the hiccups of learning these new technologies, proved not only to be more time effective, but ultimately much less frustrating than if we had been going at it alone. Maintaining this momentum was vital for completing the project on time.
Overall, by working together as a team to tackle problems as they came about, instead of as individuals with specific roles, we were better able to adapt to challenges, as well as enable more in-depth knowledge for every piece of the project instead of being an expert in one area. Working in this dynamic, we were forced to have clearer, more consistent communication, forcing each of us to be honest about our level of understanding with the technologies we used. In short, working a project in this format exposed us to new technologies, forced us to work within our scope, and made us grow as developers.
Bright Pot Teachings
Looking at this project in hindsight, we learned quite a few technical skills, as well as some better insight into team building and dynamics. Arduino and Raspberry Pi were both brand new tools for a majority of the team, and we learned some high quality lessons like how to not overpower An LED and how to not electrocute yourself. Ultimately, connecting various IoT parts and pieces into a finished product was among most useful skills we gained from this project. But while the deliverable product is the main goal of doing a FedEx project, learning to self-organize within a team also proved to be one of the biggest takeaways from this experience.