Testing Out A Garden Gadget

We had some issues with groundhogs eating our tomatoes so I attempted to create a little gadget that would help with that. The following stands in the garden and alerts any motion via SMS. Along with motion detection, it also sends the temperature, light intensity and soil moisture over WIFI.

sensor

graph

ATEM Wireless Tally Light

Wireless Tally Light System – Compatible with Blackmagic ATEM

If you have used the ATEM production switchers long enough you probably noticed that it’s missing a wireless tally light option. That’s no longer the case.

KvitkoIT has engineered and released a wireless tally light system for ATEM switchers which can be ordered or done as a DIY. The kit comes with a transmitter (which connects to the same network as the switcher using a Cat5 cable) and multiple receivers (which attach to your cameras using a hot shoe mount). This is all wireless so no wires are required between the transmitter and receivers.

The kit is Arduino-based so it’s fully customizable.

Check out the ATEM Wireless Tally Light Kit at KvitkoIT.

Arduino Clap Switch

Made a clap switch using Arduino. First experiment with this microcontroller. Works pretty well.

The switch that I used for the lamp can be found in Wal Mart. I opened it up, took the switch out and soldered an electric wire to the same location where the switch was.

Here it is in Wal Mart:
http://www.walmart.com/ip/GE-15-Amp-Polarized-Tap-with-Switch-White/16677117

Here is what mine looks like (used to look like that, I cleaned it up a bit):
photo (5)

The code for the Arduino clap switch is below. Some values will probably need to be adjusted depending on the environment. For example, the sound sensor was getting higher values in my office than in my bedroom. Have fun!


/*
	Arduino Clap Switch
	Artem Kalinchuk
	
	The THRESHOLD, SOUND_SAMPLE_LENGTH, 
	CLAP_DURATION_WINDOW, and CLAPS_FOR_TRIGGER are
	all adjustable values and will probably need to be 
	adjusted depending on your environment.
*/

const int SOUND_SENSOR = A0; //pin for the Grove Sound Sensor
const int LAMP_RELAY = 2; //pin for the Grove Relay
const int THRESHOLD = 400; //the sound level that will be treated as a 'clap'
const int SOUND_SAMPLE_LENGTH = 200; //the amount of ms to wait before determining to turn off/on
const int CLAP_DURATION_WINDOW = 1500; //the amount of ms max to make the number of claps specified (ms)
const int CLAPS_FOR_TRIGGER = 2; //the number of claps for the relay to trigger

//kind of used the same way as 'delay' but does not pause code.
//I use this because I have multiple 'delays' running in my original code.
//this 'delay' will make sure the relay does not switch on and off to fast.
//The current time is set to 1000 ms min (in code below)
unsigned long lastLampRelayLoop = 0;
int soundSensorReading = 0;
int soundLength = 0;
int previousSoundLength = 0;
int soundSampleLength = SOUND_SAMPLE_LENGTH;
int clapDurationWindow = CLAP_DURATION_WINDOW;
int currentClaps = 0;
int relayState = LOW;

void setup() {
  pinMode(LAMP_RELAY, OUTPUT);
}

void loop() {
  soundSensorReading = analogRead(SOUND_SENSOR);

  if (soundSensorReading >= THRESHOLD) { 
    soundLength++;
  } else {
    if (soundLength > 1) {
      previousSoundLength = soundLength;
    }

    soundLength = 0;
  }

  if (soundSampleLength == SOUND_SAMPLE_LENGTH) {
    soundSampleLength = 0;

    if (previousSoundLength > 1) { 
      clapDurationWindow = 0;
      currentClaps++;

      if (currentClaps == CLAPS_FOR_TRIGGER) {
        relayState = !relayState;

        if (millis()-lastLampRelayLoop >= 1000) {
          digitalWrite(LAMP_RELAY, relayState);
          lastLampRelayLoop = millis();
        }
      }

      previousSoundLength = 0;
    }
  }

  if (clapDurationWindow >= CLAP_DURATION_WINDOW) {
    currentClaps = 0; 
  }

  if (clapDurationWindow <= CLAP_DURATION_WINDOW) {
    clapDurationWindow++;
  }

  if (soundSampleLength < SOUND_SAMPLE_LENGTH) {
    soundSampleLength++; 
  }

  delay(1);
}