MoreRSS

site iconHackadayModify

Hackaday serves up Fresh Hacks Every Day from around the Internet. Our playful posts are the gold-standard in entertainment for engineers and engineering enthusiasts.
Please copy the RSS to your reader, or quickly subscribe to:

Inoreader Feedly Follow Feedbin Local Reader

Rss preview of Blog of Hackaday

Venus Flytrap Takes Ride Through a Particle Accelerator

2026-03-24 13:00:26

In the blue corner, we have the VENUS FLYTRAP! In the red corner, we have the underdog of the century, AN ENTIRE PARTICLE ACCELERATOR. Yes, you read that right. When you have a particle accelerator, it’s only second nature to throw anything you can into it. That’s why [Electron Impressions] put a poor fly-eating trap into their accelerator.

Chloride and potassium ions leaving cause osmotic pressure in neighboring cells

The match-up isn’t quite as arbitrary as it might seem at first. The flytrap’s main mechanism of trapping and digesting insects relies heavily on intracellular ion movement. Many cells along the inside of the trap have hair-activated calcium channels that respond to a fly landing on its surface. This ion movement then creates an action potential, which propagates along the entire surface, triggering closing. As the potential moves across different cells, other ions leave and create osmotic pressure. This pressure is what creates the mechanical movement.

Of course, this makes it no surprise when the plant finds itself under the ionizing radiation that every single head closes at once. While this is a cool demonstration, there is a slight side effect of killing every single cell by ripping apart the trap’s DNA.

Well, who would have guessed that the underdog accelerator would have won… Anyways, the DNA being ripped apart is far from ideal for repeatability. If you want to learn more about genetic features that SHOULD be repeated, then make sure to check out the development of open-source insulin!

Low Self-Discharge, High-Voltage Supercapacitors Using Porous Carbon

2026-03-24 10:00:11

Supercapacitors rely mostly on double-layer capacitance to bridge the divide between chemical batteries and traditional capacitors, but they come with a number of weaknesses. Paramount among these are their relatively low voltage of around 2.7 V before their electrolyte begins to decompose, as well as their relatively high rates of self-discharge. Here a new design using lignin-derived porous carbon electrodes and a fluorinated diluent was demonstrated by [Shichao Zhang] et al., as published in Carbon Research, that seems to address these issues.

Most notable are the relatively high voltage of 4 V, an energy density of 77 Wh/kg and a self-discharge rate that’s much slower than that of conventional supercapacitors. In comparison with these supercapacitors, these demonstrated versions are also superior in terms of recharge cycles with 90% of capacity remaining after 10,000 cycles, which together with their much higher energy density should prove to be quite useful.

This feat is accomplished by using lignin as the base for the carbon electrodes to make a highly porous surface, along with the new electrolyte formulation consisting of alithium salt (LiBF4) dissolved in sulfolane with TTE as a non-solvating diluent. The idea of using lignin-derived carbon for such a purpose has previously been pitched by [Jia Liu] et al. in 2022 and [Zhihao Ding] in 2025, with this seemingly one of the first major applications we may be seeing.

Although the path towards commercialization from a lab-assembled prototype is a rough one, we may be seeing some of these improvements come to supercapacitors near you sooner rather than later.

PicoZ80 is a Drop-in Replacement for Everyone’s Favorite Zilog CPU

2026-03-24 07:00:08

The Z80 has been gone a couple of years now, but it’s very much not forgotten. Still, the day when new-old-stock and salvaged DIP-40 packaged Z80s will be hard to come by is slowly approaching, and [eaw] is going to be ready with the picoZ80 project.

You can probably guess where this is going: an RP2350B on a DIP-40 sized PCB can easily sit on the bus and emulate a Z80. It can do so with only one core, without breaking a sweat. That left [eaw] a second core to play with, allowing the picoZ80 to act as a heck of an accelerator, memory expander, USB host, disk emulator– you name it. He even tossed in an ESP32 co-processor to act as a WiFi, Bluetooth, and SD-card controller to use as a virtual, wirelessly accessible disk drive.

The onboard ram that comes with an RP2350B would be generous by 1980s standards, but [eaw] bumped that up with an 8 MB SPRAM chip–accessed in 64 pages of 64 kB each, naturally. If more RAM than a very pricey hard drive wasn’t luxury enough, there’s also 16 MB of flash memory available. That’s configured to store ROM images that are transferred to the RAM at boot– the virtual Z80 isn’t grabbing from the flash at runtime in [eaw]’s architecture, because apparently there are limits to how much he wants to boost his retro machines.

[eaw] has the PCB fab do all the fiddly assembly these days. Earlier versions were hand-soldered to his credit.
There are already drivers to use in certain Z80 systems. You can of course configure it as a bare Z80 with no machine-specific emulation, or set up the picoZ80 with the “persona” of a classic Z80 machine. So far [eaw] has tried this on an RC2014 homebrew computer, as well as Sharp MZ-80A– which we’ve seen here before, in miniature–and Sharp MZ-700. The Sharp drivers are still works in progress, after which the Amstrad PCW8256/Tatung TC01 is apparently next. We’ve seen Amstrad PCWs here a time or two as well, come to think of it.

If somehow you missed it, the venerable Z80 only hit EOL in 2024, so supplies won’t be drying up any time soon. This hack is really more about the quality-of-life addons this allows. Come back in a decade, and we’ll see if the RP2350 lasts longer than the stack of NOS Z80s.

Acoustic Drone Detection On the Cheap with ESP32

2026-03-24 04:00:34

We don’t usually speculate on the true identity of the hackers behind these projects, but when [TN666]’s accoustic drone-detector crossed our desk with the name “Batear”, we couldn’t help but wonder– is that you, Bruce? On the other hand, with a BOM consisting entirely of one ESP32-S3 and an ICS-43434 I2S microphone, this isn’t exactly going to require the Wayne fortune to pull off. Indeed, [TN666] estimates a project cost of only 15 USD, which really democratizes drone detection.

It’s not a tuba–  Imperial Japanese aircraft detector being demonstrated in 1932. Image Public Domain via rarehistoricalphotos.com

The key is what you might call ‘retrovation’– innovation by looking backwards. Most drone detection schema are looking to the ways we search for larger aircraft, and use RADAR. Before RADAR there were acoustic detectors, like the famous Japanese “war tubas” that went viral many years ago. RADAR modules aren’t cheap, but MEMS microphones are– and drones, especially quad-copters, aren’t exactly quiet. [TN666] thus made the choice to use acoustic detection in order to democratize drone detection.

Of course that’s not much good if the ESP32 is phoning home to some Azure or AWS server to get the acoustic data processed by some giant machine learning model.  That would be the easy thing to do with an ESP32, but if you’re under drone attack or surveillance it’s not likely you want to rely on the cloud. There are always privacy concerns with using other people’s hardware, too. [TN666] again reached backwards to a more traditional algorithmic approach– specifically Goertzel filters to detect the acoustic frequencies used by drones. For analyzing specific frequency buckets, the Goertzel algorithm is as light as they come– which means everything can run local on the ESP32. They call that “edge computing” these days, but we just call it common sense.

The downside is that, since we’re just listening at specific frequencies, environmental noise can be an issue. Calibration for a given environment is suggested, as is a foam sock on the microphone to avoid false positives due to wind noise. It occurs to us the sort physical amplifier used in those ‘war tubas’ would both shelter the microphone from wind, as well as increase range and directionality.

[TN] does intend to explore machine learning models for this hardware as well; he seems to think that an ESP32-NN or small TensorFlow Lite model might outdo the Goertzel algorithm. He might be onto something, but we’re cheering for Goertzel on that one, simply on the basis that it’s a more elegant solution, one we’ve dived into before. It even works on the ATtiny85, which isn’t something you can say about even the lightest TensorFlow model.

Thanks to [TN] for the tip. Playboy billionaire or not, you can send your projects into the tips line to see them some bat-time on this bat-channel.

Build This Open-Source Graphics Calculator

2026-03-24 02:30:18

Graphics calculators are one of those strange technological cul-de-sacs. They rely on outdated technology and should not be nearly as expensive as they are, but market effects somehow keep prices well over $100 to this day. Given that fact, you might like to check out an open-source solution instead.

NumOS comes to us from [El-EnderJ]. It’s a scientific and graphic calculator system built to run on the ESP32-S3 with an ILI9341 screen. It’s intended to rival calculators like the Casio fx-991EX ClassWiz and the TI-84 Plus CE in terms of functionality. To that end, it has a full computer algebra system and a custom math engine to do all the heavy lifting a graphic calculator is expected to do, like symbolic differentiation and integration. It also has a Natural V.P.A.M-like display—if you’re unfamiliar with Casio’s terminology, it basically means things like fractions and integrals are rendered as you’d write them on paper rather than in uglier simplified symbology.

If you’ve ever wanted a graphics calculator that you could really tinker with down to the nuts and bolts, this is probably a great place to start. With that said, don’t expect your local school or university to let you take this thing into an exam hall. They’re pretty strict on that kind of thing these days.

We’ve seen some neat hacks on graphics calculators before, like this TI-83 running CircuitPython. If you’re doing your own magic with these mathematical machines, don’t hesitate to notify the tips line.

Linux Fu: UPNP A Port Mapping Odyssey

2026-03-24 01:00:39

If you’ve ever run a game server or used BitTorrent, you probably know that life is easier if your router supports UPnP (Universal Plug and Play). This is a fairly old tech — created by a standards group in 1999 — that allows a program to open an incoming port into your home network. Of course, most routers let you do this manually, but outside of the Hackaday universe, most people don’t know how to log into their routers, much less how to configure an open UDP port.

I recently found myself using a temporary setup where I could not access the router directly, but I needed some open ports. That got me thinking: if a program can open a port using UPnP, why can’t I? Turns out, of course, you can. Maybe.

Caveats

The first thing, of course, is that you need your firewall open, but that’s true no matter how you open up the router. If the firewall is in the router, then you are at the mercy of the router firmware to realize that if UPnP opens something up, it needs to open the firewall, too.

You might think, “Of course it will do that.” However, I’ve found there is a lot of variation in the firmware from different vendors, and if you aren’t in control of the router, it is more likely to have buggy firmware.

The other caveat is that the router needs UPnP enabled; if it isn’t and you have to get into it anyway, you might as well set up port forwarding in the usual way. I was in luck. The router I was behind had UPnP turned on.

In Theory

There are several libraries aimed at working with UPnP and many of them come with simple test clients. I decided to install miniupnpd, which has the upnpc utility. You don’t have to be root to run it. In theory, it should be very simple to use. You can use -l to list all the router’s current UPnP ports. The -a option adds a port, and -d deletes it. There are a few other options, but that covers most of the common use cases.

So, to open external port 2222 to port 22 on 192.168.1.133 you should be able to say:

upnpc -e 'HaD Test' -a 192.168.1.133 22 2222 tcp 3600

The -e option lets us make up a creative title for the mapping. The 3600 is the number of seconds you need the port open. Easy, right? Well, of course not.

Under the Hood

UPnP covers several different areas, including IP assignment and streaming media. However, the part of it we are using is for NAT traversal. Your router identifies as an Internet Gateway Device that other UPnP-aware programs can locate.

Unfortunately, there are two versions of the gateway device specification, and there are many compatibility problems. You are also at the mercy of the vendor’s correct interpretation of the spec.

UPNP has been known to be a security risk. In 2011, a tool appeared that let some UPnP devices map ports when asked from outside your network. Easy to imagine how that could be a bad thing.

UPNP devices advertise services that others can use, and, hopefully, your router advertises that it is a gateway. The advertisement itself doesn’t tell you much. But it does let you fetch an XML document that describes the device.

For example, part of my XML file looks like this:

11urn:schemas-upnp-org:device:InternetGatewayDevice:1OpenWRT routerOpenWRT
http://www.openwrt.org/OpenWRT routerOpenWRT router1
http://www.openwrt.org/00000000uuid:00000000-0000-0000-0000-000000000000
urn:schemas-upnp-org:service:Layer3Forwarding:
1urn:upnp-org:serviceId:L3Forwarding1/L3F.xml/ctl/L3F/evt/L3Furn:
schemas-upnp-org:device:WANDevice:1WANDeviceMiniUPnPhttp://miniupnp.free.fr/WAN DeviceWAN Device20260105
...

In Practice

There are a few strange things about the way upnpc works. First, when you do a list, you’ll get an error at the end. Apparently, that’s normal. The program simply asks for entry zero, one, two… until it gets an error (a 713 error).

However, when I tried to add an open port to this particular router, it always failed, giving me an error that implied that the port was already in use. Of course, it wasn’t.

Through experimentation, I figured out that the UPnP service on the router (the one I can’t get into) isn’t running as root. So any port number less than 1,024 is unmappable in either direction. Of course, this may not be a problem for you if you have a sane router. You could argue whether this is a bug or not, but it certainly didn’t give a good error message.

Testing, One, Two…

Just to do a simple test, I issued the following command. (with my firewall off, just for testing):

upnpc -e HADTEST -a 192.168.1.133 8022 8023 tcp 3600

I verified the port opening using the -l option. Then I stood up a really dumb telnet-style server on the local port (8022):

socat readline TCP-LISTEN:8022,reuseaddr,fork

From a machine on another network, I issued a telnet command to my public IP (198.37.197.21):

telnet 198.37.197.21 8023

Of course, I could have used 8022 for both ports, but I wanted it to be clear which argument was which. At this point, typing some things on the remote machine should show right up on the local machine, punching through the firewall.

In case you forgot, you can escape out of Telnet using Control-] and then a “q” will close the program. You can also just terminate the socat program on the local side.

More Than One Way

It is a bummer I couldn’t open up an ssh port using this method, although you can run sshd on a high port and get there that way. But it is better than nothing. Better still would have been to replace the router, but that wasn’t an option in this case.

There are other tools out there if you are interested. NAT-PMP is easy to use from Python, for example. There’s also something called PCP (not the performance co-pilot, which is something else). Many routers don’t support either of these, and we hear that implementations are often buggy, just like UPnP.

For the record, NAT-PMP didn’t give me a better error message, either. So the moral is this: if you can, just punch a hole in your router the old-fashioned way. But if you can’t. Linux almost always gives you another option.