Skip to main content


Arduino Sliding Gate Controller

As a part of my budding home automation system I am planning on adding some monitoring and control functionality to my home gate. The gate is of the sliding variety, and to be specific is the Centurion D5 which has a nice controller board with several good (and probably quite common) features. The datasheet is here.

I am using my ESPLive (ESP8266) board (without the mains power supply) and hooking it directly to the 12 V battery supply available on the controller board. I am in the process of implementing firmware with the following features:

MQTT over WiFi for monitoring and controlOutput to trigger the gate to fully openOutput to trigger the gate pedestrian openMonitor the gate's battery voltage (when it's low on charge, needs replacing, etc.)... it really sucks having a power failure and being stuck outside!Monitor the gate status LED to determine whether the gate is closed, opening, open, closing, faulty, etc. All of the features are pretty straight forward, requiring simpl…
Recent posts

ESPLive v2.0 : The "ultimate" mains connected ESP8266

I decided that although there are many ESP8266 boards out there these days - and even some which are "mains connected" such as the fantastic Sonoff boards - none really fit my requirements for flexibility. As a result, the ESPLive was born.

The ESPLive is simply an ESP8266 based ESP12F module with all of the pins broken out and a few nifty features. Of course, the most obvious feature is the mains power supply... I opted for a MeanWell IRM-02-5S to supply 5V at 2W (for relays and other power hungry devices).
I like the NodeMCU way of flashing and so I added a couple of transistors so that I never have to push any buttons while developing firmware. Since there is only one ADC on the ESP8266, I also added an analog multiplexor IC which lets me switch between two inputs.Through selectively soldering only certain resistors and jumpers it is possible to have 2 separate inputs, one of which has an optional voltage divider for 3.3 V or 5 V range (or more). The second input is direct…

Terminating "High Speed" Photodiodes

Terminating a photodiode (PD) is vital to it's operation. I have been using high speed biased photodiodes from ThorLabs and I realized, to my dismay, why they weren't as sensitive as I had hoped! In this post I'll explain why, and how I fixed the problem.

Biasing a photodiode is critical if high speed operation is desired. The cathode of the PD is connected to a DC bias which is typically 5 to 12 volts. The anode is then usually connected to some sort of amplifier (ideally a transimpedance amplifier). In my case, I wanted to use a Mini Circuits wide-band, low noise amplifier which has a 50 ohm characteristic input impedance.

The assumption was that the photodiode would develop a small voltage across the input impedance which is then amplified by > 10 dB. I decided to crack open one of the amplifiers and realised why it didn't really work as I was hoping. This is a photo of what was inside:

I had fallen into the trap of assuming that the input impedance would be a re…


I have been using the constant current version of my LDBiasDriver and I felt that it would be handy to be able to control the current, monitor it, etc. via a PC. To this end, I designed and have so far had the PCB manufactured for my "LDBiasController".

This new board provides a variable resistance to two LDBiasDrivers as well as monitors the current using an Arduino Nano. I plan to create a serial protocol to do the control and monitoring but I will create a MATLAB or C# based GUI.

In terms of specifications, initially I was going to use a digital potentiometer but the cost of versions with more than 256 steps was prohibitive. I considered (and even designed) a version with two pots to create about 16 bits of resolution but it would have been non-linear and thus hard to control accurately. In the end, I went with the MCP4726 Digital to Analog Converter (DAC) which provides 12 bits of resolution from 0 to 2.5V.

I also wanted an external input capability which can be switched…

Simulink 2x1 MIMO Channel Estimation Test

I have been working on a MATLAB Simulink based Alamouti testbed for USRP software defined radio. I am using the Ettus B210.

I have implemented a very simplistic channel estimation scheme whereby I transmit each of the four QPSK constellation points on each antenna consecutively. I then receive using a single antenna, and after all of the frequency and phase synchronisation I divide what was received by the ideal constellation leading to a simple H-matrix.

Check out this video where you can see the pilot constellation change as I move the antenna! Awesome!

Thoughts on the ESP-Live

I received the raw PCB's and some of the components for the ESP-Live I wrote about a few weeks back. I have built the first prototype and I have some thoughts and ideas that I wanted to share, as well as a few photos!

Here's the GitHub link:

I have not yet ordered the CH340G USB-UART converter chips. It seem that one can only get these direct from China, which is a bit of a hassle with shipping. :( For the moment, I have simply connected the RX, TX, RST and GPIO0 pins to one of my Quark One's and I am using the bootloader on the Quark One to program the ESP-12F module.

While playing around with this setup, I think that I will not bother with the CH340's and do a fresh design... The CH340's are really cheap compared to FT232's, but I think that for a little bit more money it's worth using a proper microcontroller with USB instead - much like my original Quark One.

Why use a microcontroller, you ask?

By using a cheap mi…

Custom VCSEL Bias Driver

I have been working on a laser diode bias driver for a while now, in line with my latest research project. ThorLabs recently released some great looking bias driver "chip" things, the MLD203 series. I felt that I could use these on a custom board to modulate laser diodes and VCSELs using my USRPs.

In the image above (and below) you can see the two red PCBs which I have designed and constructed. The bias driver (left) connects with an SMA connector to a Bias-T from Mini-Circuits to to TO-Can laser diode adaptor PCB which is visible on the right. I have designed everything to be low noise and high frequency compatible.

Unfortunately, I made a mistake with the laser diode footprint and so I had to mount it upside down! I soldered a SMD capacitor at the point where the little red wire connects to the diode to minimise adverse high frequency effects.

Check out the Git repo for this and more: