Using the Surface Go for Presentations


I didn’t plan to use my Surface Go for my presentations at the Black Marble Architecture Forum. It’s just that my Azure Function demo worked on the Go, but not on the Surface Pro that I was intending to take to Leeds. Something to do with Visual Studio needing an upgrade. But of course I didn’t have time to do that. So, I headed out to the venue, hoping that someone would have a way to get video out of the single usb c port that the Surface Go is fitted with.

Turns out that they could connect me up. The device above, from Dell, worked wonderfully. I reckon it is a perfect companion to the Go. It gives you three different kinds of video, VGA, DisplayPort and HDMI, along with USB, wired networking and a usb c port pass through. The cable is coiled niftily inside too. I plugged it into the Surface Go, got a solid video signal out into the projector and I was away.

Everything just worked. I had PowerPoint, Visual Studio Community edition and a bunch of browsers I was hopping between. Running up the Azure Function demo in Visual Studio just worked, and at a reasonable speed too. I even managed to use my old Surface Pen to remotely change the slides (although the battery in this is a bit tired, so I had to stay close to the computer).

I’d taken along my venerable old Surface wireless display adaptor that I bought years ago. It also works a treat on the Go but I didn’t need it thanks to the lovely little Dell device.

If you’re thinking of using the Surface Go as your portable presentation machine, just do it.

Talking at the Black Marble Architecture Forum

 What a great audience looks like…..

What a great audience looks like…..

Drove to Leeds today to give some sessions at the Black Marble Architecture Forum. All new material. Which is a bit scary to be honest.

Anyhoo, first up I did a session for the student track. This was great fun. I told the story of our work on Air Quality as part of the Connected Humber group. The main thrust of the talk was that you can really can make a difference just by doing stuff. I’ve made a screencast of my talk which you can find here.

 The audience gathering before my next talk…

The audience gathering before my next talk…

The second talk was all about the Internet of Things, LoRa and Azure Functions (which are awesome). Another great audience, some great questions at the end. One chap asked about 3D printing and I said I’d put something in the blog about it. My advice, take a good hard look at the Anet Prusia A8. I’ve not got one - my six year old Ultimaker is still doing sterling service for me, but for a fairly low investment this looks like a good one to go for.

I’ve made a screencast about LoRa, I’ll do one about MQTT and another about Azure Functions.

Achievement Unlocked: Got a copy of "Map of the Floating City"


When I used have a Groove Music Pass on my PC (I call those the ‘Good Old Days’) I got very attached to the album “A Map of The Floating City” by Thomas Dolby. When that died (very sad) a while back I ended up switching to Apple Music. Which is actually pretty rubbish in many ways. One of them being that, for some reason, this album is not available. Neither is first track of “The Nightfly”, one of my favourite ever albums. And Apple Music seems incapable of playing tracks in the same order as they are on the record. And some music doesn’t show up in the car. And also…. But I’m starting to rant, so lets move to a new paragraph.

That’s better. Anyhoo, I tried to buy the CD and it is really quite hard to get hold of. I’ve ended up importing a copy from the ‘states. Well, it arrived today and it sounds as good as I remember.

Windows 10 Magic Disk Space

magic space.PNG

Windows 10 is magical. Or something. At the beginning of this week I was worried that I was running out of disk space on my main hard disk. Which can be a problem. Things were turning red. Never a good thing in my experience.

This morning I discovered that I suddenly had a lot more space. Around 30 G bytes had appeared from nowhere. Now, I might have done some “sleep deletion” last night, but I don’t think so. Windows 10 must have found the space for me.

Thanks for that.

Rob at Black Marble Architecture Forum


I’m doing a couple of sessions at the Black Marble Architecture Forum next week. However you can’t get to see both of them unless you are both a student and an industry professional.

Black Marble have this lovely policy of running a one day event for both students and developers, with twin tracks. For the first time they’ve let me loose on the professional track, so I’ll be talking about Azure IOT Hub for them and Air Quality Sensor building for the students. There’s actually a bit of cross over between the two - I’m going to use Azure to store the air quality data. It’s going to be quite fun.

The event is in Leeds on Wednesday next week. I’m not sure if you can still sign up but the event page is here.

Tesla Testing at c4di


Good reason to be part of c4di number 493: Sometimes you get to drive a Tesla

Today was rather exciting. Tesla came to see us. I’m rubbish with names, and I didn’t write them down, but both fellows who turned up from the company were excellent, both in the talk that they gave to set the scene for the day, and also at the moment when they just said “Get in and drive it”.

So I did. I’ve already got an electric car so the smoothness and silence weren’t that much of a novelty. But the fact that I was manoeuvring a three ton car so easily was very impressive, as was the dashboard display of the vehicles around us as I nervously headed towards the A63. You could see little rendered versions of the cars and lorries in real time. This is a spin off of the self-drive technology and gives you a lot more confidence in traffic.

 Dee settles in for his turn at the wheel…

Dee settles in for his turn at the wheel…

This being close to rush hour, the road was busy, reducing the opportunities for any attempts to realise the 0 to 60 potential of the car, which is apparently only five seconds or so. Dee had a go after I did, and he was a bit more lead footed than me, making the car really leap forwards. He also remembered to have a go with the automatic driving (which I rather stupidly forgot). This was very impressive. It followed the line of the road and kept the car nicely placed in the queue of stop-start traffic that we encountered on the way back to c4di.

Tesla have only been making cars for a few short years, and they’ve had to invent a lot of the technology that they are using. They have a plan, which is to start off catering for the more expensive end of the market before moving into the mainstream. As a quality car, for me the Tesla does the business. The inside was appropriately posh, comfortable and toy laden. It’s a bit on the large side for me personally, I find that the BMW i3 is just perfect for my needs just now, and I don’t really have the spare cash to spend on a toy that big. But I still rather want one.

And I’m not alone. Apparently they are selling more Teslas in the USA than they do BMW or Mercedes cars. During the talk in the morning we were told that Tesla is really just keen to get people living in a sustainable way. If that means getting other car manufacturers to make their own electric cars to compete with Tesla, they say they are OK with that. Well, all I can say is that the competition has its work cut out.

Big thanks to Tesla and c4di for setting up the day. It was awesome.

Using Serial1 with the Azure IoT Devkit


A while back I posted about changes you could make to the Azure IoT DevKit library so that your programs can use the second serial port of the device to talk to things like GPS receivers and Air Quality sensors (a particular interest of mine).

At the time I suggested that this could be fixed by adding the creation of a second serial port to the SDK. I’ve just heard back from the team and this is not going to be done. Instead we can create a Serial instance when we need one, which saves resources.

If you want to use Serial1 with your Azure IoT device you can add the following statement to your program.

UARTClass Serial1(UART_1);

You can then use Serial1 in exactly the same way as you use Serial. I’ve put a sample program on GitHub that shows how this works.

Haynes Electronic Games Advent Calendar


I got in real trouble a couple of days ago when it was discovered that there still some days from last year’s chocolate advent calendar that I’d not got around eating.

What can I say? I forget stuff.

But this is something quite different and definitely not edible. It’s an advent calendar that starts with a simple circuit that lights a LED and ends up on Christmas Eve with a fully working version of the Simon memory game. Along the way there are some nice little side projects. It’s all made possible by a tiny pre-programmed PIC processor, a breadboard and a bunch of components that make the set not bad value for the price.

The implementation is pretty good, the instructions are fairly clear although I’d liked to have seen proper circuit diagrams as well as the Fritzing pictures that show you where to plug the wires. And, talking of wires, it would have been nice to have had a set of pre-made jumpers of appropriate sizes and colours rather than just a little coil of red wire that will have to be cut and stripped for every circuit. I can see that the effort of making the wires will put off all but the most determined experimenter, and probably also destroy the pair of scissors that are used for the job. At least there is no soldering.

It’s really nice to see things like this coming out though, and I’m going to work through all of the daily exercises while eating each chocolate from my other calendar…

Hull "Urban Legends:Northern Lights" was awesome


I’ve got very fond memories of Hull’s City of Culture year. We had streets full of people on chilly nights looking at amazing artwork and feeling a real pride in the place. Tonight we had all that again with the “Urban Legends:Northern Lights” event. In fact I reckon the quality of the artwork an story telling exceeded that of last year. Perhaps they’ve learned a few tricks since last time.

We headed up town for the last night of the shows. The weather was kind to us and the artwork was spread around the town. For me the two highlights were the projected display outside Hull Minster, which you can see a part of above, and the story told on the side of buildings around the Rose Bowl in the middle of town. The story had the benefit of a choir singing live, which was super awesome.

The whole of Hull city centre was absolutely packed with families enjoying the spectacle. Kudos to “Absolutely Culture”, who have taken flame of culture in the city and run with it in a stunning way. If you didn’t mange to make it, then you missed out. If you did, then you’ll know what I’m talking about.


Heltec Lora 32 on Fritzing


I spent a big chunk of yesterday trying to create a Heltec Lora 32 part for the Fritzing design program. In the process I learned quite a bit about SVG files, Inkscape and pcb design. So I don’t think it was a complete waste of time….

Tomorrow I’m going to try and figure out how to add my newly created part to the Fritzing parts library. Then I’m going to make Fritzing parts for the sensors that I’m using and then I can draw some lovely circuit diagrams.

LoRa Seminar Recording

Since I had the slide deck lying around I thought I’d record a screencast of the content for anyone who missed the seminar yesterday. I’ve not made any screencasts for a while. I learned a few things doing this one:

  • All the foam has dropped off the earpieces on my microphone headset and turned into a rather horrible powder….

  • The microphone on the headset seems to be past it’s prime too.

  • It’s very annoying when the phone rings and you’re in the middle of a recording (if you listen you’ll hear the smooth and professional way that I deal with this)

I’ve ordered a better headset with a proper microphone. At the emf camp earlier this year a chap was talking about podcasting and saying everyone should do it. Once the new headphones arrive I’ll have one less excuse for not having a go. So expect to hear more of my dulcet tones in the future.

Talking LoRa at Hull University

 As you can see, there was a lot of publicity for the seminar….

As you can see, there was a lot of publicity for the seminar….

Today I did my LoRa talk at the university. It was great fun, and the audience were lovely. I was in a lecture theatre I know very well from many hours of teaching there in the past. Good to see a few familiar faces and a few new ones. I hope you found the material useful/interesting.

Creating a WiFi Configuration Tool


One of the problems with any WiFi enabled device is the initial configuration. How do you tell your device the settings for your WiFi when you can’t talk to it via WiFi? It’s a “chicken and egg” situation, even though it doesn’t involve any chickens or eggs.

One answer is to make your device set up as a WiFi access point of its own, and then connect to this from a WiFi enabled phone or computer to configure all the settings. There are quite a few libraries of routines out there that will help you do this, but none of them did exactly what I wanted, so I’ve built my own.

You can see the configuration screen it generates in the screenshot above. You connect to it via your browser and then fill in the various options. It has support for five different access points and also lets you configure all the MQTT settings for a sensor as well.

I’ve got it working with my MQTT Mini Air Quality sensor. To configure the WiFi you simply turn the sensor upside down, plug it in and it starts up in “configure” mode. You then connect to the access point and perform the configuration. Then flip the sensor the right way up, restart it and away you go.

I’m very pleased with how well it works. I’ll have the code for the new, super configurable MQTT Mini device on GitHub before the end of the week. Then I’ll port the configuration mechanism over to larger, ESP32 based sensor.

Great fun.

Making a Do it Yourself Ground Pin


When I’m making embedded devices, I find that ground pins are a bit like liquorice allsorts. I just can’t get enough of them. The ground pin is the one that provides an electrical ground connection. You need a ground connection for the power for every device you want to add to your circuit, and also for every data signal. If you want to provide a push button for your user to press, yes, that needs a ground connection along with the connection to the input pin that is going to read it.

The Arduino has a few ground pins in amongst its selection of inputs and outputs. The Wemos D1 Mini that I like to use only has one ground pin. It’s really annoying when you’ve got lots of spare input and output pins on your device, but you’ve run out of ground pins. It’s a bit like “water water everywhere, but not a drop to drink…”

Anyhoo, there is a piece of programming magic that you can use to convert any digital output pin into a ground pin. Actually it’s not that magical. You just have to set one of your digital pins to be an output pin and set the level to 0. Hey presto. Instant ground pin.

You can’t really use such a pin for power connections, but you can use it for data connections. I’ve just used it on my MQTT Mini air quality device. It needs some form of input and I’m determined to avoid putting buttons on it. So I’ve added a tilt sensor. This the software to react when the user turns the sensor upside down.

The tilt sensor works like a switch. One way up a small metal ball rests on two pins, providing an electrical connection. Tip the sensor the other way up and the ball falls down away from the pins, breaking the connection. I wanted to add it to my Wemos device and, of course, I had no ground pins left. So I used a data pin instead. This is the code that makes the switch work:

#define GROUND_PIN 5
#define INPUT_PIN 4

digitalWrite(GROUND_PIN, 0);

I’m using data pins 4 and 5. Pin 5 is my “do it yourself ground”. Pin 4 is my input pin. The tilt switch is wired across these two pins. Pin 5 is configured as an output pin and set to the low (ground) level. Pin 4 is configured as an input pin with a “pull-up” resistor which means that when nothing is connected to the pin the data signal on the pin is pulled into the high state. When the switch closes, this pulls the voltage on pin 4 down to the level of pin 5 (ground) causing the input that the program sees to change from 1 to 0. My code to test the pin looks like this:

if (digitalRead(INPUT_PIN))
// device is upright
// device is upside down

It works a treat. So, if you need a ground line for data and you’ve no ground connections - but you have some spare signals - just make a ground of your own.

Top Down Steampunk


We went to MCM Comic Con today. It’s quite a long drive from Hull to Birmingham, but it’s worth if for the stuff on sale and particularly the people in costumes. Last time I went I resolved to try to attend this year in some form of Steampunk costume.

Of course I didn’t get around to it. But this year I thought I’d at least make a start. So, I’ve bought a Steampunk hat. It’s rather big - but I’m a big person. I’ve gone onto Ali Express and bought a flexible pcb covered in pixels. I’m starting at the top of the costume, the next step is to go through my collection of suits, coats and waistcoats. Then we start on the accessories.

This is going to be fun. And I’ve already got some goggles.

The Crimes of Grindelwald Film Review


Went to see “Fantastic Beasts the Crimes of Grindelwald”. I really enjoyed the first Fantastic Beasts film. That was a lovely film with lots of invention, whimsical creatures and engaging characters. So, when the sequel came a long we decided to go and see it without thinking.

That won’t happen again. I guess the first movie in a series is designed to hook you in. Then the second one has to set up a whole bunch of plot lines that you know are going to run until the very end of the movie sequence, and probably beyond that if the takings go well. What I liked about the first film was that there wasn’t too much of the turgid stuff that weighed down the last few Harry Potter films. This one had the lot though. Including:

  • A “chosen one”

  • An “avenge the death of my father” speech

  • A blood pact between sworn rivals

  • A marginal person who is introduced, bigged up with a dark secret and then killed off just to give everyone something to be depressed about

  • Brothers who fall out and then fall in again

  • A goody that everyone knows is a baddy right from the start

  • A baddy who nobody seems to be able to kill

  • A goody who has turned into a baddy so that they can turn back into a goody in film number four

  • A sneaking into a library/bank/whatever sequence to find out something crucially important that I can’t bring myself to care about

  • Folks waving wands at each other and sparks jumping about

I don’t really think that any of the above counts as spoilers. I suppose in our hearts we were hoping for something more. It was all stuff we’d seen before, in a slightly different order and by less familiar characters. And there was so much potential for whimsical invention and new directions in the first film. By the end I was just waiting for it to end, wondering what “crimes” I was seeing and coming to the unhappy conclusion that I might be the victim of one.

If you like Harry Potter, particularly the final depressing films, you’ll be fine. If you’ve been there and done that, you might like to ponder whether you want to do it again before going and seeing this film.