Going back to HUDs with a readymade display

 After mixed results with a stripped OLED display, I've got another reason to make a heads up display. This time it's to show video from a drone camera in a way that doesn't completely obscure your vision.

I've got a set of cheap Eachine goggles with built in receiver that works fine for testing but the final prop needs to be a wearable that fits in with the rest of the costume and isn't too bulky.

There seem to be essentially two models of 'moncular' video display available cheaply on Aliexpress and this was the one that was slightly cheaper at the time I ordered. It also benefits from a nice adjustment knob on one side, but lacks the flexible rubber eyepiece of the other unit.After a large number of iterations and test prints I've finally got an enclosure I'm happy to build a first prototype with.

The two halves click together using the mounting prongs on the display, hold pretty firm and I've managed to hold the PCB and easily damaged flexible flat cable in place. On the rear is a spot for a heat set insert, which I'll use to add to the arm connected to the helmet.

The final article has turned out quite nicely when printed. It looks massive but when you realise the scale of the display itself you can see it's just brought it up to a size that you can grab with your fingers and manipulate.

It needs a couple of M2.5 screws to properly secure the PCB but unless you really yank on it you're not going to accidentally damage the FFC any more.



InfoPoint code and word wrapping

I made a little effort to tidy up and post the code used on the EMFCamp 2022 Cybar InfoPoints. It's under the main Polybius organisation on GitHub.

The InfoPoints ended up working nicely and I will almost certainly use devices that sync configuration from GitHub in future. It makes for a really nice free place to store configuration with all the user admin/permission work done for you, so long as it's OK for the information to be publicly viewable.

I might investigate if there's some way to do this with a private repository and if so I might turn it into a library.

This also caused me to remove the word wrapping code I wrote to format the displayed text with and turn it into a generic Arduino word wrap library.

When I first started work on this I was amazed there isn't a basic word wrap library that's not part of some other larger project, or at least I didn't manage to find one. Word wrapping is a standard kind of thing you'd really expect to find covered.

There is some messy stuff around what to do with very long words wrapping into small spaces, which I've tried to handle and if the text doesn't fit into the requested lines it adds ellipses (...) hopefully somewhere sensible. I can see this getting re-used a chunk in my various Arduino projects with user interfaces.

Buying stuff is the easy part.

For some time I've wanted to build a 'rover' chassis, some kind of remote control electric vehicle that will handle rough-ish ground. This is as much as a learning exercise as it is to deliver a specific prop or vehicle.

I gathered a small mobility scooter chassis and motor some time back but lacked a sensible battery to drive it.

With the explosion of popularity in eBikes, there's a lot of controllers and battery packs making their way onto the secondhand market and one of the people at EMFCamp 2022 was selling a stack of them for project use.

This is a 'SilverFish' battery pack, a quite common but not entirely standardised design that packages the batteries and BMS into a nice solid removeable pack. 

At a nominal 36V it will overpower the 24V motor I have but not excessively so if it's under light load. I've a charger on the way for it and will need to investigate a suitable speed controller.

I'm not thinking of building anything at all autonomous, that's a serious exercise and in something large frankly dangerous, so it'll be traditional radio control gear in use. I am however thinking of making it have FPV video and perhaps some automated collision avoidance using LIDAR so it can be driven without having to follow it.

If the chassis I have doesn't doesn't work out, I'll probably switch to one based around four hoverboard motors doing tank steering as that's a common hacky rover design. Making it usable away from paths will mean modifying the hoverboard hub motors so the wheels are a larger diameter, but again that's a well covered thing.

EMFCamp 2022

After the cancellation of the 2020 event (for obvious reasons) I've been looking forward greatly to EMFCamp 2022.

Previously I'd only been along as an attendee but this time I signed up for volunteering at set-up and tear-down so spent a week on-site.

This proved to be a great experience as it was a bunch of days working with like-minded people to build something for others to enjoy, which aligns pretty much with all the stuff I do at LARP.

The area I was working in was 'Cybar', a nightclub/art installation built from nothing inside a huge saddlespan tent in a field.

The theme was an 'undersea research facility' and for this there were a lot of fake strips and bolts for the 'inside of a battleship' look. The bolt heads were all 3D printed and I ran my printers for a bit to contribute various 3D printed greebles to the pile that got screwed to the walls.

We had a bar serving drinks and each room had fake pressure doors with screens showing into other areas with animations that other people involved in the project had made.

Over the weeks running up to the event I also spent a chunk of time working on props to go on the walls and making up the scenery flats that comprised the set. There were a lot of scenery flats that took a crew of people months to make.

We had 38 'MoD boxes' which were old intercom switch units of various types from Ministry of Defence Landrovers I stripped, cleaned, sprayed and fitted with new labels covered in technobabble. 

Not a complicated job but a long and dirty one. The switches have an amazing tactile quality to them and people loved flicking them even though they had absolutely no effect.

There were also the Infopoints, fake industrial display units showing detail about the contents of each room.

These were designed by Charles Yarnold, the main Cybar creative lead, with a custom PCB from Graham Sutherland that uses an ESP32 to drive an LED logo, some neopixels in a ring and a new-old-stock 'flat' CRT that would have originally been fitted to a door intercom system.

For these I wrote the code that dragged the info from GitHub, along with some other settings and displayed the text on the CRT in a faux-retro-terminal kind of way.

While not desperately complicated, I was pleased with how the animation worked and that their behaviour was 'robust'. The data was stored in a JSON that I also wrote to flash and compared at regular intervals for changes so they were easily updateable but would survive a loss of connectivity.

Unusually for an ESP32 WiFi project they also needed to connect to the WPA2-Enterprise WiFi at EMFCamp which is a bit of an edge case I've never used before. Being EMFCamp I was vaguely worried about attacks against the device even on the 'outbound only' WiFi so they stayed disconnected most of the time and validated the server certificate when connecting to GitHub. 

This all worked quite nicely and I really ought to do a separate blog post about it as while each element is small it worked nicely together.

I'd really like to get involved at next EMFCamp and maybe bring something of my own to it as an installation or part of the set. I had a couple of ideas pop into my head as we got close, but simply no time left to do them. Early on I wasn't sure about boundaries/theme for them but now I've done one event I think I'd feel much happier about picking something that would fit in and work.

An open source prop: Part 1

After going to Alone: Discord LARP I ended up chatting with the organisers on social media. They had some 'hackable locks' in the game that worked OK but were really just touching a couple of pads with a wire to make a beep and change an LED.

There were several game organisers playing and chat turned to making a generic 'hackable lock' for modern/sci-fi LARPs. It's something lots of LARPs will have needed or reinvented over the years. We might use them ourselves in March.

So I'm now smashing away at code for a generic lock prop based around the old favourite of an RC522 RFID reader, WeMOS D1 mini, LEDs and a piezo sounder.

The plan is to totally open source everything, with a build guide, 3D printed case, software that is pretty flexible and can be tweaked to behave in different ways.

This has already spawned two Arduino libraries. A tap code library for taking input codes on a single button (for hacking/admin) and an RFID authorisation library. The big plan is for a Web Portal interface, probably using ESPUI again.

Churning out some libraries means the main chunk of code for the prop is much less spaghetti-like and the libraries should be eminently re-usable. I really need to do this with lots of other things I've made or started to make.

Oh and obviously the Cyberdeck prop is on hold again, with no game to use it at for a while.


Quick cyberdeck build: Part 4

Yet more messing about with the design but I think I've finally roughed out how the front panel layout will work. I think it'll look decent so I've quickly (ha!) printed one off to get a feel for what it's like in the hand.

Printing time is quite long, so iterating the design is slow even when broken down into separate modules.

I've added a button on the left, which will do 'select', allowing you to use the trackball with one thumb and click with the other as push to click trackballs are always a bit awkward.

Generally it looks like things will fit easily. In fact I think I'll do a version with two buttons on the left and a third on the right. You almost want four buttons for Android though as you've got 'select', 'back', 'home' and 'task list' so this might force me back to using the trackball to select things.

The battery shown might not be the one I finally use, it's quite old and was recovered from a dead tablet but finding something about the right size shouldn't be hard.

The space in the rear of the phone where the original battery went is going to be used for the Arduino Leonardo that turns the keyboard, mouse and buttons into USB HID devices and assuming I continue with the original plan a TP4056 charging board.

I'll then use a little micro USB breakout to conveniently mount a charging socket on one of bottom corners, although with another couple of button breakouts this will be quite cramped. Were I going totally OTT there's actually space for one of the tiny USB hub boards I have, but I think then situating the external ports for plugging stuff into the device could be hard.

There is space for a Raspberry Pi Zero W, which might be an interesting addition but the phone is actually a more capable computer for any task that doesn't explicitly require a Linux system.

I'm also going to have to face up to the fact this 'quick' build won't be ready for the LARP this weekend. I could rush it and have a version made up but it's actually a bit too physically large to act as the 'covert portable terminal' that fits what the character needs. So I'm probably going to stick some spray paint on an old Sony Ericsson Xperia X10 mini pro, which is an ancient Android handset with slide out keyboard that will work just fine as that prop.

Quick cyberdeck build: Part 3

Did I say quick build? I was obviously mistaken.

I have spent far, far too long messing about trying to get the 3D printed mounts for the trackball and keyboard, well mostly the keyboard, working to my satisfaction.

The keyboard has a kind of rounded kidney shape to it and I don't have the modelling skills to model it exactly so I've done a lot of tweak, print, repeat today.

Also, I did a little more messing with the Arduino library I wrote yesterday and submitted it for inclusion in the Library Manager.

Also, I seemed to kill the cheap clone Leonardo board I was testing with so had to dig out and solder up the headers on another. Obviously not before I wasted time wondering what was wrong. They're tough and 5V tolerant so no idea how I killed it.

Also I faffed with the idea of using a different Android phone than originally planned as it's much smaller but it only runs Android 6, which is frankly way too old and won't handle Termux.

Note to self: Do not get involved in trying to install LineageOS on the Moto G4+, it needs to stay working.

Quick cyberdeck build: Part 2

First, shave your yak.

In the cyberdeck I would like to use this little RGB illuminated trackball sold by Pimoroni. There's python support, but no Arduino library support available.

So I wrote an Arduino library for it.

That's essentially a day wasted. The code isn't consequential but instead of smacking it straight into the spaghetti code I'm going to stick on the Arduino inside the cyberdeck case it's now a library with methods for things I don't need like the onboard LEDs.