Introduction: The Plant Whisperer
But no more! In an effort to solve this problem, and have a bit of fun at the same time, I created the Plant Whisperer. This little device measures the soil moisture every two hours, and reports its status to anyone who might be within earshot - that's right, it talks! The message content depends on the soil condition. For example, if the soil is too dry, the plant might say, "I'M THIRSTY! WATER ME!" If the moisture is okay, it might say "I'M A HAPPY PLANT!" - or maybe something funny like "I SUGGEST YOU BECOME A CARNIVORE." It is also capable of detecting the ambient light level and commenting on that, as well.
Did I mention the cool retro robot voice? Yeah, who wouldn't want that on their houseplant?
The Plant Whisperer is based around a Parallax Propeller, which makes real-time text-to-speech easy to implement. Other major components include a two-channel ADC, a two-hour timer IC, a load switch and an audio amplifier. In total it costs about $30 to build.
Step 1: The Design & Schematics
Included below are the schematics and PCB artwork, so that you may build the PCB required for this project. It is a double sided board (no getting around that, I'm afraid!) I made my board using the photo-etch method, which is the only home method capable of getting good results for surface mount parts.
How it Works:
At the heart of the Plant Whisperer is a Parallax Propeller. It's one of the only microcontrollers out there that is powerful enough to handle real-time text-to-speech. Upon start up, the Propeller initializes the external ADC (since it has no ADC of its own) and the audio amplifier. After a brief period of time, the ADC is polled for soil and light level information. Depending on the results, a random phrase is selected from a list and spoken to anyone who might hear it. However, it will not speak if it's dark - this plant might be needy, but it won't wake you up when you're sleeping! When the Propeller has spoken its message, it sends a signal to the timer to restart its timing cycle.
In order to conserve as much power as possible, an LTC6991 "Timerblox" low-frequency oscillator is used to turn the entire circuit on and off. It is set for a period of about two hours, though it is capable of timing up to 9 hour intervals! So, every two hours the timer output goes high, which turns on a load switch. This activates the rest of the circuit. When just the timer is running, the Plant Whisperer draws only 75uA (yes - microamps!) The timer allows the rest of the circuit to stay on for up to an hour, though it's usually on for only a few seconds.
The moisture probe is pretty straight forward. A voltage is pushed through the soil, resulting in a small current. That current is amplified and converted to a voltage by a transistor. The voltage produced will be somewhere between 0V and 3V, depending on the soil conductivity. That voltage is measured by a Microchip MCP3202 ADC, which then relays the value to the Propeller.
A small 0.25W amplifier is included to drive the speaker. It is activated by the Propeller when needed.
A single LED is used for status; it turns on at the command of the Propeller.
There is a single switch, which is used to manually turn on the Plant Whisperer. When you press the button, it overrides the timer's internal timer, and allows the rest of the circuit to power up and do its thing.
Two AAA batteries are used for power. With a capacity of 1250mAh, the Plant Whisperer should have enough juice to run for months.
My original design was square and BORING. I hope you like the paisley-type swoosh I came up with. The Plant Whisperer is designed to mount directly onto the front of a small planter, with the moisture probes mounted permanently into the side of the planter. If you'd rather not do it this way, two small connection points are provided to connect a set of test probes with wire.
Step 2: Parts List and Tools
Check the parts list!
From a hardware store (in my case, Canadian Tire):
- 2 x 3" long 3/16" stainless steel or brass screws
- eight matching 10-24 SS or brass nuts
- four matching rubber washers
- a very small amount of double-sided tape
- two AAA batteries
From any store that sells them:
- A small planter with at least one flat side (I got mine from the same place I bought the screws)
- A plant, and dirt to plant it in.
- A fine tip soldering iron
- Solder flux
- Isopropyl alcohol (for cleaning)
- Other soldering aids, as necessary
- a band saw, scroll saw or other means to cut a curved circuit board
- a drill press with #71 and #65 drill bits
Step 3: Make the PCB
There are various techniques out there to make your own PCB. However, due to the fine pitch of the surface mount components, the only method I'd recommend using here is the photo etch method. The alternative is to send the design away and have someone else (like BatchPCB) make it for you.
I cut the rough shape of the board using a band saw, then finished the edges on my scroll saw with a metal cutting blade. You could also smooth the edges with a belt sander, but if you do, be sure to use breathing protection! The fine dust is (likely) bad for you.
Once your board is made, check it very carefully for open and shorted traces. Pay extra attention to the pads on the surface mount ICs - tiny bits of copper can remain here and short pins together. I speak from experience.
Step 4: Populate the PCB
Once the board is checked, you may populate the board.
There are a few vias on the board. If you had your board manufactured, there's nothing to do here. But if you made your own, now is the time to place a short piece of wire in each via and solder both ends. I usually just use the lead clippings from through-hole parts for this.
Solder the 0805 resistors and capacitors next. Neither of these have a polarity (in this design, anyway), so you can install them in either direction.
Next up are the timer IC, ADC, and audio amplifier. These are harder; take your time if you're a little rusty. Use lots of flux, tack down two pins on each, then solder the remaining pins. Obviously, a fine-tip soldering iron is highly recommended!
Hardest of all is the Propeller microcontroller. As with the smaller SMD devices, tack the coners with solder then go around and solder each pin. You may solder them individually or using the "drag solder" method, whichever works for you. Carefully inspect for solder shorts when you're done.
The transistor, light sensor, switch, potentiometer, crystal and LED are next. None of these are too hard. The through-hole components will need to be raised up a bit to solder on the component side.
Now just come the headers, battery holders and speaker. Install the speaker last, since it covers one of the battery holder pins. These are a walk in the park compared to the SMD devices.
After soldering everything to the board, clean it thoroughly with 99% isopropyl alcohol. With a multimeter, test the resistance between the battery terminals to make sure they are not shorted.
Step 5: Program the Propeller
I wrote the program for the Plant Whisperer using an awesome IDE called 12blocks. 12blocks makes programming so easy, an elementary school student could do it. And, in fact, they do.
If it isn't already installed, download and install the latest version of 12blocks. You can get it here. Next, download the zip file containing the Plant Whisperer code. Copy the "Plant Whisperer" folder into C:/Program Files/12blocks/hardware. This folder contains additional code required for the program to compile.
Install batteries into the battery holders. Nothing should happen yet. Attach the "Prop Plug" programming interface to your computer with a USB cable, and plug it into the programming port on the Plant Whisperer. Now, plug in the programming jumper - it forces the circuit to stay on all the time, rather than waiting for an "on" signal from the timer IC.
Launch 12blocks. To ensure that 12blocks is communicating with the Plant Whisperer, select "Plant Whisperer" from the drop-down menu in the top left. Then, simply upload a blank project. The Plant Whisperer won't do anything, but 12blocks should not report any communication errors either.
Load the Plant Whisperer.12b file into 12blocks, and upload it. It should only take a few seconds. Once this is done, the Plant Whisperer should come to life! If it seems to be running fine, load the program permanently into EEPROM memory by selecting "Load Permanently."
Step 6: Installation
Well, now you've got a Plant Whisperer board happily running (and likely reporting that your plant is quite dead indeed). You need to stick it in a pot of soil!
There are a few ways of doing this. You can see there are two rather large holes on the board. These are designed for 5mm diameter screws. The screws pass through holes drilled in a pot, holding the Plant Whisperer board in place. This is sort of an "all-in-one" solution, great for gifting with a pre-planted plant.
There is also a two-pin header for "remote sensing." To these two pins, you may solder wires for the moisture probes. A remote probe could be a stainless steel screw or rod, or something fancier like a ceramic probe. Depending on your installation (large plants, or plants high on a shelf or in a hanging basket) this may be more desirable.
For built-in installation, you'll basically be permanently attaching the Plant Whisperer to a pot or planter, creating a dedicated sensor. The installation can be done on virtually any pot, as long as it's non-conductive (obviously, a metal planter would short out the probes!) It's preferred to use a pot with at least one flat side onto which you may install the board, but there are ways around that...
To start, decide where on the pot you want the Plant Whisperer to be. The Middle is a good choice. Mark out the distance between the holes on the pot (you may use a 1:1 scale copy of the PCB printed on paper as a template to make it easy). Now, with an appropriate drill bit, drill out those two holes. For a plastic planter any old split-point drill bit will work fine. For ceramic and glass use a special ceramics drill bit (and lots of lubrication, water or WD-40 will work)
Thread the screws through the holes on the PCB, so the head of the screw is on the component side of the board. Lock the screw in place with a nut on the other side. Then, slide a rubber washer onto each screw. Insert the screws into the holes drilled into the pot, then slide on another two rubber washers. Complete the installation by securing the screws with nuts.
Then, just fill the pot with dirt and a plant!
For remote installation, you'll need to construct two probes. Determine how long the wires will need to be, and strip a small amount of insulation from both ends. On each wire, crimp an eyelet connector. The other end of the wire may be soldered directly to the board. Twist the wires together so they look good. Then, thread the eyelet connectors onto the screws and secure them with a nut. Drive the screws into soil about 1-2 inches apart.
Step 7: Calibration and Use
In order for the Plant Whisperer to accurately measure the soil moisture, it must be calibrated. This is done by adjusting the small potentiometer at the bottom.
First make sure the batteries and "programming" jumper are installed. Water the soil until it's just the right moisture level for your plant.
Upload the "PLCalibration.12b" file to the Plant Whisperer. This is a special program that is only used for calibration, so don't bother loading it permanently.
In 12blocks, watch the Moisture variable reported by the ADC. Turn the potentiometer until the Moisture value is at the midpoint, about 2048 (give or take). This will be a good starting point, but you may need to adjust it a bit if you find the Plant Whisperer is routinely reporting incorrect moisture levels. You may even need to change the thresholds in the main program if your plant likes drier or wetter soil.
Once programming and calibration are complete, remove the Prop Plug and programming jumper.
As for use, well, there's not much to say. The Plant Whisperer is always "on," and will give feedback about every two hours. Though it will turn on and take a measurement when it's dark, it will not speak. This is done in case the Plant Whisperer is being used in a bedroom. I'm sure you'd prefer not to be woken up by a whining plant every two hours!
You can manually take a measurement by pressing the button for two or three seconds. This will cause the timer output to go high, activating the rest of the circuit. It will automatically resume its normal operation once the button is released.
Step 8: Modifications and Other Uses
One modification you may want to do right off the bat is to change the phrases spoken by the Plant Whisperer. This is simple to do in 12blocks. Just replace any one of the phrases with your own! Be warned though; the text-to-speech program is in extreme alpha stages, so it's a little rough and hard to understand. You can clean up the spoken phrases by spelling words phonetically or by adding emphasis or breaks to certain words and sounds.
You can also change other parameters. For instance, you may set it to speak even when it's dark by changing the "SpeakWhenDark" variable to 1. You could also change the tone of the voice by changing the "pitch" to a value other than 100.
The time interval is hard-wired, but can be changed from the default 2 hours by changing the resistors. An interval of up to 9 hours is possible! Check the datasheet for information on resistor values.
The Plant Whisperer could be used for completely different purposes as well. The two-channel ADC could be used to take any number of different analog measurements, by leaving the moisture probe and photocell circuitry unpopulated, and wiring up different sensors.