PCB Design Review: HAB Tracker With ATMega328P

Welcome to the Design Review Central! [VE3SVF] sends us their board, and it’s a HAB (High Altitude Balloon) tracker board. It’s got the venerable ATMega28P on it, a LoRa modem and a GPS module, and it can be powered from a LiIon battery. Stick this board with its battery onto a high-altitude balloon, have it wake up and transmit your coordinates every once in a while, and eventually you’ll find it in a field – if you’re lucky. Oherwise, it will get stuck hanging on a tree branch, and you will have to use a quadcopter to try and get it down, and then, in all likelihood, a second quadcopter so that you can free the first one. Or go get a long ladder.

The ATMega328P is tried and true, and while it’s been rising in price, it’s still available – with even an updated version that sports a few more peripherals; most importantly, you’re sure to find a 328P in your drawer, if not multiple. Apart from that, the board uses two modules from a Chinese manufacturer, G-Nice, for both GPS and Lora. Both of these modules are cheap, making this tracker all that more accessible; I could easily see this project being sold as a “build your own beacon” kit!

Let’s make it maybe a little nicer, maybe a little cheaper, and maybe decrease the power consumption a tad along the way. We’ll use some of the old tricks, a few new ones, and talk about project-specific aspects that might be easy to miss.

Continue reading “PCB Design Review: HAB Tracker With ATMega328P”

A New Raspberry 5 DSI Cable Makes Using Screens Easier

Arguably the greatest strength of the Raspberry Pi is the ecosystem — it’s well-supported by its creators and the aftermarket. At the same time, the proliferation of different boards has made things more complicated over the years. Thankfully, though, the community is always standing by to help fix any problems. [Rastersoft] has stepped up in this regard, solving an issue with the Raspberry Pi 5 and DSI screen cables.

The root cause is that the DSI cable used on the Raspberry Pi 5 has changed relative to earlier boards. This means that if you use the Pi 5 with many existing screens and DSI cables, you’ll find your flat ribbon cable gets an ugly twist in it. This can be particularly problematic when using the cables in tight cases, where they may end up folded, crushed, or damaged.

[Rastersoft] got around this by designing a new cable that avoided the problem. It not only solves the twist issue, but frees up space around the CPU if you wish to use a cooler. Thanks to modern PCB houses embracing flexible boards, it’s easy to get it produced, too.

This is a great example of the democratization of PCB and electronics production in general. 20 years ago, you wouldn’t be able to make a flex cable like this without ordering 10,000 of them. Today, you can order a handful for your own personal use, and share the design with strangers on a whim. Easy, huh? It’s a beautiful world we live in.

Model Rocket Nails Vertical Landing After Three-Year Effort

Model rocketry has always taken cues from what’s happening in the world of full-scale rockets, with amateur rocketeers doing their best to incorporate the technologies and methods into their creations. That’s not always an easy proposition, though, as this three-year effort to nail a SpaceX-style vertical landing aptly shows.

First of all, hats off to high schooler [Aryan Kapoor] from JRD Propulsion for his tenacity with this project. He started in 2021 with none of the basic skills needed to pull off something like this, but it seems like he quickly learned the ropes. His development program was comprehensive, with static test vehicles, a low-altitude hopper, and extensive testing of the key technology: thrust-vector control. His rocket uses two solid-propellant motors stacked on top of each other, one for ascent and one for descent and landing. They both live in a 3D printed gimbal mount with two servos that give the stack plus and minus seven degrees of thrust vectoring in two dimensions, which is controlled by a custom flight computer with a barometric altimeter and an inertial measurement unit. The landing gear is also clever, using rubber bands to absorb landing forces and syringes as dampers.

The video below shows the first successful test flight and landing. Being a low-altitude flight, everything happens very quickly, which probably made programming a challenge. It looked like the landing engine wasn’t going to fire as the rocket came down significantly off-plumb, but when it finally did light up the rocket straightened and nailed the landing. [Aryan] explains the major bump after the first touchdown as caused by the ascent engine failing to eject; the landing gear and the flight controller handled the extra landing mass with aplomb.

All in all, very nice work from [Aryan], and we’re keen to see this one progress.

Continue reading “Model Rocket Nails Vertical Landing After Three-Year Effort”

Build Your Own 16 MB 30-Pin SIMMs For Vintage PCs

Today’s memory sticks have hundreds of pins and many gigabytes of RAM on board. Decades ago, though, the humble 30-pin SIMM was the state of the art where memory was concerned. If you’ve got vintage gear, you can try and hunt down old RAM, or you can copy [Bits und Bolts] and make your own.

Previously, [Bits und Bolts] built a 4 MB SIMM, but he’s now ramped up to building 16 MB RAM sticks — the largest size supported by the 30-pin standard. That’s a ton compared to most 30-pin sticks from the 1980s, which topped out at a feeble 1 MB.

We get to see four of his 16 MB sticks installed in a 386 motherboard, set up to operate in the appropriate Fast Page Mode. He was able to get the system operating with 64 MB of RAM, an amount still considered acceptable in the early Pentium 3 era. Hilariously, memtest took a full ten hours to complete a single pass with this configuration. [Bits and Bolts] also tried to push the motherboard further, but wasn’t able to get it to POST with over 64 MB of RAM.

As [Bits und Bolts] demonstrates, if you can read a schematic and design a PCB, it’s not that hard to design RAM sticks for many vintage computers. We’ve seen some other RAM hacks in this vein before, too.

Continue reading “Build Your Own 16 MB 30-Pin SIMMs For Vintage PCs”

Misconceptions About Loops, Or: Static Code Analysis Is Hard

When thinking about loops in programming languages, they often get simplified down to a conditions section and a body, but this belies the dizzying complexity that emerges when considering loop edge cases within the context of static analysis. A paper titled Misconceptions about Loops in C by [Martin Brain] and colleagues as presented to SOAP 2024 conference goes through a whole list of false assumptions when it comes to loops, including for languages other than C. Perhaps most interesting is the conclusion that these ‘edge cases’ are in fact a lot more common than generally assumed, courtesy of how creative languages and their users can be when writing their code, with or without dragging in the meta-language of C’s preprocessor.

Assumptions like loop equivalence can fall apart when considering the CFG ( control flow graph) interpretation versus a parse tree one where the former may e.g. merge loops. There are also doozies like assuming that the loop body will always exist, that the first instruction(s) in a loop are always the entry point, and the horrors of estimating loop exits in the context of labels, inlined functions and more. Some languages have specific loop control flow features that differ from C (e.g. Python’s for/else and Ada’s loop), all of which affect a static analysis.

Ultimately, writing a good static analysis tool is hard, and there are plenty of cases where it’s likely to trip up and give an invalid result. A language which avoids ambiguity (e.g. Ada) helps immensely here, but for other languages it helps to write your code as straightforward as possible to give the static analysis tool a fighting chance, or just get really good at recognizing confused static analysis tool noises.

(Heading image: Control flow merges can create multiple loop entry
edges (Credit: Martin Brand, et al., SOAP 2024) )

Looking At Standard-Cell Design In The Pentium Processor

Die photo of the Intel Pentium processor with standard cells highlighted in red. The edges of the chip suffered some damage when I removed the metal layers. (Credit: Ken Shirriff)
Die photo of the Intel Pentium processor with standard cells highlighted in red. The edges of the chip suffered some damage when I removed the metal layers. (Credit: Ken Shirriff)

Whereas the CPUs and similar ASICs of the 1970s had their transistors laid out manually, with the move from LSI to VLSI, it became necessary to optimize the process of laying out the transistors and the metal interconnects between them. This resulted in the development of standard-cells: effectively batches of transistors with each a specific function that could be chained together. First simple and then more advanced auto-routing algorithms handled the placement and routing of these standard elements, leading to dies with easily recognizable structures under an optical microscope. Case in point an original (P54C) Intel Pentium, which [Ken Shirriff] took an in-depth look at.

Using a by now almost unimaginably large 600 nm process, the individual elements of these standard cells including their PMOS and NMOS components within the BiCMOS process can be readily identified and their structure reverse-engineered. What’s interesting about BiCMOS compared to CMOS is that the former allows for the use of bipolar junction transistors, which offer a range of speed, gain and output impedance advantages that are beneficial for some part of a CPU compared to CMOS. Over time BiCMOS’ advantages became less pronounced and was eventually abandoned.

All in all, this glimpse at the internals of a Pentium processor provides a fascinating snapshot of high-end Intel semiconductor prowess in the early 1990s.

(Top image: A D flip-flop in the Pentium. Credit: [Ken Shirriff] )

Building A Cassette Deck Controller To Save A Locked Out Car Stereo

Cars have had DRM-like measures for longer than you might think. Go back to the 1990s, and coded cassette decks were a common way to stop thieves being able to use stolen stereos. Sadly, they became useless if you ever lost the code. [Simon] had found a deck in great condition that was locked out, so he set about building his own controller for it. 

The build relies on the cassette transport of a car stereo and a VFD display, but everything else was laced together by Simon. It’s a play-only setup, with no record, seeing as its based on an automotive unit. [Simon]’s write up explains how he reverse engineered the transport, figuring out how the motors and position sensors worked to control the playback of a cassette.

[Simon] used an Atmega microcontroller as the brains of the operation, which reads the buttons of the original deck via an ADC pin to save I/O for other tasks. The chip also drives the VFD display for user feedback, and handles auto reverse too. The latter is thanks to the transport’s inbuilt light barriers, which detect the tape’s current status. On the audio side, [Simon] whipped up his own head amplifier to process the signal from the tape head itself.

Fundamentally, it’s a basic build, but it does work. We’ve seen other DIY tape decks before, too. There’s something about this format that simply refuses to die. The fans just won’t let Compact Cassette go down without a fight. Video after the break.

Continue reading “Building A Cassette Deck Controller To Save A Locked Out Car Stereo”