Gas-Tight FDM 3D Printing Is Within Your Grasp

The widespread availability of inexpensive 3D printers has brought about a revolution in what can be easily made at home. However these creations aren’t perfect, particularly when it comes to the adhesion between their layers. Aside from structural failures along the layer lines there is also the question of those joins being permeable, limiting the possibility for waterproof or gas proof prints. It’s something [German Engineer] has tackled in a new video, in which he’s looking at the design and preparation of small propane tanks.

A blurry image of a red 3d-printed part exploding
This is the frame at which the 3D printed tank explodes

The attraction of propane as a fuel is that it liquefies easily on compression, so a propane cylinder or tank will be an equilibrium of liquid propane with pressurized gas above it, whose pressure depends on the ambient temperature. This means that any tank must be expected to have a working pressure somewhere between 150 and 200 PSI, with of course a design pressure far exceeding that for safety reasons.

Filling a 3D printed tank immediately results in the propane escaping, as he demonstrates by putting one of his prints under water. He solves this with a sealant, Diamant Dichtol, which is intended to polymerize in the gaps between layers and create a gas-tight tank. A range of three tanks of different thicknesses are treated this way, and while the 1 mm thick variety bursts, the thicker ones survive.

It’s clear that this technique successfully creates gas-tight prints, and we can see the attraction of a small and lightweight fuel tank. But we can’t help worrying slightly about the safety, for even when the material is a lightweight 3D print, high pressure equipment is not to be trifled with. Tanks do burst, and when that happens anyone unfortunate enough to be close by sustains nasty, even life-threatening injuries. Use the technique, but maybe don’t hit it with high pressures.

Continue reading “Gas-Tight FDM 3D Printing Is Within Your Grasp”

Happy Birthday, Tetris!

Porting DOOM to everything that’s even vaguely Turing complete is a sport for the advanced hacker. But if you are just getting started, or want to focus more on the physical build of your project, a simpler game is probably the way to go. Maybe this explains the eternal popularity of games like PONG, Tetris, Snake, or even Pac-Man. The amount of fun you can have playing the game, relative to the size of the code necessary to implement them, make these games evergreen.

Yesterday was Tetris’ 40th birthday, and in honor of the occasion, I thought I’d bring you a collection of sweet Tetris hacks.

On the big-builds side of things, it’s hard to beat these MIT students who used colored lights in the windows of the Green Building back in 2012. They apparently couldn’t get into some rooms, because they had some dead pixels, but at that scale, who’s complaining? Coming in just smaller, at the size of a whole wall, [Oat Foundry]’s giant split-flap display Tetris is certainly noisy enough.

Smaller still, although only a little bit less noisy, this flip-dot Tetris is at home on the coffee table, while this one by [Electronoobs] gives you an excuse to play around with RGB LEDs. And if you need a Tetris for your workbench, but you don’t have the space for an extra screen, this oscilloscope version is just the ticket. Or just play it (sideways) on your business card.

All of the above projects have focused on the builds, but if you want to tackle your own, you’ll need to spend some time with the code as well. We’ve got you covered. Way back, former Editor in Chief [Mike Szczys] ported Tetris to the AVR platform. If you need color, this deep dive into the way the NES version of Tetris worked also comes with demo code in Java and Lua. TetrOS is the most minimal version of the game we’ve seen, coming in at a mere 446 bytes, but it’s without any of the frills.

No Tetris birthday roundup would be complete without mentioning the phenomenal “From NAND to Tetris” course, which really does what it says on the package: builds a Tetris game, and your understanding of computing in general, from the ground up.

Can you think of other projects to celebrate Tetris’ 40th? We’d love to see your favorites!

Baffle The Normies With This Binary Thermometer

We think it’s OK to admit that when someone puts a binary display on a project, it’s just a thinly veiled excuse to get more blinkenlights into the world. That and it’s a way to flex a little on the normies; you’ve gone pretty far down the tech rabbit hole to quickly decipher something like this binary-display thermometer, after all.

Don’t get us wrong, we think those are both perfectly valid reasons for going binary. And all things considered, a binary display for a thermometer like [Clovis Fritzen]’s is much simpler to decode than, say, a clock. Plus, it seems a bit that this build was undertaken at least partially as an exercise in Charlieplexing, which [Clovis] uses to drive the six-bit LED display using only three lines of GPIO from the Digispark ATtiny85 board running the show.

The temperature sensor is a DHT11, whose output is read by the microcontroller before being converted to binary and sent to the six-bit display. The 64-degree range is perfect for displaying the full range of temperatures most of us would consider normal, although we’d find 63°C a touch torrid so maybe there’s a little too much resolution on the upper end of the scale. Then again, switching to Fahrenheit would shift it toward the hypothermia end of the scale, which isn’t helpful. And you can just forget about Kelvin.

The Cheap CNC3018 Gets A Proper Revamp

Many people have been attracted to the low price and big dreams of the CNC3018 desktop CNC router. If you’re quick, you can pick one up on the usual second-hand sales sites with little wear and tear for a steal. They’re not perfect machines by any stretch of the imagination, but they can be improved upon, and undoubtedly useful so long as you keep your expectations realistic.

[ForOurGood] has set about such an improvement process and documented their journey in a whopping eight-part (so far!) video series. The video linked below is the most recent in the series and is dedicated to creating a brushless spindle motor on a budget.

As you would expect from such a machine, you get exactly what you pay for.  The low cost translates to thinner than ideal metal plates, aluminium where steel would be better, lower-duty linear rails, and wimpy lead screws. The spindle also suffers from cost-cutting, as does the size of the stepper motors. But for the price, all is forgiven. The fact that they can even turn a profit on these machines shows the manufacturing prowess of the Chinese factories.

We covered the CNC 3018 a while back, and the comments of that post are a true gold mine for those wanting to try desktop CNC. Warning, though: It’s a fair bit harder to master than 3D printing!

Continue reading “The Cheap CNC3018 Gets A Proper Revamp”

The End Of BLHeli_32: Long Live AM32?

An essential part of drones are the Electronic Speed Controller (ESC) which translate the commands from the flight computer into responses by the connected brushless motors (generally BLDCs). As the ESC determines a lot of the performance characteristics of a drone, it has its own firmware, which for (FPV) drones is overwhelmingly BLHeli, specifically the 32-bit version (BLHeli_32). Now the Norwegian company (BLHeli AS) behind this closed source firmware has thrown in the towel, citing illegal use of its firmware by sanctioned countries like Russia for purposes like warfare. This news and its implications are covered in detail in a video by the [Mads Tech]  YouTube channel, including the message sent to customers by the company’s lawyer.

So far the GitHub repository is still online, featuring binary images for BLHeli_32, as well as the open source BLHeli (8-bit Atmel/Silabs) firmware and BLHeli_S (multirotor 8-bit Silabs) firmware. Due to the open source nature of these earlier projects forks already exist, such as BlueJay for BLHeli_S, and with the AM32 project there is an open source 32-bit ESC alternative. For 8-bit platforms it would thus seem that even with BLHeli_32 vanishing there is no impact at all, while for 32-bit platforms AM32 seems to be largely a drop-in solution.

Regardless of the reasons behind BLHeli_32 vanishing like this, the community and businesses can now hopefully move their (financial) support over to the AM32 project, making this more of a blip than an outright disaster for those who are into their high-end multicopter drones.

Thanks to [Frank Zhao] for the tip.

Continue reading “The End Of BLHeli_32: Long Live AM32?”

Make Your Code Slower With Multithreading

With the performance of modern CPU cores plateauing recently, the main performance gains are with multiple cores and multithreaded applications. Typically, a fast GPU is only so mind-bogglingly quick because thousands of cores operate in parallel on the same set of tasks. So, it would seem prudent for our applications to try to code in a multithreaded fashion to take advantage of this parallelism. Or so it would seem, but as [Marc Brooker] illustrates, it’s not as simple as one would assume, and it’s very easy to end up with far worse overall performance and no easy way to fix it.

[Marc] was rerunning an old experiment to calculate the expected number of birthdays in a shared group of people using brute force. The experiment was essentially a tight loop running a pseudorandom number generator, the standard libc rand() function. [Marc] profiled the code for single-thread and multithreaded versions and noted the runtime dramatically increased beyond two threads. Something fishy was going on. Running perf, [Marc] noted that there were significant L1 cache misses, but the real killer for performance was the increase in expensive context switches.  Perf indicated that for four threads, the was an overhead of nearly 50% servicing spin locks. There were no locks in the code, so after more perf magic, the syscalls taking all the time were identified.  Something in there was using a futex (or fast userspace mutex) a whole lot.

Continue reading “Make Your Code Slower With Multithreading”

The MXM card with the 3dfx chip in the center, black silkscreen, mounted on the MXM to PCIe adapter, green silkscreen

An MXM Take On The 3dfx Voodoo

[sdz] of Vogons forum brings us an unexpected device for the 21st century – a 3dfx Voodoo 4 card in MXM format, equipped with 64MB of RAM. This isn’t just a showpiece – this card actually, properly works when installed into our hacker’s Dell Precision M4800, and [sdz] tells us more on how the card came to be.

Structure diagram of the cardEquipped with a VSA-100 GPU, this card has a whole lot of support components for adapting old interfaces to modern ones. There’s a PCIe-PCI bridge IC, an FPGA, HDMI muxes, and a Realtek scaler for video conversion. Handling all the MXM interfaces would’ve been downright impossible, so the card also holds an LVDS header for the M4800’s panel. Plus, for testing all of it, [sdz] has developed a PCIe to MXM adapter board with minimal circuitry needed to have the card work – this is a seriously involved hack and it’s executed remarkably well.

The forum post shows a whole lot of the journey, from receiving the PCBs to code and FPGA gateware bringup, as well as videos of VGA and HDMI operation. In the end, our hacker shows us a fully working setup, the 3dfx card inserted into M4800 and driving its display, as well as overclocking experiments; the author has promised to open-source the card files in due time, too. It’s seriously nice to see DIY MXM cards in the wild, and if you ever wanted to build one, we’ve got an article tells you everything you could want to know about the MXM standard.

We thank [Misel] for sharing this with us!

Continue reading “An MXM Take On The 3dfx Voodoo”