(Long) weekend project to monitor and water my plant with a Raspberry Pi. The app was developed for Raspbian Wheezy with an arduino two-prong soil moisture sensor via a MCP3002 analog-to-digital converter, and an arduino relay board to control a 110 VAC water pump.
It makes a couple of assumptions:
Now includes a Kicad PCB design for interfacing with a MCP3002 10-bit SPI Analog-to-Digital Converter. The Pi talks to the ADC via its SPI interface. Includes all the manufacturing files required to fab the board (which I had OSH Park make for me for $7.85 shipped, which required about $15 in components from Digi-key.)
Includes three 2N3904 transistors to allow the Pi to control the power provided to the MCP3002 & the two analog sensors:
(Leaving these two-prong type of sensors powered on 24/7 can lead to galvanic corrosion, so it's probably better to turn them on when needed.)
- Provides two analog measurement channels. Also supplies VCC & GND (in case the moisture sensor requires it) for each.
- Assumes there is a power pin to activate the pump. My Pi's 3.3V GPIO was able to activate/deactivate my relay board directly, but if you're having issues you could always use a NPN-transistor network as shown above.
pi_plant was developed on Ruby v2.1 and Rails v4.0. Several gems were utilized to make development easier:
gem 'bootstrap-sass', github: 'thomas-mcdonald/bootstrap-sass' gem 'figaro' gem 'draper' gem 'lazy_high_charts'
Clone the repository.
/config/application.ymlfile with environmental variables holding all your secret keys (see figaro's documentation for more details) and add it to your
RAILS_SECRET_KEY_BASE: '<rails secret key>'
samplerake task to take periodic soil measurements.
crontab -e 00 00, 12, * * * * rvmsudo rake RAILS_ENV=production sample
Note: the Pi requires root access to interact with hardware
Start the webserver
Create a plant with the GPIO pins used in your circuit.
Bill of Materials
|Find No.||Qty||Part Number||Description||Approx. Extended Cost|
|1||1||756-8308||Raspberry Pi v2||$40|
|2||1||SDC10/8GBET||Kingston 8GB microSD Card||$8|
|3||1||EW-7811Un||Edimax 802.11n USB Adapter||$10|
|4||1||B00E0NTPP4||SunFounder 2 Channel 5V Relay Shield for Arduino||$7|
|5||1||B00AYCNEKW||sunkee Soil Moisture Sensor||$3|
|6||1||B001BOD9JI||TOM 3.5gph Aquarium Pump||$16|
|7||1||kTJJCOss||OSH Park Custom PCB||$8|
|8||1||MCP3002-I/P||MCP3002 2-Channel 10-bit ADC||$2|
|9||3||2N3904BU||40V NPN Transistor||$1|
|10||3||CF14JT1K00||1kOhm 1/4W Carbon Through Hole Resistor||$1|
|11||2||0022288363||Molex 36pos Right-Angle Pin Header||$4|
- Custom PCB for interfacing with the MCP3002 (experimenting with Kicad)
- Raspberry Pi
- Ruby on Rails
- Home Automation
pi_plant is the product of Ryan Ringler. It was developed as a (long) weekend project to experiment with the Raspberry Pi, Rails, and Kicad.
pi_plant is licensed under the MIT License. Please see the LICENSE file for additional details.