HULLCS50 is a thing

Official celebration light. I’ll put the plans on thingiverse so you can make one of your own and link it to the event server

The Department of Computer Science in the University of Hull will be 50 years old soon. We’ll be celebrating this event at the university over the weekend of the 10th-12th May 2024. We are going to have an anniversary Three Thing Game, Welcome Party Redux, Robot Rugby and guest speakers. Plus campus tours and chipspice. Put the date in your diary and keep watching the skies (or my blog) for more news.

Comicon with the Mamiya

Black and white dark side

I carried my carefully weighed camera all around Comicon today. It was great. Pro tip: Check your coat in at the cloakroom so that you don’t have to carry it all round the show. It will be the best two pounds you spend on the day.

I took a few pictures. I’m particular pleased with this shot of “The Northern Vader” and a couple of his chums. I was using a large flash on a bracket to the side of the camera. I think it worked very well.

Casual Buzz

There were some cries of surprise when the flash went off in a manner rather similar to a nuclear explosion. But I’d already got the photograph by then….

Dalek central control

I’ve got some more shots in the camera. I’ll develop those when I’ve finished the film off.

AS an added bonus, the mole wrench is now very easy to find.

A while back I mentioned my sinking feeling, caused by a failing gas support in my chair. The chair company have sent me a replacement, which is nice of them. However, it has proved to be impossible to fit, what with the broken part having welded itself into position. I’ve come up with a solution though. My chair now holds its position perfectly.

Bambu printer top tip: pick the right buildplate

If your plate is gold (which is most likely) it will be the Textured PEI plate)

I’m getting to really like the Bambu P1S. It’s unlike printers I’ve had before. With those the very first prints I got with them turned out to be some of the best prints they ever made. With the Bambu it seems that the more you use it, the better it gets.

This is the first printer I’ve had with swappable build plates. They are held on with magnets but you can pop them on and off - especially useful for removing prints. There are also a few different types of plate, and herein lies a problem that I (and lots of other folks) had. My first prints looked good, but kept coming off the print bed or curling up at the corners.

It turns out that the print is supplied with a Textured PEI Plate, but the default setting for the Bambu slicer is the Cool Plate. So the temperature of the print bed was far too low. A peek at the forums revealed that lots of other folks have had this problem. So - if you are lucky enough to get one of these machines, make sure that you make the build plate match the slicer for best results.

Too much voltage is bad for you

the first PICO powered Pixelbot

I’ve not made a brand-new Hull Pixelbot for a while. Today I made a new one which is powered by a Raspberry Pi PICO. I usually power the robot from four (or sometimes five) AA batteries. This gets me around 6 volts. I did that today with the new robot and it failed to work. It turns out that the Raspberry Pi doesn’t like voltages much higher than 6 volts, and shows its displeasure by not working. I had scrabble around to find a set of “slightly worn” batteries to get it going.

The Bambu P1S 3D printer

Scary fast

I’ve been working quite hard recently. And rather than fritter my earnings away on fripperies like food and fuel I decided to get a new 3D printer. This is my third one. I’ve still got number one, Una the Ultimaker because she has huge sentimental value (and can still print up a storm when required). But number two, Edna the Ender, has now moved on to a new home.

I’ve been watching videos about Bambu printers for a while. I didn’t think I’d be able to afford one of their amazing X1-Carbon printers. In fact, I still can’t. Instead I’ve got myself a P1S which seems to offer all the advantages with a much smaller price tag. They also offer the very interesting AMS which can switch prints between four different filaments. I’ve wanted to try using multiple filaments in a single print job for a while, and now I get the chance to have a go.

The printer arrived yesterday and it is lovely. So far. It reminds me of one of those posh “bean to cup” coffee machines. You set it off and it makes all kinds of whizzing noises. Then some filament goes in one end and a well printed item drops out of the other. Unlike previous printers which I spent many happy (and some unhappy) hours fettling I’m kind of hoping that this one will just work and keep working. I’ve printed a “benchy” (the standard little boat design used to test these things) and it came out very well in double quick time.

I’m looking forward to printing a few more things in the future.

Great service from Niryo

The missing motor

Niryo make nice robot arms. They also support them very well. We’ve got a student project at the university using a Niryo arm. When the team came to assemble the robot they opened the box and found that one of the motors was missing. We’d no idea why this was the case, all we knew was that we suddenly had one less degree of freedom than we needed.

I emailed Niryo and they were super terrific. They asked us to send them a picture of the missing motor (an existential question that was easily resolved because we have several of their robots). They then just sent us a replacement, which was a completely amazing thing for them to do.

Thanks very much.

Merging Connected Little Boxes and the Hull Pixelbot

Two things that have occupied a lot of my time recently have been Connected Little Boxes and the Hull Pixelbot. And now I’m working on combining them. This will create a Connected Little Box which can operate as an autonomous robot. It will also being scripting to the Connected Little Box so that you can create tiny programs for each of the box interfaces. Whatever happens, it’s going to be fun.

Not so crazy AI?

Deliberately wrong?

I was preparing for a talk to students a while back (really must develop the pictures I took) and I asked DALL-E (an AI powered image generator) to make me a notice with the message “Don’t Panic” written on it. Above you can see the closest that I got. During the session I said that I thought this proved that “proper” AI is some distance away. But I’ve thought about it since and decided that actually AI might be ahead of us on this one.

Perhaps the creators of DALL-E don’t want anyone to be able to create fake notices and signs and so they have the system do a bit of scrambling to the letters before they are rendered.

Interesting times.

Slow baud rates and the Raspberry Pi Pico

Hull University campus looking good

It’s strange the things you discover when you try to do something. Today it was all about slow baud rates.

What’s a baud rate? I hear you ask. Well, baud apparently stands for “binary asynchronous unit of data”. Or it’s an abbreviation for the name Emile Buadot who was a French pioneer of digital communication and had an amazing moustache and beard. Emile was sending text down a single wire and he was doing it one bit at a time. Assemble enough bits and you can match patterns of ons and offs to particular characters. The data stream would begin with a start bit (to tell the receiver that a character was coming) and then have a bunch of signal levels that represent the character being sent. One thing that was important is that the sender and the receiver needed to agree on the rate at which the data was sent. Otherwise things get garbled. So they invented the baud rate (number of bits per second) and created some standard speeds (110,300,600,1200, 2400, 9600, 115200 and so on…) Baud rates are still used today. The GPS receiver in your mobile phone will be sending position information into your phone processor via a serial data stream with a particular baud rate.

When I connect a Hull Pixelbot to a computer I have to set a baud rate for the serial connection. I use the horrendously slow “baud rate” of 1,200 bits per second. This is because the program that the robot receives is stored in EEPROM in the robot (EEPROM stands for “Electrically Erasable Programmable Read-Only Memory). This is so we can turn the robot off and it will still remember the program it has been given. EEPEOM is awesome, but it is also very slow to write. The hardware has to bash the bits into the hardware components in the memory device and this takes time. I could have added handshaking - where the robot sets a signal to tell the host computer to stop sending - but instead I did something quick and dirty, which was to slow down the robot baud rate to the point where the EEPROM could keep up.

This kludgy decision came back to haunt me today when I tried to use an Arduino programmed Raspberry Pi PICO at 1200 baud. The PICO seems to get upset when you try to talk to it via a serial port running at 1200 baud. Not sure why, but the result is that my robot code doesn’t work properly. Oh well. I’ll just have to speed up the serial port and add some handshaking. I believe this is called “paying off technical debt”….

Migrating Arduino C to PICO C

Nothing to do with the subject of the post. Although the I guess you can see the “SEa”

You’d think it would be easy to move a C program from the Arduino platform to the Raspberry Pi PICO. After all, we have the wonderful libraries from Earle F. Philhower, III and the fabulous PlatformIO framework you can use to manage your project (don’t forget to perform this stuff before you try to build anything). And anyway, C is the same everywhere. Right?

Wrong.

When I write the Arduino stuff a while back I made one or two questionable design decisions. One of them was to use the char data type to hold 8 bit values. This was kind of OK back in the day (and by this I mean the 1980’s) but it turned out to be a stupid thing to do. Because some C compilers think that char holds a signed value (-128 to 127) and some think it holds unsigned (0 to 255). Of course the Arduino C compiler goes one way and the PICO C compiler goes the other way. Neither are wrong - the C language standard doesn’t specify this - and you could argue that anyone daft enough to perform maths with variables that are supposed to just hold character codes deserves all the trouble they get. But we are where we are, which in my case was looking at a program that has been working for years and has suddenly gone nuts.

I actually fixed it quite quickly once I figured out the stupid thing I’d done. The Pico debug probe proved very useful for this. I was able to set breakpoints in the timer interrupt handlers and then watch as various counters were updated. When I saw the code subtract 1 from 0 and get the answer 255 I knew exactly what had happened…..