Marshall Lee Bass-Axe

For my first cosplay I selected something that is easy and fast to make. All the pieces were first carved out of thicker (8 cm) insulation foam, thereafter sanded with sandpaper and colored at the end.

Rough shape of the Axe head.
Axe head and handle in final shape and sanded, ready to be glued together. Short plastic rod was used to better link both parts together.

Before painting, the foam has to be coated with protective coating to eliminate damage to the foam done by used paint. I did this using two layers of the wood glue. Other thing can be used as well.

Guitar headstock in the shape of the skull.

For the skull that represents guitar’s headstock I used ball made ​​of Styrofoam. First it was carved out to fit the guitar handle and then painted it with white color. Details are painted in black.

Final product. All the pieces put together and painted.

Guitar strings are made of the rope painted in black.

Programmable ATtiny IR remote

My Nikon DSLR camera does not have any internal programmable mode for continuous shooting (intervalometer) or socket in which wired remote shutter could be plugged in. The only way you can make exposures longer than 30 second is using IR remote. If you want to take only a few pictures, this is not a problem. But when you want to make a time lapse few hours long or photograph a meteor shower for whole night, this is no longer convenient. Especially when you want exposures to have the same length and the same interval between them, this can be very challenging.

That is why I took one of those cheap IR remotes and upgraded it using small ATtiny85 microcontroller. Its task is to simulate button presses depending on the settings of the DIP switch. The element in use consists of five switches. The first one (1) is used for selecting the operation mode. When switched ON continuous mode is selected and long exposure mode when it is turned OFF. Other four switches (5-2) determine the length of exposure or interval. You can change the settings during exposition, but they are not taken into account until the next exposition.

Front panel with ATtiny, DIP switch, MOS N-FET and power plug

Long exposure options – DIP switch 1 is set to OFF:

  • DIP switch 2 ⇒ 10 min
  • DIP switch 3 ⇒ 5 min
  • DIP switch 4 ⇒ 2 min
  • DIP switch 5 ⇒ 1 min

Total maximum time for a long exposure, when all switches are turned ON, is 18 minutes.

Continuous shooting (intervalometer) mode options – DIP switch 1 is set to ON:

  • DIP switch 2 ⇒ 120 s
  • DIP switch 3 ⇒ 60 s
  • DIP switch 4 ⇒ 30 s
  • DIP switch 5 ⇒ 10 s

Total maximum interval between two exposures in continuous shooting mode, when all switches are turned ON, is 240 seconds.

Back panel with voltage regulator and original IR remote

Button presses are simulated using MOS N-FET 2N7000 transistor (see the bottom image for wiring diagram). When pin 1 goes to HIGH the transistor opens and concludes an electric circuit that provides power to IR remote circuit.

Wiring diagram

The similar thing can be build without the whole IR remote circuit using only IR LED diode and microcontroller as output wave generator.

Gelish UV light lamp

My sister brought home some fancy hight-tech Gelish Gel Polish that must be cured using a very expensive UV LED lamp. I was interested in how the gel work but could find any description. To ensure proper application of the the gel you have to follow more than 10 steps and apply different kind of polishes and cure them with this lamp. The interesting part for me was the lamp itself. It does not look anything special just an 10×3 array of 30 LEDs and a timer switch. Unfortunately I was not allowed to open the device because it is still under warranty and sister would not be happy if anything should go wrong in the process.

Gelish UV light lamp

I presume that the circuit board inside has very simple design. To replicate it you need a bunch of LEDs, some resistors to limit the current through them and an optional timer circuit. My intention was precisely that, to make my own cheap version of the original lamp. The result is this simple 8×4 array of 32 diodes.
The beam of light that I get is much narrower, so you can cure fewer nails at the same time. In terms of usefulness, she says the lamp is doing the same thing as the original. Bedsides that I can use the lamp in the process of making my own PCBs using photo sensitive copper clad board.

Simple UV light lamp

Decoding outdoor wireless weather station sensor data

Recently acquired USB TV tuner and antennae that I built for it had to be put into use. For some time it is fun just to listen to nearby radio and aircraft communications. In addition, I wanted to do something useful. I thought of an old weather station that is constantly (every 30 seconds) sending data to an indoor unit on a 433MHz frequency.

Indoor and outdoor weather station unit

The 433 – 434MHz ISM band is full of various short messages from different commercial gadgets. To figure out the exact frequency of my wireless sensor I put it close to the receiving 400MHz discone antenna (for ensuring the strongest signal), and observed the spectrum of the band using SDR# software.

Spectrum of the signal observed in SDR#

After obtaining the frequency it was time to record signals at different sensor temperatures and settings (audio sample 1, audio sample 2). The channel switch does not really change the working frequency but only changes a few bits in data stream as will be shown below.

Entire signal sent by outdoor sensor

Recorded audio was imported and processed by Matlab’s function wavread and then plotted using plot function. The received signal consists of wake up pulse followed by a pause and eight or nine data bursts. The last data burst varies in length for a reason that the entire signal is always the same length.

One of the data bursts

The picture above shows one of those data bursts. While watching this picture I started thinking about the way how to decode the signal. The first thought was to read signal peaks as ones and wider gaps between them as zeros. Processing few different temperature readings gave me following bits:

  • 18.7°C 1110101101110101111111011010101101010101011
  • 12.6°C 111011101110101111111101010101010110101011
  • 7.0°C   11010101101110101111111101111010110101011
  • -1.9°C  110101011011101011101010101010101101011010101011

It looks like the message is not decoded as simply as I hoped. Something else must be behind because the messages have different numbers of bits. After some time and mapping options I found the correct one. Bits with value 1 are mapped to 0 and set of bits 10 as 1. This gave me much better results, messages that have the same bit lengths:

  • 18.7°C 00110100110000001011101111100
  • 12.6°C 00100100110000000111111011100
  • 7.0°C   01110100110000000100011011100
  • -1.9°C  01110100110011111110110111100

That way I was able to group bits into meaningful groups. Detailed process of the decryption will be shown for the temperature values 18.7°C and -1.9°C. For better visibility message must be first broken into seven groups.

Graphical representation of the protocol with digits representing a number of the bits.

0011 01001100 000010111011 11 1 0 0 equals to 18.7°C

  • 0011 this part changes for every different temperature reading, probably some kind of CRC/checksum code, have not yet manage to decipher it
  • 01001100 random sensor serial number, it changes every time your restart the sensor
  • 000010111011 converted from binary to decimal gives us 187, divided by 10 returns the correct value of 18.7
  • 11 channel number, possible variants are 01 for CH1, 10 for CH2 and 11 for CH3
  • 1 battery indicator, 1 battery OK, 0 low battery
  • 0 indicates the sensor normal working mode. You can force it to send data by pressing TX button on it. At that time this bit will change to 1, telling the indoor unit that you forced the sensor to send data and maybe changed the channel setting.
  • 0 tail constant every time

0111 01001100 111111101101 11 1 0 0 equals to -1.9°C

  • 111111101101 is the two’s complement of the sensor reading, first -1 must be subtracted returning 111111101100, this is then inverted to 000000010011 and converted to decimal values giving 19. Taking into account the sign and the division factor 10, the result is -1.9

All the calculations were done by hand. Next possible step is to write a Matlab program that would automatically convert recorded audio to sensor readings. Few more images can be found in gallery.

Circuit board inside outdoor sensor unit

Simple Home automation using Arduino

I decided to upgrade the previous circuit with additional capabilities and intelligence. Using IR remote controller, relay and clock module it can be transformed into simple home automation system. Whereas the previous Arduino chip was lacking required ram space and I/O pins there was a need to add another one to the circuit board and to establish the serial link with the previous one that is managing the LCD display.

First thing needed was to figure out what HEX values the remote in use is producing to communicate with the device. I am using a remote that was bundled with USB TV-tuner, which is mainly used in another room. My remote has a total of 29 buttons however I am only interested in the fraction of them, here are the HEX values in use obtained for my remote.

  • A05F807F – Power
  • A05F906F – Num 1
  • A05F50AF – Num 2
  • A05FD02F – Num 3
  • A05FB24D – Display
  • A05FE817 – REC
  • A05F18E7 – Stop
  • A05FB847 – Fwd
  • A05F38C7 – Back
  • A05F6897 – Play/Pause
Test setup for testing IR receiver with remote.

The next thing to figure out was how to control the 8-relay module. Every relay in this module has 3 screw-type pins to control the high voltage AC current named NO(normally closed), NC(normally open) and COM(common connection). The 220/110V AC input must be connected to COM. The switch inside the relay is moved by the electromagnet that is indirectly connected to one of the Arduino ports. When the relay is turned off the COM is connected to NC and when turned on connected to NO. I am using the relay with revered logic which means that the relay is turned on when port is set to LOW. For every relay there is an on board LED that shows if it is active. The module has additional safety factor as all the relays are optically insulated, this means that all Arduino really does is turn on an LED inside an optocoupler, and that turns the relay on. So far I am using the relay module for switching the lights in my room, further applications are on the way.

8 – Relay switch module with two of them active. Top utp connector cable leading to Arduino, bottom high voltage cables leading to light bulbs.

Another novelties on the board are DS1307 RT Clock and piezo buzzer. Clock and buzzer together, combined with way to turn on/off the light bulbs in the room can be used for a brutal alarm clock.

Updated circuit board, clock module in the top-left, IR receiver in the bottom-left, UTP connector cable to relay module in top-right, piezo buzzer in bottom-right corner and additional Arduino UNO chip in the middle.
Wiring diagram – click on the image for full resolution.

Further things to add:

  • Sunrise alarm using light dimmer
  • Motion detection

Useful links:

Collimating a Laser collimator

Ever wonder if that inexpensive laser collimator is really doing what it should? I never really trusted them, therefore I put mine on test one day. The first thing I had to build was V-shaped holder made out of wood, to prevent the collimator from moving around during tests.

V-shaped holder

Next I nailed the holder on to the wooden table to stabilize it and put the turned on collimator in v-shaped notch. 5 meters away (farther is better) where the laser beam was shining on the wall I attached a white paper for markings. Now rotate the laser collimator and see if the beam is making a circle or it stays a dot. If it stays in one place, your collimator is in perfect alignment. As you can see from the markings on the picture, my laser beam was making a circle. Using the two small allen adjustment screws at the back of the collimator move the beam so that it is pointing in the center of the marked circle and rotate it again. Repeat this until the beam remains in place while rotating the collimator. It took me about 5 iterations.
That’s it. You have successfully realigned you laser collimator, now use it with confidence for aligning your telescope optics.

Black markings on paper clearly show that my laser beam was making a circle.


V-shaped holder in action, preventing the collimator to move around.