Voyager Command Glitch Causes Unplanned Pause In Communications

Important safety tip: When you’re sending commands to the second-most-distant space probe ever launched, make really, really sure that what you send isn’t going to cause any problems.

According to NASA, that’s just what happened to Voyager 2 last week, when uplinked commands unexpectedly shifted the 46-year-old spacecraft’s orientation by just a couple of degrees. Of course, at a distance of nearly 20 billion kilometers, even fractions of a degree can make a huge difference, especially since the spacecraft’s high-gain antenna (HGA) is set up for very narrow beamwidths; 2.3° on the S-band channel, and a razor-thin 0.5° on the X-band side. That means that communications between the spacecraft and the Canberra Deep Space Communication Complex — the only station capable of talking to Voyager 2 now that it has dipped so far below the plane of the ecliptic — are on pause until the spacecraft is reoriented.

Luckily, NASA considered this as a possibility and built safety routines into Voyager‘s program that will hopefully get it back on track. The program uses the onboard star tracker to get a fix on the bright star Canopus, and from there figures out which way the spacecraft needs to move to get pointed back at Earth. The contingency program runs automatically several times a year, just in case something like this happens.

That’s the good news; the bad news is that the program won’t run again until October 15. While that’s really not that far away, mission controllers will no doubt find it an agonizingly long time to be incommunicado. And while NASA is outwardly confident that communications will be restored, there’s no way to be sure until we actually get to October and see what happens. Fingers crossed.

The Right Benchmark For GPT

Dan Maloney wanted to design a part for 3D printing. OpenSCAD is a coding language for generating 3D objects. ChatGPT can write code. What could possibly go wrong? You should go read his article because it’s enlightening and hilarious, but the punchline is that it ran afoul of syntax errors, but also gave him enough of a foothold that he could teach himself enough OpenSCAD to get the project done anyway. As with many people who have asked the AI to create some code, Dan finds that it’s not as good as asking someone who knows what they’re doing, but that it’s also better than nothing.

And this is where I start grumbling. When you type your desires into the word-follower machine, your alternative isn’t nothing. Your alternative is to fire up a search engine instead and type “openscad tutorial”. That, for nearly any human endeavor, will get you a few good guides, written by humans who are probably expert in the subject in question, and which are aimed at teaching you the thing that you want to learn. It doesn’t get better than that. You’ll be up and running with your design in no time.

Indeed, if you think about the relevant source material that the LLM was trained on, it’s exactly these tutorials. It can’t possibly do better than the best of them, although the resulting average tutorial might be better than the worst you’ll find. (Some have speculated on what happens when the entire Internet is filled with these generated texts – what will future AIs learn from?)

In Dan’s case, though, he didn’t necessarily want to learn OpenSCAD – he just wanted the latch designed. But in the end, he had to learn enough OpenSCAD to get the AI code compiling without error. He spent an hour learning OpenSCAD and now he’s good to go on his next project too.

So the next time you hear someone say that they got an answer back from a large language model that wasn’t perfect, but it was “better than nothing”, think critically if “nothing” is really the right benchmark.

Do you really want to learn nothing? Do you really have no resources to get started with? I would claim that we have the most amazing set of tutorial resources the world has ever known at our fingertips. Compared to the ability to teach millions of humans to achieve their own goals, that makes the LLM party tricks look kinda weak, in my opinion.

The Right Equipment Makes A Difference For Digital Oscilloscope Music

We all love our cheap digital oscilloscopes, and with good reason. But if there’s one place where analog scopes still shine, it’s anywhere you need X-Y mode. Digitally sampling the inputs and mapping them on the screen as discrete points just isn’t the same as steering an electron beam around a CRT, making X-Y mode work on digital scopes — at least the affordable ones — somewhat lacking.

Thankfully, nobody told [Mark Hughes] that his digital scope would make a lousy X-Y display, so he just plunged ahead and figured out how to make it work anyway. The results are actually pretty good, but it took some doing. His setup begins with OsciStudio, an application built to take 3D shapes and animations and turn them into oscilloscope music. The output from that is piped to a USB sound card; [Mark] used a PreSonus Studio 26c, an adapter with DC-coupled inputs, which he found to be critical to getting good images. Also important was a USB isolator and good-quality cables, which greatly reduced jitter and made the image much more stable.

Displaying the image was as easy as connecting the left and right outputs from the sound card to the two scope inputs — [Mark] used a Keysight EDUX1052G — and setting it to X-Y mode. It took a fair amount of fiddling to get as far as he did, but we think the results speak for themselves. As for the sounds made by these images, he says it’s a bit like a hung sound card when a computer blue-screens. So, yeah — not exactly musical, but still an interesting way to have some fun with your digital scope.

A Game Boy Camera, Without The Game Boy

We all know the Nintendo Game Boy camera peripheral, and we’ve seen plenty of hacks for it on these pages over the years. We like [Raphael Boichot]’s camera then, as instead of including a Game Boy or emulating one, it talks directly to the sensor from an RP2040. The result is a standalone camera with slightly better quality than the original, and with near-limitless storage and easy retrieval of pictures.

For us the interesting revelation from this project comes in the light it sheds on the sensor module, the Mitsubishi M64282FP, but it’s no slouch as a camera beside that. There are motion sensor and timelapse modes, as well the ability to take high dynamic range pictures, and as if that’s not enough it also has all the tweakable things you’d expect from a “proper” camera. The oldest adage in photography is that the best camera in the world is the one in your hand, and we’d say that this one’s better than a real Game Boy Camera should the once-in-a-lifetime picture come while you’re holding it.

Of course, a better Game Boy camera needs a better lens, right?

OLED Display Lets Vintage PC Engage Turbo Mode In Style

Back in the 486 days, it was common to see a “Turbo” button on the front panel of many PCs, which was used to toggle between the CPU’s maximum speed and a slower clock rate that was sometimes necessary for compatibility with older software. Usually an LED would light up to show you were running at this higher speed, or if your machine was very fancy, it might even have a numerical display that would show the current CPU frequency.

[Joshua Woehlke] wanted to add a similar display to his 486, but figured that with modern technology, he could do something a bit more interesting. Especially when he realized that the spot on his case where the two-digit LED display would have originally been mounted was the perfect size to hold a common 0.96″ SSD1306 OLED. From there it was just a matter of wiring it up to an Arduino and writing some code to display different graphics depending on the computer’s current CPU speed.

Just like the frequency indicators of yore, the Arduino doesn’t actually measure the CPU’s frequency, it’s simply reading the state of the Turbo LED on the front panel. When the LED is off the Arduino shows an image of a i8088 CPU on the screen to indicate the computer is running in compatibility mode, and when the LED is on, the screen shows the Cyrix Cx486 DX2 logo. When the button hasn’t been pressed in awhile, the display defaults to a star field screensaver.

Regular readers may recall we recently covered a similar project that used an Arduino to add a little flair to an era appropriate seven-segment LED display. We’d say there’s still a good deal of romanticism about computers having a big “TURBO” button you can smash whenever you feel the need for speed.

Understanding And Using Unicode

Computer engineer [Marco Cilloni] realized a lot of developers today still have trouble dealing with Unicode in their programs, especially in the C/C++ world. He wrote an excellent guide that summarizes many of the issues surrounding Unicode and its encoding called “Unicode is harder than you think“. He first presents a brief history of Unicode and how it came about, so you can understand the reasons for the frustrating edge cases you’re bound to encounter.

There have been a variety of Unicode encoding methods over the years, but modern programs dealing with strings will probably be using UTF-8 encoding — and you should too. This multibyte encoding scheme has the convenient property of not changing the original character values when dealing with 7-bit ASCII text. We were surprised to read that there is actually an EBCDIC version of UTF still officially on the books today:

UTF-EBCDIC, a variable-width encoding that uses 1-byte characters designed for IBM’s EBCDIC systems (note: I think it’s safe to argue that using EBCDIC in 2023 edges very close to being a felony)

Continue reading “Understanding And Using Unicode”

The ESP32 Doesn’t Need Much

For those looking to add wireless connectivity to embedded projects or to build IoT devices, there is perhaps no more popular module than the ESP32. A dual-core option exists for processor intensive applications, the built-in WiFi and Bluetooth simplify designs, and it has plenty of I/O, memory, and interoperability for most applications. With so much built into the chip itself, [atomic14] wondered how much support circuitry it really needed and set about building the most minimalist ESP32 development board possible.

Starting with the recommended schematic for the ESP32, the most obvious things to remove are a number of the interfacing components like the USB to UART chip and the JTAG interface. The ESP32 has USB capabilities built in, so the data lines from a USB port can be directly soldered to the chip instead of using a go-between. A 3.3V regulator eliminates the need for many of the decoupling capacitors, and the external oscillator support circuitry can also be eliminated when using the internal oscillator. The only thing [atomic14] adds that isn’t strictly necessary is an LED connected to one of the GPIO pins, but he figures the bare minimum required to show the dev board can receive and run programs is blinking an LED.

Building the circuit on a breadboard shows that this minimalist design works, but instead of building a tiny PCB to solder the ESP32 module to he attempted to build a sort of dead-bug support circuit on the back of the ESP32. This didn’t work particularly well so a tiny dev board was eventually created to host this small number of components. But with that, the ESP32 is up and running. These modules are small and compact enough that it’s actually possible to build an entire dev board setup inside a USB module for a Framework laptop, too.

Continue reading “The ESP32 Doesn’t Need Much”