A Modular Macro Keypad

The introduction of the ATmega32U4 microcontroller, with its integrated USB controller, made a lot of hardware tasks much simpler than they were before. One of the arenas it revolutionized was custom keyboards, making it much easier to build not only standard mechanical keyboards, but keyboards of all kinds of shapes and layouts and custom macro keyboards as well. This trend has continued on for the better part of the past decade with other microcontrollers beyond the 32U4 now available as well, but this modular macro keypad takes it to a new level by keeping that simplicity but also keeping costs down.

The suutari20, as it is called by its creator [Squalius] is able to achieve these aims by using 3.5 mm jacks commonly found in audio equipment. Each jack can support up to three keys, with the hub ultimately able to support 18 different keys. Those can include analog devices as well, such as volume knobs or jog controllers. The macro pad is powered by an RP2040 microcontroller from a Raspberry Pi Pico and uses QMK firmware, so those already familiar with custom keyboard programming will have no problem getting started.

From there, all that’s needed is a case, in this example a 3D printed one, and the commodity audio hardware to plug everything in to. It enables whatever functions can be thought of in a macro pad, and although the design focuses on simplicity and cost, this macro pad takes the concept to the extreme with modular keys that each have their own microcontroller built-in.

Continue reading “A Modular Macro Keypad” →

Abusing SQL To Play DOOM

Most laypeople who encounter SQL think of it purely as a tool for managing large datasets. While that is certainly what it was designed for, SQL is still a programming language at its core. It includes many of the features found in general-purpose languages like C or Python, and although it wasn’t built for general-purpose work, it can handle a surprising range of tasks that programmers might not expect to use it for. To demonstrate its capabilities, and perhaps to show off their skills with SQL, a group at CedarDB ported the original DOOM to this language.

The project stores the WAD data (essentially everything except the engine) in a series of tables, which was fairly straightforward compared to the rest of the project. Where it gets more complicated is managing the timing that ties the game to 35 fps, and of course rendering the images. Their rendering process takes up 1300 lines of SQL across 89 common table expressions (CTEs) which is certainly advanced for this language. The rest of the project is another 4000 lines of SQL, with a bit of Python to handle the keyboard inputs, timing, and display of the generated bitmap.

Perhaps counterintuitively, DOOM might be the perfect game to run on SQL. It was built in an era before dedicated graphics cards and isn’t truly 3D, meaning that the programmers had to do a lot of tricks to get it to look as if it is 3D. This results in a lot of data transformations uniquely suited to SQL. It’s almost like DOOM‘s original renderer was built by someone with extensive SQL knowledge in the first place. For those looking to try this out, the source code for the project is available on a GitHub page, and for some other unique implementations of DOOM there’s also this version built in regular expressions and this one in Microsoft Word.

Myst On The Atari 2600

Although the Atari 2600 was a hugely popular game console in the late 70s, its hardware specs were limited, to say the least. For a dedicated game console of the era this isn’t too surprising, but things like 128 bytes of RAM meant programmers had to work hard to make games that were fun and playable (and they didn’t always succeed). Programming on this system even now is difficult, but nonetheless [Vince] wanted to get a version of Myst running on this system.

Obviously a PC game from the 90s is much to large, in many ways, to fit into an Atari cartridge or play on the 70s-era hardware. For that, there is a “demake” of Myst, a recreation of the game purposely built to run on older hardware it was never meant for. Even so, the game is running on a specialized cartridge built by [Vince] using parts from the real Atari game cartridge BurgerTime which had a bit more memory than normal. It wasn’t quite as straightforward as flashing the new game file to an old EEPROM though; [Vince] came across all kinds of timing issues and other miscellaneous problems that stretched this project out to around a three-year endeavor.

At the end of everything, though, he has a cartridge that will run Myst on the Atari, using the E7 bank switching scheme which afforded this system more memory within the cartridge. For [Vince], who is a fan of the demo scene for consoles like this, this was an interesting experiment to push original hardware to its limits. And, if you want to try this on an Atari 2600 handheld which also uses original hardware, we’d recommend using one of these.

ESP32 Replacement For Lighting Display Controller

As a company, NanoLeaf has been producing modular lights that can be easily snapped together into various geometric shapes for around a decade. Similar to the addressable LED light strips many of us are familiar with that also became popular around a decade ago, these modular lights are supposed to be easy to configure, customize, and program. But their controllers are notoriously finicky according to [Myrik] who found that a simple ESP32 could be used to replace them when they eventually fail.

Part of the reason [Myrik] found this to be straightforward is that the company publishes their firmware and makes it essentially available to anyone. Whether or not this was purposeful is not clear; but in either case it only requires slight modification to run on the ESP32. When plugged into an existing string of panels, the panels themselves report their positions and orientations over a single data bus which the ESP32 has no problem interpreting. The ESP32 can also communicate its status over the network, meaning that it can in turn be controlled by any other lighting software a user might have.

There’s a separate Reddit post about this build as, with other users offering other potential solutions to the controller issue. But we are always happy to see more open solutions to hardware failures which keep interesting things like these out of the e-waste pile, or simply building NanoLeaf-inspired replicas from the ground up in the first place.

Ski Lift Removes Mice From Chicken Coop

Getting rid of rodents like squirrels, mice, or groundhogs is a lot like digging a hole on the beach. No matter how much you remove, it’ll always fill back in. So, while [Super Valid Designs] could keep trapping and “removing” the mice in his chicken coop, more will always work their way back in. His theory is that removing them live from the chicken coop and placing them some distance away will be more effective, and with this semi-automated ski lift that traps them and carts them off, it might end up being less work too.

The build comes to us in roughly two parts. The first is the gondolas, which not only cart the mice down the hill to freedom but also double as the mousetrap themselves. They are placed in the chicken coop, and a trap door on the ceiling with bait causes the mice to fall inside. 3D printed with acrylic windows, they are a luxurious way for a mouse to travel. At the bottom, another trap door opens onto a pile of brush, releasing the mice. The second part is the lift, built hastily out of wood and other parts lying around. After much hiking up and down the hill, [Super Valid Designs] eventually got it working properly and reliably toting the mice and automatically releasing them at the bottom of the hill.

It’s a bit too early to tell if this method is more effective than more traditional methods of dealing with mice. But it was at least a fun way to deal with the problem while he also works on more effective methods of preventing the mice from getting into his buildings in the first place. There are some simpler catch-and-release mousetraps out there as well if a ski lift is out of the question for whatever reason.

Continue reading “Ski Lift Removes Mice From Chicken Coop” →

Dramatically Increasing Usable Closet Space

As any science YouTuber or first-year physics student is quick to point out, the universe is mostly empty space. Not just space itself, but the amount of “empty” space between nuclei and their electrons is also huge. Getting rid of this empty space results in all kinds of interesting phenomena like degenerate matter and black holes. But the concept can be extrapolated into our daily lives as well; many things are so filled with air that we can get a lot more usable storage space by compressing them down a little bit. [Super Valid Designs] took this concept to a coat closet, building one that can hold an impressive number of coats.

He started by looking at an existing closet, which could hold around 21 coats but only if someone used two hands to cram the coats into the space. After a trip to a store which sells rugs, he saw a much better design that lets all the rugs pivot like the pages on a book, and took this idea to his closet using a similar mechanism designed for storing large blueprints instead of rugs. The closet he built around this mechanism has two hinged doors which allow a person easy access to the coats, and when opened the blueprint hangers pivot out like a book, allowing the coats to not only be easily accessed without disrupting the other coats, but also allow them to be compressed down by the closet door for storage.

For comparison, the original closet could only hold 10 coats when restricted to single-hand operation and 21 when using both. The new closet design is smaller, and can hold 24 coats with a single hand and over 30 when using both, a dramatic improvement of closet efficiency. To top it off, a set of cupboards on top and bottom allow for storing shoes and hats as well, and there’s even a garage for a robotic vacuum cleaner. Surprisingly, we don’t see many closet optimization builds around here. The closest we can come is another traditionally small space, a college dorm.

Continue reading “Dramatically Increasing Usable Closet Space” →

A Split Keyboard Designed For Human Hands

A surprising number of things we use in everyday life retain most of their design cues from their 19th century ancestors. The bicycle retains the same basic design as it had in 1890, as does the sewing machine, the toilet, the car, and of course, the keyboard and the QWERTY layout from old typewriters. But we aren’t doomed to have our technology perpetually living in the past. [Paul] wanted a keyboard designed around human hands, rather than being designed around a machine, so he built this unique split keyboard.

The design of this specific keyboard went through around 50 iterations before he was comfortable with it. Other design goals here were for it to be portable, and the split nature of this certainly makes it more compact as does the use of low-profile switches. Each finger’s column is angled and spaced based on the needs of that finger, with the ring finger keys sitting higher and the index finger columns angled inward. Each thumb has access to three keys, one of which is the spacebar and the other two layer keys, which is what enables this design to get down to only 36 total keys.

When thinking about it for any length of time, the modern keyboard’s design holdovers from the 1800s are fairly wasteful compared to this split, ergonomic version. Especially when looking at the spacebar, which ties up both thumbs and only performs a single task, there’s a lot of opportunity for modern designs to be more efficient, more portable, and easier on one’s body. Feel free to take this to the extreme and use all three dimensions, as long as you aren’t particularly concerned with portability.