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
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
unsigned long lastMail = 0; // Store when the message was send last time
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
//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.