emancipation: my smoking monkey

  • Thread starter ftwendy
  • Start date
  • Tagged users None

If you could avoid mixing and applying nutrients by automating both processes, would you?

  • Yes... because I would like a vacation now and then

    Votes: 10 71.4%
  • Nope... I enjoy witnessing every day of the plant's life

    Votes: 4 28.6%

  • Total voters
    14
ftwendy

ftwendy

1,495
263
This is a mock up for an automatic mixing and irrigation system I've been dreaming up this summer. It's just now coming together and should start to look like more in a few weeks. It's basically an arduino -based system of modules that will control my drain to waste setup and fertigation cycles.

I am not an engineer, and I don't know a damn thing about coding, but somehow this is all coming together.... if you have any first hand experience or any constructive thoughts on what I'm attempting/doing please fire away.

Cheers, ftw

Smokinmunkeyproto


More details will follow when I have more progress completed. Thanks for looking, ftw
 
Last edited:
ohthatguy8

ohthatguy8

1,647
263
When you get this figured out I'll need u to stop by and adapt it to dwc. I have seen some kind of system where they use the automated soap pumps for like commercial dish washers. I'd love to be automated. I love what u do my brother keep fucking shit up!
 
ftwendy

ftwendy

1,495
263
I have seen some kind of system where they use the automated soap pumps for like commercial dish washers.

Thanks otg8 - the pumps you mention are called peristaltic dosing pumps. They are similar to what I'm using for the nutrient measure/addition portion of the process. Calibrating them was sort of a pain, but now they run consistently and do the job well (as a group they were 99.4% accurate over the past 3 weeks of testing). I'll grab a photo of the system for you so you can see what I'm talking about.
 
ftwendy

ftwendy

1,495
263
this is the calibration setup for some of the peristaltic pumps....its pumping plain water for a few weeks to figure out how accurate they are over time. After soldering and linking to the arduino, I calibrate to dose 10ml, then use that interval as a starting point to determine how long it needs to run to pump the quantity of the nute it will handle. Some pumps are more consistent than others over time, but all are over 99% accurate, and I'm sure that's better than what my ass does when I'm in a hurry lol

DosingI

DosingIII
 
ohthatguy8

ohthatguy8

1,647
263
If you don't mind me asking how much will this set up cost? I'm not ready today but I have kids n the less time I spend watering the more time I have with them. I'm still a slave to a 9-5 so I garden in my "spare time" aka 4:30 am. And any time I can sneak down after work. But my wife works later than me so it's a real chore some nights to get down there. Bottom line I want a robot to water my garden
 
ohthatguy8

ohthatguy8

1,647
263
I'm really asking about the brains of the operation. I already checked amazon for the pumps. Looks like 14-30$
 
ftwendy

ftwendy

1,495
263
I've purchased a ton of extra parts, so I don't have any idea on a grand total yet (design has also changed a few times $$). I'll be able to tally things up once the system is completely assembled.
 
ftwendy

ftwendy

1,495
263
These are the brains + relays:

Neptune Apex controller - $550
Arduino uno boards x4: 100
8 relay boards x4: 50

The neptune apex (aquarium gear) is my interface and functions like the conductor in an orchestra. The arduino board modules are the musicians, the relays are the instruments....
 
Last edited:
ftwendy

ftwendy

1,495
263
Here are a few shots of the system. It's been working well for six months now - a bit clunky, but she works while I'm away, and that's just fine...

Apex Controller display is the little blue screen on the wall in the pic below. The black power strips are Apex controlled outlets... the gray plastic enclosures are for the two arduinos: top box controls the blenders and dosing pumps, the bottom one is valves and distribution pumps.
apexarduino-jpg.510823


Next is the plain water reservoir; my well water pH buffers in here for 24-72 hours. The yellow Mondi pump on the right fills the white inductor tank in the right foreground until tripping a float switch. The pump on the left is for plain water applications and has an inline solenoid valve leading from it to break a siphon that forms b/c this entire setup is above the grow space.
inductorplainres-jpg.510824


Below are the peristaltic pumps that dose my 4 part feed into the mixing tank. Each blender activates for one second before the dosing pump delivers the component inside. These cheap little pumps and blenders have held up great so far - accuracy and seals are all holding true after 6 months of use and a month of testing. I'm well aware of how precarious it is to mix right next to my ballasts, but that was how it had to be.... so far no problems. Fingers crossed lol ;)
periblenders-jpg.510826


This is the inductor tank where the mixing happens. The blenders and dosing pumps are on a shelf above, the bathtub is below. Inside are two pumps: one 300 gph submersible for mixing the contents of the tank, and another large yellow Mondi to deliver the mixed food to the flowering room next door. The solenoid valve (brass, normally closed) at the base of the tank opens when the Mondi pump is done pumping, and drains away the last bit of food left in the tank. A blast of plain water is then pumped in to flush the tank while the drain valve is still open, allowing it to rinse completely. (shitty pic, but the grid is a piece of shelf to suspend the tank above the tub )....
inductor15-jpg.510825


There's definitely easier ways to automatically mix and apply nutrients, but this is another way to skin the cat :)

Thanks for looking, ftw
 
View attachment ApexArduino.jpg
InductorPlainRes
Inductor15
View attachment PeriBlenders.jpg
stickyfing3rs

stickyfing3rs

943
143
That's awesome man! Really been wanting to start messing around with an arduinos, possibilities are endless
 
ftwendy

ftwendy

1,495
263
Thanks, but its more like hairbrained clusterfuckery.... lol

I shouldn't knock it tho - haven't watered that room manually since the system was installed. Arduinos kick ass....

_______________
Valve and pump code:
_______________


#define RELAY_ON 0
#define RELAY_OFF 1
/*-----( Declare objects )-----*/
/*-----( Declare Variables )-----*/
#define Relay_1 2 // Relay 1 = Arduino Digital I/O pin number 2, Relay 2 = I/O pin number 3, etc...
#define Relay_2 3
#define Relay_3 4
#define Relay_4 5
#define Relay_5 6
#define Relay_6 7
#define Relay_7 8
#define Relay_8 9

void setup() /****** SETUP: RUNS ONCE ******/
{
//-------( Initialize Pins so relays are inactive at reset)----
digitalWrite(Relay_1, RELAY_OFF);
digitalWrite(Relay_2, RELAY_OFF);
digitalWrite(Relay_3, RELAY_OFF);
digitalWrite(Relay_4, RELAY_OFF);
digitalWrite(Relay_5, RELAY_OFF);
digitalWrite(Relay_6, RELAY_OFF);
digitalWrite(Relay_7, RELAY_OFF);
digitalWrite(Relay_8, RELAY_OFF);
//---( THEN set pins as outputs )----
pinMode(Relay_1, OUTPUT);
pinMode(Relay_2, OUTPUT);
pinMode(Relay_3, OUTPUT);
pinMode(Relay_4, OUTPUT);
pinMode(Relay_5, OUTPUT);
pinMode(Relay_6, OUTPUT);
pinMode(Relay_7, OUTPUT);
pinMode(Relay_8, OUTPUT);
delay(7000); //Check that all relays are inactive at Reset, seven second delay until initializing sequence
digitalWrite(Relay_1, RELAY_ON); // Activate FILLING PUMP
delay(30000); // Fill inductor tank for thirty seconds before valve reset
digitalWrite(Relay_4, RELAY_ON); // Open DRAIN VALVE
delay(1500); // DRAIN VALVE open for one and one half seconds to reset seal under pressure
digitalWrite(Relay_4, RELAY_OFF); // Close DRAIN VALVE
delay(150000); // up to three minutes TOTAL filling inductor tank, switched off by APEX float2
digitalWrite(Relay_1, RELAY_OFF); // Turn off FILLING PUMP
delay(1000); // wait one second between functions
digitalWrite(Relay_2, RELAY_ON); // MIXING PUMP on
delay(570000); // pump mixes for nine minutes thirty seconds while nutrient components are dosed
digitalWrite(Relay_2, RELAY_OFF); // MIXING PUMP off
delay(5000); // wait five seconds between functions
digitalWrite(Relay_3, RELAY_ON); // MONDI PUMP on, begin feeding
delay(184000); // one hundred eighty four second feeding
digitalWrite(Relay_3, RELAY_OFF); // MONDI PUMP off
delay(21000); // wait twenty one seconds between functions and allow plumbing to drain via siphon
digitalWrite(Relay_4, RELAY_ON); // Open DRAIN VALVE
delay(42000); // forty two seconds draining excess nutrient
digitalWrite(Relay_1, RELAY_ON); // Activate FILLING PUMP
delay(3000); // three seconds plain water RINSE to drain
digitalWrite(Relay_4, RELAY_OFF); // Close DRAIN VALVE
delay(24000); // twenty four seconds plain water RINSE FILL
digitalWrite(Relay_1, RELAY_OFF); // FILLING PUMP off
delay(500); // half second pause between functions
digitalWrite(Relay_2, RELAY_ON); // MIXING PUMP on
delay(7000); // pump continues mixing for seven seconds before drain opens
digitalWrite(Relay_2, RELAY_OFF); // MIXING PUMP OFF
delay(1000); // one second pause before drain open
digitalWrite(Relay_4, RELAY_ON); // Open DRAIN VALVE
delay(42000); // Open DRAIN VALVE for forty two seconds draining rinse waste
digitalWrite(Relay_4, RELAY_OFF); // Close DRAIN VALVE
}//--(end setup )---


void loop() //****** LOOP is empty! Including dosing instructions in setup will allow program to run ONLY ONE TIME
{}//--(end main loop )---



___________________
Blenders and dosing pumps:
___________________

#define RELAY_ON 0
#define RELAY_OFF 1
/*-----( Declare objects )-----*/
/*-----( Declare Variables )-----*/
#define Relay_1 2 // Relay 1 = Arduino Digital I/O pin number 2, Relay 2 = I/O pin number 3, etc...
#define Relay_2 3
#define Relay_3 4
#define Relay_4 5
#define Relay_5 6
#define Relay_6 7
#define Relay_7 8
#define Relay_8 9

void setup() /****** SETUP: RUNS ONCE ******/
{
//-------( Initialize Pins so relays are inactive at reset)----
digitalWrite(Relay_1, RELAY_OFF);
digitalWrite(Relay_2, RELAY_OFF);
digitalWrite(Relay_3, RELAY_OFF);
digitalWrite(Relay_4, RELAY_OFF);
digitalWrite(Relay_5, RELAY_OFF);
digitalWrite(Relay_6, RELAY_OFF);
digitalWrite(Relay_7, RELAY_OFF);
digitalWrite(Relay_8, RELAY_OFF);
//---( THEN set pins as outputs )----
pinMode(Relay_1, OUTPUT);
pinMode(Relay_2, OUTPUT);
pinMode(Relay_3, OUTPUT);
pinMode(Relay_4, OUTPUT);
pinMode(Relay_5, OUTPUT);
pinMode(Relay_6, OUTPUT);
pinMode(Relay_7, OUTPUT);
pinMode(Relay_8, OUTPUT);
delay(200000); //Allow inductor tank to fill, 200 second delay until initializing sequence.
digitalWrite(Relay_5, RELAY_ON); // set the Relay ON, MIXING BASE PART A
delay(1000); // one second mixing
digitalWrite(Relay_5, RELAY_OFF); // blender one switched off
delay(1000); // wait one second between activating blender and pump one
digitalWrite(Relay_1, RELAY_ON); // set the Relay ON, dosing pump ONE
delay(96000); // pump ONE ON, dosing apx 100ml BASE PART A
digitalWrite(Relay_1, RELAY_OFF); // pump ONE switched off
delay(30000); // wait 30 seconds between activating pump ONE and pump TWO
digitalWrite(Relay_6, RELAY_ON); // set the Relay ON, MIXING BASE PART B
delay(1000); // one second mixing
digitalWrite(Relay_6, RELAY_OFF); // blender two switched off
delay(1000); // wait one second between activating blender and pump two
digitalWrite(Relay_2, RELAY_ON); // set the Relay ON, dosing pump TWO
delay(93000); // pump TWO ON, dosing apx 100ml BASE PART B
digitalWrite(Relay_2, RELAY_OFF); // pump TWO switched off
delay(30000); // wait 30 seconds between activating pump TWO and pump THREE
digitalWrite(Relay_7, RELAY_ON); // set the Relay ON, MIXING Floralicious PLUS
delay(1000); // one second mixing
digitalWrite(Relay_7, RELAY_OFF); // blender three switched off
delay(1000); // wait one second between activating blender and pump three
digitalWrite(Relay_3, RELAY_ON); // set the Relay ON, dosing pump THREE
delay(63000); // pump THREE ON, dosing apx 63ml Floralicous Bloom
digitalWrite(Relay_3, RELAY_OFF); // pump THREE switched off
delay(30000); // wait 30 seconds between activating pump THREE and pump FOUR
digitalWrite(Relay_8, RELAY_ON); // set the Relay ON, MIXING FloraNectar
delay(1000); // one second mixing
digitalWrite(Relay_8, RELAY_OFF); // blender four switched off
delay(1000); // wait one second between activating blender and pump four
digitalWrite(Relay_4, RELAY_ON); // set the Relay ON, dosing pump FOUR
delay(84000); // pump FOUR ON, dosing apx 84ml FloraNectar
digitalWrite(Relay_4, RELAY_OFF); // pump FOUR switched off

}//--(end setup )---


void loop() //****** LOOP is empty! Including dosing instructions in setup will allow program to run ONLY ONE TIME
{}//--(end main loop )---


These programs are best used as a boilerplate for your own setup. The times in the code above are calibrated for my setup - you will need to tweak them for your own system. I hope this gets somebody some time off. We all deserve that now and then :) Happy summer folks
 
ftwendy

ftwendy

1,495
263
Note that my relay is defined on/off backwards....Can't remember why I had to do it that way, but it had something to do with the relay boards I chose

Also, these two programs run concurrently... they are designed to work together
 
Last edited:
Prime C

Prime C

Defender of Dank
Supporter
4,285
263
Beast Mode! Dont know how I missed this one till now! Great stuff thanks for sharing. :)
 
Top Bottom