Physical Computing Mayor Project - MA in Computer Games Art and Design - Goldsmiths - 2017


By Pablo Larenas - Designer

About the project

The following project consist in design and build a smart plant pot to help Valentina, my wife, in the basic cares of her plant, which include soil moisture and temperature control. The plant pot will react depending of the level of those variables, emitting light and sound to Valentina, alerting her about them, acting as a funny reminder.

 >> Initial slide consisting in a infography of the plantpot functions.  

>> Initial slide consisting in a infography of the plantpot functions.  

Phase 0: Design

Measuring the environment

The plant pot will measure the soil moisture, air humidity and temperature next to the plantspace through two sensors located in different parts of the pot and connected to the Arduino. The Soil Moisture sensor will be connected in the Analog Pin 0 and the air temperature and humidity will be connected in the Digital Pin 7.

In the code (see below) the Arduino reads the pins of both sensors and depending of the value of the variable, triggers different outputs (lights and sounds).

Finally, a third input sensor will be installed in the pot to measure Valentina’s proximity. Depending of her distance relative to the pot and environment measurement of the sensors, the pot will emit a specific sound (.wav file).

To storage sound files in the Arduino, a micro SD card adapter will used. It has several outputs besides voltage and ground, that will be connected in the digital pins of the Arduino to establish communication between both boards. The sounds will be recorded, exported as 8 bit .wav files and storage in a micro SD card. Finally the SD card will be placed in the SD compartment in the adapter.  

Communication with Valentina

The plant pot has two outputs: Light and Sound.

The 3 blue LED will indicate the level of soil moisture, reacting depending of the moisture threshold.  They will be placed in a raw in the frontal face of the pot as part of the panel. Therefore, depending how many LED are on, Valentina will clearly see if the plant needs or not, more water (1LED = Low level, 2LED= Normal level, 3LED= High Level).  The LEDs are connected in the Digital pins 2, 3, 4 of the Arduino board

This “low-normal-high” suits for several types humidity level requirements, being agnostic in terms of plant type. Therefore, is Valentina puts a plant that requires high levels of moisture, the 3LED will be the optimal. On the other hand, a cactus, will require low levels of moisture so 1LED will be the optimal.

In this sense, using a SD card adapter is equally customizable, due the sounds can be updated and edited to fit on every type of plant that Valentina needs to care about.  

The sound will be played by a 8 ohm speaker, connected to a transistor in the stripboard. The transistor will be also connected with the Arduino receiving information form the SD card.


  • 1 Arduino Uno 
  • 1 BreadBoard
  • 1 StripBoard
  • Jumper wires
  • BC 546b - 547 Transistor
  • 3 Blue LED
  • 1 8Ohm Speaker
  • 1 Micro SD Card Adapter
  • 1 Micro SD card (up to 32 GB)
  • 1 Soil Moisture Sensor
  • 1 Temperature Sensor
  • 1 Proximity Sensor 
  • 3 mm white acrylic 
  • 3 mm transpartent acrylic
  • Blue celofan paper


  • Arduino IDE (Scripting)
  • SD Association’s SD Formatter tool (Transform sound into usable wav files) 
  • TMRpcm library (SD card Adapter)
  • DHT library (Humidity and Temperature)
  • SPI library (Speakers)
  • SD library (SD card)
 >> Draw of the Plant Pot, describing the disposition of components in the plant pot (not specific connections in the arduino board)

>> Draw of the Plant Pot, describing the disposition of components in the plant pot (not specific connections in the arduino board)

Phase 1: Breadboard Prototyping 

The prototyping process started with the arduino and the breadboard and the main  components (temperature, soil moisture, proximity sensor). Th first lines of code were written in this stage, validatimg the reading of the sensors and the "if" statements for the LEDs. 

After the first test. the Arduino can read temperature, soil moisture and proximity levels, turning on and off the LEDs depending of the soil mositure threshold.  

After that validation, the SD Card Adapter was added. Some of the pins of the sensors were welded to jumper wires. Although, I burned one of them by accident, having to order a new one . Due that experience, and considering deadline, I changed the strategy, using jumper wires with male and female heads in theboards, which were more safe and stable considering the ergonomic interaction with the plant pot. While, no more welding direct to the boards were required, the rest of the wires, resistors and transistors, were welded to the copper stripboard later.  


The code starts calling the sensors and components libraries and defining variables for inputs and arrays for outputs. Additionally. some debugging lines for prototyping were added to validate the functionality of it. An example of this is the Serial.println ("SD fail"); used to determine if the code was properly reading the device. 

Similarly, some conversions were made for the values printed by the sensors, in order to make them more understandable and easy to work with (Proximity reading conversions from volts to inches).

A random seed was used to generate random voices in several moisture conditions, to make the pot more interactive and less repetitive. That way, when Valentina approaches the pot, it will say different "hello" messages or different ways to express cold or heat. 

>> A video of the components working. The speaker sounds when the proximity sensor detect a distance in a certain threshold. The LEDs are on due the moisture detected by the sensor (in this case LOW). To save time, sample sounds were used to test the SD card adapter.

Phase 2: Welding and Enclosure Building 

The enclosure design started at the beginning of the project. As I was sure I wanted a minimalistic box with two compartments (soil and circuit) for it, the details about assembly, technology, materiality and dimensions were defined in parallel to the breadboard prototyping process, once I had a more accurate vision about the component sizes and the volume the circuits can occupy.

The first test was made with cardboard. In the first iteration I could prove the location of holes for the screws in the inner faces and the sizes of icons of the front panel. The thickness of the material was also validated in the first iterations, due the amount of T joints necessary to assembly the box faces and the inner faces for the compartments.

After two tests with cardboard, the location and distance between joints, screw spaces, icons, Arduino board and strip board area were validated. Then, a first printing in acrylic revealed more imperfections in the design, forcing me to redefine the cutting planes again, including holes for cables and sensors outside the circuit panel, increasing the circuit space, screw width and reducing the box height (initially designed to be 18x18x18 cm).

 Cutter planes of both versions of the box. The size was optimized after ther first iteration in cardboard and acrylic

Cutter planes of both versions of the box. The size was optimized after ther first iteration in cardboard and acrylic

Phase 3: Assembly & installation

Finally, once the different paces of the box were printed in its final design and the welded circuits were tested and mounted in the box, the final assembly was ready to start.  

 >> Re-print of faces adding transparent acrylic to improve visualization.

>> Re-print of faces adding transparent acrylic to improve visualization.

After presentation, the plant pot was installed in Valentina's window, next to her desk. A mint was planted in the pot.