Thursday, August 20, 2015
Sprinkler Upgrade
I am considering adding a rain sensor to the sprinkler system. I have a Rainbird RS-1 sensor. The hardware version of the controller I have does not have a sensor connection so I will need to see what I can do to install A rain sensor.
Tuesday, August 18, 2015
Gutter Gadget
Had to work on the gutters and downspouts last weekend. One of the downspouts that is next to the sprinkler valve box was leaking. I ended up replacing a 30 foot section of downspouts. Two of the ten foot sections had leaks in the lengthwise seam of the downspout. Replaced those two pieces and then ended up replacing the connection from the roof downspout to the ground downspout. Sealed all the connections and that took care of the leaks.
In the process of doing all this replacement/repairs I discovered that I need to clean the roof gutters. I had some pvc pipe and connections left over from working on the sprinkler manifold project. I used those pieces to make a gutter sprayer/washer/cleaner.
I was thinking that it would be convenient if the Gutter Gadget could also be used to vacuume the gutters. I would need a pvc fitting/adapter to fit the vacuume hose to the 1" pvc. The attachment would be a screw on type.
In the process of doing all this replacement/repairs I discovered that I need to clean the roof gutters. I had some pvc pipe and connections left over from working on the sprinkler manifold project. I used those pieces to make a gutter sprayer/washer/cleaner.
| Here is the tool already put together. |
| This end connects to the garden hose. It consists of a garden hose to 3/4" adapter, a small piece of 3/4" pvc pipe, and a 3/4" to 1" adapter. |
| This is the water nozzle. It is a 1" pvc cap with 8 holes drilled in it and angled to create a nozzle pattern that will hopefully allow for easy cleaning of the gutter. |
| This end is the part that will be partially in the gutter and the nozzle will direct the water/debris down the length of the gutter into a downspout. |
I was thinking that it would be convenient if the Gutter Gadget could also be used to vacuume the gutters. I would need a pvc fitting/adapter to fit the vacuume hose to the 1" pvc. The attachment would be a screw on type.
Tuesday, August 4, 2015
Sprinkler Project
![]() |
| This is what it looked like after removing the sprinkler box, and removing some dirt. I have already replaced the Tee fitting for the water line in as that was one of the leaks. |
![]() |
| The Tee joint failure is much easier to see. Looks like a different type of glue was used. |
![]() |
| Here is the second leak. The leak is between the valve body and the adapter fitting. The valve body was loose with no way to properly tighten the fitting since all the fittings were glued in. |
![]() |
| This is replacement manifold. I was plotting and planning my next moves so I put the piece in place to get some ideas. |
![]() |
| The controller with the old wires still connected to the zones. The controller was a kit that I purchased online from the opensprinkler website. |
| This is the wiring using Rainbird's color code for the zones. |
| This image shows the color code for the zone wiring that I will be using. |
| As of now, Zone 1 has a small leak on the output side of the manifold. Zone 2 has a leak on the input side of the manifold. Zones 1 - 3 have been tested for just a few minutes to check for leaks in the plumbing from the manifold to the zones and so for they look good. So tomorrow I will work on those problems and then I will adjust the valve body solenoids of each zone to make sure they work properly with the controller. The manifold has been adjusted about as much as I think I can adjust it. I installed a sprinkler box over the manifold. The cutouts on the sprinkler box line up good but there is extra space above the spinkler lines. I ended up using silicone rtv to "glue" the pieces that were cut out, and make patches out of them to help keep the dirt out. I wired all the zones to the controller and tested the connections. All zone work, but I really don't like using silicone encapsulated wire nuts. Its working for now but I think I will just get rid of those and solder the wires and then use the wire nuts more as covers/protection. While testing the zones I discovered that zone 2 the back yard has a damaged sprinkler. It will need to be replaced! A couple of other sprinklers in zone 2 need to be either replaced or adjusted as their watering patterns don't look like they should. This is what it looks like inside. I used wire nuts to secure the connections. But I will probably end up re-doing those with something better, maybe grease caps or the secure quick connectors that have grease in them. Ended up having to replace a sprinkler in zone 2, it was a 42sa. The sprinkler was damaged and whenever it would pop up, water came out of everywhere instead of just the nozzle. I completely replaced the unit and the supply connection. I removed the soil around the damaged sprinkler, then cut off the elbow and glued a replacement elbow, then installed a riser to get the sprinkler height lined up with the lawn. After looking at the 42sa sprinkler it looks like I can just replace the internals of the sprinkler without having to dig it out of the ground. The sprinkler has a screw on type top. So it can be unscrewed and the damaged part can be removed and replaced. I have another 42sa that needs replacing so I will try that type of replacement. Replaced the 42sa sprinkler in zone 3. The rotating mechanism was damaged and would not move. Rather than dig up the entire unit I just uncovered enough to grip it and unscrew the top to remove the internals. Installed new components and it worked like it should. |
![]() |
| This is the type of grease fille caps that I used to waterproof the solenoid connections |
| Here is a pic of the interior of the valve box. The manifold is a bit dirty. It rained earlier in the week and this filled up completely with water!!! |
| Here is a closer look at the grease caps used. I added silicone grease to fill the remaining gaps in the caps to make sure the connections were better protected |
Monday, January 19, 2015
ATTINY85 RGB light upgrade Vers. 2 - Christmas wreath
In a previous post I put together an LED RGB circuit to replace the incandescent multicolor unit. It worked pretty well but was not bright enough.
This version of the circuit uses transistors to drive the leds. Using the transistors allows the use of high power leds(brighter!). The circuit works, so the next step is to actually use the high power RGB led and see how bright it will be. The LED is a 4 pin Super Flux RGB led(R50RGB-F-0160).
Here is the code for the ATTiny85:
==================================================
//ATtiny85 RGB Color Fader
//
// change 100 to a lower value for quicker color cycling
const int redPin = 2;
const int grnPin = 1;
const int bluPin = 0;
const int sensor = 3;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(grnPin, OUTPUT);
pinMode(bluPin, OUTPUT);
pinMode(sensor, INPUT);
}
void loop() {
if (analogRead(sensor) <= 200)
{
redtoyellow();
yellowtogreen();
greentocyan();
cyantoblue();
bluetomagenta();
magentatored();
}
else if (analogRead(sensor) >= 201)
{
digitalWrite(redPin, LOW);
digitalWrite(grnPin, LOW);
digitalWrite(bluPin, LOW);
}
}
void redtoyellow()
{
digitalWrite(redPin, HIGH);
digitalWrite(bluPin, LOW);
// fade up green
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void yellowtogreen()
{
digitalWrite(grnPin, HIGH);
digitalWrite(bluPin, LOW);
// fade down red
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void greentocyan()
{
digitalWrite(grnPin, HIGH);
digitalWrite(redPin, LOW);
// fade up blue
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
void cyantoblue()
{
digitalWrite(bluPin, HIGH);
digitalWrite(redPin, LOW);
// fade down green
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void bluetomagenta()
{
digitalWrite(bluPin, HIGH);
digitalWrite(grnPin, LOW);
// fade up red
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void magentatored()
{
digitalWrite(redPin, HIGH);
digitalWrite(grnPin, LOW);
// fade down blue
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
===============================================
| Here is the entire test circuit, but its only using 5 volts just to test the design. |
![]() |
| This is the schematic for the project. |
Here is the code for the ATTiny85:
==================================================
//ATtiny85 RGB Color Fader
//
// change 100 to a lower value for quicker color cycling
const int redPin = 2;
const int grnPin = 1;
const int bluPin = 0;
const int sensor = 3;
void setup()
{
pinMode(redPin, OUTPUT);
pinMode(grnPin, OUTPUT);
pinMode(bluPin, OUTPUT);
pinMode(sensor, INPUT);
}
void loop() {
if (analogRead(sensor) <= 200)
{
redtoyellow();
yellowtogreen();
greentocyan();
cyantoblue();
bluetomagenta();
magentatored();
}
else if (analogRead(sensor) >= 201)
{
digitalWrite(redPin, LOW);
digitalWrite(grnPin, LOW);
digitalWrite(bluPin, LOW);
}
}
void redtoyellow()
{
digitalWrite(redPin, HIGH);
digitalWrite(bluPin, LOW);
// fade up green
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void yellowtogreen()
{
digitalWrite(grnPin, HIGH);
digitalWrite(bluPin, LOW);
// fade down red
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void greentocyan()
{
digitalWrite(grnPin, HIGH);
digitalWrite(redPin, LOW);
// fade up blue
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
void cyantoblue()
{
digitalWrite(bluPin, HIGH);
digitalWrite(redPin, LOW);
// fade down green
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(grnPin, HIGH);
delayMicroseconds(on);
digitalWrite(grnPin, LOW);
delayMicroseconds(off);
}
}
}
void bluetomagenta()
{
digitalWrite(bluPin, HIGH);
digitalWrite(grnPin, LOW);
// fade up red
for(byte i=1; i<100; i++) {
byte on = i;
byte off = 100-on;
for( byte a=0; a<100; a++ ) {
digitalWrite(redPin, HIGH);
delayMicroseconds(on);
digitalWrite(redPin, LOW);
delayMicroseconds(off);
}
}
}
void magentatored()
{
digitalWrite(redPin, HIGH);
digitalWrite(grnPin, LOW);
// fade down blue
for(byte i=1; i<100; i++) {
byte on = 100-i;
byte off = i;
for( byte a=0; a<100; a++ ) {
digitalWrite(bluPin, HIGH);
delayMicroseconds(on);
digitalWrite(bluPin, LOW);
delayMicroseconds(off);
}
}
}
===============================================
Saturday, January 10, 2015
ATTINY85 RGB light upgrade Vers. 1 - Christmas wreath
During the holidays a christmas wreath decoration that has flickering lights failed. I opened it up and found that the light bulb was blown and the motor that controls the multi colored light wheel was no longer working either.
So I thought that I replace the faulty hardware with the attiny85 and an rgb led. Well it worked, it just wasn't bright enough.
Even though the leds were mounted on a board just above the fiber optic bundle, the light was still not bright enough. There were only three leds, 1 red, 1 blue and 1 green.
The wreath uses fiber optic strands bundled together to display the colors from the lighting.
I have a working circuit and a breadboarded circuit installed that works but it is too dim. So I am working on putting more leds in the circuit to see how much more light that will provide. Started using a DipTrace to create schematics and pcbs.
The learning curve is much easier than EagleCad. So I think I will focus on using Diptrace and but use EagleCad as needed.
![]() |
| Light and color wheel with motor |
So I thought that I replace the faulty hardware with the attiny85 and an rgb led. Well it worked, it just wasn't bright enough.
Even though the leds were mounted on a board just above the fiber optic bundle, the light was still not bright enough. There were only three leds, 1 red, 1 blue and 1 green.
The wreath uses fiber optic strands bundled together to display the colors from the lighting.
I have a working circuit and a breadboarded circuit installed that works but it is too dim. So I am working on putting more leds in the circuit to see how much more light that will provide. Started using a DipTrace to create schematics and pcbs.
![]() |
| Here is the schematic used for the project, this is a Diptrace screenshot. |
Saturday, July 26, 2014
Project Ideas
• RC mower
• Garage Door accessible via local network, not WiFi
• Dual mode CAT5 cable tester( 4 wire, 2 pair / 8 wire, 1 to 1)
• Garage Door accessible via local network, not WiFi
• Dual mode CAT5 cable tester( 4 wire, 2 pair / 8 wire, 1 to 1)
• battery replacement module for cell phones(uses LM317 and components to provide 3.7v)
• water meter monitor( use it to check if there is a leak in the rest of the water system, such as the sprinkler system)
• gutter sprayer/ cleaner : make it out of pvc. Make sure it is rebuildable and configurable.
Friday, July 25, 2014
Attiny85 code examples
Heres a piece of code that blinks LEDs in a particular order, similar to the lighting of a Proton Pack.
================================================================
/*
Modified Blink sketch for Attiny85 chip
Proton Pack Sequencer
*/
int led1 = 0;
int led2 = 1;
int led3 = 2;
int led4 = 3;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led4, LOW);
delay(500);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led1, LOW);
delay(500);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(500);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led3, LOW);
delay(500);
}
================================================================
================================================================
/*
Modified Blink sketch for Attiny85 chip
Proton Pack Sequencer
*/
int led1 = 0;
int led2 = 1;
int led3 = 2;
int led4 = 3;
void setup() {
pinMode(led1, OUTPUT);
pinMode(led2, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led4, OUTPUT);
}
void loop() {
digitalWrite(led1, HIGH);
delay(500);
digitalWrite(led4, LOW);
delay(500);
digitalWrite(led2, HIGH);
delay(500);
digitalWrite(led1, LOW);
delay(500);
digitalWrite(led3, HIGH);
delay(500);
digitalWrite(led2, LOW);
delay(500);
digitalWrite(led4, HIGH);
delay(500);
digitalWrite(led3, LOW);
delay(500);
}
================================================================
Subscribe to:
Posts (Atom)




























