Introduction: Kruger's Zippo Remote

About: These instructables are mostly about electronics. I hope you find them helpful!

This is by far the coolest project (imo) that I have ever made, so I am really happy to share this. It was an extremely difficult project that took about a whole week to debug and construct, but it finally works!

First I'll start off with what inspired me.

Check out the Captain America montage I made out of extreme boredom.
At 0:20 and 1:51, you might notice Kruger (I think) using a Zippo lighter as a detonator.

I always wanted to build some sort of radio control switch like this, so I decided to do just that.
The following is another video of this Zippo remote in real life!


This project took a lot of trial and error, so some pictures might be confusing. Feel free to comment for questions!

This Instructable will have two parts. The first one will be the main Zippo TX remote and the second will be the example RX application.

Here we go!

Step 1: Supplies

TX Supplies:

Step 2: Preparing the Insert

  1. Take out the insert from the case and let the fuel evaporate (if there is fuel).
  2. Unscrew the flint spring and remove the spring and the flint.
  3. Using tweezers, carefully pull out the rayon/cotton and the wick.
  4. Place wick, flint, spring and balls in a bag so you don't lose them. Keep them as spares. The flint and wick will be used later.

Step 3: Modifying the Insert

A big aspect of this project was to make the remote look like a regular lighter.
That means if I were to give this remote to someone, they would flip it open and see a flint wheel, flint, wick, and all that stuff; nothing would be out of place.

In order to accomplish this, all of the components would need to be concealed inside the insert.

I decided to use the flint wheel/flint as a button, and a hole next to the wick as the notification LED.
This was probably the MOST difficult part of this project, other than the debugging.

Button

  1. Secure the insert upside down.
  2. Using the cutting tool/ the sanding bit, sand away the flint tube by holding the Dremel horizontally. This will be awkward and possibly dangerous. Be patient, as you are trying to sand away a whole centimeter of brass.
  3. Sand until the tube is shortened by about 1cm.
  4. Sand even more carefully to get a flat, perpendicular, and consistent finish on the tube.
  5. Using a drill bit, drill inside to tool to widen the walls.
  6. After the drilling and sanding, the button should fit loose and flush to the flint tube.

LED

  1. Secure the insert right side up.
  2. Use a drill, a hammer, or both to make a hole in the top of the lighter.
    • If you use a drill (I didn't) you should be using a metal bit that can drill through steel.
    • If you don't have a bit that can do that, just a hammer and a thick nail like I did!
  3. Line up the nail in between the flint wheel and the wick. Tap the nail lightly, then harder until the nail penetrates the steel.
  4. Keep hammering and removing the nail until the hole is wide enough for the LED.

Step 4: Preparing for the Antenna

I could have replaced the wick with an antenna, but that wouldn't have been fun. I decided to use the whole metal case as an antenna!
The RF Module's antenna pin will be soldered to the inside of the steel insert. When the insert is inserted, it will conduct to the outer brass case, making the whole lighter an antenna.

Of course this probably isn't the ideal shape/size for an antenna at 434MHz, but who cares (it's cool that's all that matters)!

In order to use the case as an antenna, we must be able to solder to the steel insert.

  1. Sand down the bottom portion of the inside of the insert
  2. Try adding solder (with plenty of flux) to the sanded portion. Does it stick?
  3. No? Sand more.
  4. Sticking yet?
  5. No? Try electroplating the bottom of the insert. Clean off the inert from dirt/flux from attempted solder.
    • Connect the insert to GND, and connect a copper source (1964 penny) to 12v.
    • Mix Copper Sulfate in water to get the electrolyte
    • Stick the insert and the copper into the liquid until something happens. Don't breathe in the fumes.
  6. Is it sticking yet?

If you need any more detail about electroplating, you can look here. Hopefully sanding works the first time.

Once you have a blob of solder sticking to the inside of the insert, you're good to go.

Step 5: Fake Wick

In order for people to believe that the lighter is an ordinary lighter, there needs to be a wick.

To do this,

  1. Cut 0.75' of wick.
  2. Stick it through the wick eyelet (using tweezers or a pencil might help).
  3. Bend the small portion of wick inside the insert so the wick doesn't easily fall out.
  4. Use some sort of epoxy/glue to secure the wick.
    (DON'T USE GORILLA GLUE BECAUSE THAT EXPANDS.)
    This was my first time trying this so I made that mistake and had to clean it up. Use hot glue, Elmers, wood glue, or whatever works best for you.
  5. Make sure your epoxy doesn't cover the hole for the LED.
  6. Wait for it to set.

When you pull on the wick slightly, it shouldn't budge.

Step 6: Turning a Flint Wheel Into a Button

This part of the project took me a while to figure out. Through a lot of trial and error I found this method to work the best.

  1. Stick the flint back into the flint tube
  2. Stick straightened 18 AWG wire into the flint tube
  3. Cut the 18 AWG wire just where it meets the edge of the flint tube.

Now this is time to test how well you finished the flint tube

  1. Take the button and insert it upside down into the flint tube.
    • The button's shiny metal part should be flush to the brass tube.
    • The button's black button part should fit all the way inside the brass tube.
    • When you push the bottom of the button, it should not click.
  2. Hold the button onto the brass tube and press down perpendicularly on the flint wheel. The button should have a reassuring 'click'

If you had success with all of the above, its time to secure the button.

  1. Cut a piece of plastic to fit just inside the insert, perpendicularly.
    • The button should be able to fit onto the plastic piece with it's legs hanging off of it
  2. Glue the plastic piece onto the bottom of the button
  3. Secure the button onto the brass tube, and then glue the sides of the plastic piece to the walls of the insert.
    • I suggest Krazy Glue because that stuff works magic.
    • DON'T ATTEMPT TO GLUE THE BUTTON ONTO ANYTHING. You will cry.

Step 7: Installing Notification LED

This step is pretty easy.

  1. Cut the leads of a small LED to about 0.25'.
  2. Solder some thin wire to the leads. I used CAT5 wire.
  3. Wrap electrical tape between and then around the leads.
  4. Put some heat-shrink tubing around the electrical tape
  5. Heat-shrink it (with another Zippo lighter mwahahaha)
  6. Shove the LED into the LED hole with pliers. Don't break the leads
  7. Secure it in place with epoxy or hot glue. Hot glue worked for me.

You will not be able to determine which lead is positive and which lead is negative, but you can easily find that out by connecting a 3v battery to it, and trying different polarities. Either way, its not a big deal.

EDIT:

Member DustySeven7 gave this tip. Thanks!

a trick for determining positive and negative leads. LEDs have a small flat notch on one side of the base. typically this is your negative lead. put the notched side of the led towards the flint wheel to help remember.

Step 8: Upload the Code

This code was difficult to write. I'm not too adept in coding, and VirtualWire library was never really meant to run on ATTinies.

Attached to this step are files pertaining to the TX portion of this project.
You MUST use an ATTiny85 because it's the smallest chip that has the timers to support the VirtualWire library.

Specifically for the TX portion, if you happen to have an ATTiny85V - 10PU, good! That means that your remote will work with lower power.
If not, no worries. It will still work.

Everything you need for the TX side will be in the files attached. Here are the basics

  1. Burn the right fuses onto the chip. You will be running at 8 MHz
  2. Move VirtualWire to Arduino libraries folder
  3. Upload the code
  4. Examine the breadboard/schematic so you know what you're handling.

If you need details about programming ATTinies with Arduino, check this out.


DETAILS ABOUT THE CODE

The RF Modules were designed for easy use with Arduino. The original goal was for these RF modules to act as invisible wires. Ideally, you could just say:

void setup()
{
	//2400 baud for the 434 model
	Serial.begin(2400);
}
void loop()
{
	//send out to transmitter
	Serial.println("a");
	delay(1000);
}

And on the RX side, which is running:

int pin = 3;
void setup()
{
	//2400 baud for the 434 model
	Serial.begin(2400);
	pinMode(pin, OUTPUT);
}
void loop()
{
	int data = Serial.read();
	if (data == 97)
	{
		digitalWrite(pin, HIGH);
		delay(1000);
		digitalWrite(pin, LOW);
	}

	else{}
}

What we hope to happen is that when we Serial.println("a"), the "a" will be received on the other side.

Sadly, there's a lot of noise. When I tried this code out, the receiver would randomly switch on from some stray signal in the air, or not switch on at all because that "a" could not even survive to the receiver antenna.

This code doesn't work. There needs to be a method to reduce the noise by filtering. Fortunately, VirtualWire does that for us!

Based on my limited knowledge, VirtualWire takes advantage of the timers in the microcontroller to sort of sync two RF modules. In order for this to work, we must use the ATTiny85. Timer0 does not exist on the 45.

In order for The ATTiny85 to run at 3.7v, we have to run the microcontroller without an external crystal.
So, we will burn the fuses for 8MHz internal clock.

The following code simply sends the character "a" constantly over the RF module.

/*TSJWang	8/19/2014
Transmitter
Use an ATTiny85 @8MHz. 45 will not work with VirtualWire
Fuses:
	-U lfuse:w:0xe2:m
	-U hfuse:w:0xd4:m
	-U efuse:w:0xff:m
*/
#include <VirtualWire.h> // Library used for communication with RF links

const int notifPin = 0;		// LED connected to this pin
const int TXpin = 1;		// This pin connected to RF link

void setup()
{
	pinMode(notifPin, OUTPUT);
	vw_set_ptt_inverted(true);		// setup stuff
	vw_setup(4800);	// 4800 bps
	vw_set_tx_pin(TXpin);
	digitalWrite(notifPin, HIGH); // Blink LED to show it's working
}

void loop()
{
	char *msg = "a";		// Send "a", ASCII 97.

	vw_send((uint8_t*)msg, 1);	// Sends the char
	vw_wait_tx();			// Wait until the char is sent
}

DETAILS ABOUT CIRCUIT

The TX circuit is pretty simple.

  • There is a 1k pullup resistor to Vcc on the reset pin[1]
  • Nothing is attached to A3 and A2 [2 and 3]
  • GND is attached to a button switch to battery- [4]
  • Digital 0 [5] is attached to an LED. The LED leads into a 270 ohm resistor to GND
  • Digital 1 [6] is connected to DATA on the RF Module
  • A1 [7] is not connected to anything
  • Vcc is connected to battery +
  • The RF module is connected to Vcc and GND appropriately.

When the code runs, if the button is pressed, the whole circuit will be switched ON
The LED should turn on and the ATTiny85 will be sending "a" over the RF module constantly.

Step 9: BUILD IT.

In order to fit everything into a Zippo insert, I had to use a method called rat's nest wiring
Not exactly... but this is still really messy. This step will require patience and some good soldering skills.

Before you continue onto this step, make sure your circuit and code works on a breadboard. Once you start this step there is no going back: The chip will be extremely difficult to reprogram once you rip it's pins off.

You don't really need the steps below if you can follow schematics.

**PLEASE IGNORE THE 16 MHz CRYSTAL IN ALL PICTURES. I MADE A MISTAKE**

  1. Take battery and bend the wires to one direction. Wrap the battery in electrical tape (one layer of tape)
  2. Cut the battery wire in half.
  3. Bend and remove pins 2 and 3 (ccw from pin 1) from the ATTiny85.
  4. Solder a 1k resistor between pins 1 and 8. You can shorten the pins and shorten the leads just so they barely fit together, then solder.
  5. Remove pin 7 by bending and snapping off the pin.
  6. Take the RF module and desolder the pins. Use pliers to remove them.
  7. Solder on thin wires to the RF module in place of the legs, and cover the device in electrical tape.
  8. Solder battery+ to pin 8.
  9. Solder the pins of the RF module to the proper places (Vcc to pin 8, GND to pin 4, Data to pin 6)
  10. Find LED- on the red LED and shorten that wire. Solder a 270 ohm resistor to the leg, and insulate with electrical tape.
  11. Solder 270 ohm resistor to one side of the button switch.
  12. Solder the antenna wire of the RF module with the solder. blob to the insert.
  13. Solder everything that needs to be grounded to that one side of the button switch.
  14. Solder battery- to the other side of the button switch.
  15. Solder the battery plug back onto the battery.

This is hella messy.

Step 10: Polishing Up

Before you proceed to this step, make sure the circuit actually works.
If it does, then...

  1. Clean off any solder flux with alcohol.
  2. Cover ALL solder joints/conductive parts with nail polish.
  3. Apply a second coat after the first one dries.

After finished, use tweezers to carefully install the parts into the insert. You don't want to break any joints here, so be gentle.

If you need to charge this LiPo battery (and you have no money), you can charge it with a USB charger. Just make sure you have a 4001 or 4007 diode from 5vdc to the battery 3.7vdc. Charge it for 30min to 1hr. monitor the battery just to make sure you don't set your house on fire.
This is NOT how you should charge a LiPo battery. I recommend you buy the charger from Sparkfun.

This insert can now be placed into ANY Zippo case and used. You will only need to charge it every once in a while, because the circuit is mostly off.

NOTE: I notice the device has better range OUTSIDE of the case than when used in the case. Maybe cut a hole in the bottom of your Zippo case? It will let the signal travel freely. Again, not an ideal antenna shape anyways.

And with that the TX portion of the project is finished! The RX portion will be very short.

Step 11: Supplies

This Instructable was not for "Kruger's Receiver Module", so I won't be going into too much detail about this portion. Anyways, you can do whatever you like. This portion is only to assist you by giving an example application.

Step 12: Code and Circuit

Attached to this step are files pertaining to the RX portion of this project. You MUST use an ATTiny85 because it's the smallest chip that has the timers to support the VirtualWire library.

Main steps:

  1. Burn the right fuses onto the chip. You will be running at 8 MHz
  2. Move VirtualWire to the Arduino libraries folder
  3. Upload the code
  4. Examine the breadboard/schematic so you know what you're handling.

If you need details about programming ATTinies with Arduino, check this out.

DETAILS ABOUT THE CODE

If you look back at step 8, I explained why a simple code didn't work.

There was a lot of noise, the ATTiny45 doesn't work, so on.

Other that those problems, the clock speed must be identical to the transmitter (8MHz).
Also, when VirtualWire is used on an ATTiny85, the timers are so occupied that functions like millis(); or delay(); cannot be called, or else the chip will crash (it happened to me)
In order to counter that, I had to use another library for delays.

What this code basically does is check if the correct letter and message length is received, then activate a pin conditionally. The receiver will not be activated by stray noise now.

/*TSJWang	8/19/2014
Receiver
Use an ATTiny85 @8MHz. 45 will not work with VirtualWire
Fuses:
	-U lfuse:w:0xe2:m
	-U hfuse:w:0xd4:m
	-U efuse:w:0xff:m
*/
#include <VirtualWire.h> 	// Library needed for communication
#include <util/delay.h>		
// VirtualWire doesn't like it when you use delay() or millis(), so we need this library.

const int activePin = 2; // Connect LED and transistor to this pin
const int RXpin = 0;		// Pin connected to RF module

void setup()
{
	pinMode(activePin, OUTPUT);
	vw_set_ptt_inverted(true);	// normal setup stuff
	vw_setup(4800);				// 4800 bps
	vw_set_rx_pin(RXpin);
	vw_rx_start();
	digitalWrite(activePin, LOW);	// for safety sake
}

void loop()
{
	uint8_t buf[VW_MAX_MESSAGE_LEN];
	uint8_t buflen = VW_MAX_MESSAGE_LEN;
	
	if (vw_get_message(buf, &buflen))
	{
		if (buf[0] == 97)	//ASCII character 'a'
		{
			digitalWrite(activePin, HIGH);
			_delay_ms(125); //this actually delays for 1000 seconds. 
			digitalWrite(activePin, LOW);
		}
		else
		{
			digitalWrite(activePin, LOW);
		}
	}
	else
	{
		digitalWrite(activePin, LOW);
	}
}

DETAILS ABOUT CIRCUIT

This circuit is also pretty simple.

  • RESET [1] is connected to a 1k resistor, connected to Vcc
  • A3 and A2 [2 and 3] are not connected to anything
  • GND is connected to GND
  • 0 [5] is connected to DATA on the RF module
    • The RF module is connected to Vcc and GND appropriately.
    • NC pin is well, not connected
    • Antenna pin is connected to a 6.8' long piece of wire
    • Only one Vcc or GND pin has to be connected. Others can be left alone
  • 1 [6] is not connected to anything. I grounded it for good circuit practice that comes in when it comes to radio controlled circuits
  • 2 [7] is connected to
    • 330 ohm resistor to an LED to GND
    • 2n2222 BASE pin
      • The 2n2222 collector is connected to Vcc
        If you want, you could have the 2n2222 grounding the relay instead of providing power. In this case it doesn't make much of a difference
      • The 2n2222 emitter is connected to one end of the relay coil
      • The other end of the relay coil is grounded
      • The relay switch pins are connected to a screw terminal
  • Vcc is connected to Vcc
  • 330 ohm resistor is connected to Vcc and to a green LED

What should happen when I switch on the circuit is
The green LED should switch on immediately.
The rest of the circuit does nothing. When the TX side transmit an "a", the message will be received, and the relay and red LED will be switched on for about 4 seconds. After that, if the TX is not transmitting, the relay and red LED turn off. Nothing should happen if the TX is not transmitting.

Step 13: Making the PCB

Again, this step is optional. If you like your circuit on a breadboard, go ahead! If you like it on a perfboard, more power to you!

If you like PCBs, you can design your own, or follow mine.
Either way, I gave you the schematics and the PCB I made. The only advice that I need to give you is that your PCB needs to have a ground plane, and relatively short traces (especially the antenna). This will reduce noise in your circuit, and also cut down on etching time.

To make PCBs the photosensitive way, follow this tutorial

Here are the steps I took, simplified.

  1. Design PCB
  2. Print out design ACTUAL SIZE onto transparency
  3. Cut PCB to size
  4. Sandwich PCB-transparency-plexiglass-flashlight in that order
  5. Wait 7:30.
  6. Put PCB in developer solution
  7. Cover edges in nail polish (optional)
  8. Put PCB in etching solution
  9. Play video games for 7 hours.
  10. Remove nail polish and photosensitive coating with nail polish remover
  11. Drill holes

Step 14: ANTENNA MATH

Some of you might be wondering, "How long should I cut the antenna?"

If you're not asking that, you probably already passed high school physics. For those of you who forgot or haven't gotten there, here is a quick lesson.

V=fλ

For waves, that means velocity = frequency * wavelength

Radio waves travel at the speed of light, and this RF module runs at 433.920 MHz. The antenna should be 1/4 the length of the wavelength.

So,

299,792,458 m/s = 433,920,000 Hz * wavelength

Do the math, and the wavelength is 0.690893386 meters.

0.690893386 m / 4 = 0.172723346 meters

That is about 6.80013 inches.

So there you go, that's how long your antenna should be!

Step 15: Solder and Finished

After you solder all the components, maybe screw in the battery pack and insert the batteries, you're finished!

Congrats on building Kruger's Zippo Remote, and of course your receiver device also.

Go ahead and turn on light switches, or start your car, or launch rockets with this device. Just be safe and considerate to others.

Thank you for reading, and feel free to ask questions, comment, or share what you have done with this remote!

BangBang

Teach It! Contest Sponsored by Dremel

Participated in the
Teach It! Contest Sponsored by Dremel

Remote Control Contest

Participated in the
Remote Control Contest

Hand Tools Only Contest

Participated in the
Hand Tools Only Contest

Epilog Challenge VI

Participated in the
Epilog Challenge VI

Tech Contest

Participated in the
Tech Contest