PCB data sheet of a custom 4-bit microcontroller

Building A Microcontroller From Scratch: The B4 Thinker Project

[Marius Taciuc’s] latest endeavor, the B4 Thinker, offers a captivating glimpse into microcontroller architecture through a modular approach. This proof-of-concept project is meticulously documented, with a detailed, step-by-step guide to each component and its function.

Launched in 2014, the B4 Thinker project began with the ambitious goal of building a microcontroller from scratch. The resulting design features a modular CPU architecture, including a base motherboard that can be expanded with various functional modules, such as an 8-LED port card. This setup enables practical experimentation, such as writing simple assembly programs to control dynamic light patterns. Each instruction within this system requires four clock pulses to execute, and the modular design allows for ongoing development and troubleshooting.

Continue reading “Building A Microcontroller From Scratch: The B4 Thinker Project”

A 3D-printed 8-Shaft Table Loom

Simple 3D-Printed Table Loom For Complex Weavings

The loom has been a transformative invention throughout history, shaping the textile industry from simple hand looms to complex, fully automated machines. Now, thanks to advancements in 3D printing, this age-old craft is being revitalized by modern makers. One such creator, [Fraens], has recently designed a unique 3D-printed table loom with eight shafts, offering a simpler yet innovative approach to weaving. This project is a fresh take on traditional looms, blending centuries of design knowledge with contemporary technology.

[Fraens], a longtime enthusiast of looms, has spent considerable time studying the countless designs that have evolved over more than 200 years. Drawing inspiration from these, he has crafted a more accessible version—a table loom that can be operated using levers to control the warp threads. Unlike larger, more complex looms, this 3D-printed model allows users to experiment with various weaving patterns easily, using different colors and sequences to create beautiful, intricate designs. [Fraens] provides guidance on how to adapt patterns meant for larger looms to this compact, lever-operated version on his website and in a detailed video tutorial.

This project is perfect for anyone interested in weaving or DIY technology. [Fraens]’ 3D-printed loom offers a new way to explore textile creation, making it both approachable and rewarding. To see this innovative loom in action and learn how to build your own, check out the video below.

Continue reading “Simple 3D-Printed Table Loom For Complex Weavings”

Audio On Pi: Here Are Your Options

There are a ton of fun Raspberry Pi and Linux projects that require audio output – music players, talking robots, game consoles and arcades, intelligent assistants, mesh network walkie-talkies, and much more! There’s no shortage of Pi-based iPods out there, and my humble opinion is that we still could use more of them.

To help you in figuring out your projects, let’s talk about all the ways you can use to get audio out of a Pi or a similar SBC. Not all of them are immediately obvious and you ought to know the ropes before you implement one of them and get unpleasantly surprised by a problem you didn’t foresee. I can count at least five ways, and they don’t even include a GPIO-connected buzzer!

Let’s rank the different audio output methods, zoning in on things like their power consumption, and sort them by ease of implementation, and we’ll talk a bit about audio input options while we’re at it.

Continue reading “Audio On Pi: Here Are Your Options”

Embedded Python: MicroPython Toolkits

Last time, I talked about how MicroPython is powerful and deserving of a place in your toolkit, and it made for a lively discussion. I’m glad to see that overall, MicroPython has indeed been getting the recognition it deserves – I’ve built a large number of wonderful projects with it, and so have people I’ve shown it to!

Sometimes I see newcomers dissatisfied with MicroPython, because the helper tools they initially pick don’t suit it well. For instance, they try and start out with a regular serial terminal application that doesn’t fit the MicroPython constraints, or a general IDE that requires a fair bit of clicking around every time you need to run your code. In particular, I’d make sure that you know your options no matter whether you prefer GUI or commandline – both have seriously nice tools for MicroPython use!

The main problem to be solved with MicroPython is that you have a single serial port that everything happens through – both file upload and also debugging. For ESP8266/32-based boards, it’s a physical serial port, and for chips like RP2040 and ESP32-S* where a hardware USB peripheral is available, it’s a virtual one – which makes things harder because the virtual port might get re-enumerated every now and then, possibly surprising your terminal application. If you want to upload a program of yours, you need to free up the serial port, and to see the program’s output, you will need to reopen that port immediately after – not a convenient thing to do if you’re using something like PuTTy.

So, using MicroPython-friendly software is a must for a comfortable hacking experience. What are your options? Continue reading “Embedded Python: MicroPython Toolkits”

Getting Linux Process List Without Forking Using Just A Bash Script

The ps command is extremely useful when you want to get some quick information on active system processes (hence the name), especially followed by piping it into grep and kin for some filtering. One gotcha is of course that ps doesn’t run in the current shell process, but is forked off into its own process, so what if everything goes wrong and you absolutely need to run ps aux on a system that is completely and utterly out of fresh process IDs to hand out? In that scenario, you fortunately can write a shell script that does the same, but all within the same shell, as [Isabella Bosia] did, with a Bash shell script.

The how and why is mostly covered in the shell script itself, using detailed comments. Initially the hope was to just read out and parse the contents of /proc/<pid>/status, but that doesn’t have details like CPU%. The result is a bit more parsing to get the desired result, as well as a significant amount of cussing in the comments. Even if it’s not entirely practical, as the odds of ending up on a system with zero free PIDs are probably between zero and NaN, but as an ‘entertaining’ job interview question and example of all the fun things one can do with shell scripting it’s definitely highly recommended.

Hacker Tactic: Multi-Design Panels

Last time, we talked about single-PCB-design panels, all the cool aspects of it, including some cost savings and handling convenience. Naturally, you might wonder, and many did – can you put multiple different PCBs on a single panel? The answer is “yes, without a doubt!” The tool we used last time, KiKit, will not be as helpful here, so we’ll be looking elsewhere.

Making multi-PCB panels can help you save money, naturally, but it can also make your assembly a whole lot easier, and it can bring you hacking to a whole new level. It sure helped with mine! You might have already learned that some fabs scoff at multi-design panels and add surcharges. Well, you’ll be delighted to learn that there are more hacker-friendly fabs out there, too.

Developing PCBs In Bulk

So far, I’ve worked on about 300 different PCB designs, with half of them available in my monorepo. I’ve assembled and tested just about half of these. You might guess that this would cost a lot of money, and that assembly would take a fair bit of time, but I have some tricks up my sleeve. For a start, you can easily order PCBs 10-12 times more cheaply if you do multi-panel.

Continue reading “Hacker Tactic: Multi-Design Panels”

Watch This RC Jet Thrust System Dance

An EDF (electric duct fan) is a motor that basically functions as a jet engine for RC aircraft. They’re built for speed, but to improve maneuverability (and because it’s super cool) [johnbecker31] designed a 3D-printable method of adjusting the EDF’s thrust on demand.

Before 3D printers were common, making something like this would have been much more work.

The folks at Flite Test released a video in which they built [john]’s design into a squat tester jet that adjusts thrust in sync with the aircraft’s control surfaces, as you can see in the header image above. Speaking of control surfaces, you may notice that test aircraft lacks a rudder. That function is taken over by changing the EDF’s thrust, although it still has ailerons that move in sync with the thrust system.

EDF-powered aircraft weren’t really feasible in the RC scene until modern brushless electric motors combined with the power density of lithium-ion cells changed all that. And with electronics driving so much, and technology like 3D printers making one-off hardware accessible to all, the RC scene continues to be fertile ground for all sorts of fascinating experimentation. Whether it’s slapping an afterburner on an EDF or putting an actual micro jet engine on an RC car.

Continue reading “Watch This RC Jet Thrust System Dance”