Matt's Projects

Sometimes I make things


Mini Project

Mini Project: Fake Neon Signs

Neon signs are really cool, but they are also really expensive and big. I decided to develop a method to emulate the effect of neon signs while being cheaper and more accessible to the average person. In total, the project cost less than £20.

Continue reading “Mini Project: Fake Neon Signs”

Mini Project: Reverse Engineering the Samsung Galaxy S2 Touch Screen Interface

This is my last year at university studying for my Masters degree, hence the lack of posts this year – I’ve been pretty busy. My final project involves working with touch screens to improve the signal quality through hardware based processing and the more data I can get, the better. My hope was to intercept the touch screen on a mobile phone to see if I could get to the raw data. I knew that it probably wouldn’t work out that way because most of processing would probably be done by the touch screen controller (TSC) but I thought I’d have a go anyway – a challenge is always fun.

Continue reading “Mini Project: Reverse Engineering the Samsung Galaxy S2 Touch Screen Interface” Stats Scraper

Something that has been annoying me for a while is that there is no way to download your stats from the website!

So I wrote a script in python to allow you to download all of your stats into a spreadsheet. Here is the guide.

Basically, you need to provide the script with an example XML Http Request (XHR) where the website is pulling stats data from the server. From this XHR, the script then reconstructs a new XHR to get all of the data.

Mini Project: Porting RFM69 Library from Arduino to MBED

TLDR: Here is an RFM69 OOK library for MBED.

For an upcoming project I am using the RFM69 module by HopeRF.

The RFM69HW is a transceiver module capable of operation over a wide frequency range, including the 315, 433,868 and 915MHz license-free ISM (Industry Scientific and Medical) frequency bands.

Continue reading “Mini Project: Porting RFM69 Library from Arduino to MBED”

Mini Project: 555 Timer Servo Control

While I wait for parts to arrive for another project, I have decided to fill the time by building a few common circuits that I have never really investigated, even though I know the theory.

One thing that I have never really investigated is the 555 timer chip, despite being a very common “jelly-bean” part. The circuit I built allows a you to control the position of a servo motor by turning a potentiometer – ie, a 50% turn of the potentiometer would result in (approximately) a 50% turn on the servo.

Continue reading “Mini Project: 555 Timer Servo Control”

Mini project: Headphone Music Controls

It’s been a long time since I posted my last update. MIT is keeping me busy – with quizzes every week for the last 5 weeks, as well as the usual helping of classes, problem sets, group projects, labs and reading.

For spring break I flew back to London to visit friends and family, so most of my free time was dedicated to catching up with people back home. But I did find some time to work on a mini project.

The idea was to build a small device that would plug into a phone’s 3.5mm headphone jack and allow me to control music by pressing buttons on the device (play/pause, volume up/down, next/previous track). I actually came up with this idea with a friend at a hackathon in early 2015, but didn’t act on it until now.

This idea isn’t really new either – it’s pretty common for this to be integrated into off-the-shelf headphones. But my headphones don’t have this, and I like my headphones.

With a little research I was able to uncover the Android specification for devices like these.

A colourful example of an implementation for Android. Source.

Continue reading “Mini project: Headphone Music Controls”

Mini Project: LM317 Power Supply

The first power supply I had was a 1.5 amp, 6-voltage power supply. It could generate 3V, 4.5V, 6V, 7.5V, 9V and 12V. I always thought these were strange voltages – why not supply 3.3V and 5V?

Continue reading “Mini Project: LM317 Power Supply”

Mini Project: Wire Spool Rack

I store most of my components in drawers on my desk – passive components, microcontrollers, ADCs, motor controllers, connectors, switches etc. and even some small motors. Larger things – circuit boards, large motors, mechanisms – go in a box under my desk. But wire is always difficult to store in a tidy way, so I decided to build a wire spool rack!


The design is pretty simple, and it’s made from things I had in my shed. The cylindrical beam is from an old wardrobe, there are four screws and one nail.

The pin can be pulled out by hand to release the bar.
The pin can be pulled out by hand to release the bar.

The pin is just a nail with the point filed away, and is there to stop the bar from falling out, along with the spools of wire. Pulling the pin out releases the bar, allowing spools to be added or removed.

Now I can mount this on the underside of my desk and have spools of wire within reach at all times!

Mini Project: Infra-red Repeater

As part of a larger project I’m thinking about, I wanted to see how easy it would be to make a TV remote control repeater. What it needs to do is listen for a TV remote control command, learn the command and then repeatedly send out that command.

Only 3 external components required. (I used four).
Only 3 external components required. (I used four).

For the processor I am using an Arduino Mega 2560 rip-off with the Arduino bootloader removed so that it is effectively just a development board for an Atmega2560. This has far more pins than I need, but it is very suitable for development. I am programming it using Atmel Studio 6.2 in C via an AVRISP MKII.

On the input I am using a TSOP31238 Infra-red receiver module. There are thousands of variations of this type of component, but this one has three pins:

GND Connect to ground
VCC 2.5V-5.5V
OUT Outputs low when there is a 38kHz IR signal incident on the receiver, otherwise outputs high

Therefore, it is easy to detect when an IR pulse is sent from a TV remote by listening to the output pin and waiting for it’s voltage to drop.

On the output, I am using an IR LED connected directly to the output of the Atmega, in series with a 156Ω resistor (actually a 100Ω + a 56Ω). This limits the current to about 20mA.

The code is relatively simple in concept. When the processor detects the first falling edge on the input pin, it starts a timer. Each time the input pin changes state, it stores the value of the timer in an array and resets the timer. If the timer overflows, this is taken to mean the command is over. This leaves us with an array of integers indicating how long the signal must be low or high.

The input from the IR Receiver module. The signal drops low when there is a 38kHz signal incident.
The input from the IR Receiver module. The signal drops low when there is a 38kHz signal incident. (Timebase in milliseconds).

The processor then uses the same timer to activate the output pin with the same timing as the input signal by reading back the array of integers.

There is a slight complication in that the output signal has to modulate a 38kHz square wave. This is achieved by using another timer to generate a 38kHz signal, which is then outputted to the LED only if the other timer indicates that the output should be high.

The output from the processor. The red blocks are actually 38kHz pulses.
The output from the processor. The red blocks are actually 38kHz pulses.

It then sends the signal once a second.

This works very well and it can easily copy the signals from my TV remote and repeat them to the TV. The only issue at the moment is that this method of storing the pulses takes up a relatively large amount of space – approximately 300 bytes for one command.

Create a free website or blog at

Up ↑