Search Results

How good are the latest gardening tools? Let’s talk

Gardening-Tools

For true garden lovers, taking care of their yard is more than just an everyday task. Hard-working garden owners take pride in their yards, and with the necessary tools in their garage, they find it easier to make their yard look fantastic. Here is a list of the latest gardening tools that help to keep your yard in tiptop shape.

hulahoe

Hula Hoe

Hoes help you to make rows, dig furrows, loosen the soil and kill weeds. This tool is also known as stirrup hoe that makes weeding an easy job. The stirrup hoe is a long-handled tool that makes you work easily without too much bending. Its blade oscillates to and fro like the hips of a hula dancer. This oscillating blade also helps to slice weed roots below the soil surface. Since the blade swivels to and fro it cuts on both pull and push stroke, making it easy to handle in closed spaces between plants and along the edge of flower beds. When the blade starts losing its sharpness you have to replace it with a new one.

shovel

Shovels

A good long-handled shovel is used for mixing large quantities of dirt, compost, soil and other related materials. The long handles of the shovel minimize strain on your back and shoulders. The handle is slightly tilted so that your hand remains in a natural position thereby reducing the pressure on hand and wrist. You can also use the shovel for planting trees and shrubs.

gardenGroom

Electric Garden Groom

You no longer need to waste time cleaning up hedge trimmings than trimming them. Garden groom is a wonderful invention that is ergonomically designed to trim your hedge. The groom uses its big rotary blade for trimming and collects all the cuttings in its built-in-cavity bag to keep your yard free from debris. Thus the tool makes disposal easy without requiring you to sweep up afterwards which is the most labor intensive part.

Gas powered three-in-one Push Lawn Mower

Ideal for smaller garden, the compact design is easy to handle in closed spaces and features three-in-one cutting system that includes side discharge option, mulching and a rear bag collection. Simply fold the handle and keep it aside when not in use. Its mulching option returns the essential nutrients back into the soil resulting in a healthier and greener lawn. You can adjust the height of the handle for more comfortable pushing. Overall the Lawn mower is designed to be an user-friendly tool.

electric_chipper_shredder

Electric chipper or shredder

This machine powered with electricity makes quick work out of leaves, pruned branches and plant debris. Converts your garden’s rubbish into beautiful munch or compost material thus saving your job of reduce, reuse and recycle. Its lightweight design makes you comfortable in moving it around the yard. The machine is also provided with a safety hopper lock that stops the motor from operating when opened. So there are no more smoky fumes in your garden.

hand_Trowel

Hand Trowel

Trowels are ideal for digging holes in garden beds; planting small annuals, herbs and vegetables; planting container gardens and mixing soil with compost, fertilizer and other potting mixes. Look for the latest one piece design where the handle will always stay firmly with the head as you take it deep into tough soil. The latest versions have an easy-to-grasp handle. Overall it offers a hassle free performance.

Hand Pruners

Hand pruners are of two types: the anvil type with a deep sap groove and the bypass type which functions like scissors. Anvil pruners do not require much of hand pressure and is easy to cut. Bypass pruners functions well in tighter spaces. Both the models can be used to cut branches up to 1 inch in diameter. The sap groove prevents the blade from sticking when used to cut sappy wood. Hand pruners reduce pressure and impact on wrists. If you take proper care then these pruners will last longer.

Bulb Planters

This tool can be used to make a perfect hole for planting bulbs and other bedding plants. Its long handle saves your back and makes planting easy. For easy operation, simply moisten the soil before planting. Take the planter to the position where the bulb has to be placed and twist the tool to dig hole to the desired depth, then take out the tool from the hole. Now all you need to do is simply drop in seeds or bulbs without straining your back.

garden cart

Wheel barrow/ Garden cart

These carts are not only used to transport heavy and bulky materials such as soil, garden debris, plants and compost but also to carry concrete mixing containers. Its light weight makes lifting and managing extremely easy. The latest carts have cushioned loop handle for comfort and powder coated steel frame for extra durability.

poly leaf scoop

Poly Leaf Scoops

Poly leaf scoops can be used to pick up leaves, thorny or poisonous plant trimmings, pine needles, weeds and gum balls without harming your hands. It is also used for bedding mulch and peat moss. Poly leaf scoops are ideal for all seasons.

electric cultivator

Electric Garden Cultivator/Tiller

Cultivators are generally used to open up and aerate the soil. The tines of this tool help in mixing of materials and loosening weed roots. If you have smaller rocks on your garden soil, no worry, the tiller kicks them out of the soil and to the top where they can be easily removed. Because of its light weight it digs very well without requiring much of man handling or intense arm and back workouts. The only thing you have to do is remove the tines after each use and clean them, which is quite an easy job.

Visit your favorite store and grab these latest tools to make gardening even more enjoyable.

About The Author: Alia is a writer blogger. She loves writing, travelling and reading books. She contributes to Joshia Pastore

How to start a winter vegetable garden

WP_000579

Why let your gardening season end, with a little creativity there are many vegetables that can continue growing right through winter.  I find this fun as wells of a rewarding challenge bringing in some great produce from my garden all year round.

Choosing your winter vegetables

First we need to determine what vegetables to grow, given temperature and lack of light will be a reality we will have to go with the colder tolerate spring/fall options.  below are some of my favorites and their typical hardy temperatures.

Arugula: Hardy up to 15F (-9C).  Not only is this the most profitable vegetable to grow per square foot it is a tasty and nutritious addition to your garden salads a very good source of vitamin A/C/K, folate, calcium, iron, magnesium, phosphorus, potassium and manganese.

Beets: Hardy up to 20F (-7C).  With beets you have a couple of options, eat the roots which are an excellent source of folate, potassium and manganese.  The other option is to eats the beet greens which are an excellent source of vitamin A/C/E/K/B6, thiamin, riboflavin, calcium, iron, magnesium, potassium, copper and manganese

Bok choy: Hardy up to 24F (-4C).  Bok choy is a great source of vitamin A/C/K/B6, riboflavin, folate, calcium, iron, magnesium, potassium and manganese.

Broccoli: Hardy up to 10F (-12C).  So many options here and great eat fresh and if you get too much at once it is easy to freeze your excess crops while being a great source of Vitamin A/C/K/B6, folate, potassium and manganese.

Brussels Sprouts: Hardy up to 0F (-16C).  If the thought of Brussels sprouts sicken you, don’t give up on these until you try some fresh from your garden.  As an added bonus this is a great source of vitamin A/C/K/B6, thiamin, folate, potassium and manganese.

Cabbage (Winter): Hardy up to 5F (-14C).  Use for raw for coleslaws or cooked in stews or soups to add some vitamin C, folate, potassium and manganese to your next meal.

Carrots: Hardy up to 15F (-9C).  Great in salads, stir-fry, or raw as a quick snack and is also a great source of Vitamin A/C/K and potassium

Collards: Hardy up to 24F (-4C).  Great sautéed with a little oil with salt and pepper and a great source of vitamin A/C/E/K/B6, riboflavin, folate, calcium and manganese.

Endive: Hardy up to 5F (-15C).  Great addition to salads as well as making or a great addition to sounds.  Endive is high in vitamin A/C/K, thiamin, riboflavin, folate, pantothenic acid, calcium, iron, potassium, zinc, copper and manganese.

Kale: Hardy up to 8F (-13C).  Sauté as a great side or even bake to make some delicious Kale chips and is high in vitamin A/C/K/B6, calcium, potassium, copper and manganese.

Kohlrabi: Hardy up to 15F (-9C).   The taste and texture of kohlrabi are similar to those of a broccoli stem or cabbage heart, but milder and sweeter, with a higher ratio of flesh to skin. The young stem in particular can be as crisp and juicy as an apple, although much less sweet1.   Kohlrabi is a great source of vitamin C/B6, potassium, copper and manganese

Garlic: Hardy up to 8F (-13C).  One of the most useful aromatics to use in your kitchen and high in vitamin C/B6 and Manganese.

Leeks: Hardy up to 8F (-13C).  Great additions/bases for many soups and stocks.  Has flavor of onion though not quite as overpowering.  It is also a great source of vitamin A/C/K, folate and manganese.

Lettuce: Hardy up to 24F (-4C).  Staple for a quick winter salad.  Choose varieties with darker leaves for more nutritious goodness of vitamin A/C/K, thiamin, folate, iron, potassium and manganese.

Onions (Bulb): Hardy up to 0F (-18C).  Plant these out this fall/winter for some nice large bulbs next spring summer.  These provide a great deal of versatility and vitamin B6, folate, potassium and manganese, and a very good source of Vitamin C.

Onions (Bunching): Hardy up to 10F (-12C).  Plant a bunch of these and your garden and they will continue to spread and provide additional produce to your kitchen.  With just a little bit of protection you can have onions all winter.

Peas: Hardy up to 35F (2C).  Can be shelled and cooked and eaten as is or added to some nice soups in the wintertime or kept in the shells and eat raw or a great addition to a nice stir-fry.  Peas also provide vitamin A/C/K, thiamin, folate, iron and manganese.

Spinach: Hardy up to 8F (-13C).  Just recently got turned back to eating spinach, previously just used in an occasional salad but now I add to omelets every morning for some great taste but are also packed with nutritional potency being a very good source of protein, vitamin A/C/E/K/B6, thiamin, riboflavin, folate, calcium, iron, magnesium, phosphorus, potassium, copper and manganese.

Swiss Chard: Hardy up to 20F (-7C).   Vitamin A, Vitamin C, Vitamin E (Alpha Tocopherol), Vitamin K, Riboflavin, Vitamin B6, Calcium, Iron, Magnesium, Phosphorus, Potassium, Copper and Manganese.

When can you actually grow these vegetables

Now that found the vegetables you want to grow now is a good time to check those hardy temperatures of the vegetables you have chosen compared to your average winter temperatures.  If your average low for the day is going to fall at or below that limit you may want to consider skipping that one or invest in a little protection.

image

Using a site like WeatherSpark, you can determine what your average low is for your area and then determine what vegetables you can grow during the winter.  As you can see above on average in my area the average low is 36F which allows me to grow most of the cold season vegetables mentioned above.  Though it is possible to get an occasional cold streak which cold mean death to my vegetables over the winter.

By using some row covers you can provide a little extra temperature (5-10F) depending on the thickness of the plastic and the volume of air you are attempting to keep warm.  The thicker the plastic the better the temperature retention though allows less light to get through.  For my area I am going with 2.5mm which should provide some decent protection while still allowing needed light in.  When things really go bad you can also supplement with a light blanket at night and/or a couple strings of regular old Christmas lights (no LEDs for this application) to provide a few more degrees.

How to start your vegetables

Though your plants may grow well in the low temperatures germination can be incredibly slow at lower temperatures even for cold weather plants.  For this reason you should start your vegetables indoors and bring them outdoors with some minimal hardening off.

As a general rule here are the plants you should be able to start as seeds in the ground now (September):

  • Carrots
  • Garlic
  • Lettuce
  • Onions (sets for green onions, seeds for spring onions)
  • Radishes
  • Spinach

Other plants should be started indoors and planted out as starts.  These can be brought out right now so check you local grocery store…this time of year I have found 4-packs of winter vegetable starts as low as $0.25 as the stores are making room for the Halloween pumpkins coming in.  Since you will want a continuous harvest you can also start seeds now and every few weeks for a constant supply of winter vegetables all winter long.

Summing things up

By taking maturing and harvest time into account and creating continual planting you should supply yourself with delicious and nutritious selection of vegetables all winter long.  I was going to go into what I am growing this year…but this post is already getting long so will write about that later…

How to make a grow box controller (Original)

IMG_3777
While my existing system was working I decided to make an upgrade to the electronics on my old system for several reasons:

  • I needed to add more automated external controls (heater, fans, water pump) with my existing design this was entirely possible though was starting to get a little clunky.
  • The existing controller (PS2 Controller, parallel port with various wires to control relays) worked but was not exactly compact.
  • Wanted a modular design so if I needed to debug some issue I could simply unplug the USB and power and bring it out of the box in the garage for needed work
  • Ability for others to create so I can share my software without forcing people to hack PS2 controllers to get to work
  • Ability to use components like 1Wire temperature sensors (others to come) and Arduino
  • Just for the fun of it

Well now I have attempted to justify my reasons this is what I used to put the whole thing together:

Parts List

If we had lawyers, they probably would want us to say this:
WARNING: I am not an electrician and do not pretend to be one.  I do not know the specific building electrical codes of your area, so please be sure your wiring is completed under the proper safety code for your area. As always, using high voltage electricity can result in self-electrocution or burn down your house if not done safely so if you are not comfortable doing this wiring please contact a qualified professional.

Putting it all together

On the electronics side overall the circuits are actually pretty simple and if using a breadboard definitely something that could be tackled by a beginner.  Though on the other side since this project is dealing with AC current I definitely would recommend caution (no hands unless power is unplugged) or have someone a little more comfortable with 120/220V help you out.

The Brains


I will be the first to admit that using an Arduino for this application is complete overkill for this application but it gives plenty of room for additions in the future.  For all intensive purposes you could have your grow box completely controlled from the Arduino own processing power though on my case the software and UI is more interesting part to me.  For this reason the Arduino code is actually very “dumb” basically just taking commands via the build in serial through USB and setting digital outputs to HIGH/LOW or reading analog inputs.
Here is the code for your grow box controller:

   1: /*

 

   2:  * GrowBox Arduino Interface

 

   3:  *

 

   4:  * Descriptions: Simple interface to digital and analog controls by passing serial inputs

 

   5:  *               For example: 

 

   6:  *                  "A1" to read analog value on pin 1

 

   7:  *                  "D1H" to set digital pin 1 to HIGH

 

   8:  */

 

   9: #include <OneWire.h>

 

  10:

 

  11: //1-wire

 

  12: OneWire  ds(8);  // on pin 8

 

  13: #define BADTEMP -1000

 

  14:

 

  15: //define unique sensor serial code

 

  16: byte temperature[8];

 

  17:

 

  19: #define PIN_VALUE 1          // numeric pin value (0 through 9) for digital output or analog input

 

  18: #define ACTION_TYPE 0        // 'D' for digtal write, 'A' for analog read

 

  20: #define DIGITAL_SET_VALUE 2  // Value to write (only used for digital, ignored for analog)

 

  21:

 

  22: int NUM_OF_ANALOG_READS = 2;

 

  23: char commandString[20];

 

  24:

 

  25: void setup()

 

  26: {

 

  27:   Serial.begin(9600);

 

  28:

 

  29:   setOneWireHex();

 

  30:

 

  31:   // Power control

 

  32:   for(int i=0; i<=7; i++)

 

  33:   {

 

  34:     pinMode(i, OUTPUT);        // sets the digital pins as output

 

  35:     digitalWrite(i, LOW);      // turn everything off

 

  36:   }

 

  37: }

 

  38:

 

  39: void loop()

 

  40: {

 

  41:   readStringFromSerial();

 

  42:

 

  43:   if (commandString[ACTION_TYPE] != 0)   {

 

  44:     int pinValue = commandString[PIN_VALUE] - '0';  // Convert char to int

 

  45:

 

  46:     if(commandString[ACTION_TYPE] == 'A')

 

  47:       Serial.println(analogRead(pinValue));

 

  48:     else if(commandString[ACTION_TYPE] == 'D') {

 

  49:       if(commandString[DIGITAL_SET_VALUE] == 'H')

 

  50:         digitalWrite(pinValue, HIGH);

 

  51:       else if(commandString[DIGITAL_SET_VALUE] == 'L')

 

  52:         digitalWrite(pinValue, LOW);

 

  53:

 

  54:       Serial.println("OK");

 

  55:     }

 

  56:     else if(commandString[ACTION_TYPE] == 'T') {

 

  57:       float temp = get_temp(temperature);

 

  58:

 

  59:       Serial.print(temp);

 

  60:       Serial.println("C");

 

  61:     }

 

  62:     else if(commandString[ACTION_TYPE] == '1') {

 

  63:       printOneWireHex();

 

  64:     }

 

  65:     else if(commandString[ACTION_TYPE] == 'V')   {

 

  66:       Serial.println("VERSION_1_0_0_0");

 

  67:     }

 

  68:     else if(commandString[ACTION_TYPE] == 'P') {

 

  69:       Serial.println("PONG");

 

  70:     }

 

  71:

 

  72:     // Clean Array

 

  73:     for (int i=0; i <= 20; i++)

 

  74:       commandString[i]=0;

 

  75:   }

 

  76:

 

  77:   delay(100);  // wait a little time

 

  78: }

 

  79:

 

  80:

 

  81: void readStringFromSerial() {

 

  82:   int i = 0;

 

  83:   if(Serial.available()) {

 

  84:     while (Serial.available()) {

 

  85:       commandString[i] = Serial.read();

 

  86:       i++;

 

  87:     }

 

  88:   }

 

  89: }

 

  90:

 

  91: void setOneWireHex() {

 

  92:     ds.reset_search();

 

  93:     ds.search(temperature);

 

  94: }

 

  95:

 

  96: void printOneWireHex() {

 

  97:   ds.reset_search();

 

  98:   if ( !ds.search(temperature)) {

 

  99:     Serial.print("NONE\n");

 

 100:   }

 

 101:   else {

 

 102:     ds.reset_search();

 

 103:

 

 104:     int sensor = 0;

 

 105:     while(ds.search(temperature))

 

 106:     {

 

 107:       Serial.print("S");

 

 108:       Serial.print(sensor);

 

 109:       Serial.print("=");

 

 110:       for(int i = 0; i < 8; i++) {

 

 111:         Serial.print(temperature[i], HEX);

 

 112:         Serial.print(".");

 

 113:       }

 

 114:       Serial.println();

 

 115:     }

 

 116:   }

 

 117:

 

 118:   ds.reset_search();

 

 119: }

 

 120:

 

 121: float get_temp(byte* addr)

 

 122: {

 

 123:   byte present = 0;

 

 124:   byte i;

 

 125:   byte data[12];

 

 126:

 

 127:   ds.reset();

 

 128:   ds.select(addr);

 

 129:   ds.write(0x44,1);         // start conversion, with parasite power on at the end

 

 130:

 

 131:   delay(1000);     // maybe 750ms is enough, maybe not

 

 132:   // we might do a ds.depower() here, but the reset will take care of it.

 

 133:

 

 134:   present = ds.reset();

 

 135:   ds.select(addr);

 

 136:   ds.write(0xBE);         // Read Scratchpad

 

 137:

 

 138:   for ( i = 0; i < 9; i++) { // we need 9 bytes

 

 139:     data[i] = ds.read();

 

 140:   }

 

 141:

 

 142:   int temp;

 

 143:   float ftemp;

 

 144:   temp = data[0];      // load all 8 bits of the LSB

 

 145:

 

 146:   if (data[1] > 0x80){  // sign bit set, temp is negative

 

 147:     temp = !temp + 1; //two's complement adjustment

 

 148:     temp = temp * -1; //flip value negative.

 

 149:   }

 

 150:

 

 151:   //get hi-rez data

 

 152:   int cpc;

 

 153:   int cr = data[6];

 

 154:   cpc = data[7];

 

 155:

 

 156:   if (cpc == 0)

 

 157:     return BADTEMP;

 

 158:

 

 159:   temp = temp >> 1;  // Truncate by dropping bit zero for hi-rez forumua

 

 160:   ftemp = temp - (float)0.25 + (cpc - cr)/(float)cpc;

 

 161:   //end hi-rez data

 

 162: //  ftemp = ((ftemp * 9) / 5.0) + 32; //C -> F

 

 163:

 

 164:   return ftemp;

 

 165: }

Copy and paste the above code into your Arduino software.   For the code above I used the OneHire.h library which is free to use and can be downloaded from here. To be able to use this library simply copy the contents to C:\arduino\hardware\libraries\OneWire. Now you should be able to Compile (CTRL+R) and upload the code to the board (CTRL+U)

Now with the software uploaded you can send some simple serial commands via its built in USB to serial adapter to interact with it.  The interface is are broken up into 1 to 4 character commands, which I will detail below

Command Description
T Returns temperature from One Wire component
D4H Sets digital pin 4 to HIGH (ON) (replace 4 for alternate pin)
D4L Sets digital pin 4 to LOW (OFF) (replace 4 for alternate pin)
A1 Reads analog value from pin 1 (replace 1 for alternate pin)
PING Returns PONG which is used to confirmed controller is online
V Returns version which is some forethought into the PC application being able to support different versions of controller software

Using the build in serial monitor tool in Arduino.exe, my application, or you should be able to control your Arduino with this very simple command based interface

Now you can hook up some LEDs and watch them blink which is fun for a little while but if you want to add some grow box components read on….

Temperature Sensor

As you can see I have fully embraced the circuit schema on the back of a napkin idea.  These are the actual diagrams I crumpled up and stuffed in my pocket with several trips to the garage for some final soldering of various joints until everything was solid.

Below is the simple circuit required to get your 1Wire temperature sensor working.  I would recommend checking your documentation (if not labels on the chip) for the orientation to have 1 and 3 correct, if you have it wrong you should get some complete unrealistic number.  Hook ground up to pin1 on the DS18S20 and pin 2 hooked up to the digital input pin 8 on the Arduino with 5V with a 4.7K resister in between to step down the voltage.

If everything is hooked up correctly you should get the current room temperature in Celsius by sending command “T” to your Arduino.  If you prefer Fahrenheit uncomment line 162 and recompile and upload your changes, though if using my software I support both degree types and do the conversion in the the software.  To make sure everything working (or just to play with your new toy) put your fingers on the chip for a couple seconds and take another measurement unless you keep your house very warm the temperature should go up a couple of degrees

1WireSensorDiagram

Turning things on and off (Relays)

If you were smart enough to check the current requirements of your Solid State Relays (SSR) before you bought them you may be able to skip this whole circuit and simply hook the digital outputs to the 5V positive side and ground to the negative side of the SSR.

Unfortunately if you are like me and bought some SSRs that require more current draw than the Arduino (or any other IC chip) of 40mA then you will need to create the simple circuit below.

image

Basic idea is pretty simple, you are using the output from the digital pins to switch of the transistor which then allows the ground to complete the circuit with the thus turning on the relay.  As you can see there is a 1K resistor between the base (middle pin) of the transistor.  If you are not using a SSR relay (though recommend you do) you should add a 1N4004 diode between the positive/negative which protects the transistor from being damaged in case of a high voltage spike which can occur for a fraction of a second when the transistor switched off, this is also known as a back-EMF diode or fly back diode.

Now here you have a couple options.  If you are confident of our wiring skills you can do like I did and take a couple of sockets and hook up the neutral and ground in parallel.  Two save space and since I really didn’t need two separate plug-ins (nor its own plug) for each relay I removed the little metal bar between the two sockets so they could be switched on independently.  Now simply hook up hot to the left side of all your relays in parallel and then connect a wire from the right side of the relay to its own plug on the two sockets.

Now a less wiring intensive method is to simply take a 6 foot (small if you can find them) and cut the hot wire (usually the one with non-smooth wire) and attach each end of the wire to both sides of the relay.

Moisture Sensor

When it comes to a moisture sensor there are a few options.  First is the classic two galvanized nails, second is the cheap gypsum soil moisture sensor which I have written up in the provided link.  Lastly if my personal favorite the Vegetronix soil sensor.

If you use the Vegetronix hookup is simple no circuit needed simply hook up the 5V to red, bare wire to ground, and black to analog pin 1.

If you are using the other options you will need the simple circuit below.  Technically it is a voltage divider, but that doesn’t really matter.  Just hook up one end of your sensor to 5V and other sensor to ground with 10K resistor and also connected to analog pin 0.

SoilSensorDiagram

Cheap soldered solution

IMG_3778

If I could do it over I probably should have just bought a small breadboard.  I did most of my prototyping with my larger breadboard but got cheap when I was at Radio Shack The Shack and just got this prototype board for half the price.

Virtual breadboard layout

VirtualBreadboard

If you are new to soldering or have no interest in learning I would definitely recommend this option.  Simply place the components in the holes and make connections with 18 gauge solid copper wire.  You should be able to pick a small breadboard for less than $7.

Various applications

Of course for my application, I am using this to integrate with my custom software solution to control my grow box (will be having private/public beta soon).  Specifically soil sensor, temperature measurement, heater, lights, exhaust fan, and water pump.

Controller

Though there is definitely no reason you can use this same setup for other application.

A couple of ideas:

  • Home automation (turn on/off lights, turn on coffee machine)
  • Attic fan
  • Hydroponic system

Going Forward

I would like to convert this into an Arduino shield.  For those new to Arduino I will go with Arduino’s description, “Shields are boards to be mounted on top of the Arduino board and that extend the functionality of Arduino to control different devices, acquire data, etc”
So basic idea is you just plug it into the top the Arduino and hook up a couple wires to some terminal blocks and you have a nice clean solution.  Creating these printed circuit boards get much cheaper the higher the quantity.  I am considering doing a run of these if I get enough interest so if you may be interested in one of these send me a mail in “Contact” in the header.

How to make a grow box controller

021

While my existing system was working I decided to make an upgrade to the electronics on my old grow box controller specifically to have a much more industrial strength version that will run without problems for decades to come.  This version also is much safer…still probably not quite to a building code but much less worries to burning my garage down in the middle of the night.  Finally it is modular if there are problems in the future I can easily switch out electronics or sensors.

Well now I have attempted to justify my reasons this is what I used to put the whole thing together:

Parts List

If we had lawyers, they probably would want us to say this:
WARNING: I am not an electrician and do not pretend to be one.  I do not know the specific building electrical codes of your area, so please be sure your wiring is completed under the proper safety code for your area. As always, using high voltage electricity can result in self-electrocution or burn down your house if not done safely so if you are not comfortable doing this wiring please contact a qualified professional.

Putting it all together

On the electronics side overall the circuits are actually pretty simple and if using a breadboard definitely something that could be tackled by a beginner.  Though on the other side since this project is dealing with AC current I definitely would recommend caution (no hands unless power is unplugged) or have someone a little more comfortable with 120/220V help you out.

The Brains


I will be the first to admit that using an Arduino for this application is complete overkill for this application but it gives plenty of room for additions in the future.  For all intents and purpose you could have your grow box completely controlled from the Arduino own processing power though on my case the software and UI is more interesting part to me.  For this reason the Arduino code is actually very “dumb” basically just taking commands via the build in serial through USB and setting digital outputs to HIGH/LOW or reading analog inputs.

Here is the code for your grow box controller:

   1: /*

 

   2:  * GrowBox Arduino Interface

 

   3:  *

 

   4:  * Descriptions: Simple interface to digital and analog controls by passing serial inputs

 

   5:  *               For example: 

 

   6:  *                  "A1" to read analog value on pin 1

 

   7:  *                  "D1H" to set digital pin 1 to HIGH

 

   8:  */

 

   9: #include <OneWire.h>

 

  10:

 

  11: //1-wire

 

  12: OneWire  ds(8);  // on pin 8

 

  13: #define BADTEMP -1000

 

  14:

 

  15: //define unique sensor serial code

 

  16: byte temperature[8];

 

  17:

 

  19: #define PIN_VALUE 1          // numeric pin value (0 through 9) for digital output or analog input

 

  18: #define ACTION_TYPE 0        // 'D' for digtal write, 'A' for analog read

 

  20: #define DIGITAL_SET_VALUE 2  // Value to write (only used for digital, ignored for analog)

 

  21:

 

  22: int NUM_OF_ANALOG_READS = 2;

 

  23: char commandString[20];

 

  24:

 

  25: void setup()

 

  26: {

 

  27:   Serial.begin(9600);

 

  28:

 

  29:   setOneWireHex();

 

  30:

 

  31:   // Power control

 

  32:   for(int i=0; i<=7; i++)

 

  33:   {

 

  34:     pinMode(i, OUTPUT);        // sets the digital pins as output

 

  35:     digitalWrite(i, LOW);      // turn everything off

 

  36:   }

 

  37: }

 

  38:

 

  39: void loop()

 

  40: {

 

  41:   readStringFromSerial();

 

  42:

 

  43:   if (commandString[ACTION_TYPE] != 0)   {

 

  44:     int pinValue = commandString[PIN_VALUE] - '0';  // Convert char to int

 

  45:

 

  46:     if(commandString[ACTION_TYPE] == 'A')

 

  47:       Serial.println(analogRead(pinValue));

 

  48:     else if(commandString[ACTION_TYPE] == 'D') {

 

  49:       if(commandString[DIGITAL_SET_VALUE] == 'H')

 

  50:         digitalWrite(pinValue, HIGH);

 

  51:       else if(commandString[DIGITAL_SET_VALUE] == 'L')

 

  52:         digitalWrite(pinValue, LOW);

 

  53:

 

  54:       Serial.println("OK");

 

  55:     }

 

  56:     else if(commandString[ACTION_TYPE] == 'T') {

 

  57:       float temp = get_temp(temperature);

 

  58:

 

  59:       Serial.print(temp);

 

  60:       Serial.println("C");

 

  61:     }

 

  62:     else if(commandString[ACTION_TYPE] == '1') {

 

  63:       printOneWireHex();

 

  64:     }

 

  65:     else if(commandString[ACTION_TYPE] == 'V')   {

 

  66:       Serial.println("VERSION_1_0_0_0");

 

  67:     }

 

  68:     else if(commandString[ACTION_TYPE] == 'P') {

 

  69:       Serial.println("PONG");

 

  70:     }

 

  71:

 

  72:     // Clean Array

 

  73:     for (int i=0; i <= 20; i++)

 

  74:       commandString[i]=0;

 

  75:   }

 

  76:

 

  77:   delay(100);  // wait a little time

 

  78: }

 

  79:

 

  80:

 

  81: void readStringFromSerial() {

 

  82:   int i = 0;

 

  83:   if(Serial.available()) {

 

  84:     while (Serial.available()) {

 

  85:       commandString[i] = Serial.read();

 

  86:       i++;

 

  87:     }

 

  88:   }

 

  89: }

 

  90:

 

  91: void setOneWireHex() {

 

  92:     ds.reset_search();

 

  93:     ds.search(temperature);

 

  94: }

 

  95:

 

  96: void printOneWireHex() {

 

  97:   ds.reset_search();

 

  98:   if ( !ds.search(temperature)) {

 

  99:     Serial.print("NONE\n");

 

 100:   }

 

 101:   else {

 

 102:     ds.reset_search();

 

 103:

 

 104:     int sensor = 0;

 

 105:     while(ds.search(temperature))

 

 106:     {

 

 107:       Serial.print("S");

 

 108:       Serial.print(sensor);

 

 109:       Serial.print("=");

 

 110:       for(int i = 0; i < 8; i++) {

 

 111:         Serial.print(temperature[i], HEX);

 

 112:         Serial.print(".");

 

 113:       }

 

 114:       Serial.println();

 

 115:     }

 

 116:   }

 

 117:

 

 118:   ds.reset_search();

 

 119: }

 

 120:

 

 121: float get_temp(byte* addr)

 

 122: {

 

 123:   byte present = 0;

 

 124:   byte i;

 

 125:   byte data[12];

 

 126:

 

 127:   ds.reset();

 

 128:   ds.select(addr);

 

 129:   ds.write(0x44,1);         // start conversion, with parasite power on at the end

 

 130:

 

 131:   delay(1000);     // maybe 750ms is enough, maybe not

 

 132:   // we might do a ds.depower() here, but the reset will take care of it.

 

 133:

 

 134:   present = ds.reset();

 

 135:   ds.select(addr);

 

 136:   ds.write(0xBE);         // Read Scratchpad

 

 137:

 

 138:   for ( i = 0; i < 9; i++) { // we need 9 bytes

 

 139:     data[i] = ds.read();

 

 140:   }

 

 141:

 

 142:   int temp;

 

 143:   float ftemp;

 

 144:   temp = data[0];      // load all 8 bits of the LSB

 

 145:

 

 146:   if (data[1] > 0x80){  // sign bit set, temp is negative

 

 147:     temp = !temp + 1; //two's complement adjustment

 

 148:     temp = temp * -1; //flip value negative.

 

 149:   }

 

 150:

 

 151:   //get hi-rez data

 

 152:   int cpc;

 

 153:   int cr = data[6];

 

 154:   cpc = data[7];

 

 155:

 

 156:   if (cpc == 0)

 

 157:     return BADTEMP;

 

 158:

 

 159:   temp = temp >> 1;  // Truncate by dropping bit zero for hi-rez forumua

 

 160:   ftemp = temp - (float)0.25 + (cpc - cr)/(float)cpc;

 

 161:   //end hi-rez data

 

 162: //  ftemp = ((ftemp * 9) / 5.0) + 32; //C -> F

 

 163:

 

 164:   return ftemp;

 

 165: }

Copy and paste the above code into your Arduino software.   For the code above I used the OneHire.h library which is free to use and can be downloaded from here. To be able to use this library simply copy the contents to C:\arduino\hardware\libraries\OneWire. Now you should be able to Compile (CTRL+R) and upload the code to the board (CTRL+U)

Now with the software uploaded you can send some simple serial commands via its built in USB to serial adapter to interact with it.  The interface is are broken up into 1 to 4 character commands, which I will detail below

Command Description
T Returns temperature from One Wire component
D4H Sets digital pin 4 to HIGH (ON) (replace 4 for alternate pin)
D4L Sets digital pin 4 to LOW (OFF) (replace 4 for alternate pin)
A1 Reads analog value from pin 1 (replace 1 for alternate pin)
PING Returns PONG which is used to confirmed controller is online
V Returns version which is some forethought into the PC application being able to support different versions of controller software

Using the build in serial monitor tool in Arduino.exe, my application, or you should be able to control your Arduino with this very simple command based interface

Now you can hook up some LEDs and watch them blink which is fun for a little while but if you want to add some grow box components read on….

Temperature Sensor

As you can see I have fully embraced the circuit schema on the back of a napkin idea.  These are the actual diagrams I crumpled up and stuffed in my pocket with several trips to the garage for some final soldering of various joints until everything was solid.

Below is the simple circuit required to get your 1Wire temperature sensor working.  I would recommend checking your documentation (if not labels on the chip) for the orientation to have 1 and 3 correct, if you have it wrong you should get some complete unrealistic number.  Hook ground up to pin1 on the DS18S20 and pin 2 hooked up to the digital input pin 8 on the Arduino with 5V with a 4.7K resister in between to step down the voltage.

If everything is hooked up correctly you should get the current room temperature in Celsius by sending command “T” to your Arduino.  If you prefer Fahrenheit uncomment line 162 and recompile and upload your changes, though if using my software I support both degree types and do the conversion in the the software.  To make sure everything working (or just to play with your new toy) put your fingers on the chip for a couple seconds and take another measurement unless you keep your house very warm the temperature should go up a couple of degrees

1WireSensorDiagram

Turning things on and off (Relays)

If you were smart enough to check the current requirements of your Solid State Relays (SSR) before you bought them you may be able to skip this whole circuit and simply hook the digital outputs to the 5V positive side and ground to the negative side of the SSR.

Unfortunately if you are like me and bought some SSRs that require more current draw than the Arduino (or any other IC chip) of 40mA then you will need to create the simple circuit below.

image

Basic idea is pretty simple, you are using the output from the digital pins to switch of the transistor which then allows the ground to complete the circuit with the thus turning on the relay.  As you can see there is a 1K resistor between the base (middle pin) of the transistor.  If you are not using a SSR relay (though recommend you do) you should add a 1N4004 diode between the positive/negative which protects the transistor from being damaged in case of a high voltage spike which can occur for a fraction of a second when the transistor switched off, this is also known as a back-EMF diode or fly back diode.

Now here you have a couple options.  If you are confident of our wiring skills you can do like I did and take a couple of sockets and hook up the neutral and ground in parallel.  Two save space and since I really didn’t need two separate plug-ins (nor its own plug) for each relay I removed the little metal bar between the two sockets so they could be switched on independently.  Now simply hook up hot to the left side of all your relays in parallel and then connect a wire from the right side of the relay to its own plug on the two sockets.

Now a less wiring intensive method is to simply take a 6 foot (small if you can find them) and cut the hot wire (usually the one with non-smooth wire) and attach each end of the wire to both sides of the relay.

Moisture Sensor

When it comes to a moisture sensor there are a few options.  First is the classic two galvanized nails, second is the cheap gypsum soil moisture sensor which I have written up in the provided link.

If you are using the other options you will need the simple circuit below.  Technically it is a voltage divider, but that doesn’t really matter.  Just hook up one end of your sensor to 5V and other sensor to ground with 10K resistor and also connected to analog pin 0.

SoilSensorDiagram

My custom PCB solution

378

I actually started the work to create my own PCB at least a few years back.  Played with if it off and on and finally pulled the trigger to get some boards printed up which I must say was very rewarding and pretty fun experience for just $20-30 of out of pocket cost.  This provides all the circuits I mention above with a bonus circuit to let me know when my water reservoir is running low.  I also installed a Ethernet socket not

I designed this to be an Ardunio which plugs directly on top of the Arduino.  In theory I could stack more functionality on top of if but haven’t though of anything cool to do here yet.

Don’t want to spend 10-20 hours creating your own PCB and then wait 2-3 weeks for it to arrive from Hong Kong?  Well you can do the same thing with a bread board which I show below.

Virtual breadboard layout

VirtualBreadboard

If you are new to soldering or have no interest in learning I would definitely recommend this option.  Simply place the components in the holes and make connections with 18 gauge solid copper wire.  You should be able to pick a small breadboard for less than $7.

Various applications

Of course for my application, I am using this to integrate with my custom software solution to control my grow box.  Specifically soil sensor, temperature measurement, heater, lights, exhaust fan, and water pump.  So using the circuit mentioned above I ran the hot wire through each SSR with the remaining wires connected to the plug and eventually gets plugged into the wall.  Then simply hooked up the wire from the Ethernet cables to the low voltage side to turn the switches on/off.  So I would say this is a bit of an improvement over my last attempt…

Before

IMG_3777

After

019

Last I hooked the arduino up to my PC and used my custom software to control the temperature, water, and provide cool graphs as you can see below.

GrowBoxView

Sometimes life can get busy and you have limited time to keep an eye on your plants, for these times I also integrated with a custom Windows Phone 8 application which allows me to check the current state of the grow box using life tiles, water remotely (turn on/off lights/heater/fan as well), or even check out a current feed inside the grow box.

007 008

009011  010

Looks at the actual actual grow box…

003

008

Free Vegetable Seeds

image

Free Vegetable Seeds

  • Ask your coworkers: Are any of your coworkers gardeners?  Setup a seed swap at lunch and/or see if they want to go in on a seed order and split up some seed packets for varieties you only need a few seeds.
  • Harvest your own seeds: I typically grow at least one or two cilantro and pea plants to collect seeds from for the next year . Notice your neighbor has some neglected plants going to seed?  Ask if you can get some they may even look at this as free weeding (important part is to ask though)
  • Get seeds from the grocery store: Before putting those vegetables in the compost bin, set the seeds aside to let them dry and you got some free seeds.  The riper the fruit/vegetable the better results you may have on fertility here so shortest time between picking at getting up for sale will yield the best results.  So look for local fruits and vegetables or even better visit your local farmers market.
  • Get free vegetable seeds from the US Government: Have a little experiment or study you want to conduct and report the results on your blog?  Check out the National Plant Germplasm System from the US Department of Agriculture.  Within a database of over 10,000 species of plants you are sure to find some vegetables for your experiments.  Even shipping is included though can be time consuming to find what you are looking for.
  • Check your spice rack: In many cases you can plant seeds from your spice rack.  Just look for words like “raw” anything that has been “roasted” will probably not yield positive results.  Some ideas, mustard seed, dill seed, coriander, poppy seed, celery seed. If your spice rack is lacking you can pay a few cents buy a teaspoon of organic spices in bulk, last time I bought dill seeds got about 100 seeds for $0.05 which is a significant saving over paying $2-3 for an envelope of seeds.
  • Seed swap web sites: Below I have listed a few links where you can share seeds with others. This is a great way to find some heirloom seeds you might not be able to find in stores/seed catalogs. In many cases people will offer seeds for free by just sending a SASE (Self Addressed Stamped Envelope) Just remember to pay it forward when you come into a plethora of seeds yourself after this years harvest.

If this is all seems like too much effort you can just buy some very inexpensive seeds online where you can check out some of my personal favorites in my “Cheap vegetable seeds” post

First ever CVG giveaway “ Free one year subscription to GrowVeg.com

Online Garden Planning Tool

GrowVeg.com has graciously offered us a free one year subscription to their site ($25 value) to give away.  To enter simply enter a comment to this post and a name will be randomly selected using some sort of complicated means.

We will pick a winner in a few weeks but if you can’t wait to get started planning your garden go ahead and sign up for the free 30 day trial and if you are lucky you can continue using it for free.  Good luck.

UPDATE: Just for some shameless self promotion, if you mention this contest on your site you are free to add a second comment to double your chances to win.

UPDATE #2: Drawing will be on 03/31/09, so if you have not entered time is running out.

IKE