Electronics (9)

To Build a SmartWatch… (Part 1)

Having seen the fuss around smart watche, I wondered exactly how difficult would it be to build one from scratch? All the technology usually packed in to one of the current generation of watches is widely available in breakout board form or equivalent, which brought me to another thought:

“How far can I get without building my own board?”

Thus, the Smart Watch project was born; an attempt to build a functional watch connected to a handset (in my case, a Nexus 5) and used to notify the user of incoming messages, etc. using only readily available hobby breakout boards and parts, so that as many people as possible could have a go at beating my designs!

If you, the reader, want to have a go, the rules are thus; The watch must:

  1. Only use readily available breakout boards to build it’s circuitry.
  2. Have the basic functionality of a smart watch, namely, to tell time, and show notifications from a host device.

Oh, and do let me know if you do have a go. I’d love to see the results!

The Parts

Because of the breakout board rule, I decided to base all my buying decisions around the single largest part required. As the display is likely to take up the lions’ share of the front surface of any watch, I attempted to cram all my other components behind that breakout.

The one I settled on in the end was the Adafruit 1.8″ TFT + SD Card Breakout with it’s whopping 128×160 resolution, 5v or 3.3v operation, and integrated Micro-SD card holder, it was a pretty easy choice to make – it gave me the added feature of storage, as well as providing a nice sized base to build the rest of the watch behind.

Conveniently, the stock image on Adafruit is a cat. I approve greatly.

The stock image on Adafruit’s display products is a slightly bemused looking cat. I approve greatly.

Conveniently, the processor board I had been looking to use for this project happened to be exactly the same height as the short dimension on the screen.

The Teensy 3.1 sports an ARM Cortex-M4 processor ( an MK20DX256VLH7 ), has hardware driven SPI, and has integrated USB support and handily runs a port of Arduino code, letting me use the Adafruit display libraries directly, rather than having to write my own ( although this came back to bite me later, but more on that another time ).

A Teensy 3.1! Nifty!

A Teensy 3.1! Nifty!

As this is to be a watch, it’s going to need to be battery powered, ( semi-obviously, I wasn’t keen on running about with a USB cable up my sleeve all the time ), and as small size was the main requirement when I decided on these parts, I tried to pick a battery with the largest capacity for approximately the right height available.

The 400mah LiPo battery from Sparkfun is about the right size, and should provide plenty of power for a working day ( a personal requirement of mine was that this should run for at least 8 hours )

It's a LiPo, what did you expect it would look like?

It’s a LiPo, what did you expect it would look like?

As the battery is a LiPo, it required it’s own charging circuitry, and luckily, the guy over at Pesky Products produces an ‘appallingly small’ ( their words, not mine! ) add-on board for the Teensy, which includes all the required circuitry, as well as breaking out a charge status pin and using the Teensy’s own USB connector for input power. It was perfect.

It's really tiny! Really handy too!

It’s really tiny! Really handy too! JST for scale?

Now that the device has power, a processor and something to display data on, a radio was needed to bridge to the host device. Adafruit once again provide the solution with their Bluetooth Low Energy, nrf8001 breakout which turned out to be the second largest single component to cram behind the screen ( the battery was the largest ) and proved to be quite a pain to mount sensibly.

Eventually I opted to put the board back-to-back with the display breakout, as thankfully, the radio breakout has no components on the back side, so could be simply stuck down with double sided foam ( more on the fun with sticky foam later… ). But even so, the sheer size of the breakout was – and still somewhat is – a problem.

The hilariously large - for my purposes - Adafruit nrf8001 breakout board.

The hilariously large – for my purposes – Adafruit nrf8001 breakout board.

More to come, when I can find the time to type everything up!

Fixing the HTC One X’s WiFi

A year or so back, I picked up an OEM HTC One X – which at the time was the nicest quad-core phone around that didn’t also happen to be a phablet.

Initially, I had no problems with the device, and the Android Jelly Bean update only brought better performance and a nicer UI.

Unfortunately, at some point, my device must have taken a knock causing the WiFi antenna to be less effective, dropping it’s effective range.

Luckily, this was still more than enough to be usable in most situations and I just left it as it was for best part of 6 months, after which a new update was pushed out from HTC.

Unfortunately (again…) the update changed the behaviour of the radio, causing the effective range for WiFi to drop to around a few feet, through walls, or a dozen or so if I had line of sight – thankfully by this stage I had invested in an ‘unlimited data’ plan, so I could at least leave the phone on HSDPA and still connect to the internet that way, and living in a town meant that most of the time I had more than enough signal that way.

Today,  finally my patience ran out, having struggled with this set up for a few months, and wanted to fix the actual issue – antenna replacement can’t be that hard, right?

 Step One – Getting Inside

One of the first problems with this repair is the nature of the device’s construction.

Phone manufacturers have moved away from the nice, hackable, screwed-together cases of the previous generation of phones, and started building ‘unibody’ cases, whereby the outside of the device is essentially a near-unbroken smooth finish.

Obviously this is a much nicer finish, but it does mean that DIY repairs or tinkering is made much harder.

Thankfully, the folks over at TechRepublic have put together a photo set showing exactly how to crack open the HTC One X’s case and get at it’s juicy innards.

Step Two – What Has Actually Broken?

Next, to find out what was the likely cause of my WiFi woes, I scoured the forums over at XDA Developers (who are consistently awesome!) for anyone with similar problems.

Fortunately (or unfortunately, for them and I) many other One X owners have had problems with the WiFi antenna, and the problem is fairly well documented.

Following the [HARDWARE FAULT] WiFi antenna fault post, over on the One X forums, and digging around in the links therein, I elected to have a go at repairing this myself, rather than trying to get HTC to do a fix for me (how hard can it be?!).

Another user in the thread usefully posted photographs of their own modification to the One X to fix the problem, and it was these that I used to fix mine.

Step Three – Crunch Time

Now that I had a much better idea of what had happened, and a good idea of what to fix, I set to work, cracking the case open and soldering a tiny wire between the defunct antenna connection and the antenna plate.

Soldering a tiny wire to a contact on the antenna plate. Note the additional small drops of solder on each connection point on the unibody... just in case.

Soldering a tiny wire to a contact on the antenna plate.
Note the additional small drops of solder on each connection point on the unibody… just in case.

While the user I had been following had only attached a single wire from the top contact to the antenna, in my case this did not fix the WiFi problem, and I ended up attaching both contacts.

Initially I attached only one contact to the antenna, as per the original post, which did not work in my instance.

Initially I attached only one contact to the antenna, as per the original post, which did not work in my instance.

I ended up connecting both contacts to fix the problem, after some experimentation.

I ended up connecting both contacts to fix the problem, after some experimentation.

With this done, I very carefully reassembled my phone, et voila! Working WiFi again!

Look at all those pretty signals!

Lookit Ma! WiFi signals!

Lookit Ma! WiFi signals!

Hopefully, with that, this is the last I’ll see of the signal issues I’ve been experiencing, and I can finally have my phone back to normal.

Pulling Colours From The CheerLights API on Linux

I’m trying to do a new project associated with the CheerLights project every year, and this time, I’m using a Raspberry Pi to pull the last set of colours from the ioBridge server.

I’ll be putting a full write-up about the project itself up on here soon, but I’m still waiting for a few parts for it to be complete, but the bash one-liner is handy in and of itself, so I’ll put it here for now, in case there are others who want to start a CheerLights-based thing this year.

curl http://api.thingspeak.com/channels/1417/feed.json | jshon -e feeds -a -e field1 -u

This handy one-liner returns a nice list of the last 25 colours set by the API.

Kitten Cam Offline

I’ve elected to turn off the kitten camera for the time being, as the kittens (more proto-cats now) are now so active that the camera angles almost never capture them, leading to a rather boring view of our dining room.

If the cats decide that they’re going to sleep somewhere predictable, I’ll reinstate the camera hardware – bandwidth permitting – but for now, both cameras are offline.

Thanks to the many, MANY (oh God so many pageviews!) folks who dropped by to see the kittens, and Kashka, Meeville and Malcolm (the cats), as well as Liz and I thank you all.

I’ll post photographs and updates on their progress here in the future.

Malcolm and I

Malcolm and I – Yes, he’s the same kitten as in the banner!

Arduino Batch Tool v1.1


Arduino Batch Tool 1.1 - Port configuration

Arduino Batch Tool 1.1 – Port configuration

With the addition of tabbing, multiple serial monitors can be instantiated at once – and the batch tool will manage them all during flash operations (disable, write, enable).

Arduino Batch Tool 1.1 - Embedded Serial Monitor

Arduino Batch Tool 1.1 – Embedded Serial Monitor

The tool doesn’t create its own serial monitors, but instead instantiates additional Arduino serial monitors and embeds them in the tool’s tabs.

The stock IDE serial monitor should still work, as long as you don’t try to open the same port in both at the same time!

Release should be soonish, check back in the near future!

434MHz Experiments

In an effort to find a vaguely affordable, 5v two-way radio solution with a decent range, I’ve been attempting to port the simplex RS-485 protocol I’ve been working on to work with pairs of 434Mhz radio transmitters and receivers.

Just a 434MHz transmitter on an ATMega32u4, for testing purposes.

Just a 434MHz transmitter on an ATMega32u4, for testing purposes.

Each node is to have a transmitter and receiver which can be enabled or disabled from code, following the same scheme as the 485 transceivers used on the wired network, and the same protocol can then be sent over wire and wireless alike.

A lashed together transciever made from an Arduino ProtoShield and a 434MHz transmitter/receiver pair

A lashed together transciever made from an Arduino ProtoShield and a 434MHz transmitter/receiver pair

However, at the moment I’m simply experimenting with the hardware to see if I can get a stable, long-ish range link using various Arduinos (Arduinae?) as my development platform.

For the curious – the JST connector on the micro board is for power, and is hooked up such that the normal polarity for a LiPo battery lines up with the GND and RAW pins on the board, hence the odd orientation.

Lions, Tigers and Site Updates, Oh My!

It’s been a while, I know, but I’ve finally got around to updating various bits on here, including and update on my RS-485 projects along with a new page for my Micro-CNC Milling Machine.


I also have uploaded a new app to the Google Play app store, CheerLights Live Wallpaper which pulls updates from the CheerLights Project, changing the colour of the home-screen wallpaper to match the current CheerLights colour (with a latency of around 15 seconds or so).

User warning: CheerLights does seem to like ‘white’ in the early hours of the morning… sadists!

Until next time!

Assembled RS485 Boards

Finally got them all soldered up… only to find I’m exactly one screw terminal block short.



Upcoming Talk – Serial Communications

I’m currently slated to present a talk at the CSLU (Lancaster University’s Computing Society) on serial communications with micro-controllers.

In addition to the talk, there will be a lab session where we will be working on a simple, practical communication scheme using Arduino micro-controllers and these beauties:

11 RS-485 Shields for the Arduino

Arduino RS-485 Shields for the Arduino

All ready to solder up, when I have the stacking headers that is – shipping from Hong Kong takes way to long!

I’ll update when I have more information about the talk, and after the fact will update the ‘Talks’ page on here with the slides, should anyone want to follow along.