Apr 032015

UPDATE: Project featured on Hackaday.com! See here
I recently finished up on my Peltier Mini fridge project, and it works great!
It can cool down whatever you want that’ll fit in it — six 330ml cans for example — and can get down to –2.1°C!
Watch the video for a full description and how it works. I gotta say, it’s really cool, excuse the pun!

Continue reading »

Sep 202014

Around a month ago I purchased a Sipik SK68 LED flashlight clone on eBay, for a grand total of $4.04! Shipping took around three weeks which isn’t bad considering it was free, but when I started using it there was a really annoying design flaw.

The Flashlight

It is focusable and runs on one AA 1.5V battery, or one 14500 3.7V lithium battery. The brightness with a 14500 battery is around 300 lumens which is seriously bright. An average incandescent flashlight ranges from 10-20 lumens. It’s a great deal for the price!

The housing is a little tacky, however you can’t complain for the price.

It is equipped with a toggle switch for power and features an acrylic lens for focus. When it arrived the anodised aluminium coating (the paint) was pretty scuffed already, however it’s not an issue.
Here’s an image of what you should expect with one of these running off a 14500 battery, note that the image is not mine and is from here.

The Issue

This flashlight has one very poorly engineered feature and that is its modes.
It has three modes: Bright, Dim and Strobe, but to switch modes the light has to be turned off, and back on. This is a huge inconvenience when you switch it off in the Bright mode, as on the next power cycle it will be in Dim mode. You have to cycle modes to get it back to normal again.
This frustrated me, and I had no need for the other modes anyway, only full brightness. Time to fix it!


The first step is disassembling the flashlight. I started by unscrewing the lens cap, revealing the Cree LED emitter and lens.

Next, the LED “pill” needs to be removed – this holds the driver and LED emitter.
The focusing ring can rotate freely, but the LED pill (the silver Aluminium part) is tight. Unscrew it by holding it to the focusing ring with pliers, and unscrew them both. The pill will unscrew, then just pull the pill out.

At the bottom of the pill there is a circuit board, with markings JX2205. I couldn’t find any valuable info about it online. Simply pop the circuit board out with a screwdriver.

The circuit board contains a boost converter – this boosts the voltage from, say, a 1.5V battery to the higher voltage needed by the LED. It also provides a constant current, which is required for all high-power LEDs.

The Fix

After visually inspecting the board, I spotted two ICs (chips) which could have been the culprits.

One was a six legged IC labelled 601, which turned out to be the boost converted driver chip. Nothing to see here.
The other one which I assumed was a transistor turned out to be our culprit. It had only 3 legs and was labelled 8133A. After a quick Google, I found this info page.
It is labelled “5W three function LED driver IC“. Perfect.

The schematic shows that it includes a transistor between pin 1 (LD) and 3 (Ground) which switches the LED on and off. All we need to do to bypass it is to connect pins 1 and 3 together, bypassing it completely.

After checking the board, the whole outer ring acts as a Ground connector, so we can simply solder on a jumper between pin 1 on the chip to the outer ground, as shown below as the arrow:

After a quick, messy soldering job, the jumper was in place:

Now all you need to do is reassemble the housing and you’ll hopefully be holding with a sweet 1-mode flashlight!
The driver in many Sipik SK68 flashlights and clones will vary from different manufacturers, however if your driver uses this chip then the process should be the same. If not, just search the part numbers of the ICs until you find the culprit.

This project was a great success, and makes this flashlight a great buy in my opinion. Please let me know if you try this!

Disclaimer: If you do this then it is at your own risk. If you break your flashlight I will not be held responsible. Be careful and good luck!

 Posted by at 7:32 PM
Oct 272013

Character LCDs are displays that consist of many character “blocks”, and each block can display a letter, number, etc.
In the world today, there is one display controller/driver that dominates this market, the Hitachi HD44780 driver. I have talked about this in another post on reverse engineering a printer LCD.
HD44780-based character LCDs usually come in common sizes such as 16×2 (16 characters per line, two lines), 8×2, 20×2 20×4, using the 8-bit ASCII character set.
Interestingly enough, the HD44780 chip allows up to 8 custom characters to be defined. These can contain any bitmap data, and can be updated as often as you like.
With this in mind, we can construct basic bitmap images for the display, with a resolution of 20×16 pixels if we have four custom characters per line, occupying two lines, 15×16 if we have three per line on two lines (two are still available but not used) or a 40×8 display if we put all eight on one line.
However, there is a gap between each character so images will have gaps, and symmetry can get messed up if you don’t design it correctly.

I connected a standard 16×2 character LCD to my Arduino via a Proto Shield (excuse the messy wiring) and hacked together some code for the custom characters.
I have created a very low-resolution version of the Hack a Day logo for their Trinket competition. The goal is to put their logo in interesting places. Nobody has done this before, so I figured it would be fun to try out.

Here’s the original image for a comparison
Hack a Day logo

My final logo ended up using six of the custom characters for a 15×16 pixel resolution (3×2 resolution in characters) as there are things in the centre which are split in the character gaps so four characters per line can’t work. I finally had to do it this way after too much trial and error using all 8 characters for a 20×16 resolution.

Click on the images for a higher resolution version.

I think the result turned out nicely, considering what the actual display was designed for.
Here’s a link to the Arduino sketch I wrote up with the bitmap:

 Posted by at 12:16 AM
May 272013

A few weekends ago I got hold of an old broken Canon printer/scanner combo. One thing that caught my eye was the display. It was a 2×20 character LCD (2 lines, 20 characters per line) which is better than some others I have which are 2×16.
Here is an image of my finished example project with this display:

When removing the display I noticed something very interesting in that the display was just a glass panel, and had a ribbon cable attached to it that had only 14 pins. This meant that there was something special with this display in that the display circuitry for driving the display was all built inside the glass, and is called a Chip on Glass display. Normally you find these LCD displays with 60 connections or more, as the multiplexing and driving circuitry is not attached to the glass.

Ok, now here’s why I actually decided to try to actually get this display working in the first place. When I realised there was no circuit board behind the LCD panel as you would normally find with a few driver chips and/or recognisable components, I thought it would be using a proprietary command set for interfacing with an SPI or I2C bus, and would be impossible to sniff and decode the data as the printer was broken and did not power on.
As I counted the pins on the ribbon cable I realised that it had 14 pins. This is a very coincidental number as standard HD44780-based character LCD displays use this exact amount of pins (plus two for the backlight so it’s 16, but here there isn’t one).

I decided to give it a shot.


Looking at the pinout for normal HD44780-based LCDs, the first three pins are responsible for power and the contrast adjustment. I decided to try to wire up these three pins and see what happens. I connected pin 1 to Ground, pin 2 to +5V and pin 3 as the contrast adjustment through a potentiometer from Ground to 5V.

As expected, the first line went solid black which HD44780 LCDs do before you send them data, which proved my theory. I then spent far too much time in actually getting it to work.
Here are my initial connections to the printer circuit board that has the ribbon cable connector for the display:


I tried connecting up the LCD in 4-bit mode using the LiquidCrystal Arduino library, but only random characters and symbols were displayed on the LCD.

I knew this meant there was something wrong with the wiring or something else weird, so I tried connecting it up in 8-bit mode and to no avail. I randomly tried swapping pins around until finally when RS and RW were swapped (pin 4 and 5), it came to life!

Right now I was really happy and relieved that all my time spent was worth it.
I built up a small breakout board so it could easily fit on a breadboard. I cut off a section from the printer PCD with the ribbon cable connecter, glued it to the breakout board and soldered connections from it, then put on a small potentiometer for the contrast adjustment.
Here are some pictures of how it turned out:


I then decided to do a “mini-project” just to make an example of it in action: a temperature display.
I just wrote up a quick program to read the temperature from a LM35 temperature sensor and display the value to the display (in Celsius). This is the image you see in the top of the post.

One more thing that I thought would be interesting is seeing the ASCII character set that the LCD uses. I figured since this display was probably designed for printers or similar consumer devices, it would have some interesting characters built in, and it did!

It has symbols for arrows, some bar graphs, rounded icons and also some Russian (I think?) letters.

Here is a pinout of the display. Note that pins are ordered from left to right:

1 – Ground
2 – Contrast – Connect to 5V for full contrast. Connect via a pot to Ground and 5V.
3 – +5V power supply
4 – RW
5 – RS
6 – Enable
7 – Data 1
8 – Data 2
9 – Data 3
10 – Data 4
11 – Data 5
12 – Data 6
13 – Data 7
14 – Data 8

Overall it was a good learning experience in getting it working, and I really enjoyed it.
Continue reading »

 Posted by at 10:36 PM
Mar 282013

Work out exactly what levels you need to enchant your armour/tools at in order to receive a specific enchantment, calculate all possible enchantments for any item with a certain experience level and calculate the most efficient way to get to a certain experience level. This tool does all of this, and is an essential tool for Minecrafters!

Screenshot 1 Screenshot 2 Screenshot 3 Screenshot 4 Screenshot 5

• Calculate exactly what levels you need to enchant your armour/tools at in order to receive a specific enchantment!
• Calculate all possible enchantments for any item with a certain experience level, and some information on them!
• Calculate the most efficient way to get to a certain experience level.

This app is very useful to all Minecraft players as you can
predict not only what enchantment you can obtain with a certain experience level or actually work out what level to enchant at to receive a specific enchantment, but also calculate exactly how you can gather up that experience level, for example needing to kill 23 monsters or mine 6 diamonds.

This app is very simple to use, all you need to do is enter your enchantment levels and item/enchantment choices and it does the rest for you!

Also, an option is included to switch to older experience levels. Before Minecraft 1.3, the maximum experience level was 50. This feature allows the app to run on these scales.

When Minecraft updates are released, we will update the app to be compatible with the Minecraft update and provide it free of charge. Note that not all Minecraft updates actually contain changes to the enchanting system, so we will not update in those cases.

It is fully compatible with the iPhone 5 and iPad Mini.

** NOTICE : This app is a an unofficial enchantment app for Minecraft, it is not endorsed or supported by Mojang. **

 Posted by at 12:33 AM