Snail-mail Notifier

After getting all my Prowl stuff to work, I decided to hack into my mailbox notifier.

I found a project from make where Matt uses an Arduino and Ethernet shield to make it happen, but instead, I am using the serial communication, and then wrote my own C# application instead.

Another difference is that I won’t be using a wire from the mailbox to the receiver. Instead I will use a commercial wireless mail notifier, and hack into it to make the arduino control it.

I forgot to take a picture before I opened the box and started looking around. But here it is, the receiver, with the arduino connected too.

Inside I have attached the red and blue wire to positive and negative, and on the arduino the red to 5V and the blue to GND.

The white wire is connected to the chip in the bottom of the middle print, which sends out a pulse that makes the LED blink. I am using that pulse to detect that the receiver has been activated, and new mail is waiting. The white wire is connected the my arduino’s digital pin 8, where it checks if it is HIGH or not.

If the pin 8 is HIGH then the arduino will send the serial message “mail” to let my program know that new mail was detected.

To disable the receiver again, you normally need to push the button on top of it, just like an alarm clock, but it would then continue to send me a message over and over, so to make my arduino “press” the button, I used a 2N2222 transistor.

Collector is connected to the yellow wire, to pretend the switch inside the receiver is pressed

Base is connected to the arduino’s pin 12 with a current limiting resistor

Emitter is connected to ground

The arduino sketch is actually just a slightly modified version of the button example

Update, using interrupt and got a debounce so it won’t send multiple messages for one event

//Constants
const int buttonPin = 0;     // Interrupt 0 = digital pin 2
const int ledPin =  12;      // The pin used to disable the alarm
const int debounce = 30000;  // How long debounce we want before sending a new message about mail arrived

//Variables
unsigned long lastMail = 0;  // Store when the message was send last time

void setup()
{
  Serial.begin(9600); //Start serial communication

  pinMode(ledPin, OUTPUT); //Set pinmode so we can use it as output
  pinMode(buttonPin, INPUT); //Set pinmode as a input
  attachInterrupt(buttonPin, mail, HIGH); //Attach the interrupt pin connected to the notifier's LED
}

void loop()
{
  //We don't need to loop anything
}

void mail() //Will be used when the interrupt on digital pin 2 is triggered
{
  if (millis() - lastMail >= debounce) //30 seconds debounce
  {
    lastMail = millis(); //Store when this last triggered

    Serial.println("mail"); //Tell C# application that the mailbox was opened
  }

  digitalWrite(ledPin, HIGH); //Press the button to disable the alarm
  delay(50); //50 milliseconds delay to give the alarm enough time to disable
  digitalWrite(ledPin, LOW); //Release button
}

This will make it send the “mail” message when the diode on the receiver turns on, pull the pin high to activate the 2N2222 transistor, the pull it back low to allow new alarms.

Only thing left is the C# application that sends the message to prowl, but that is pretty much straight forward too

These could be useful if you want to make it

Leave a Reply