Arduino Snail Mail Notifier

25,637

67

12

Introduction: Arduino Snail Mail Notifier

My mailbox is across the street from my house because our mailmen don't walk door-to-door, so I never know when the mail is delivered. Sometimes, I'm waiting for something and I'd really like to know when it arrives. I got my first Arduino last week, and thought it might be a neat toy project to build a notifier that would tell me when the mail is delivered.

It's designed to live inside the mailbox (I have a big one) and detect changes in the ambient light level. When the mailbox is opened, it triggers a wireless doorbell transmitter, ringing the house's doorbell and letting me know the mail's there.

Step 1: Get the Stuff.

Things you'll need:
-Arduino (I used an Uno)
-9V battery pack
-Breadboard/Prototyping shield
-Wireless doorbell transmitter
-Transistor (I used an IRF510 MOSFET from RadioShack)
-Photoresistor

not pictured:
-10k resistor
-jumper wires for breadboard

Step 2: Disassemble the Transmitter.

Take the back cover off the transmitter. Remove the battery and any screws holding the board in the unit. Your transmitter may look a little different than mine does.

Remove the board from the enclosure.

Step 3: Remove the Switch.

Power up your soldering iron and break out the solder sucker and wick. Remove the switch from the back of the board.

Note which terminals on the switch were connected where. That's important for the next step.

Step 4: Install a Jumper and New Leads.

On my unit, the switch, when depressed, connected the negative battery terminal to the rest of the circuit, causing the transmitter to send a signal. Since I took the switch out, the transmitter won't fire until we give it a new means to close the circuit.

Solder one wire onto the solder point connected to the negative battery terminal. In the photo above, that's the black lead.

Strip enough wire to connect the other two points formerly connected by the switch (on my transmitter, only three points connected to anything — the two shown soldered together above and the negative battery terminal). Solder the end of the wire to the first terminal, then solder it to the second terminal. Then carefully bend the wire so that it more or less follows the other lead you soldered on.

Now, instead of a switch, the transmitter can be triggered by connecting the two leads you just soldered onto the board.

Step 5: Hook Up the Circuit.

Using a prototyping shield or a breadboard, build the circuit.

One leg of the photoresistor is connected to analog pin 0 (yellow jumper) and to ground, with a 10k resistor in between. Its other leg is connected to 5V.

The gate leg of the transistor is connected to digital pin 5 (white jumper). The other two legs form a circuit with the transmitter (red and blue jumpers). That circuit is also connected to the arduino's ground. UPDATE: As described, the circuit would sometimes continuously trigger the bell. Adding a 10k resistor between the transmitter circuit and ground (in place of the direct GND) corrected the problem.

Step 6: Upload the Program.

Put the following program into your Arduino IDE and upload it to your board (UPDATED to correct some cases of continual signaling).

Put the battery back in the transmitter and test the circuit. If everything works, disconnect the device from USB.

/* Trigger a transistor based on the light level measured by the photoresistor

Connect the photoresistor one leg to pin 0, and pin to +5V
Connect a resistor (around 10k is a good value, higher
values gives higher readings) from pin 0 to GND.

----------------------------------------------------

PhotoR 10K
+5 o---///--.--///---o GND
|
Pin 0 o-----------

----------------------------------------------------

Connect digital pin 5 to the gate of a transistor.
Connect the drain leg of the transistor to GND and to the ground leg of the circuit being switched.
Connect the source leg of the transistor to the other leg of the circuit being switched.
The circuit being switched must have its own power supply.

*/

int lightPin = 0; //define a pin for Photoresistor
int outPin = 5; //define a pin for transistor gate

void setup()
{
Serial.begin(9600); //Begin serial communcation (for diagnostics)
pinMode(outPin, OUTPUT);
digitalWrite(outPin, LOW); //Close the gate
}

void loop()
{
int currentLight = analogRead(lightPin); //the current reading from the photoresistor
Serial.println(currentLight); //Write the value of the photoresistor to the serial monitor.
if(currentLight > 400){
digitalWrite(outPin, HIGH); //Hit the bell
digitalWrite(outPin, LOW); //Turn the gate back off
delay(4000); //Wait so you don't trigger again for the same light event
}
delay(100); //wait before checking light level again (but not too long or you might miss it!)
}

Step 7: Connect the Battery Pack.

Connect your 9V battery pack and install the device in its service location!

Step 8: Improvements?

Things that would make this project better:
-Maybe replace Arduino with an ATtiny chip
-Enclosure
-Powering transmitter from Arduino (have to step up voltage to 12V) instead of second battery

Be the First to Share

    Recommendations

    • Game Design: Student Design Challenge

      Game Design: Student Design Challenge
    • Make It Bridge

      Make It Bridge
    • Big and Small Contest

      Big and Small Contest

    12 Comments

    0
    TickMagnet
    TickMagnet

    8 years ago on Introduction

    Just swap the switch on the doorbell transmitter to a normally closed momentary switch. Place it so the switch is pushed in by the door when it is closed. Mailman opens the door, the bell goes off in your home and you know when the mail has arrived. I'd just mount the switch on a sheet of plastic or thin plywood that covers the bottom of the mailbox. That way you don't have to attach anything to the mailbox. Just lay it down inside of it. I'd also write on the board "Please flick the switch a few times if I got a package!" Now...someone needs to make a doorbell transmitter booster. Hmmm...

    0
    wliu3
    wliu3

    8 years ago on Introduction

    Sure it won't work for the high-rise apartment buildings in cities. Will it be possible to send an SMS through a prepaid sim to my phone? Will try that if my parents let me so.

    0
    kInstructor
    kInstructor

    11 years ago on Introduction

    Hi gwrome,

    nice project!
    Hopefully your mailman didn't thought it was a bomb. :D

    0
    techinati
    techinati

    Reply 9 years ago on Introduction

    I was thinking the same thing. Do you have a finished product?

    0
    techinati
    techinati

    Reply 9 years ago on Introduction

    I wouldn't put your profile pic on the finished product! :D

    0
    DillyDog
    DillyDog

    11 years ago on Introduction

    Hi gwrome

    Been thinking about this for some time, and it seems that you are wasting the power and the versatility of the arduino.
    Why not use a tilt switch or micro switch on the mailbox and have the transmitter send a signal to the receiver of the doorbell which is in turn connected to the arduino. You would then only need one power source in the mailbox. You would then have the arduino in the house where you can power it from a 'wall wart' psu. attach an LCD display, have it tweet you when the mailman has been etc.

    Just my 2 cents

    Dillydog

    0
    Sir Calidus
    Sir Calidus

    11 years ago on Introduction

    Hey Gwrome - LOVE your Instructable! It has inspired me.

    I, too, live far from my mail box and the mailman seems to alter when he delivers the mail each day - and there is no way to know when he has delivered the mail - so I want one of these gadgets.

    However, I am learning how to use the Arduino not to ring a bell, but to inform me on a display - time and date the mailbox was opened (with the use of an LDR) - as well and store each past delivery time and date, so I can create a more approximate time and date.

    Can you or anyone help me with how to make the Arduino talk to the display?

    Thanks All - and keep making! C

    0
    A.C.E.
    A.C.E.

    Reply 11 years ago on Introduction

    Will you be using an lcd display? If so, there is the liquidcrystal library, and there are various lcd screens on adafruit you can use, but if you want the screen to be wireless then im not sure what to do.. Bluetooth probably wont reach, maybe you could use wifi?

    0
    Ugifer
    Ugifer

    11 years ago on Step 8

    I put an e-bay wireless doorbell on my daughter's play-house. When the transmitter battery went, it would cost more to replace than the original price of the bell! As a result, I just soldered a pp3 battery clip on the transmitter and it worked fine. Haven't tried to test the range, however. Play house is only about 6' wide!

    If you are powering your Ardu' off a 9v battery then I would try using that for the transmitter too. Might very well work.

    0
    Ugifer
    Ugifer

    Reply 11 years ago on Step 8

    Nice project BTW - great way to add a remote effect to your Arduino at minimal cost. I'm sure I will be using this for something (laser tripwire anyone?)

    0
    batman96
    batman96

    11 years ago on Introduction

    Actually the little transmitters work just fine off of 9 volts, a little shorter range, but it is what the little battery puts out after a couple of months of use, so it works just fine, I converted my doorbell do us a nine volt stuffed behind the J channel where you can't see it and it runs way longer than those expensive little batteries.

    Batman