This is a blog for people interested in technology. I'll be posting projects and tutorials on things such as Arduino, IoT devices, Electronics, Machine Learning and whatever springs to mind.
I am an Electronic Engineer, sometime mentor at CoderDojo and hacker level programmer. I'm interested in Internet Devices, Machine Learning, Electronics and helping people learn about these things. I have a Ph.D. in the application of Adaptive Control Systems.
I’ve spent the last couple of years delving into a Masters Degree in Artificial Intelligence in which we learned about a wide range of fascinating AI related topics.
My final Thesis focused on denoising in computer vision. I aim to add a tutorial overview of this and other AI topics at some stage. But in the meantime, here’s my arXiv paper on the topic.
Here’s the blurb: A flexible discriminative image denoiser is introduced in which multi-task learning methods are applied to a densoising FCN based on U-Net. The activations of the U-Net model are modified by affine transforms that are a learned function of conditioning inputs. The learning procedure for multiple noise types and levels involves applying a distribution of noise parameters during training to the conditioning inputs, with the same noise parameters applied to a noise generating layer at the input (similar to the approach taken in a denoising autoencoder). It is shown that this flexible denoising model achieves state of the art performance on images corrupted with Gaussian and Poisson noise. It has also been shown that this conditional training method can generalise a fixed noise level U-Net denoiser to a variety of noise levels.
I mentioned at the time that this is an ideal basis for designing your own Arduino based guitar tuner. In real life, musical intruments can have strong harmonic contents, and you want to detect the fundamental frequency. Time based techniques that measure the time between periods don’t do that very well. The advantage of using an autocorrelation based frequency detection method is robustenss against noise and the overall harmonic content of the signal.
So, having got a few questions about how you’d make a guitar tuner. I’ve published a tutorial on that here:
Build you own Smart Electricity Monitor using the Arduino Yun or the Particle Photon.
A nice feature of the project is that the monitoring is flexible and it’s completely wireless (except for the Current Transformer of course), allowing continuous monitoring from a PC or phone and permanent storage on the Cloud.
Measured accuracy was 6% (typical), which is excellent for such a simple circuit. Even better accuracy was observed after calibration.
I’ve been involved in voluntary STEM education in the community through Coderdojo on and off for about 4 years, (more off than on recently though), and projects on Instructables (with over 750,000 views).
Over that time, I’ve seen how kids engage and disengage, how they learn, and how they get frustrated. I’d like to share some of those thoughts here.
I got an Echo Dot for Christmas (lucky me), and having made a Smart Home Thermostat a while ago (you can read about that here), I thought it would be fun and useful to voice enable my Thermostat; but only after I tired of being chastised by Alexa for saying: “Alexa, my name is Inigo Montoya . You killed my father. Prepare to die.”, too many times.
Many internet devices, including the Particle Photon used in my Smart Thermostat, use REST as a central tenet of the cloud infastructure. So for example, if you want to query the temperature downstairs:
returns a JSON format string with the required info.
It’s not too difficult to write a custom Lambda Function to act on the voice commands from the Echo Dot by issuing REST commands. I used Node.js for implemention but Java and Python are also supported.
I’ve written a tutorial (below), to help you to voice enable a REST protocol device.
Detecting the frequencies of signals reliably is something that occurs fairly often in projects from guitar tuners to heart rate monitors, but reliable techniques to achieve this are often beyond the casual hobbiest because they involve digital signal processing.
I’m not saying it’s difficult. It’s not difficult. It’s just that you’d need to have studied DSP to know about frequency estimation techniques and the various tradeoffs to select the right one for your application, and many hobbyists haven’t studied DSP.
Here’s a project on using Autocorrelation to detect the frequecy of a signal. It works in noisy environments and is suitable for many hobby projects.
Here’s a Smart Home Thermostat project based on a wifi enabled Arduino device called Particle Photon. The Photon is a great IoT device; a powerful Wifi enabled MCU that can be programmed in the Wiring language, as used by Arduino, combined with a Cloud Service to manage the programming and cloud connectivity.
What’s really interesting about this project is how it exposes the REST protocol which is central to a huge amount of IoT and Web infrastructure. Basically REST treats all resources as a URL e.g. https://myServer/mydevice/dev1/LEDs/TurnOn
I’ve recently added Alexa based Voice Control to this project (more on that soon).
One of the most popular projects on Google for an Arduino / Raspberry Pi Internet Radio is my project on Instructables. I’ve added that project below. It’s been implemented countless times and I’ve answered many queries on it, so if you have any questions please ask.