Monday, 4 September 2017

LAN-party in a box, part 3

Part 3: The software side
Finally got round to tidying up the code. There's the arduino sketch which powers the lights, and a java application that runs in the background on the server, reads the server logs and will produce the serial commands that are sent to the arduino.

It uses the RXTX serial library, and the code itself is available on GitHub at https://github.com/darkmidnight/UnrealLANBox

There's still room for plenty of improvement, like getting the lights to flash when a flag has been taken.

I also put together a video showing the build process and a demo of it in action, see below

Tuesday, 25 July 2017

LAN-party in a box part 2


Part 2 - A new case

When thinking of a new case for the LAN box, I wanted to ensure it was easy to setup, and as portable as possible. As portable typically means 'small', it was necessary to consider the heat that would be generated by the computer when it was in use.


I purchased this ammo box from the local army surplus years ago, and it's only been used for storage, but it fits the bill nicely, it's fairly small in relation to the flight case I'd used before, has a handle for portability, and being metal should help dissipate the servers heat during use.

On top of all that, being an ammo tin, it fits the military/industrial aesthetic of Unreal well, but I wanted to do something to set it apart.

While I was planning this project, we were joking during our weekly games that we needed some kind of trophy that each weeks winner could keep on their desk, so I was looking at options for that, and I was toying with the idea of creating the iconic Unreal logo in brass, to create a shield-type trophy.

Then I figured we could combine the two ideas.


To start with I printed the logo to fit the 20x20cm brass that I ordered, and stuck the logo to the sheet to use as a template.

My original intent was to cut the brass on the bandsaw, but after a bit of testing, it was incredibly slow, and I found it easier to start by drilling around the logo, and then use a Dremel to cut out the shape by joining the holes together. From there it was just a case of grinding and filing down the edges.

The same process was used to cut a hole in the side of the ammo box for the window to be mounted, though as the metal was quite a bit thicker, I used an angle grinder for grinding down the edges.

The brass was glued and sandwiched between two sheets of clear acrylic, and mounted into the hole.

A post shared by Anthony (@darkmidnight_diy) on

The original netbook that I used was too wide to fit the box, but I found another that just about fit - although I had to remove the screen, the battery, and pretty much anything else I could get away with ditching.

The next step was to add a band of WS2812 LEDs on the inside of the case, around the window, so that the logo could be backlit. To control them I used an Arduino Pro Micro, which I can in turn from the netbooks serial port. All the code will be covered in part 3.

A post shared by Anthony (@darkmidnight_diy) on

Update: Part 3 available here

Wednesday, 28 June 2017

LAN-party in a box, part 1


Part 1 - The Story So Far
 
The title’s pretty much self-explanatory. My colleague, Ray, and I were talking about “The good old days” of online gaming – before Call of Duty, when the dominant games were Unreal Tournament, Quake 3, Counterstrike and the like.

We were toying with the idea of trying to run a LAN game over the work network, but figured the bureaucratic headache that would cause wasn’t worth it.

Then I got to thinking about how to cram everything we’d need for a LAN game into a single portable box, and could easily be set-up, used and torn down again within a lunch hour.

The great thing about returning to older games is that the system requirements, that once required hi-end PCs will now run on pretty much any old commodity hardware. What once meant lugging around heavy, bulky desktops, separate monitors and keyboards, could be replaced with a modern, lightweight laptop.

Ray was bringing in his laptop, and I setup an old laptop for me to use.

I installed Fedora 25 from a live CD (no particular reason for this distro, other than I had a live CD for it to hand – I’m sure others will work fine) Installed WINE, and the game.

We also wanted to use a dedicated server, so I dug through my stack of old hardware to find something to use - and I setup the server using an old netbook.

The networking was provided by an old home router of mine, which supplied DHCP configuration, making the network a straightforward plug and play.

This whole setup was stuffed into a metal flight-case for taking into work, and worked well for a spot of lunchtime multi-player, but there were a few downsides:

  • Cabling – lots of mains plugs and network cables.
  • Size - it's quite a substantial amount of gear to lug around - the flight case measures 33x46x15 cm and is packed pretty full.
  • Although UT runs quite well in WINE, there is definitely some latency. The server seems fine, but graphically on the client machine, it's noticeable
The original setup - the netbook in the background is the current server.

Obviously something needs to be done to address the shortcomings, so this will form the basis of my next project - it should be a nice mix of DIY (for the case) and tech (hardware, software config, networking etc).

Update: Part 2 is now here

Monday, 5 June 2017

Wiresaw from Guitar String


A wire saw is piece of wire used for cutting. It's kind of like a band saw blade, except instead of having teeth, it cuts using abrasion - like a Dremel cutting disc does. It's a useful addition to the toolkit - it's one of those tools that might not see everyday use, but those times when you do need it, it more than pays for itself.

Most retail wire-saws tend to be aimed at the military / survivalist market, but I find mine most useful in trimming supports from 3D prints and cutting in hard to reach spots when dismantling electronics.

The great thing about wiresaws, is a lot of people will have one in their home, even without realising it. My wire saw is a string from a guitar.

The wound nickel creates the abrasive surface, being nickel it's quite resistant to the heat from the abrasion, and being a guitar string, is designed to withstand bending and flexing.

the downside to this, is they can be a pain to keep tidy. As they bend, they become more difficult to keep tidy.

So as a weekend project I made a simple case to store the wiresaw, helping to wind it neatly, yet keep it accessible.


As this was an off-the-cuff project, these measurements were not measurement by design, but what they ended up as after the fact, and are just there to give a rough indication of the sizes required.

I started with a 35mm length of dowel (10mm diameter). which i drilled two small holes through.






I grabbed a scrap piece of pine and cut a 20x35x55mm piece. I used a 20mm spade bit to drill partially into the 35mm side, and then used a 10mm drill to cut the rest of the way to the other side.




I used a router to carve out a groove from this hole to the short edge of the wood. There was a bit of tear out, but it doesn't affect it. The staple across the groove it there to act as a guide for the wire. I put the dowel in place, so that one of the drilled holes is on each side.




The guitar string is threaded through the carved channel, threaded through the dowel hole and tied. A piece of hardboard was cut to size, a 10mm hole drilled in line with the dowel and nailed to this side, effectively 'closing' the case. A small drill bit was pushed through the protruding dowel hole on the other side, and turned to wind the string in. A keyring was tied to the other end of the string, as a handle for the saw.




The drill bit was replaced with a loop of copper wire to provide a winding handle.

In an ideal world, this would have auto-retracted, like a tape measure, but some testing that I did showed that wasn't really practical.

Finally everything was trimmed to size and sanded down.




The finished project, closed (left) and open (above)

Friday, 12 May 2017

In-Car GoPro headrest mount

I recently got a GoPro camera, primarily so that I can start using it to create more video content for this blog, but also from time-to-time I do driving track days, and would like to use the camera there as well.

On track days, a mechanical mount is required for any cameras mounted to the car (i.e., no suction cups to the windscreen). I wanted to capture some footage with my GoPro, so started searching around for in car mounts. The one I found mounted to the headrest, so that the camera sat at head level, between the driver and passenger seats. However, the price tag on it was ridiculous (£120+) for what is essentially a metal bar with a mount at the end. So I decided to make my own.

It centres around a length of square aluminium tube. I purchased a 500mm length online, expecting to need to cut it down a bit, but as it happens that length is ideal for my car, so I decided to leave it as-is.

The next step is to measure the position and diameter of the headrest poles. For this I just removed my passenger headrest and marked their position directly onto the tube.
The diameter calls for holes of 14mm.

Obviously, drills intended for metalwork would be preferable, but as aluminium is quite a soft metal, woodworking ones can be used in a pinch. I used a 14mm forstner drill to punch through the tube.



The bolt that will hold the 3D printed gripper in place, with holes drilled for a adjustable grip on the other side


To secure the bar to the headrest, I designed and 3D printed the parts shown below

Headrest clamp.
SCAD code listed below


The idea being that once printed, they're split into 2, and fit into the aluminium tube, where they're secured with a bolt and locking nut so that they clamp against the headrest poles. On one side the bolt will be able to be loosened and slid away, to loosen the grip, allowing the mount to be removed.
A small amount of Sugru was also applied to the inside of the plastic mounts, to provide a 'grippier' surface against the headrest, and hopefully avoid it being scratched.


GoPro Adapter.
SCAD code listed below.


I tried using some designs for GoPro mounts that I found on Thingiverse, so save me having to reinvent the wheel, however the ones I tried didn't work too well, and snapped. I decided to use one of the mounts which came with the camera, have it fit in a 3D printed frame (see right)



The initial idea was to have this fit flush in the tube, with cut outs for the mount, and holes for the bolt to thread through. However, I instead ended up oversizing the 3D printed frame, and it fit tightly into the end of the tube, so I decided to leave it as-is, although opted to keep the bolt, just to ensure the 3D printed and original GoPro mount are securely together (they're a snug fit anyway, and the bolt is probably redundant, but I'd rather have the extra layer of protection).


Test Video

 
SCAD code for the head rest clamp

difference() {
    cube([60,15,15]);
    translate([25,7.5,-1]) {cylinder(50,7,7,true);}
    translate([9,7.5,-1]) {cylinder(50,3.5,3.5,true);}
    translate([41,7.5,-1]) {cylinder(50,3.5,3.5,true);}
    translate([41,7.5,9.1]) {cylinder(r=6, h=6, $fn=6);}
    translate([9,7.5,9.1]) {cylinder(r=6, h=6, $fn=6);}
}


SCAD code for the GoPro adapter

difference() {
    lCube();
    cube([15,10,50], center=true);
    rotate([90,0,0]) {
        cylinder(50,3,3,$fn=50,center=true);
    }
}
difference() {
    cube([25,3,16],center=true);
    rotate([90,0,0]) {
        cylinder(50,3,3,$fn=50,center=true);
    }
}
module lCube() {
    cube([25,16,16], center=true);
    translate([20,0,0]) {
        cube([25,16,16], center=true);
    }
    
}










Wednesday, 3 May 2017

Old Hand Saw Restoration

I found these old saws in my local scrap store for a quid. I've always been a fan of the old-fashioned aesthetic of wooden handles. So being just a quid, I thought I'd grab them, although I wasn't really sure what I wanted to do with them.

Before

A post shared by Anthony (@darkmidnight_diy) on

The Blades
The blades were very rusty, and I wasn't sure if they'd be salvageable. I was only really after the wooden handles anyway, but thought it'd be worth a shot restoring them.

One of the "old-wives tale"-type solutions for rust is white vinegar. I was sceptical, but it's a cheap option, so I gave it a shot, and it worked surprisingly well.

It takes some time, but takes little actual working time - I just set up the blades soaked in the vinegar (I found it easier to wrap the blades in kitchen roll/tissue paper and soaking that, rather than trying to find a suitably sized container).

I did that first thing in the morning, left them most of the day and later rinsed them off and scrubbed the blades. It got the worst off, but there was still a few spots of rust that remained. For that I used a wire brush.

The screws were brass, and cleaned up easily with Brasso.

The Handles
The handle of the tenon saw was in the worst state of the two - removing the blade revealed quite a large crack running from the near screw hole to the hand opening. During disassembly this caused a fragment to break away, but I was able to glue it back neatly with Superglue and it's not noticeable unless it's being looked for.

The flat sides of the handle I sanded with an orbital sander, but sanding the curved areas required a Dremel and a lot of patience.

Once sanded both handles were stained with a redwood stain, applied using a cloth rather than a brush (I find this highlights the natural woodgrain better).

After

A post shared by Anthony (@darkmidnight_diy) on

Now they're restored, I'm still not entirely sure what to do with them. I have plenty of other saws, so it's not like I'll particularly need them for actual work, so I'll likely just use them for some artsy display or something in the workshop.

Side note: After removing all the rust, I discovered this faint engraving on the side of the tenon saw. It says PT2250, and appears hand-engraved.
It's very faint and difficult to photograph clearly, but it's hand written and says "PT 2250". Wonder what it means?

Monday, 17 April 2017

App Update: Bluetooth Macro and Voice Input v2.0


The Macro Input System app has undergone a significant overhaul.

Macros are now stored in an internal database, and can have categories assigned.

Download

To create a macro
Select the menu, then Create Macro. Give the macro a name, short description, category and the actual macro content (in the same format as previous versions of the app), hit create.

If you have multiple macros in the same category, they will be nested in the macro list. Useful for keeping similarly themed snippets together – terminal commands, code snippets, etc.


To send a macro
Tap on the macro in the list. Alternatively, long press on the macro in the list, and from the pop-up, select Send. If you want to preview the text that will be sent before sending, tick the Preview checkbox. If you select this, then when you tap on the macro, a pop-up will appear displaying the text and ask for confirmation before sending.

To edit a macro
Long press on the macro in the list, and from the popup, select Edit, where you’ll be taken to the same screen as in the screenshot above and be able to edit the description, category and content.

To delete a macro
Long press on the macro in the list, and from the popup, select Delete.

To import macros from previous versions
There’s two way you can do this:

1) From the menu, select Create Macro, then from the options menu again, select Load from File. You’ll be presented with a file list as you would have in previous versions of the app. Navigate to the macro you want to import. The Create Macro dialog will populate with the name and content of the macro. From here you can edit the category and description, and save it to the database.

2) From the menu, select Quick Import. You’ll be presented with a file list as you would have in previous versions of the app. Navigate to the macro you want to import. The macro will be immediately imported, with the file name as it’s title, and “Quick Import” as it’s category. You can edit this later if need be.

Note that once imported, editing the macro will need to be done via the edit function outlined above. Changing the file on your phone will not update the macro.

 
Using Speech Recognition
Either hit the speech recognition button or swipe to access the Speech Recognition screen. On that screen, hit Start Voice Recognition to begin. When the prompt appears, start speaking. When you’re done, stop speaking, and the results will be processed, and a list will appear of options that the system thought it heard, starting with the highest probability.

If the recognised speech matches the name of one of your saved macros, it will be added to this list.
As with the other macros, tap to send the text.

You can also save speech recognition macros for later use – just longpress on the macro and select Save from the menu. They will be saved under the category “From Speech Recognition”



Support
As with all my apps, it is free, and as such, I am not in a position to offer any kind of official support, so use entirely at your own risk.
If you have any trouble with it, then feel free leave a comment or tweet and I'll try to help as and when I can, but I make no guarantees.