Introduction: $3.50 DIY TV-B-Gone Micro
I previously made a slideshow on my DIY TV-B-Gone, and many people requested I make an Instructable. So, the first in a series of DIY TV-B-Gone clones, is the TV-B-Gone Micro!
Technically, because TV-B-Gone is a brand name, this is a "TV-B-Gone clone."
The TV-B-Gone is a neat little device that can turn almost any TV on or off. It uses a microcontroller hooked up to IR LEDs to output a library of on/off codes. Adafruit sells a kit, and has the code as well as the schematic on their website.
Here's a micro clone of the TV-B-Gone that runs on a coin cell battery, is slightly bigger than a quarter, and costs about $3.50 (compared to $20) to make!
Step 1: Materials and Tools
Materials:
- Attiny85v microcontroller - $1.82
- CR2032 battery holder - $0.62
- 8MHz resonator - $0.50
- Wide-angle IR LED - $0.20
- Narrow-bean IR LED - $0.18
- NPN transistor - $0.10
- 150 ohm resistor - $0.05
- 22uf capacitor - $0.02
- Small pushbutton - $0.27 (note: this is slightly different than the one I used)
You will also need some 2032 batteries to power it. DON'T FORGET!
Tools:
- AVR programmer (I used a USBtinyISP, a good, cheap programmer made from a kit)
- Computer with internet access; I predict you are using one right now :-)
- Soldering iron with solder
- Helping hands tools, very helpful
Attachments
Step 2: To Use an Oscillator or Not...
Advantages of and Oscillator:
- It is much more accurate and doesn't vary near as much as the internal oscillator. This can make the difference between it working and not.
- It adds about 50 cents extra cost.
- It takes up more space.
- It adds slightly more complexity.
Step 3: Prep for Programming
Step 4: Program the Chip Part 1: Fuses
"Fuses" are a very small part of the microcontroller's memory that tell it how to operate, such as which oscillator to use, enabling the reset pin, and so on. Will will need to change the fuses to run off of an external oscillator. I used http://www.engbedded.com/fusecalc, which is a free AVR fuse calculator. I included images of this, but you don't need to use the calculator because I listed the commands here.
I use AVRdude to interface between the programmer and my computer. A tutorial on how to use AVRdude can be found here.
If you are using an oscillator, use
Avrdude -c usbtiny -p attiny85 -U lfuse:w:0xfe:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
If you are not, use
Avrdude -c usbtiny -p attiny85 -U lfuse:w:0xe2:m -U hfuse:w:0xdf:m -U efuse:w:0xff:m
Proceed to the next step for programming the real code!
Step 5: Program the Chip Part 2: Code
The first thing you will want to do is connect the oscillator on the breadboard. Because it is now set to run with one, it has to have one to be programmed with one.
Download the firmware v1.1 from Ladyada.net at http://ladyada.net/media/tvbgone/tvbgone11.zip. This is for their kit, but I used it to program this and it worked. Unzip the folder and find the tvbgone.hex file. Copy this and put in C:\users\username where AVRdude can find it. Now, in AVRdude, type
avrdude -c usbtiny -p attiny85 -U flash:w:tvbgone.hex
and wait for it to put the code on the chip. Now let's get building!
Step 6: Begin Construction!
Bend pins 1 and 8 around so that they nearly touch, and solder them together. These are Vcc and RESET, which will both be connected to the button.
Step 7: Add the Button
Cut off two of the four leads of the button, making sure you get two that are pointing to the same side. Flip the chip upside-down and solder one lead of the button to pin 8 as shown in the picture.
When the button is pressed, it will give the chip power. When the button is un-pressed, the chip gets no power and will turn off.
Step 8: Add the Resistor
Bend pins 5 and 6 together, and solder them. Cut one lead of the 150 ohm resistor very short, and solder that end to pins 5 and 6, with the body of the resistor facing down the chip as shown.
The resistor limits the amount of current that the microcontroller can give to the transistor. Pins 5 and 6 are the outputs, and bending them together doubles the amount of current they can source to 20 ma. This is probably not needed, but is used as a precaution.
Step 9: Add the Transistor
Bend the outer two legs of the transistor outward, and cut the center (the base) short, as shown. Also cut the lead from the resistor short, too. Orient the transistor as shown in the picture (flat side up) and solder the base to the lead from the resistor.
The transistor allows the microcontroller, which can source only 10 ma per pin, to drive these LEDs, which can draw up to 100 ma. When a current goes through the base, it allows power to flow through the LEDs (at the collector) to ground (the emitter) in this circuit.
Step 10: Start the Ground Bus
Bend the emitter (left lead) of the transistor at a right angle as show, and solder it to pin 4, the gnd of the microcontroller.This will be connected to ground of the battery later.
Step 11: Add the Resonator
If you decided not to use a resonator when you were programming, you can skip this step and leave pins 2 and 3 unconnected.
Bend the outer two pins of the resonator inward, and the inner pin upwards. Solder the the outer two to pins 2 and 3 of the microcontroller. Bend the leftover emitter lead from the transistor over, and solder it to the middle pin of the resonator to connect it to ground.
Step 12: Solder the LEDs Together
Set the two LEDs next to each other, with the blue one on the left and the flat sides facing up. Bend the top lead of the the clear one to the left, and the bottom lead of the blue one to the right. Solder them in parallel, and cut the excess as shown.
From now on, most of the pictures will be wrong. I did it a different way, then experimented and found that this one was better. Pretend the LEDs in the rest of the pictures are like this, sorry for the inconvenience!
Step 13: Add the LEDs
Solder the negative lead of your LEDs to the collector of the transistor, and leave the positive pointing down the side as shown.
Step 14: Add the Capacitor
Bend the positive of the capacitor out and along the side of the capacitor, and cut it short. Bend the negative out for about 2mm and then bend it straight up. Fit the capacitor in and solder the positive of the capacitor to the positive of the LEDs as shown.
The capacitor filters the power from the battery to provide a smooth voltage for the microcontroller even with the LEDs flashing really fast.
Step 15: Form More Connections
Bend the negative of the capacitor over and solder it to pin 4 of the microcontroller. This connects it to the ground of the circuit.
Step 16: Form More Connections Part 2
Bend the positive wire from the LEDs around the capacitor as shown. Take an extra length of lead from something you cut off earlier, and solder it into place so that it connects the positive of the LEDs to the unused lead of the button. This connects the LEDs to the positive of the battery.
Step 17: Add the Battery Holder
Fit the battery holder under the circuit as shown; it should line up perfectly. Solder the positive and the negative as shown in the picture.
The positive goes to the far end of the button, giving power to the LEDs and, when pressed, the microcontroller.
The negative goes to the negative of the capacitor, grounding what needs to be grounded.
Step 18: Optional: Add an Indicator LED
Unless you hold up a camera to the front, there is no indication that it is going. Here's a modification to add a visible light LED that blinks between each code to show what it's doing.
Materials:
3mm LED - $0.06
Another 150 ohm resistor - $0.05
First, take your LED and bend the positive lead (not on the flat side) straight out. Keep the negative lead (with a flat side) pointing the same direction and cut it so that it's about 3mm long. Solder this to pin 7 of the microcontroller, with the positive lead facing toward the switch.
(look at picture 2)
Next, cut the positive lead very short. Cut one lead of the resistor very short also, and solder the two together. Bend the other lead of the resistor around to the positive battery terminal, cut it, and solder it into place.
(pictures 3 and 4)
Now when you press the button, the LED will blink between each code. It will also blink 4 times quickly when all the codes have been sent.
Attachments
Step 19: Add a Battery and Have Fun!
Slip in a 2032 coin cell battery, and have fun blasting TVs with a small, compact, and DIY device! Because the wires are exposed, be careful not to let anything conductive short out the connections. A good way to protect the circuit would be to infuse and cover the circuit with hot glue or sugru.
Note: I am not responsible for what you do with this, act at your own risk.
If you make one, please send me pictures!
Don't forget to rate and leave comments, I like comments :-)
Step 20: Update: Using a V1.2 Preprogrammed Chip
Due to the requests for preprogrammed chips, I made a modification to the design so that you can use Ladayada's preprogrammed chips with v1.2 firmware. It requires a PNP transistor instead of a NPN, and the way every thing is hooked up is different. I have not tested it, but it should work.
Buy the preprogrammed chip here for $5: http://www.adafruit.com/products/75
The circuit layout will be slightly different than the one for the Instructable.
328 Comments
1 year ago
PREPROGRAMMED CHIPS.
I have a few spare tiny85 chips that have the tvbgone code on them, I just don't need them, email me here if you want one or two.
morris2896@gmail.com
12 years ago on Introduction
Hey really cool instructable.
I ran into a problem with programming the attiny. I do not have programmer you used. Is it possible to program it with arduino? and set the fuse somehow?
Do you know if that is possible?
Because in the arduino program there is an option for Attiny
Thank you
Reply 12 years ago on Introduction
If you use a different programmer, just replace the -c usbtiny part of the command with whatever the code is for your programmer. I know you can program using an Arduino, but I have never done so myself. It should be possible, you you just have to Google it a couple different ways. Sorry for the late reply, good luck!
Reply 1 year ago
If im using a tiny programmer, what do I type?
7 years ago
hi great tutorial,but i dont know where did i go wrong.
i build both to breadboard (with resenator and without (versio 1.1))
but nothing happens. no blink no nothing.
is this because i used Attiny85-20pu instead Attiny85v-10pu
thanks.
Reply 7 years ago
It seems Attiny85-20pu clock speed is faster than the Attiny85v-10pu and uses slightly more power 2.7 - 5.5 volts which therefor it should work and flash it through an arduino @ 16mhz. (Attiny85v-10pu = 8mhz & 1.8 - 5.5 volts)
Reply 6 years ago
I want to build it with a Attiny85-20pu, too, because the 10PU is not available . Can I use the exact same components, like the 8mhz resonator, the same capacitor, etc? Thanks.
6 years ago
Hey, i don't have resonator of 8Mhz. i can put a of 4Mhz?
Reply 6 years ago
Nope
6 years ago
Hi,
See another instructable shown below.
https://www.instructables.com/id/Burning-TV-B-Gone-...
or
https://www.instructables.com/id/Dirt-cheap-ATtiny...
regards,
6 years ago
How to program these instructions from Arduino Uno?
7 years ago
Hi ! how can i change the code to use it in other avr micro like atmega32 or others??
7 years ago
hi! I was wondering if it would be possible to make this same circuit using 4 leds, and if so would I have to change the resistors? Also, do you know if it would be possible to change something so this runs on 1.5 volts?
Thanks,
-E
Reply 7 years ago
never mind on the 1.5 v battery question, I've found something in the garage that will work.
7 years ago
Is it possible to build something similar for a garage door?
7 years ago
i have test not work :D
7 years ago
Hey, could someone drop me an email at"legojoe5401@gmail.com"
To explain in more depth either how to upload hex using arduino or how to get my hands on a preprogrammed adafruit TVB chip as the link above no longer works. Thanks
7 years ago
For this could you use a 100 ohms resistor
7 years ago
How to Program using arduino
Reply 7 years ago
you've solved?