From Sweebee
Sweebee built a PIR Sensor with an Attiny 85. Have a look :
Can’t tell much about the battery life but from my calculations it should run for more than a year, maybe 2 years with 2 aa batteries.
Scheme:
code:
// KlikAanKlikUit PIR sensor
// Based on AttinyX5
// Author: Wiebe Nieuwenhuis
//
// +-\/-+
// 1|o |8 Vcc
// 433Mhz TX 2| |7
// PIR sensor 3| |6
// GND 4| |5
// +----+
#include <avr/sleep.h>
#include <avr/power.h>
#include <NewRemoteTransmitter.h>
int ID = 123; // KAKU address
const byte txPin = 3; // pin 2 | 433Mhz TX pin
const byte inPin = 4; // pin 3 | PIR sensor pin
boolean input = false;
boolean state = false;
NewRemoteTransmitter transmitter(ID, txPin, 260, 3); // Set-up transmitter
ISR (PCINT0_vect) {
// do something interesting here
}
void setup () {
pinMode (txPin, OUTPUT);
pinMode (inPin, INPUT);
digitalWrite (inPin, HIGH); // internal pull-up
// pin change interrupt (example for D4)
PCMSK |= bit (PCINT4); // want pin D4 / pin 3
GIFR |= bit (PCIF); // clear any outstanding interrupts
GIMSK |= bit (PCIE); // enable pin change interrupts
}
void loop () {
input = digitalRead(inPin); // read the input pin
if(input == true && state == false) {
transmitter.sendUnit(1, true);
state = true;
}
if(input == false && state == true) {
transmitter.sendUnit(1, false);
state = false;
}
delay (10);
goToSleep ();
}
// SLEEP FUNCTION
void goToSleep () {
set_sleep_mode(SLEEP_MODE_PWR_DOWN);
ADCSRA = 0; // turn off ADC
power_all_disable (); // power off ADC, Timer 0 and 1, serial interface
sleep_enable();
sleep_cpu();
sleep_disable();
power_all_enable(); // power everything back on
}