Instructables
Picture of Annoying Beeper
Play a prank on your friends (enemies?) by hiding a high-pitched beeper which sounds off at random time intervals. This instructable uses minimal parts. All that is required is:
  • battery
  • microcontroller
  • speaker

Why don't I just use a 555 timer chip? You certainly could. I like this method because:
1. The ability to beep at random intervals
2. Minimal parts needed (simplicity/elegance of design)
3. I wanted to use a microcontroller (because I recently started the journey of learning about microcontrollers)

This project was inspired by an article in MAKE magazine about making a similar device with a 555 timer chip.

After making my prototype, I searched instructables.com and found the Raven, which is a similar beeping thing using a microcontroller. I decided to add my instructable because it uses less parts and has random intervals.
 
Remove these adsRemove these ads by Signing Up

Step 1: Parts Required

IMG_4665.JPG
IMG_4664.JPG
Besides the 3 basic components, I used a couple of other parts to help assembly. Here is a full parts list required for my final version:
  • ATtiny13 microcontroller (Sparkfun.com)
  • AA batteries (3)
  • Battery Holder with switch (Digikey part # SBH-331AS-ND)
  • 8-pin socket for microcontroller
  • Speaker (small 8 Ohm or piezoelectric buzzer)
  • Silicon adhesive (RTV)

You can make this project with almost any battery, microcontroller, speaker combination. The pictures for this step show parts I had around the house.

I made this entire project from parts I had in the house. You can use almost any battery(s) that has a voltage within the microcontroller's range (1.8-5.5 Volts for the ATtiny13). The higher the voltage, the louder the beep.

Almost any small speaker will work. You may want to experiment with different small speakers. I chose the speaker with the plastic membrane because it didn't make a click noise at the end of the beep like some other small speakers.

You can adapt the source code for other microcontrollers. It would potentially only require a change to the timer register settings.

Skills Required:
holidayv1 year ago
Ok, so I followed all the instructions and it would beep for ten seconds and then not beep again. I tried reprogramming the chip and even tried changing the intervals and frequency. Tried 3 different chips, and now as soon as I apply power, I get 2 faint clicks from the speaker and that's it. Tried 3 different speakers and I get the same thing. I've spent several hours trying to troubleshoot it and all I get are clicks. Help please!
darkforest2 years ago
Is there a way to make the frequency higher so humans can't hear? Either to stop dogs from barking, or giving someone a head ache from the waves... that they can't hear, haha. Let me know, thanks!
samirsky (author)  darkforest2 years ago
Yes, you can make the frequency higher so humans can't hear. Most adults can't hear 20000 Hz. Simply change the frequency value near the top of the source code and rebuild.
godofal3 years ago
i was thinking...
wouldnt adding a simple NPN transistor in between the attiny, the batteries and the speaker make the volume *much* higher??
samirsky (author)  godofal3 years ago
Great idea! I didn't add a transistor for 3 reasons:
* I am still learning about electronics
* I like the simplicity of just a chip with only power and output (speaker) (see these projects )
* It is loud enough for the 'victim' to hear, and yet not be able to locate
well, i dont think louder will make it easyer to locate
or at least, it might
my watch for instance has a pretty loud beep for its alarm, but you can't hear where its coming from

i *think* (no expert, so not sure) that thats becouse normally a sound is a wave form and a beep is more monotonous
we hear where a sound is coming from by the slight delay from when it reaches the ears, and a beep might be monotonous enough so that the delay doesnt work
or something like that, and im amazed if anyone would figure out my crappy explanation xD

im still learning too, but thats what sites like this are here for ^^
Drasa3 years ago
I have a great idea for this.
Maybe if we set the time between the beeps to 1 second, duration to 5 milisecond, we could get something like the C4 from Counter-Strike, right?
astrong03 years ago
Is that what the socket thingie is for?
samirsky (author)  astrong03 years ago
Using the socket allows me to solder the parts together and glue them down, but easily remove the micro-controller and re-program it when I want to change sound pitch or the minimum or maximum time between beeps.

More information of programming the micro-controller can be found in this tutorial (it is how I learned to program a micro-controller): http://www.ladyada.net/learn/avr/
You're awesome.
astrong03 years ago
HOW IN THE GOOD LIGHT AND GRACE OF GOD DO YOU PROGRAM THE MICRO CONTROLLER ?????????????/
bclamore3 years ago
Funny and spooky. I made one of these beepers from a 555 back in 1989 or so. I found that placing it under their chair was the best place -- they could not figure out where the noise was coming from! It's interesting to see how different people react. One guy just sat and stewed in misery. Another - my boss (yes, I was that dumb) - also wrote down all the times on a Post-It note! In fact he (experimentally and statistically) found the beep period to a greater accuracy then I had calculated it! He had removed ceiling tiles in his office looking for it. Oh, was he pissed at me! Fortunately, I was not fired.
VerticalX3 years ago
Thanks! That did the trick. I was using AVRStudio initially and it was trying to run the whole file. Going linux, in a terminal session built the .hex with no problems, calling out "make program-beep". Now it looks like I have to reset the fuses on my ATTiny13. I breadboard tested yesterday and got nothing - but I had the fuse settings incorrect from a previous project. Thanks again for the help.
VerticalX3 years ago
Any idea, why I would receive the followng error?

"make: *** No rule to make target `minipov.hex', needed by `all'. Stop.
Build failed with 1 errors and 0 warnings..."

I modified the Beep.c file to increase the max wait to 15 minutes (from the original 10 minutes).

Usining the original "makefile" file I receive the above error when building in AVR Studio 4.18.

Thanks!
samirsky (author)  VerticalX3 years ago
Are you sure you typed the make command correctly (Step 3, #3)?
You should type: "make program-beep"
If you only type "make", you will get the error you describe.

This is an artifact of the fact the I used the same make file for several projects. When you simply type "make" it tries to build ALL of the projects. Since you do not have the other projects (minipov for example), you get that error.
rvolk1693 years ago
Hi--

How do I control the limits of the timer -- that is, can I make it beep randomly between, say, 3 and 9 seconds?
samirsky (author)  rvolk1693 years ago
If you open the beep.c file (from step 3), change the following lines near the top of the "main" loop (approximately line 36-37):

unsigned int secMin = 180; // Minimum number of seconds until beep
unsigned int secMax = 600; // Maximum number of seconds until beep
Lamppis4 years ago
How shall I make the sound go up and down?
samirsky (author)  Lamppis4 years ago
  Do you mean a change in pitch/frequency?

You can change the pitch by changing the following line in the beep.c file (about line38):
unsigned int freq = 6000; // Frequency of beep in Hz
Recompile the code with the Make file, and download to chip.

If you want the pitch to change after each beep: this could be done but would require changing the code to support that (change the above variable, freq, as it is running instead of being constant)

If you are asking about volume: this is a function of the input voltage (batteries) and the speaker used. Increase the voltage, but do not exceed max voltage for the chip. Try different speakers to get louder sound.
samirsky (author) 5 years ago
This is another "log" from another office victim. Note the times: 8:40, 55 (8:55), 58, 03, 11 (9:11) The random interval really pays off.
Picture 6a.JPG
benjgvps6 years ago
Now if you put one of these into a random object (Keyboard, stapler, vase, picture frame, ect), this could make people insane.
samirsky (author)  benjgvps6 years ago
This is certainly possible. You could use 3 small, 1.5V, button-cell batteries or 1 3v coin battery, and a small speaker (like from a cell phone). Also, the frequency of the tone (6kHz in my example) seems to affect the volume depending on the speaker used. This would allow you to hide it almost anywhere. However, it might take a little more time (take apart and put together) to hide it in something such as a keyboard or an appliance.
think its also possible to wire a normal tact switch into the microcontroller to turn it on/off, but not a locking push switch between the battery and the microcontroller?
raykholo5 years ago
i like how u combined the battery case and power switch along with mounting the entire circuit right on top of it.... all together
mrjubjub5 years ago
LOL how much do usb micro controllers cost? i suck at programming -__-
samirsky (author)  mrjubjub5 years ago
The chip itself costs $1.94 from Sparkfun. However, there is the one time cost of the programmer.

There are many options for the programmer. The USB programmer I used (USBtinyISP) costs $22. It requires assembly/soldering.

Once you have the programmer, the AVR family of chips are very inexpensive ($2-$10), and have a lot of features for the money. A couple of my favorite projects are:
Programmable LED
USB Capslocker

You do not need any programming skills for any of these projects. The binary file to upload to the chip with the programmer is included.

For my Annoying Beeper project, it is easy to change parameters such as tone, duration, etc. The values are assigned to variables near the top of the file. Change values, build, and go (annoy people).
twenglish16 years ago
awesome im going to have some fun with this
AndyGadget6 years ago
I made one of these many years back and you can really drive people mad with them {evil grin}. The noise mine made was a short ascending frequency burst so it sounded a bit like a cicada. My design used a PAL (Programmed Array Logic) which was a predecessor to the microcontrollers in use today.
samirsky (author) 6 years ago
1st victim today. My coworker said the beeping was "driving me crazy". She could not figure out where it was coming from. She mentioned it to 2 others, but I was the only one who happened to be in her office when it beeped. When it beeped while I was in her office, she immediately wrote down the time. This image shows her time log of every beep while she was in her office. This is where the random interval was great. Near the end of the day, I sat in her office and said I thought I knew where it was coming from. I reached under her table and ripped it free from the Velcro. She screamed and was shocked that it was caused by me all along. We got a good laugh, as well as the people in the surrounding offices.
IMG_4739.JPG