New Chair

It’s amazing what having a rubbish skip next door but one can do for your life. I’ve just got a new chair for my office. No - not from the skip. That’s where the old chair is going. The old chair is still OK to sit on, but the vinyl covering began to moult around a year ago giving of clouds of plastic particles each time I sat down on it. Then it developed this amazing squeak when I leaned back.

When I took the old chair to pieces for disposal I discovered a date stamp of 2003. I think its time had definitely come.

Thick Printing

This is the newly printed left hand version of the chord keyboard.

I’m printing some items for a HackSpace magazine article. This one is about making a Bluetooth version of the chord keyboard I made a while back. Today I printed the top of the left handed version of the keyboard. I’ve thickened up the top plate quite a lot. This has done a few things to the print job; perhaps the most notable thing is that it now takes over 6 hours to print. However, it has also added a really nice bit of extra “heft” to the keyboard.

Lots of things benefit from a bit of extra weight, and this is one of them. Up until now I’ve usually printed the thinnest structures I can get away with to save time and filament. However, I think from now on I’ll live with the extra time and cost and print things a bit thicker.

Dealing with a Dimpled Prism

The printing is not the wrong way round. this picture was taken in a mirror…

I’ve bought another camera. This happens. I think my camera buying hobby is now slightly cheaper than golf. Although I don’t know how much golf costs. Anyhoo, I went full-on brave for this one, I ordered it from Japan. For some reason the most interesting second hand buys are coming from there. You have to be careful about import duty and whatnot, so they are not quite the bargains that they appear when you first see them. However, I thought it was worth the risk. The seller had 100% feedback and seemed to have sold a lot of stuff so I took the plunge.

The camera arrived last week. Above is a crop from the first picture I took with it. If you look carefully you can see some dimples in top part of the camera. These weren’t on the pictures attached to the listing. There were some marks on the box that indicated damage during transit. At first I decided to live with them as a natural consequence of having something posted half way around the world. But then I decided that since I’d paid for a non-dimpled prism I might as well see if I can get one. I raised the issue with the supplier and they just said “OK, we’ll send you another one without dimples”. Amazing stuff. Very pleased. If you are thinking of buying a camera from Japan I can recommend them. You can find them here.

Recycled Humour

I’m recycling jokes from the past because I think you all deserve to hear them again. This ones from February 27th 2006:

We were discussing paper sizes and I got to thinking about Caesar and his famous discussion about the dimensions of the posters they wanted to put around the colosseum, and how all that went horribly wrong when Caesar turned to his most trusted friend and said "A2 Brutus?".

The First Rule of 3D Printing

I am typing this with the nearly finished “Blue Chords” keyboard. After a five hour print the key cover looks really nice. The keys and the sockets on the printed circuit board all line up perfectly and it seems to work. I now have to create the bottom of the case and fix the battery in place.

Oh, and the “First Rule of 3D Printing”? When your printer is printing well do not touch it or change anything.

Power Cut Friday

Of course this might not be what caused it

First thing that happened was that the shower failed. It was producing nothing more than a low buzzing sound. Not what you want if you are stood naked underneath it. I’ve had this happen before. The usual solution is to fit a new shower (after you have got dressed). I’ve done this several times over the years. Once with jetlag. But I was hoping for a bunged up filter. I took the shower to bits and I was just removing the filter cover when the 3D printer stopped with an alarm. And wouldn’t power on again. I was just wondering what the third thing was going to be (problems like this always come in threes) when when the washing machine flashed up a fault code.

Then everything went off and I relaxed. It must be a power thing. I put the shower back together. And then the mobile phone signal vanished. I was expecting that important things like cellular networks to have some kind of battery backup, but apparently not. That was kind of worrying. We were completely out of contact with the rest of the world. This is how we must have felt in the seventies. Except that in the seventies our landline phones still worked.

The power came back after about twenty minutes. We did eventually get a text telling us that the power had gone off (in case anyone hadn’t noticed) but that was all. I reckon that for about twenty minutes before the power failed we had been running on a low mains voltage. Anything using a “switched mode” power supply would have kept working. But anything with a motor in it would be suffering. So computers and screens all worked fine. Showers not so much.

I always thought that the power companies tried very hard to provide either 250 volts or nothing, but it turns out that this is not the case. The good news is that everything has come back fine and so all we had to do was reset a few clocks and throw away a half completed 3D print.

A few weeks ago the UK had a test of an “emergency broadcast” thing where most people’s phones buzzed with the message “Do not worry. This is a test”. This made us all feel much safer (except of course for those who didn’t get the message). However, if It turns out that at the first hint of trouble our phones are all going to be disconnected it makes all that effort seem like a bit of a waste of time.

Roll film developing mayhem

This film had some lovely pictures on

This is turning into a photography blog. But I can live with that. I’ve started developing my own pictures. The starting point of the process is getting the film out of the roll and into the plastic spiral that goes inside the developing tank. I put the film and the developing tank into a light tight bag with elasticated holes for my hands. I then wrestle the film into the spiral (which reminds me of a pinball game), put the tank and then take it upstairs to add the chemicals etc.

The first time I did this it just worked and I was quite smug about this. The universe must have heard me. After a couple more successful loads I had a complete failure. I actually got cross with the whole thing (a very rare thing for me) and the result was one ruined film. Oh well. At least it gives me a spare film to practice with. I had similar problems today, but this time I had a plan. I rolled the film back onto the spool, put the roll of film into the developing tank (along with the black light-tight centre piece) and took my hands out of the bag for a breather. Then I got my old film and spent twenty minutes practicing until I could do it with my eyes closed (which was kind of the point). Then I tried it again and after a couple of false starts I managed to get the film into the drum and take it upstairs to process. Turns out that its necessary to practice once you’ve used up all your beginner’s luck.

“portrait of the artist as an old man..”

I was quite pleased with how the pictures came out.

This is my standard “tree test” picture. Now with added leaves.

“Bark and bokeh”

Adventures with the wrong lenses

I really should have pushed the bricks together before taking the picture

There is a lot of fun to be had in photography putting lenses from old cameras on the front of newer ones. The picture above was taken with an old Mamiya lens that was, through the magic of adapters, connected to a more modern digital camera. I’m especially impressed with the way the colours have been rendered and how the background is out of focus in a very pleasing way.

Sigma DP1S

An unconventional angle on the deep

I’ve got into the habit of taking old cameras out for a walk. Today it was the turn of the Sigma DP1S that I bought around 10 years ago. This camera is interesting because it has a sensor which reads all three primary colours at the same positions. The Red, Green and Blue detectors are stacked on top of each other. This should improve the way that colours are rendered. I took the camera around the Deep, a lovely place to be.

This is a more conventional view of the deep

Hull Tidal Barrier

The camera doesn’t have the low light or focusing performance of even a cheap smartphone from today, but I do rather like the pictures.

The Bluetooth Chord Keyboard Lives

I want to use this keyboard with my left hand and move the mouse with my right…..

The last few days have been fun. I’ve been creating the software for the PICO Bluetooth Chord keyboard, otherwise known as “Blue-Chords”. I’ve been batting with CMake (which I’ve never previously had to tangle with much). It turns out to be a bit fiddly. I mentioned it to number one son and he was able to build a free-standing version of the example code which was terribly helpful.

Anyhoo, today I dropped the chord reading code into the software and I now have a working chord keyboard which can talk over Bluetooth. Next stop is to build the case….

Lovely OLED driver for the PICO

It can say other words as well…..

I spent a chunk of the day trying to get the OLED display working on the keyboard I’m building. It works fine under Python, but it was a bit reluctant to work under C++. In the end I found this lovely OLED library: https://github.com/daschr/pico-ssd1306 It's very lightweight and easy to configure and use. It worked a treat. The display that I’m using is the monochrome version and it looks really, really good.

Extracting footprint information from KiCAD

The source design I was working from

Sometimes being lazy is really hard work. I’ve got the PCB design for the Bluetooth Chord keyboard and I want to extract the key positions for the case. I’ve discovered the really useful KiCadSetupUp plugin for FreeCad CAD that lets me import my PCB as an object in drawing, but what I really want to do is get the positions of keys on the PCB so that I can cut holes in the case in exactly the right positions.

I could spend five minutes copying the values from the KiCad PCB design. But I’m lazy. I’d much rather spend most of a day discovering how I can run Python code inside KiCad and write a program that does it for me. There is a bit of method in my madness, in that if the design of the PCB changes (I’m going to have to move the keys a little bit to stop the keycaps from clashing) I just have to run my program again. There’s probably some kind of integrated manufacturing trick that lets you automagically import this kind of information into FreeCAD but I’m really too lazy to learn how that works. Instead I wrote this little program:

file = "C:\\Users\\rsmil\\pcbs\\keyboard\\flippedkeyboard.kicad_pcb"

board = pcbnew.LoadBoard(file)

o = board.GetOrigin()
x = o.x / 1000000.0
y = o.y / 1000000.0

l = []

for f in board.GetFootprints():
    b = f.GetBoundingBox()
    ref = f.GetReference()
    p = f.GetPosition()
    px = (p[0] / 1000000.0)-x
    py = (p[1] / 1000000.0)-y
    height = b.GetHeight() / 1000000.0
    width = b.GetWidth() / 1000000.0
    print(ref)
    t = '    makeKey("{0}",{1:.2f},{2:.2f},{3:.2f},{3:.2f})'.format(ref,px,py,height,width)
    l.append(t)

l.sort()
for t in l:
    print(t)

It prints out a function call for each footprint. This is what I get from my design:

makeKey("Control_1",100.07,21.29,17.38,17.38)
makeKey("Control_2",100.07,38.43,17.38,17.38)
makeKey("Control_3",100.07,55.58,17.38,17.38)
makeKey("Control_4",100.07,72.72,17.38,17.38)
makeKey("Control_5",100.07,89.87,17.38,17.38)
makeKey("Index_1",64.51,17.16,17.38,17.38)
makeKey("Index_2",64.51,33.99,17.38,17.38)
makeKey("Little_1",11.17,21.29,17.38,17.38)
makeKey("Little_2",11.17,38.43,17.38,17.38)
makeKey("Little_3",11.17,55.58,17.38,17.38)
makeKey("Little_4",11.17,72.72,17.38,17.38)
makeKey("Little_5",11.17,89.87,17.38,17.38)
makeKey("Middle_1",46.73,17.16,17.38,17.38)
makeKey("Middle_2",46.73,33.99,17.38,17.38)
makeKey("Ring_1",28.95,21.29,17.38,17.38)
makeKey("Ring_2",28.95,38.43,17.38,17.38)
makeKey("Ring_3",28.95,55.58,17.38,17.38)
makeKey("Ring_4",28.95,72.72,17.38,17.38)
makeKey("Ring_5",28.95,89.87,17.38,17.38)
makeKey("Thumb_1",82.29,21.29,17.38,17.38)
makeKey("Thumb_2",82.29,38.43,17.38,17.38)
makeKey("Thumb_3",82.29,55.58,17.38,17.38)
makeKey("Thumb_4",82.29,72.72,17.38,17.38)
makeKey("Thumb_5",82.29,89.87,17.38,17.38)

This runs inside my little Python layout program that builds the box (which I really need to write sometime). It turns out that it is very easy to run code inside KiCad, although some of the help online seems to be a bit out of date. You also need to be very careful with some parts of your code. If you get the path to the file wrong this won’t just crash your program, it will take out the KiCad program completely. I tried a number of different ways to catch the exceptions and errors that might be thrown by the LoadBoard function but I was never able to stop the crashing. Just make sure that your path is correct and that any backslash path separators are properly escaped as you can see above.

Achievement unlocked: First PCB built

The bag was very hard to undo, but worth it

A parcel arrived from PCBWay today. These are the boards that I designed last week. They turned them round in double quick time and they look great.

These are the key positions for right handed use

I lost no time soldering the key sockets into place and getting a test program into the PICO. I have made a few mistakes with this board. The key spacing is a tiny bit close. I had to file a bit off a couple of keytops to make them move smoothly. The next version will have the keys a mm or so further apart.

It is traditional that your first board needs a fix or two….

I’d also made a mistake with one of the OLD display sockets, reversing the clock and data lines. But I managed to fix that and get the board going with some Python code. The good news is that the left handed versions is wired perfectly. I’m going to build one of those too just to see if it is easy to learn to use the keyboard with your left hand. Now I have to write the C++ code to read the keys and send the keypresses over Bluetooth.

Camera auditions

One of my favourite spots on the planet

We’re preparing for a trip away. Everybody else is worrying about where to stay, how to get there, what to eat and stuff like that. Me, I’m trying to decide which camera to take. I took one of the contenders out for a walk over the weekend. It’s a 10 year old Fujica X-A1. I put the wacky wide angle lens on it. I’m not unhappy with the results

Looks a bit like the start of star wars….

Sometimes you getgood results if you just press the button to see what happens

Fuji cameras are good with green

You can find all these pictures (and a few more) on my Flickr page.

Connected Little Clock

Use your skill and judgement to work out when this picture was taken

I’ve had a connected little clock in the hall for a while. It used to light up with a pleasingly bright blue display. Then, after a while gaps appeared here and there as the leds seemed to wear out.

I’ve replaced the blue ones with red ones, which I hope will last a lot longer. If you fancy one of your own (which will be remote controlled via the web) I’ll have the new software out soon.

3D printed camera is now light - tight

I’m actually very happy with this picture

The picture above was taken using my 3D printed camera. The lack of any light on the image is actually very pleasing. While the film was in the camera I took it outside, shone torches and bright lights on it and generally waved it around in the brightest areas I could find. And the picture came out completely black. Which means I think that after a whole of of painting and masking it is now light tight.

I’m going to put a spirit level on the camera so I can tell when it is level…

I took the camera out for a walk and came back with this, which I’m quite happy with.

Coronation Curtains

We watched the coronation today. At least, we watched the interesting bits. One thing that struck me is that Marvell do a much better job with their costumes that we do. The Guardians of the Galaxy have much better threads than this lot. I suppose that back in the day the outfits of all the great and the good seemed much more impressive. Most of the things I saw people wearing today left me thinking that someone’s front room curtains now have great big archbishop shaped holes in them….

Ordered my PCBs - another easy job

Another job this week that turned out much, much easier than I expected was getting the PCBs ordered for the Bluetooth chord keyboard I’m making.

When I made the original chord keyboard PCBWay reached out to me with an offer of a sponsorship of my next board, which I’ve only just taken them up on. I added the PCBWay plugin to KiCad and ran it to see what happens. What happens is that all your design files get sent to PCBWay, their site opens up and within a few seconds you have a price for the job. All I ended up having to pay was for quick delivery - because I’m an impatient sort. The boards arrive next week and I’m rather excited about this. It turns out that getting a custom PCB made is affordable and easy. I can see me using this service a lot in the future. And I’d really like to have a go at having a PCB made and populated.

The latest version of KiCad lets you put artwork and text on your PCB. I really think everyone should have a go at making their own boards. You might not put much circuitry on it, but you could make it look very pretty.