Jul 15

OLED from BuyDisplay.com – Mat’s Hookup Guide

Here’s a quick hookup guide and sketch to get the ER-OLEDM032-1W display to work with Arduino. We are going to use the u8g library to drive the OLED.

The ER-OLEDM032-1W is a 256×64 graphic OLED module costing $26.56. White on black. I bought mine from eBay although the Chinese brand BuyDisplay.com sells them directly.


There are two versions of the display, one including the integrated PCB (above) and one without. We want the above one, with integrated PCB. Make sure you purchase the one with the M in the part number.

Here’s a link to the data sheet.

About the part number:

  • ER stands for “East Rising” the manufacturer
  • OLED stands for OLED: “organic light emitting diode”
  • The M stands for “module”. I think. They do two versions, the one with driver board (adapter board) which is this one, and one without the driver board which doesn’t have that M. Confusingly they call the one without a driver board module an OLED module as well. Either I’m wrong or their naming convention is confusing. Or both. Either way you probably want the one with the M, it has an integrated PCB.
  • The 032 stands for 3.2 inch, corner to corner
  • Not sure what the 1 stands for, they all seem to have it
  • The W stands for white, they have other colours (yellow, green blue)

To use the display with u8g library and Arduino you must swap the tiny resistor on the back in position R18 to the position R19. Do this with a steady hand, some really good tweezers and a soldering iron.

ER-OLEDM032-1W Display hookup
swap 0 ohm resistor from R18 to R19 on rear of display
1> gnd
2> 3.3 OR 5 ok
4> level conv – arduino 4 (clock)
5> level conv – arduino 5 (data)
7-13> gnd
14> level conv – arduino 7 (command data select i.e. D/S)
15> reset – this needs to be connected to +5v
16> level conv – arduino 6 (chip select)

For the level converter I used this very cheap module, a clone of something by Adafruit: http://www.ebay.co.uk/itm/Pop-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-5V-to-3-3V-For-Arduino-/381311755120?hash=item58c7f3a370

And here’s a sketch. I ripped this from a larger sketch I have been working on and haven’t tested it, but it should all be about right.

#include "U8glib.h"

#define oledClock 4 // OLED
#define oledData 5 // OLED
#define chipSelect 6 // OLED
#define commandDataSelect 7 // OLED

U8GLIB_NHD31OLED_2X_GR u8g(oledClock, oledData, chipSelect, commandDataSelect);

void setup()
// Setup U8G
if ( u8g.getMode() == U8G_MODE_R3G3B2 ) u8g.setColorIndex(255); // white
else if ( u8g.getMode() == U8G_MODE_GRAY2BIT ) u8g.setColorIndex(3); // max intensity
else if ( u8g.getMode() == U8G_MODE_BW ) u8g.setColorIndex(1); // pixel on
else if ( u8g.getMode() == U8G_MODE_HICOLOR ) u8g.setHiColorByRGB(255,255,255);



/* --------------- */
void drawControl(void) {

** insert logic to draw different things here, e.g. as follows **

// Draw current room light level
if (showlightlevel == 1) {
u8g.drawStr(178, 30, "Currently");
if (lux < 20) {
sprintf (buff, "%i%s", lux, " (dark)");
} else if (lux < 100) {
sprintf (buff, "%i%s", lux, " (med dark)");
} else if (lux < 400) {
sprintf (buff, "%i%s", lux, " (med bright)");
} else if (lux < 10000) {
sprintf (buff, "%i%s", lux, " (bright)");
u8g.drawStr(178, 40, buff);

void loop()
u8g.firstPage(); // START U8G
do { // START U8G
drawControl(); // START U8G

** insert the rest of your sketch that does stuff **

} // END U8G
while( u8g.nextPage() ); // END U8G

Jul 15

From Russia With Cash – barking up the wrong tree

I have no links with estate agents in my life. I don’t like them, I don’t dislike them. As a portrait photographer or in any other capacity, I’ve never had one as a client myself.

Channel 4 last night aired a documentary called “From Russia With Cash”.

It featured secretly-filmed property viewings by a fictional character called Boris who stole money from the Russian government and tried to buy a multi-million pound property for his blonde mistress. Estate agents from the following firms were filmed: Winkworth, Marsh and Parsons, Domus Nova, Chard, Bective Leslie Marsh.

A sexy title, and a very exciting premise for someone like me who cares deeply about the housing crisis we are facing in the UK, specifically the abnormal levels of investment that are seen to push-out genuine buyers (not just financial investment buyers) who want to make their homes in London.

The buyers I’m talking about want to live here perhaps because they want to be near family, perhaps because their job brings them here, or perhaps they have lived here all their lives and want to settle – to live in a property they own. Or maybe they just want a piece of London if they can possibly afford it. We all know they probably can’t.

Within 10 minutes of watching it became apparent the premise of the documentary was flawed. It was aimed squarely at exposing the inherent corruption in the estate agency business. Or so I thought.

Whilst the estate agents in question hardly showed visible outrage or shock on their faces when the fictional buyer looking around said he would be using stolen money, neither did they show any evidence whatsoever of wrongdoing. Read on – I’m not playing ball from estate agents. I’ve no reason to. The reason I’m angry by this documentary is that it was a great opportunity to properly explore and expose the real problems in the industry as a whole. Or indeed in problems with the housing market itself.

The documentary was punctuated by snippets from QCs who spoke hypothetically and said nothing that was untrue, and nothing one might disagree with. There were other narrators who said things such as “just plain wrong” without going into any detail as to why these secretly-filmed agents were wrong. Indeed the after-game statements from the agents themselves were very strong indeed and in my opinion almost completely vindicated their behaviours.

Most of the estate agents came right out and said words to the effect that they were not qualified to advise on issues of money laundering. Some of the estate agents went on to say that this would be done according to the law by legal professionals once the transaction proceeds.

True, some of them said “you will need a good lawyer, I can recommend one”. But does this really class as unethical?

Estate agents are low hanging fruit.

All this documentary showed was that estate agents essentially smiled and nodded during the viewings. There was not a jot of evidence to suggest the agents even considered the viewings to be credible let alone that they might end in a transaction. Of course they didn’t close it off – they are hoping for a sale. That’s what an estate agent does. Should they have laughed out loud at fictional “Boris” and said “no way mate, we aren’t going to help you”? Indeed if they had thought he was credible, what’s to say he didn’t have a car full of Russian men with guns waiting around the corner? A silly suggestion, but my point is that of course the estate agents smiled and nodded. I would too. It was a charade.

Did the secretly recorded conversations on the phone with the fictional character’s agent show any unlawful or wrong behaviour? What I heard were agents explaining that at this stage they wouldn’t be asking questions.

I’m really gutted that Channel 4 have totally missed the point with this. There was nothing to suggest that money laundering law was broken, as explained by a number of the statements given by the estate agents after being contacted for comment. Amusingly Channel 4 chose to show these perfectly reasonable statements in black and white – the irony.

Domus Nova stated “No offer was made and therefore no transaction was in prospect.”

They said “we recorded the viewing on our AML [anti money laundering] log despite not having any ID information from the fake buyer and requested that an offer was made through solicitors registered in England and Wales.”

Sorry Channel 4 – I’m with Domus Nova on that one!

Another agent stated that they have a regulatory duty to perform anti money laundering procedure on the seller with whom they have a relationship, but not a potential buyer who hasn’t even made a formal offer. Just someone fictional who shot the breeze.

Channel 4 – you used to make groundbreaking documentaries. This was far from interesting let alone groundbreaking.

Never let facts get in the way of a good story, that’s what I say.

Again I say, I’ve no reason to defend the profession of estate agents. Again I say: I don’t have a single estate agent friend nor do I have any business connections with estate agents. I am an active campaigner in local community group issues and the hyperlocal movement, and wholeheartedly support the #ReclaimLondon movement.

The reason I’m annoyed by this is that this television programme only served to divert discussion away from the issues that face real London wannabe homeowners.

May 15

Assembled MQTT Lightswitch – version 1

Really quick post showing latest progress of the fancy light switch.

What do you think? A bit too colourful? It is a bit colourful for my liking. On the other hand the colours do add meaning to the buttons:

blue = presets (obvious)
red = all off (haven’t added this to display yet, you can see below there’s a nice space for the words ALL OFF)
green = cycle modes (light, music, heating, weather forecast, electric blanket mode, etc.)

So yes – useful to tell the babysitter “just press green button to change music”.

Lots of revisions to make to the design. I’ll keep you updated!

(Of course, the whole thing fits in a 47mm wall box with fancy screwless brushed chrome metal faceplate on top of it!)


May 15

Open Letter to Nick Clegg: please re-stand at our party’s leadership election

Dear Nick,

“He had to go”; a very British leadership response that shows humility in the face of defeat. Where, in other countries, leaders of defeated parties cannot help themselves but try to hold arrogantly to power, the expectation of a party leader in this situation is to fall on the sword. Swiftly. Graciously. With a good speech.

Any other action sends a message that the public cannot stomach. Belligerence. Power hungry. Out of touch.

Nick, throughout government, and even in the coalition agreement meetings five years ago, you did the right thing. Two days ago you did the right thing. As leader you have dilligently represented members of our party like me, and like much of the electorate, who felt that unbridled Labour was causing huge problems for our country, but that the solution was not an unrestrained Tory government.

The current rhetoric – “the voters have punished us but we did the right thing” – is absolutely the right line to take. Not only is it true, but people are increasingly hearing it, agreeing, and engaging. Facebook has been a vicious place to be over the last few days if you are not Labour. Even the national press has noted this prevelance in social media of intolerance against socialism. Yet there is a new message emerging on social media which, if you listen to the small quiet voices, is one of moderation. Members have joined our party over the last 48 hours in record numbers.

Nick, I am as anti-populist as any true Liberal and I spurn media manipulation. Amusingly, however, I agreed with that silly social media line five years ago: “I agree with Nick”. Finally we had found our voice.

I am writing to you today to argue that this wasn’t just because we found your voice appealing, but rather that you perfectly communicatied the voice which we as members were beginning to find.

I suspect I am unlike the majority of the electorate in that I have found myself agreeing wholeheartedly with everything our party has done since taking office.

One thing I am sure about, though, is this: if the Liberal Democrats go back on our line of reasoning this will be a terrible thing for us. Here is why.

If the Liberal Democrats were to move to the left, it would be seen by the general electorate as a cynical move.

The prevailing view that “Liberal Democrats” have always been a party of “left” values is foreign to me. What is “left”? Socialism? Does this sum us up?

Globally, “austerity” has become a dirty word, and not without reason; fascist governments across the globe use equivalent words that are designed to conjure-up a sense of diligence and national pride. Putting the significance of that word aside, what other course could a country that was in our position take? What course do we take now? Can we credibly support the anti-capitalist movements? Can we find other ways to make the country a fairer place? These are questions for ongoing discussion.

I am in favour of a party that shifts left or right according to our country’s greatest need. It’s our ‘up’ness towards liberal values that persist throughout the shifting political landscape.

The media always seek to push our party to the left or right in their representation. Over the last five years there’s been a feeling our party made an error in its shift: a desertion of the left. The real truth is that the Liberal Democrats is a family that encompasses different opinions on this debate. A true pluralist party. Let us be clear: the view we made an error in moving to the left is primarily rooted in a media wishing to pigeonhole us as part of the only political system they know and understand: a polarised system. The media does not understand us. We aren’t right or left. We are Liberal.

The road most travelled in today’s democracy is to show party members and the wider electorate that “heads have been taken”, that a new leadership will take a party in a fresh direction.

The Labour Party made this mistake after the 2010 election. Their strategy was driven by the need to show voters who they were different to New Labour. Their leader, a man with a huge brain and a big heart for Labour values, was so tightly bound by this narrative that even his communication style became sanitised. His every word checked by public relations officer executives. This was not a problem of ‘sticking to a media brief’ but rather a problem of ‘being choked by a popular political narrative’.

With hindsight we can see this narrative was “Tory-lite”.

We can do better. We are no “Labour-lite” or “Tory-lite”.

No, we must learn from the SNP whose message was positive, and whose candidates were women.

Any soul searching we do now must be an extension of the last five years of soul searching. We are a party of ongoing soul searchers.

But the new message coming from numbers of people joining our membership is that the electorate also have some soul searching to do.

Rather than “entering a period of soul searching” (please let me never hear that on the radio!) we must instead lift our heads in pride.

Nick Clegg, will you please – for members like me who joined the party shortly before the 2010 election and have remained supportive ever since – please stand for re-election for party leadership?

I will personally campaign to ensure that our party sends a strong message to voters that, by deserting us at this election, they have given themselves an even stronger Tory government. That Liberal values matter more now than they ever did.

And I will campaign within the party to ensure that you, Nick, receive the strongest vote of confidence when it comes to the leadership election for our party.

Yours faithfully,

Mat Smith

Apr 15

Multi-zone audio: a discussion of the options

Multi-zone Audio: the last 15 years

Multi-zone audio has been possible in the home for decades now, but until recently has only been an option for the super-house; the high price of systems and installation meant it was out of reach for the average home.

The first cheap device I know of that opened-up multi-zone audio to the consumer market was the SliMP3 (2001), which quickly matured into the Logitech Squeezebox ecosystem of devices and apps. Unlike the old paradigm, where a multi-zone amplifier had to be connected to a central source which was then controlled from each room – thus requiring direct connection from each room to the central unit (i.e. in-wall wiring) plus speaker cable running from a central location back out to the rooms (i.e. in-ceiling wiring) – the Squeezebox was situated in your living room and bedroom and connected to your speakers directly. It used a wireless connection to talk to the central controller, providing access to a central store of music, sync’d or independent control of audio for each zone, internet music, and other bells and whistles.

Sadly Logitech abandoned the product in 2013, but as of 2015 the ecosystem lives on thanks to software players and a surplus of cheap, high quality second-hand audio players which are still traded online.

Sonos filled the vacuum. Their units are more expensive than Squeezebox devices and many have built-in amplification. They are frankly sexier and more user-friendly, but for the audiophile, advanced music cataloger, classical music listener, DIYer, or home automation expert, Squeezebox still has huge advantages over Sonos.

The Problem / The Dream

The problem with the Squeezebox/Sonos paradigm of multi-zone audio is this: although you can play different music or listen to different radio stations in each room, you are limited by what the system itself can do. For example, Squeezebox and Sonos are internet-enabled music players. They don’t play Bluetooth audio or music playing on your Apple TV, they don’t play CDs, and they can’t pump the music from a YouTube video projected onto your wall around the home. Surely this is “The Dream”?

You still need a multi-zone audio amplifier for this. And they cost bucks. Big bucks.

You want

  • expensive hi-fi quality audio in your living room, and some cheap amplifier to power the speakers in your bathroom and hallways?
  • 12 zones of control instead of 4 because your hallway speakers are next to the kids room and you would rather have them off and night?

Forget it. Not without quadrupling your budget from £1500 to £6000.

The likes of Niles Audio who produce a network-controlled amplifier, and Russound who make interesting looking wireless-powered receiver amplifiers amongst other things seem like good options. Again these options do appear to total the thousands, not the (very) low hundreds which I’m aiming for.

And sadly even if you spend £6k+ do you think you can have the bells and whistles? What about

  • controlling audio volumes in each room from your central automation system (e.g. OpenHAB) as well as some proprietary wall panel?
  • fading the music across the whole house when someone calls you on the ‘phone?
  • fading the music down when the doorbell goes?
  • having your house speak to you?
  • speaking to the burglar when he enters to freak him out?
  • [insert your own #homeautomation fantasies!]

Possible Solutions

I looked at multiple source, multiple zone systems for a long time before deciding that I needed to home-brew my own. Here was my thought process:

  • I have some nice Class A amps sitting around. They cost me hundreds in total, not thousands. Why can’t I use them?
  • I can pick up a Class D amp with power supply for £20, for kitchen and non-audiophile zones
  • I just need to find a way to do the switching and mixing of multiple audio sources

Reed relay switches. With a view to making my own Arduino-controlled source switcher I looked at using transistors, relays, or dedicated audio ICs. I gravitated towards the idea of a series of reed relays to switch multiple audio sources. A relay is a cheap and very high quality way to switch an audio signal because it introduces no distortion or load to a circuit. Reed relays are great because they would minimise the audio click you’d otherwise get when using a metal relay to switch from one source to another. Reed relays unfortunately don’t come in complex arrangements such as 2P6T which would be nice, as this would allow you to switch the positive signal path for L and R between 6 sources – but this is not a huge problem as they are only a couple of quid each and so you can buy multiple reed relays.

After thinking about this a little more, it becomes apparent that you can’t just connect up a load of relays and hope for the best: your board design must account for minimising cross-talk. Whatsmore, using relays only solves 1/3rd of the problem: the input stage. You still have to route signals to multiple rooms and if you are aiming for the dream option of fading something down when something else happens, you have to design gating and signal detection. Routing audio to multiple rooms isn’t simply a case of connecting one signal path up to multiple rooms’ amplifiers. Adding more than one load will introduce distortion. And although gating and signal detection is possible with cheap ICs, this is starting to grow into a big project!

Wow… this idea got out of hand quickly.

Using dedicated audio ICs. Whilst it’s possible to find audio switching and mixing ICs, it becomes apparent after a little research that such ICs have rather specific applications, furthermore then aren’t very “black box”; a significant investment of understanding about their inner workings is required to design them into an application. When an ICs application notes is a document 45 pages long, this particular home automation DIYer knows it’s time to consider alternative options!

Making the Dream Happen!

Sorry, dear reader, to drag you through this rather pointless process. I’ve banged-on about my take on the development of multi-zone audio over the years, and let you into my raw thoughts about designing my own system, which amounted to nothing.

If you’ve got this far, however, I do have a great solution for the Audio / Home Automation enthusiast looking for the same things as me.

The ClearOne XAP 800

  • It’s a 12×12 audio switch / mixer
  • No it’s not an amplifier, but it will be the core of your multi-zone automation system
  • It’s cheap – very cheap and highly available second hand (£30 ebay)
  • It’s very powerful
  • It’s rackmount

And here it is:


ClearOne XAP 800 – a 12×12 audio mixer



If the above looks to you like it has worryingly few buttons on the front, then like me you may be thinking… “hmmm, is this thing software controlled?” Yes it is.

And if the above looks to you like it may be far too small to house the numbers of inputs and outputs you would need to power a whole home, then rest assured:



I’ve just bought mine on eBay for £25.

Don’t be put off, it’s called a “microphone mixer” and a “conferencing system”, and whilst I’m sure it’s great for B&Q’s staff announcements, this baby is a dream come true for home automation and multi-zone audio.

Why is it so cool? The product manual will answer that (nicely written too), but here’s my take with a Home Automation hat on:

  • Core use: an audio routing matrix. Basically this provides everything that the most expensive Crestron multi-zone system does, and more. Route an audio source to a single room, multiple rooms, or groups of rooms. Route another audio source to another room or set of rooms. Switch the source or zones from anywhere in the home. Keep going until all rooms have the exact audio you want. Rooms could be set up as stereo zones, mono zones (e.g. bathroom), or even 5.1 theatre zones.
  • Scenario presets. Because of the possible complexity of a 12×12 routing matrix (i.e. assigning different sets of audio to different rooms) you will want to have presets. The XAP 800 supports 32 whole-system user presets.
  • GPIO: interface with your home automation hub via an Arduino. Amazing! Imagine the possibilities:
    • Remotely control the presets, e.g. listening scenarios.
    • Remotely control volume, set EQ Presets, and control audio routing direct from my MQTT wall panels! (Did I mention this thing has digital signal processing?)
    • Page someone from another room, and fade-down the audio if they are listening to something
  • Not only does the unit have GPIO, it has GPIO assignment. There’s even a “GPIO builder window” in the software, meaning that you can assign whatever you wish to the input / output pins.
  • The device supports gating, gating groups, configurable ramps, and a whole load of other advanced stuff when it comes to stopping one sound when another one happens.
  • The device has echo cancellation and some advanced “adaptive ambient level”, which means it can detect noise even when there’s ambient noise in a room. Useful if you want to hook-up some home automation voice commands with boundary mics
  • Rest assured, mic/line level can be configured for each input

Looking forward to getting my new XAP 800 hooked up with some pre-amps, amps, audio sources, speakers, and an Arduino to give it all a whirl!

Jan 15

Pimped-Out DIY Alarm Bell Box

For reasons of general sensibleness and security I won’t go into much detail about exactly how my DIY Alarm Bell Box is configured to work in relation to actually keeping thieves away. Suffice to say: network of sensors indoors and out, differential siren sounds depending on alarm state, iPhone notifications and emails to neighbours (seriously, I will be doing the same custom install for them, they are very nice people. And big. Very very big. 7 foot. And they have dogs. Dogs that eat anything.)

So the thing pictured below looks like a dummy box, it’s sold as a dummy box, but it is far from a dummy box.

It’s sold on eBay for £9.10 including postage from a UK seller (that price is without “dummy LEDs” – I’ll be adding my own thanks), and it does rather fortuitously have a rather sophisticated plastic moulding design inside that allows the placement of alarm sirens, LEDs, internal housing boxes, and incoming cables.

Cheapo alarm sensor casement  £9.10 including postage

The box itself is not IP66 rated, but that’s not a problem because I have bought from Maplin an internal component box and some anti-mould silicon sealant which will do the job of making sure the electronics I’m about to pimp this thing up with stay nice and dry.

So what’s going into this puppy?

Arduino Nano, obviously. And a tiny red W5100 break-out board to provide networking. Oh and this cool super-tiny buck converter to allow me to power the thing over ethernet:



And the cool stuff? Why not:

  • Vibration sensor (for anti-tamper)
  • BMP180 Barometric pressure sensor (we always need to know outdoor pressure, right?)
  • BH1750FVI Ambient light sensor. This is mounted under the blue window, but it doesn’t matter because the serial output needs calibrating to some kind of meaningful scale anyway, so it’s all relative
  • DHT22 Temperature and Humidity sensor. Because it’s wrong not to
  • 4x ultra-bright red LEDs
  • 4x ultra-bright blue LEDs
  • 4x ultra-bright green LEDs
  • 2x cheapo very loud buzzers (Maplin and eBay – £2 each – different pitches)


The astute amongst you will notice I’ve already maxxed-out the pins on the Nano, but LEDs will be in groups of 2, meaning 6 pins. This still gives me Knight Rider options. More importantly it allows me to use a number of signals to would-be burglars.

I may even use these addressable LEDs with driver, if I can be bothered not to program individual LEDs myself.

Naturally the thing will report sensor values on their own individual MQTT topics back to my OpenHAB server which stores all data for historic purposes.

And naturally the thing will respond to commands such as:

  • Make discreet but audible warning beep to potential intruder in back garden when house armed
  • Make screaming noise when house security has been compromised (this of course along with iPhone notifications / emails sent to me and three other nominated contacts. I’m lucky, I have cooperative neighbours who will take care of these things)

Such commands will be triggered in OpenHAB from network of sensors inside and outside the house, including vibration sensors on doors etc.

Will I get a twitter notification when a cat / dog / fox moseys into the back garden? Probably.

And the fun stuff:

  • Using a series of fun flashing sequences, alert me when I walk down the road whether wife, child, or both are home. (FYI I’m not really married.)
  • Using a series of fun flashing sequences, alert me when I walk down the road that I should have brought an umbrella as the forecast shows it’s going to rain in the next 4 hours
  • Using a series of rather serious and angry flashing sequences alert me that I left the window open when I left the house
  • etc.


Jan 15

How Kerning Could Save Your Life

As someone who buys electronic goods from China on a regular basis, I am used to looking closely at the CE logo to check how close together the letters are.

For my buying habits it doesn’t matter. I’m dealing with low-voltage stuff. The worst that could happen is a component might overheat and cause a fire in my loft space melt a bit.


It’s not that the Chinese make dangerous electronics. It’s just that they (I should be specific; “they” means the Chinese Export regulatory bodies) don’t do a great job of checking whether the electronics they do make are safe, or whether they are likely to kill you.

I’m probably splitting hairs.

Recently I bought a job lot of COB – as in “corn on the cob”, or “Chip On Board” – LED light bulbs. Gladly mine were safe by design, but as this video shows I got lucky.


Jan 15

Home Automation PoE with Arduino – in praise of DIY PoE!


First up I’d say in any professional environment there’s no way I’d recommend anything but “proper” PoE, that is to say 802.3af or PoE plus.

For DIY home installations, however, we can do things differently. And I don’t mean “substandard” by any means. Rather we can do them in a more tightly-spec’d way, we can design our own system of distributing power that is equally efficient in terms of power loss, and equally reliable… but far cheaper.

(The reason you wouldn’t inflict this on a corporate environment is not because it isn’t as good, but rather the next guy / girl who comes along won’t spec the replacement power supply properly, and blow something up. Also DIY jobs tend to vary in quality, whereas using a PoE switch and device gives a standard of power distribution quality that can be relied upon. We DIY types do things properly, we are masters of our own home, and we know how to do basic maths, so it’s okay, right?)

DIY PoE with a buck converter - dodgy connections fine for prototyping but we can do better

DIY PoE with a buck converter – dodgy connections fine for prototyping but we can do better


I suppose I would sing the praises of DIY PoE for the home, because when it comes to electronics I love doing things myself.

This isn’t true with computers, I can’t be bothered to faff around swapping RAM out or upgrading motherboards for my own gear any more, although I used to love doing that. Perhaps that’s because in the 90s desktop PCs were the rage and to play better games you had to have the better video card, which required knowing how to change the video card, which meant knowing how to build a computer. I don’t play games any more and I certainly don’t remember the last time I used thermal paste on a CPU. Or maybe it’s because there are no cost gains to be had with DIY computers these days.

Not so with PoE!

Below is a little chat about PoE, and at the bottom of the post I’ll go into what I am using in my wall controller project.

Most computer / network techies already know the basics when it comes to PoE, but this post seeks to shed some light on the choices to be made when considering PoE for Home Automation.

Why PoE? (Skip this if you already get it.)

Most wired network devices also need some way of powering them. Wireless Access Points, network cameras, intercom systems, control panels, they all need power – but if you are already taking a network cable to them, why not use that cable to also deliver power to them as well? Here are two benefits: no need to hire an electrician to extend your ring mains to awkward places, no ugly extra cables on wall-mounted devices to compound the felony.

Certainly in the case of my uber wall control panels, they are being sited inside wall boxes at various points in the house that don’t require power. To bring power to each panel would be a lot of extra cables in walls, and the installation cost would increase hugely. There’s spare capacity in a CAT6 or CAT7 cable, why not use it?

Active vs. Passive PoE

“Passive PoE” is a bit of a misnomer, but that aside – here’s a comparison.

Active PoE is industry standard in business, and involves sending 48V down a network cable to the device. The power usually* comes from the network switch itself, and the device has some special electronics that talks to the switch on the other end of the wire and negotiates power using a series of signals (resistance detections and presentations of loads). It’s pretty complex, and in fact PoE isn’t really one standard at all. (“The thing I like about standards is that there are so many to choose from…”)

The other thing the device must do is step-down the voltage to whatever it requires.

* Many people use mid-span injectors, that’s where the switch doesn’t supply power but you can inject power using a separate device. This gets messy if you have very many devices requiring power, but as a general rule fine for the odd one or two.

Passive PoE is a system that simply splits your ethernet cable at both ends, allowing you to place your own power supply at one end, and then connect your device power to the splitter the other end. No power negotiation – no voltage step-down.

There are shoddy implementations of passive PoE, and there are lovely ones.

A common example is where, instead of hooking up a power supply directly to where your security camera is installed, you can install a splitter at both ends. On the camera end, your splitter has a little power plug that connects to your camera (sinking power), and on the other end your splitter has a socket that connects to the power supply (sourcing power).

Active PoE – pros and cons for home use


  • Higher 48V transmission over cable means lower voltage drop-off = decreased power loss (saving money on bills).
    • NB Passive PoE allows you to supply whatever voltage you like, but more often than not it’s used with existing 12V or 9V device power supplies
  • Power negotiation is great because it means that a device is only allocated the power it requires; where there are more than a few PoE devices, this quickly becomes a sensible idea for all aspects of a system (cooling, conserving energy, etc.)


  • PoE switches are usually expensive (£350+)
  • PoE switches are usually very noisy (bad for the home environment). You can find cheap fanless switches such as the Cisco 2960C-12PC-L or D-Link DGS-1008P/B, but most smaller switches tend to have PoE capability only on half the number of ports (e.g. 8 port switch has PoE on 4 ports).
  • PoE requires your Arduino project OR your network device must support it. Network devices supporting PoE are usually far more expensive.

Re the last point, it’s possible to include some electronics that will supply your Arduino project with PoE but they cost £16 on top of the network shield:

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

From Sparkfun: a network shield with PoE module (the black board that sits vertical on the shield)

£160 for 10 units, not including the network shield!

Or you could get an Arduino with built-in network and PoE, such as the excellent EtherMega. These are wonderful, but this is even more expensive.

Finally you could get your own chip and include this in a project but it’s still about £6 per unit, see Silvertel Ag9800 themal protected 12vDC module.

Passive PoE – pros and cons


  • Reduced complexity for your project. No inherent need for power negotiation electronics, or step-down converters (unless you want to)
  • Far cheaper. PoE passive injectors cost £20 for 8 ports. You supply your own power supply. Of course, no extra electronics at the device end, so it will support most things that come with their own power supply. Your Arduino project may need no special electronics, depending on how you implement it. In my case I added step-down voltage at the other end, read on for more info.


  • Most devices want to run at 9, 12, 15, 18v DC. At these lower voltages, the power loss over cables is significantly higher. This requires thought about two things:
    • Electricity bills – are you wasting money?
    • Power tolerances – will your device work reliably if running from a slightly lower voltage?
  • An extra hub in your comms cabinet = double the number of patch cables = more mess

Which is best?

So which is better for Home Automation? Looking at the Passive PoE cons, I can live with the extra mess, but really how much power is lost over a CAT6 cable?

Joule’s Law

If we can minimise power loss, perhaps we can justify the cheaper option as our cable runs in the home won’t be so long. Let’s take a closer look.

According to Joule’s Law, if we keep the voltage high then DC electrical transmission power line loss will be low. So the first thing we want to do with passive PoE is get the voltage as high as we can (within reason – we are talking low voltage systems here!)

On the other hand, the higher the voltage on your Arduino, the less efficient the conversion down to 5V will be, this is because your Arduino has a linear voltage regulator which is not wonderfully efficient. Also the harder you drive that voltage reg, the hotter it gets. And don’t forget the acceptable voltage input range that your particular Arduino can handle – check the data sheet!

As you can see it’s a trade-off. The best option is to use a non-linear voltage regulator, aka a switch-mode power supply or buck converter. Obviously this is places at the same end of the CAT5/6/7 as your Arduino, so you can benefit from lower power loss over the cable.

Pros of using a separate buck converter to power your arduino over ethernet:

  • Doesn’t get as hot = safer for home installations
  • Doesn’t waste as much power in the conversion down to 5V. Buck converters are typically 95% efficient. Linear regs’ efficiencies depend on a number of factors such as how hard you drive them, but they are generally 50-70% efficient. (I’ve pulled these numbers from the air!)
  • Means you can put a far higher voltage down the line, e.g. some small buck converters can take 30V down to 5V without getting too hot. This in turn means less wasted power because of Joule’s Law.

Cons of using a separate buck converter

  • Introduces another component that takes up space on your circuit board or project board
  • Can introduce EMI (electric noise) to your circuit, which means you need to be careful about how you design your circuit, and how you lay out your circuit board.

For an excellent introduction to buck converters, check out the videos of Julian Ilett or Afrotechmods on Youtube.

For the sake of answering my own question above, “how much power is lost over a CAT6 cable”, I measured 12V down a 20m cable sinking 400mA at the end of it, and the power had dropped 0.9V. This is fine, but it will vary for cable runs, so let’s run at a higher voltage and not use the Arduino’s in-built linear regulator.

In the end I found this lovely little device on eBay. You can pick them up for £8.30 for 5 = £1.66 each including shipping. Search for “Ultra Mini DC Buck Converter”.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Cheap as chips. (Actually cheaper.) Ultra mini buck converter.

Strangely the auction says “12V to 5V Power Supply 7-22V to 5V”. I think that means you can get them in various flavours outputting anything from 12V to 5V. Lower down on the auction it says “Output Voltage: DC 5V”, so that’s okay. I tested them before I hooked them up and the voltage was a very reliable 5V… although I didn’t test with different current draws, only about 550mA.

Incidentally if anyone with an oscilloscope has used these before, let me know how clean the output is.

They also come in 1A and 2A flavours, I plumped for the 2A versions of course. I’m sceptical about driving 2A from it and I don’t plan to do that ever!

This “Fulree” branded cheap buck converter seems like the same thing as one you can get from Sparkfun:

Sparkfun Buck Converter - tiny

Sparkfun Buck Converter – tiny

I’ve no doubt the “Traco Power” branded one, also available from Farnell, is superior in quality, shielding, and design. But it’s £5 and I’m a complete cheapskate. (i.e. I’m making 20 of these things and every little saving will reduce my total project cost from thousands to hundreds.)

You could also buy another type of buck converter, even cheaper but not as compact. It exposes the whole circuit on a board of its own and is based on the LM2596 switching regulator. If you do, make sure to watch Julian Ilett’s warning video on not getting a dodgy version:

The other alternative is to include your own buck converter circuit in your project using components from scratch, but there are some design challenges you must be aware of and the components stack up to be more like £3-4 – not worth it. See this beautiful Youtube vid from Afrotechmods for more info.

What cable to use with DIY PoE?

We don’t normally bother about cable gauge when it comes to CAT6, as performance is more about minimising cross talk, shielding, and data transmission speed – not wire thickness. Well, of course the latter does affect the former, but either way for the pursuit of low cost PoE, we must consider this.

Do get good quality CAT5/6/7 cable – preferably CAT6 minimum for PoE. I measured a single strand of my CAT6 cable. The cable measured 0.6mm diameter on my Vernier scale, which is approximately equal to 23AWG. I’m using LSZH (low smoke zero halogen, aka LS0H) infrastructure cable, that is, rigid non-stranded cable that can bend a few times but is not designed for regular movement. Good for home installation if a little rigid. It cost £100 for 305m reel from a local electrical reseller.

My wall controller project

After a whole load of price checking and electronics research, I decided on this solution for powering my Arduino over ethernet:

  • Standard network switch
  • Cheap 8 port PoE injector (£20 each)
  • Re-use old Dell power supply (free if you have them already)
    • 19.5V = perfect for longer runs
    • High power (90W or 60W), high quality
      • 90W split 8-ways is 11.25W per port
      • Almost certainly enough for your project, unless you are powering motors or lights
      • P = VI. My project uses max. 450mA at 5V, so that’s 2.25W.
      • 2.5W. Don’t forget to do a back-of-fag-packet calculation for power loss and include a lot of headroom. Include line loss, and assume 5-10% loss in the buck converter
    • Chop connector off and replace with 2.1mm connector
  • Fulree buck converter at Arduino end. Connect both browns to GND and both blues to IN (check wiring standards and verify this yourself!)
  • Split ethernet cable at Arduino end and use PCB block connectors. I may develop this to route power through the W5100 board in the future, but right now this works for me.
  • Connect output of buck converter to Arduino’s 5V connector.

I do have a PoE switch at home, but given the amazing cost benefits of the above option, and the fact it makes a big noise, I’m not going to use it for my project.


Jan 15

The spec for the ultimate home control panel

A number of months ago I became obsessed with the idea of controlling my room lighting using knobs in the wall. Crazy, I know 😉

Seriously though, most lighting automation systems do not use rotary controllers (i.e. knobs), but rather you have to keep your finger on a button until the desired light level is reached. Isn’t that so 1990s? Knobs are the way forward. Worse still, many only let you select “scenes” without even controlling individual light level. So I set about making my own digitally controlled lightswitch. The process has been one of research and learning new skills. Soon enough I stumbled upon the ultimate way for things within the home to communicate with other things: MQTT.

Here are my design goals for the ultimate home control panel for each room.


Use physical buttons and lights NOT touchscreen. I find touchscreens great for web browsing but when I want to control lights and volume I need an accuracy and responsiveness that can only come from;

  • tactile switches with visual feedback
  • rotary controller knobs
  • display screen showing levels as percentage (i.e. numbers) for fine adjustment

Look sexy. DIY metal faceplates with push buttons conjure-up images of 1970s style control panels. Disabled toilets. Hobby aeroplane remotes. I’m going with brushed stainless steel faceplates with no visible screws, smaller LED-integrated tactile buttons, matching brushed steel knob.

Use numbers on the display. In the increased sexification of home automation, things have become too touchy-feely. Having controlled lights and music from my iPad, I get annoyed if you press in slightly the wrong place, or need to make that super-fine adjustment. Also I get annoyed by the ubiquitous slider and the lack of information it provides the user.


  • The faceplate must run at low voltage, requiring no special electrical certification
  • Connected with ethernet (CAT5, 6, or 7)
  • Powered over the same ethernet cable
  • Fit within a back-box readily available in shops: 47mm depth max


  • Use “Scene” buttons to quickly select the lighting mood in a room
  • Dim individual lights in a room to create your own scene
  • Quickly cycle between different lights in a room
  • Control music volume and see what’s playing (track title and artist)
  • Similar to light scenes, there should be audio “favourites” (i.e. radio channels, playlists, shuffle mode for a given genre, etc.)


  • The unit is designed for a range of functions, but can be expanded later to incorporate more. e.g. lighting and audio modes have their special uses and displays. As it’s based on Arduino, the sketch can be updated by USB later.
  • “Thing” settings (i.e. how many lights in a room, the name of a light in the room, the name of a scene for a given room) should be queried from a server and downloaded to volatile memory at startup. These things are not stored in the unit.
  • We should be able to press an “update” button to pick-up the latest settings. Home automation installers and users change their minds all the time!


  • “WAF” is an offensive phrase used in #homeautomation talk. It stands for “wife adoption factor”. Maybe “GAF” – grandparent adoption factor? No – that’s swapping one prejudice for another. “HAF” will do nicely – human adoption factor. The controller must be the perfect balance between powerful and usable. I don’t mean “powerful for the geek, usable for the granny”. I mean “equally powerful and usable for both”.
  • This means: consistency of display and immediate access to primary functions. No menus, no prompts! Placement of buttons should be intuitive.
  • All light should cease when it hasn’t been touched for a while. No lights in the middle of the night!

The solution I’ve settled for is a “mode cycle” one. Like old digital watches. The mode button is set apart from other buttons and placed near the icon displaying the current mode. All other physical controls depend on the mode in question, and their function is intuitive given the placement.

Consistency comes from the unit defaulting back to a “primary” mode after x seconds of not being touched. The display dims appropriately.

Here’s a brief demo of the progress so far – January 2015:

Aug 14

Arduino and code efficiency

The thing I love about programming for Arduino is that, unlike programming in most other environments nowadays, you are forced to think about memory footprint, memory allocation, and how your code relates to the hardware.

That’s great for people like me who don’t really consider themselves coders at all, because “perfect code” is less about something that’s mathematically beautiful and conceptually elegant, and more about getting the job done. In fact the code is often more efficient if you spell it out line-by-line in a bunch of nested if statements, rather than abstracting it into a pre-written processing function that may do the job in fewer lines of code but end up costing more in storage space because the function itself is general purpose.

Take for example this code. Horrendous to mathematicians I’m sure, but lovely for electronics engineer types;

void callback(char* topic, byte* payload, unsigned int length) {

Serial.println("Volume Callback");

if (length == 1) { output = payload[0] - 48; Serial.println(output); }
else if (length == 2) { output = ((payload[0] - 48) * 10 + (payload[1] - 48)); Serial.println(output); }
else if (length ==3) { output = 100; Serial.println(output); }


In the above you can see I have a byte array, each location in the array is an ASCII representation of a digit that forms a number. I know that number coming in from the payload will only ever be between 0 and 100, AND have considered in what situations that might not be the case and what would happen. So it will have a maximum of 3 digits. Indeed if it does have 3 digits the number must definitely be exactly 100. And so rather than using expensive string to integer manipulation functions which add 2k (yes, 2k!) to my sketch it is cheaper to write it out in if statements that calculate it in a “units – tens – hundreds” way working on the basis that the characters 0 to 9 are represented in the ASCII table consecutively.

So oftentimes it’s more computationally efficient to write more lines of code than fewer, which is great for idiots like me who tend towards wanting to put everything in terms of flow charts and IF statements!

There are so many examples of the above I’ve discovered so far, e.g. using a switch statement, whilst looking a little clearer on the page, is worse than using IF statements unless you have over at least 4 cases. The exact detail depends on your sketch and how variables are stored of course.

Arduino helps us by showing us how many bytes your sketch is at compile time. Great for keeping an eye on things as you progress your project.