The Long Road Towards Reverse Engineering The ESP32 Wi-Fi Driver

Although much of the software that runs on the ESP32 microcontroller is open source, the Wi-Fi driver is not. Instead, it uses a proprietary binary blob. This was no problem for [Jasper Devreker]’s reverse-engineering of the ESP32’s Wi-Fi stack so far until he came face to face with reverse-engineering the initialization of the Wi-Fi peripheral. As it turns out, there is a lot of work involved after you call esp_phy_enable in the Espressif binary blob, with the team logging 53,286 peripheral accesses during the initialization phase. In comparison, sending a Wi-Fi packet takes about ten calls.

Currently, the way that the initialization step is handled is by having the initialization routine in the binary blob do its thing by configuring the radio and other elements before killing the FreeRTOS task and replacing it with their own version. The team is actively looking for a clean approach for moving forward that will avoid simply writing everything from scratch. For the Wi-Fi MAC, existing code (e.g., FreeBSD’s stack) could be used, but the radio code is much more of a headache. Clearly, there’s still a lot more work to be done in order to get a fully open-source Wi-Fi MAC and stack for the ESP32, but having the community (that’s you) pitch in might speed things up if there’s demand for an open-source driver.

[Jasper’s] been working on this for a while. He’s even built a Faraday cage to make the task easier.

Is This The World’s Smallest Multichannel Voltmeter?

The instrument which probably the greatest number of Hackaday readers own is likely to be the humble digital multimeter. They’re cheap and useful, but they’re single-channel, and difficult to incorporate into a breadboard project. If you’ve ever been vexed by these limitations then [Alun Morris] has just the project for you, in the world’s smallest auto-ranging multichannel voltmeter. It’s a meter on a tiny PCB with a little OLED display, and as its name suggests, it can keep an eye on several voltages for you.

At its heart is an ATtiny1614 microcontroller on a custom PCB, but for us the part we most like lies not in that but in the prototype version made on a piece of protoboard. There’s considerable soldering skill in bending surface mount components to your will on this material, and though these aren’t quite the smallest parts it’s still something that must have required some work under the magnifier.

All of the code and hardware details can be found in the GitHub repository, and for your viewing pleasure there’s a video showing it in action which we’ve placed below.

Continue reading “Is This The World’s Smallest Multichannel Voltmeter?”

Mechanical 7-Segment Display Looks Clean

[Jens] wanted a subscriber counter for his YouTube channel. He could have gone with a simple OLED, LCD, or LED display, but he wanted something more tactile and interesting. So he built a mechanical 7-segment display instead!

Currently, [Jens]’s channel is in the four-digit subscriber range, so he planned to build a four-digit display. He started by searching for existing projects in this space, and came across the designs of [shiura] on Thingiverse. [shiura] had a 3D printed cam-driven 7-segment digit that runs on a single servo motor. Once armed with four of the digits, he hooked them up to a Pi Pico W to drive them all with four servo outputs. The Pico W is responsible for querying the channel subscriber count online, and updating the display in turn.

It’s a neat build, and [Jens] learned some things along the way—like how Super Lube seemed to ruin filament for him. Ultimately, the build came good, and it looks great. We’ve seen some other mechanical 7-segment builds before, too!

Continue reading “Mechanical 7-Segment Display Looks Clean”

This WiFi Filament Sensor Is Unnecessary, But Awesome

As desktop 3D printers have inched towards something resembling the mainstream, manufacturers have upped their game across the board. Even the quality of filament that you can get today is far better than what was on the market in the olden days, back when a printer made out of laser-cut birch wasn’t an uncommon sight at the local makerspace. Now, even the cheap rolls are wound fairly well and are of a consistent diameter. For most folks, you just need to pick a well-reviewed brand, buy a roll, and get printing.

But as with everything else, there are exceptions. Some people are producing their own filaments, or want to make sure their extrusion rate is perfectly calibrated. For those that need the capability, the WInFiDEL from [Sasa Karanovic] can detect filament diameter in real-time while keeping the cost and complexity as low as possible. Even better, with both the hardware and software released as open source, it makes an excellent starting point for further development and customization.

Continue reading “This WiFi Filament Sensor Is Unnecessary, But Awesome”

Running Four Brushless Motors With A Single Pi Pico

Sometimes, you have to drive four motors, and you need to do so with a certain level of control. You could throw a lot of parts at the problem, but you don’t necessarily have to. As [Shaun Crampton] demonstrates, you can run four brushless DC motors with a single Pi Pico.

[Shaun] set about developing a brushless motor controller from scratch with the Pico, relying on its PIO hardware and the TI DRV8313 — a handy three phase motor driver. Before he knew it, he was implementing field oriented control (FOC) in MicroPython, only to find that it was a little too slow for proper motor control work. He soon switched to C for the lower overheads, and was readily driving a brushless motor with his own code. Before long, he’d implemented torque limiting and PID speed control. He was even able to optimize things to the point where he had four motors hanging off a single Pi Pico, complete with Hall sensors for feedback.

The full story is well worth reading, as it goes from “Hello, World” all the way to the end of the project. If you’ve never experienced the joy of your own code getting a motor to spin, you might enjoy following in [Shaun’s] footsteps. Files are on GitHub for the curious.

We’ve seen a lot of motor controllers around here, many of which draw heavily from other projects online. It’s a great way to learn the basics of what is a very well established field. Meanwhile, if you’re cooking up your own project in this space, do drop us a line!

BreadboardOS, A Command Line Interface For The Pico

Operating systems! They’re everywhere these days, from your smart TV to your smartphone. And even in your microcontrollers! Enter BreadboardOS for the Raspberry Pi Pico.

BreadboardOS is built on top of FreeRTOS. It’s aim is to enable quick prototyping with the Pi Pico. Don’t confuse operating system with a graphical environment — BreadboardOS is command-line based. You’d typically interface with it via a serial terminal emulator, but joy of joys, it does support color!

Using BreadboardOS is a little different than typical microcontroller development. Creating an application involves adding a “service” which is basically a task in FreeRTOS parlance. The OS handles running your service for you. Via the text interface, you can query running services, and start or kill them at will.

Meanwhile, running df will happily give you stats on the flash usage of the Pi Pico, and free will tell you how full the memory is doing. If you really want to get raw, you can make calls to control GPIO pins, the SPI hardware, or other peripherals, and do it right on the command line.

BreadboardOS isn’t for everyone, but it could prove a useful tool if you like that way of doing things. It’s not the only OS out there for the Pi Pico, either!

Continue reading “BreadboardOS, A Command Line Interface For The Pico”

A capacitive touch MIDI instrument that doubles as a bookmark.

MIDI Bookmark Marks The Spot Where Work And Play Intersect

Have you ever wanted to take a break from reading or studying to just rock out for a few blissful minutes? If you’re anything like us, you like to rock out most of the time and take the occasional break to do your reading. Either way, you really can’t go wrong with this MIDI bookmark from [Misfit Maker].

The guts of a MIDI bookmark.This slick little bookmark may look 3D printed, but it’s all carefully-cut foam board in two thicknesses. Even the keys are made foam board — they’re just wrapped in carbon fiber so they look extra cool.

Underneath that carbon fiber is a layer of aluminium tape to make them capacitive. [Misfit Maker] recommends using copper tape instead because it allows for wires to be soldered directly to the keys.

The brains of this beauty is in the form of an ESP32 which is controlling an MPR-121 capacitive touch sensor. If you’d like to make one of these for yourself, there are plenty of helpful GIFs embedded in the thorough write-up. Be sure to check out the brief demo after the break.

If you want to easily MIDI-fy something and use touch inputs, you can’t really go wrong with the Raspberry Pi Pico, which does capacitive touch natively. Check out this MIDI kalmiba to learn more.

Continue reading “MIDI Bookmark Marks The Spot Where Work And Play Intersect”