Solve: An ESP32-Based Equation Solving Calculator

We’re suckers for good-looking old-school calculators, so this interesting numerical equation-solving calculator by [Peter Balch] caught our attention. Based around the ESP32-WROOM-32 module and an LCD, the build is quite straightforward from an electronics point of view, with the main work being on the software side of things.

A custom keyboard was constructed on Veroboard using a handful of tactile switches arranged in a charlieplexing array to minimize the number of IO pins consumed. For the display, an off-the-shelf 240×320 ILI9341-based module hooked up by SPI was used. A single lithium cell was used for the power supply, connected to a USB

You don’t need much to make a usable keyboard.

charger module, but you could just as easily substitute a 3 x AA battery box. The case was designed in DesignSpark mechanical and 3D printed. It’s unclear what keyboard version they settled on; there are options for one with keycaps and one without. Regardless, a 3D-printed frame sits atop the keyboard circuit, with the graphics printed on photo paper and a protective coversheet on top. Continue reading “Solve: An ESP32-Based Equation Solving Calculator”

Your Battery Holder Is Also Your Power Switch With ToggleSlot

We really like PCB-level hacks, especially ones that show ingenuity in solving a real problem while being super cheap to implement. Hackaday.IO user [Steph] wanted a cheap way to switch a wearable on and off without having to keep popping out the battery, so they came up with a tweaked battery footprint, which is also a simple slide switch.

Most people making badges and wearables will follow the same well-trodden path of just yanking out the cell or placing some cheap switch down and swallowing the additional cost. For [Steph], the solution was obvious. By taking a standard surface-mount CR2032 button cell holder footprint, extending its courtyard vertically, and moving the negative pad up a smidge, the battery can be simply slid up to engage the pad and slid down to disengage and shut off the juice. The spring section of the positive terminal keeps enough pressure on the battery to prevent it from sliding out, but if you are worried, you can always add a dummy pad at the bottom, as well as a little solder bump to add a bit more security.

Now, why didn’t we think of this before? The KiCad footprint file can be downloaded from the project GitHub page, imported into your project and used straight away.

Many of our gadgets are powered by CR2032 cells—so many so that eliminating the need for them leads to interesting projects, like this sweet USB-powered CR2032 eliminator. But how far can you push the humble cell? Well, we held a contest a few years ago to find out!

ANTIRTOS: No RTOS Needed

Embedded programming is a tricky task that looks straightforward to the uninitiated, but those with a few decades of experience know differently. Getting what you want to work predictably or even fit into the target can be challenging. When you get to a certain level of complexity, breaking code down into multiple tasks can become necessary, and then most of us will reach for a real-time operating system (RTOS), and the real fun begins. [Aleksei Tertychnyi] clearly understands such issues but instead came up with an alternative they call ANTIRTOS.

The idea behind the project is not to use an RTOS at all but to manage tasks deterministically by utilizing multiple queues of function pointers. The work results in an ultra-lightweight task management library targeting embedded platforms, whether Arduino-based or otherwise. It’s pure C++, so it generally doesn’t matter. The emphasis is on rapid interrupt response, which is, we know, critical to a good embedded design. Implemented as a single header file that is less than 350 lines long, it is not hard to understand (provided you know C++ templates!) and easy to extend to add needed features as they arise. A small code base also makes debugging easier. A vital point of the project is the management of delay routines. Instead of a plain delay(), you write a custom version that executes your short execution task queue, so no time is wasted. Of course, you have to plan how the tasks are grouped and scheduled and all the data flow issues, but that’s all the stuff you’d be doing anyway.

The GitHub project page has some clear examples and is the place to grab that header file to try it yourself. When you really need an RTOS, you have a lot of choices, mostly costing money, but here’s our guide to two popular open source projects: FreeRTOS and ChibiOS. Sometimes, an RTOS isn’t enough, so we design our own full OS from scratch — sort of.

What Actually Causes Warping In 3D Prints?

The 3D printing process is cool, but it’s also really annoying at times. Specifically, when you want to get a part printed, and no matter how you orientate things, what adhesion aids you use or what slicer settings you tweak, it just won’t print right. [David Malawey] has been thinking a little about the problem of the edges of wide prints tending to curl upwards, and we believe they may be on to something.

Obviously, we’re talking about the lowest common denominator of 3D printing, FDM, here. Other 3D printing technologies have their gotchas. Anyway, when printing a wide object, edge curling or warping is a known annoyance. Many people will just try it and hope for the best. When a print’s extreme ends start peeling away from the heat bed, causing the print to collide with the head, they often get ripped off the bed and unceremoniously ejected onto the carpet. Our first thought will be, “Oh, bed adhesion again”, followed by checking the usual suspects: bed temperature, cleanliness and surface preparation. Next, we might add a brim or some sacrificial ‘bunny ears’ to keep those pesky edges nailed down. Sometimes this works, but sometimes not. It can be frustrating. [David] explains in the YouTube short how the contraction of each layer of materials is compounded by its length, and these stresses accumulate as the print layers build. A simple demonstration shows how a stack of stressed sections will want to curl at the ends and roll up inwards.

This mechanism would certainly go some way to explain the way these long prints behave and why our mitigation attempts are sometimes in vain. The long and short of it is to fix the issue at the design stage, to minimize those contraction forces, and reduce the likelihood of edge curling.

Does this sound familiar? We thought we remembered this, too, from years ago. Anyway, the demonstration was good and highlighted the issue well.

Continue reading “What Actually Causes Warping In 3D Prints?”

A RISC-V LISP Compiler…Written In Lisp

Ah, Lisp, the archaic language that just keeps on giving. You either love or hate it, but you’ll never stop it. [David Johnson-Davies] is clearly in the love it camp and, to that end, has produced a fair number of tools wedging this language into all kinds of nooks and crannies. The particular nook in question is the RISC-V ISA, with their Lisp-to-RISC-V compiler. This project leads on from their RISC-V assembler by allowing a Lisp function to be compiled directly to assembly and then deployed as callable, provided you stick to the supported language subset, that is!

The fun thing is—you guessed it—it’s written in Lisp. In fact, both projects are pure Lisp and can be run on the uLisp core and deployed onto your microcontroller of choice. Because who wouldn’t want to compile Lisp on a Lisp machine? To add to the fun, [David] created a previous project targeting ARM, so you’ve got even fewer excuses for not being able to access this. If you’ve managed to get your paws on the new Raspberry Pi Pico-2, then you can take your pick and run Lisp on either core type and still compile to native.

The Lisp-Risc-V project can be found in this GitHub repo, with the other tools easy enough to locate.

We see a fair few Lisp projects on these pages. Here’s another bare metal Lisp implementation using AVR. And how many lines of code does it take to implement Lisp anyway? The answer is 42 200 lines of C, to be exact.

Building An Automotive Load Dump Tester

For those who have not dealt with the automotive side of electronics before, it comes as somewhat of a shock when you find out just how much extra you have to think about and how tough the testing and acceptance standards are. One particular test requirement is known as the “load dump” test. [Tim Williams] needed to build a device (first article of three) to apply such test conditions and wanted to do it as an exercise using scrap and spares. Following is a proper demonstration of follow-through from an analytical look at the testing specs to some interesting hand construction.

Manhattan-style layout

The load dump test simulates the effect of a spinning automotive alternator in a sudden no-load scenario, such as a loose battery terminal. The sudden reduction in load (since the battery no longer takes charging current) coupled with the inductance of the alternator windings causes a sudden huge voltage spike. The automotive standard ISO 7637-2:2011 dictates how this pulse should be designed and what load the testing device must drive.

The first article covers the required pulse shape and two possible driving techniques. It then dives deep into a case study of the Linear Tech DC1950A load dump tester, which is a tricky circuit to understand, so [Tim] breaks it down into a spice model based around a virtual transistor driving an RC network to emulate the pulse shape and power characteristics and help pin down the specs of the parts needed. The second article deals with analysing and designing a hysteric controller based around a simple current regulator, which controls the current through a power inductor. Roughly speaking, this circuit operates a bit like a buck converter with a catch diode circulating current in a tank LC circuit. A sense resistor in the output path is used to feedback a voltage, which is then used to control the driving pulses to the power MOSFET stage. [Tim] does a good job modeling and explaining some of the details that need to be considered with such a circuit.

Continue reading “Building An Automotive Load Dump Tester”

Are CRT TVs Important For Retro Gaming?

We always thought the older console games looked way better back in the day on old CRTs than now on a modern digital display. [Stephen Walters] thinks so too, and goes into extensive detail in a lengthy YouTube video about the pros and cons of CRT vs digital, which was totally worth an hour of our time. But are CRTs necessary for retro gaming?

The story starts with [Stephen] trying to score a decent CRT from the usual avenue and failing to find anything worth looking at. The first taste of a CRT display came for free. Left looking lonely at the roadside, [Stephen] spotted it whilst driving home. This was a tiny 13″ Sanyo DS13320, which, when tested, looked disappointing, with a blurry image and missing edges. Later, they acquired a few more displays: a Pansonic PV-C2060, an Emerson EWF2004A and a splendid-looking Sony KV24FS120. Some were inadequate in various ways, lacking stereo sound and component input options.

A poor analog cable coupled with rendering inaccuracy gives a nice filtering effect

A large video section discusses the reasons for the early TV standards. US displays (and many others using NTSC) were designed for 525 scan lines, of which 480 were generally visible. These displays were interlaced, drawing alternating fields of odd and even line numbers, and early TV programs and NTSC DVDs were formatted in this fashion. Early gaming consoles such as the NES and SNES, however, were intended for 240p (‘p’ for progressive) content, which means they do not interlace and send out a blank line every other scan line.  [Stephen] goes into extensive detail about how 240p content was never intended to be viewed on a modern, sharp display but was intended to be filtered by the analogue nature of the CRT, or at least its less-than-ideal connectivity. Specific titles even used dithering to create the illusion of smooth gradients, which honestly look terrible on a pixel-sharp digital display. We know the differences in signal bandwidth and distortion of the various analog connection standards affect the visuals. Though RGB and component video may be the top two standards for quality, games were likely intended to be viewed via the cheaper and more common composite cable route.

Continue reading “Are CRT TVs Important For Retro Gaming?”