screenshot of the code defining a hid descriptor by using essentially macros for common descriptor types

Coupling STM32 And Linux? Consider HID Over I2C

If you’re pairing a tiny Linux computer to a few peripherals — perhaps you’re building a reasonably custom Pi-powered device — it’s rightfully tempting to use something like an STM32 for all your low-level tasks, from power management to reading keyboard events.

Now, in case you were wondering how to tie the two together, consider HID over I2C, it’s a standardized protocol with wide software and peripheral support, easily implementable and low-power. What’s more, [benedekkupper] gives you an example STM32 project with a detailed explanation on how you too can benefit from the protocol.

There are several cool things about this project. For a start, its code is generic enough that it will port across the entire STM32 lineup nicely. Just change the pin definitions as needed, compile it, flash it onto your devboard and experiment away. Need to change the descriptors? The hid-rdf library used lets you define a custom descriptor super easily, none of that building a descriptor from scratch stuff, and it even does compile-time verification of the descriptor!

The project has been tested with a Raspberry Pi 400, and [benedekkupper] links a tutorial on quickly adding your I2C-HID device on an Linux platform; all you need is DeviceTree support. Wondering what’s possible with HID? We’ve seen hackers play with HID aplenty here, and hacking on the HID standard isn’t just for building keyboards. It can let you automate your smartphone, reuse a laptop touchpad or even a sizeable Wacom input surface, liberate extra buttons on gamepads, or build your own touchscreen display.

A solar-powered decibel meter the size of a business card.

2024 Business Card Challenge: NoiseCard Judges The Sound Around You

Let’s face it: even with the rise of the electric car, the world is a noisy place. And it seems like it has only gotten worse in recent years. But how can we easily quantify the noise around us and know whether it is considered an unhealthy decibel level?

That is where the NoiseCard comes in. This solar-powered solution can go anywhere from the regrettable open office plan to the busy street, thanks to a couple of 330 µF capacitors. It’s based on the low-power STM32G031J6 and uses a MEMS microphone to pick up sound from the back of the card, which the code is optimized for. Meanwhile, the LEDs on the front indicate the ambient noise level, ranging from a quiet 40 dB and under to an ear-splitting 105 dB or greater.

When it comes to building something the size of a business card, every component is under scrutiny for size and usefulness. So even the LEDs are optimized for brightness and low power consumption. Be sure to check it out in action after the break in various environments.

Continue reading “2024 Business Card Challenge: NoiseCard Judges The Sound Around You”

Hands On: Inkplate 6 MOTION

Over the last several years, DIY projects utilizing e-paper displays have become more common. While saying the technology is now cheap might be overstating the situation a bit, the prices on at least small e-paper panels have certainly become far more reasonable for the hobbyist. Pair one of them with a modern microcontroller such as the RP2040 or ESP32, sprinkle in a few open source libraries, and you’re well on the way to creating an energy-efficient smart display for your home or office.

But therein lies the problem. There’s still a decent amount of leg work involved in getting the hardware wired up and talking to each other. Putting the e-paper display and MCU together is often only half the battle — depending on your plans, you’ll probably want to add a few sensors to the mix, or perhaps some RGB status LEDs. An onboard battery charger and real-time clock would be nice as well. Pretty soon, your homebrew e-paper gadget is starting to look remarkably like the bottom of your junk bin.

For those after a more integrated solution, the folks at Soldered Electronics have offered up a line of premium open source hardware development boards that combine various styles of e-paper panels (touch, color, lighted, etc) with a microcontroller, an array of sensors, and pretty much every other feature they could think of. To top it off, they put in the effort to produce fantastic documentation, easy to use libraries, and free support software such as an online GUI builder and image converter.

We’ve reviewed a number of previous Inkplate boards, and always came away very impressed by the attention to detail from Soldered Electronics. When they asked if we’d be interested in taking a look at a prototype for their new 6 MOTION board, we were eager to see what this new variant brings to the table. Since both the software and hardware are still pre-production, we won’t call this a review, but it should give you a good idea of what to expect when the final units start shipping out in October.

Continue reading “Hands On: Inkplate 6 MOTION”

A System Board For The 8008

Intel processors, at least for PCs, are ubiquitous and have been for decades. Even beyond the chips specifically built by Intel, other companies have used their instruction set to build chips, including AMD and VIA, for nearly as long. They’re so common the shorthand “x86” is used for most of these processors, after Intel’s convention of naming their processors with an “-86” suffix since the 1970s. Not all of their processors share this convention, though, but you’ll have to go even further back in time to find one. [Mark] has brought one into the modern age and is showing off his system board for this 8008 processor.

The 8008 predates any x86 processor by about six years and was among the first mass-produced 8-bit processors even before the well-known 8080. The expansion from four bits to eight was massive for the time and allowed a much wider range of applications for embedded systems and early personal computers. [Mark] goes into some of the details for programming these antique processors before demonstrating his system board. It gets power from a USB-C connection and uses a set of regulators and level shifters to make sure the voltages all match. Support for all the functions the 8008 needs is courtesy of an STM32. That includes the system memory.

For those looking to develop something like this, [Mark] has also added his development tools to a separate GitHub page. Although it’s always a good idea for those interested in computer science to take a look at old processors like these, it’s not always the easiest path to get original hardware like this, which also carries the risk of letting smoke out of delicate components. A much easier route is to spin up an emulator like an 8086 IBM PC emulator on an ESP32. Want to see inside this old chip? Have a look.

Continue reading “A System Board For The 8008”

Multiply Your Multimeter With Relays And USB

Multimeters are a bit like potato chips: you can’t have just one. But they’re a lot more expensive than potato chips, especially the good ones, and while it’s tempting to just go get another one when you need to make multiple measurements, sometimes it’s not practical. That’s why something like this 2×4 relay-based multiplexer might be a handy addition to your bench

In this age of electronics plenty, you’d think that a simple USB relay board would be easy enough to lay hands on. But [Petteri Aimonen] had enough trouble finding a decent one that it became easier to just roll one up from scratch. His goal was to switch both the positive and negative test leads from up to four instruments to a common set of outputs, and to have two independent switching banks, for those times when four-lead measurements are needed. The choice of relay was important; [Petteri] settled on a Panasonic DPDT signal relay with low wetting current contacts and a low-current coil. The coils are driven by a TBD62783A 8-channel driver chip, while an STM32 takes care of USB duties.

The mechanical design of this multiplexer is just as slick as the electrical. [Petteri] designed the PCB to act as the cover for a standard Hammond project box, so all the traces and SMD components are mounted on the back. That just leaves the forest of banana-plug binding posts on the front, along with a couple of pushbuttons for manual input switching and nicely silkscreened labels. The multiplexer is controlled over USB using the SCPI protocol, which happily includes an instrument class for signal switchers.

We think the fit and finish on this one is fantastic, as is usual with one of [Petteri]’s builds. You’ll probably recall his calibrated current reference or his snazzy differential probe.

A raspberry pi-based digital readout above an old lathe

Roll Your Own DRO With An Added Twist

When using a manual machine tool such as a lathe or milling machine, there can be a lot of pressure to read the position and feed the axes at the correct rate. That’s why modern machines typically have some form of digital read-out (DRO). [Stefano Bertelli] has created a simple Raspberry Pi based DRO with an additional twist, that of a linked motor drive output.

A view of the custom RS485 interfaced DRO readout and motor controller
Realtime encoder position reading and motor control are best done with a dedicated microcontroller, ideally with a proper RTOS.

The axes that need to be monitored should be mechanically attached to a position sensor like a linear encoder or a rotary type. Using a linear sensor with a linear axis instead of a rotary encoder on the downstream dial is better. For the readout unit, [Stefano] used a WaveShare 7-inch touchscreen module with a Raspberry Pi 3 for the UI of the readout unit. The Pi has a custom-designed HAT, that performs power conditioning and provides a robust RS485 interface. Connected via that RS485 link is another custom PCB based on an STM32F411 with a few supporting power supplies and interfacing components. The job of this board is to interface to the position encoders, reading positioning pulses using interrupts. There is an additional stepper motor drive courtesy of a ULN2003 Darlington driver to allow the control of a single motorised axis. An additional motor driver module is required, which should be no surprise since driving a milling machine axis will require a fairly beefy motor. This GitHub repo contains the FreeRTOS-based firmware for this board. This motor drive has the ability to be connected to a measuring axis in a programmable way, enabling one axis to be adjusted to follow or jump in controlled steps with another. This feature can significantly simplify certain types of machining operations, as [Stefano] elaborates in the video.

Lastly, the Raspberry Pi runs a simple Python application with Kivy for the GUI. As [Stefano] explains in the video below, this makes debugging and modification quite simple.

Adding DROs to an older machine is an obvious but valuable hack. Here’s another way to do it. If that’s too much work, then you could just hack a digital readout calliper in there.

Continue reading “Roll Your Own DRO With An Added Twist”

Eliminate That Pesky Power-Only USB Cable With This Cable Tester

Ever wondered why your Arduino wasn’t programming, only to find out that the cable doesn’t have any data conductors? Worry not, [Spencer Maroukis] has got you covered with the USB Sleuth Cable Tester!

The cable tester is a beautiful black circular PCB, with USB ports of nearly every type on the edges. It works partially through passive detection with LEDs and otherwise through active detection of things like the orientation with an STM32 powered by a coin cell battery. But it gets better: There are disconnect switches and exposed pads to test some of the conductors with a digital multimeter!

It may not be necessary for all of us, but one thing is clear: When you needed a good USB cable, you wished you had this to actually test it. The design is open-source too, which is definitely nice if you want one for yourself.

Meanwhile this isn’t the first USB cable tester we’ve seen here.