A HVTPI adapter plugged into a USBASP, with a an IDC10 cable plugged into it in turn

HVTPI Primer And Toolkit Equips You For BOM Substitutions

Novel programming interfaces for MCUs might catch us by surprise, but then we inevitably get up to speed with the changes required. Today’s bastion is HVTPI – a “12V reset” addition to the TPI we’ve just started getting used to, and [Sam Ettinger] has shared a simple circuit to teach us all about it, along with PCB files and detailed explanations of how it all works.

HVTPI is an add-on on top of TPI, for which, as Sam explains, you need to hold RST at 12V when TPI would have it be low logic level, and leave it at Vtarget otherwise. For that, he has designed a variety of interposer boards of various complexity and requirements; explaining the choices behind each one and clearing up any misunderstandings that might occur on your way. All of the board files (and the TPI write-up copy) are caringly shared with us in a git repository, too! As a result, if you have an USB-ASP or an Arduino available, now you also have everything to do HVTPI, thanks to Sam’s work and explanations.

We’ve been covering Sam’s exploits before, and can’t help but be grateful for the stop-and-explain detour along the way. HVTPI being used on very small ATTiny parts, we wonder if something new in the vein of his recent FPC board able to fit and function entirely within a Type-C cable end!

With chip shortages, investigating programming interfaces for small and obscure yet in-stock microcontrollers has been, quite literally, paying off, and if you got some projects that need a MCU but won’t consume a whole lot of resources, it could be time to give an ATTiny10 a go. What’s the worst that can happen – you make the smallest chiptunes ever?

ESP32 Virtual Machine Lets You Change Programs On The Fly

Often, reprogramming a microcontroller involves placing it in reset, flashing the code, and letting it fire back up. It usually involves shutting the chip down entirely. However, [bor0] has built a virtual machine that runs on the ESP32, allowing for dynamic program updates to happen.

The code is inspired by the CHIP-8, a relatively ancient interpreter that had some gaming applications. [bor0] had already created a VM simulating the CHIP-8, and repurposed it here, taking out the gaming-related drawing instructions and replacing them with those that control IO pins. Registers have also been changed to 16 bits for added flexibility and headroom.

It’s probably not something with immediate ground-breaking applications for most people, but it’s a different way of working with and programming the ESP32, and that’s pretty neat.

The ESP32 is a powerful chip, too, as we all know – and it makes a great 8-bit emulator to boot. Sound off in the comments with your thoughts on what would make a killer application for the ESP32 VM!

[Thanks to satancete for the tip!]

A mailbox with a solar cell on top

IoT-Enabled Mailbox Lets You Check Your Mail Without Leaving Your House

Whether you live in an apartment downtown or in a detached house in the suburbs, if your mailbox is not built into your home you’ll have to go outside to see if anything’s there. But how do you prevent that dreadful feeling of disappointment when you find your mailbox empty? Well, we’re living in 2022, so today your mailbox is just another Thing to connect to the Internet of Things. And that’s exactly what [fhuable] did when he made a solar powered IoT mailbox.

The basic idea was to equip a mailbox with a camera and have it send over pictures of its contents. An ESP32-Cam module could do just that: with a 1600 x 1200 camera sensor, a 160 MHz CPU and an integrated WiFi adapter, [fhuable] just needed to write an Arduino sketch to have it take a picture every few hours and upload it to an FTP server.

A pile of components making up an IoT Mailbox
The components inside: a solar cell, battery, power controller, LDO and ESP32-Cam module with WiFi antenna

But since running a long cable all the way from the house was not an attractive option, the whole module had to be completely wireless. [fhuable] decided to power it using a single 18650 lithium ion cell, which gets topped up continuously thanks to a 1.5 W solar panel mounted on the roof of the mailbox. The other parts are housed in a 3D-printed enclosure that’s completely sealed to keep out moisture.

The enclosure had to be made from a material that does not degrade in direct sunlight, which is why [fhuable] decided to try ASA filament; this should be very resistant against UV rays, but proved tricky to process. It warped so much during cooling that the only way to get a solid piece out of the printer was to enclose the entire machine in a cardboard box to keep it warm inside.

The end result was worth it though: a neat little extension on the back of the mailbox that should keep sending photos of its insides for as long as the Sun keeps shining. The camera should also give a good indication as to the contents of the mailbox, allowing the user to ignore any junk mail; this is a useful improvement over previous IoT-enabled mailboxes that use proximity sensors, microswitches or optical sensors.

Continue reading “IoT-Enabled Mailbox Lets You Check Your Mail Without Leaving Your House”

An “unbusy” USB-C Port Doubles-up For JTAG Programming

Board space is a premium on small circuit board designs, and [Alvaro] knows it. So instead of adding a separate programming port, he’s found a niche USB-C feature that lets him use the port that he’s already added both for its primary application and for programming the target microcontroller over JTAG. The result is that he no longer needs to worry about spending precious board space for a tiny programming port; the USB-C port timeshares for both!

In a Twitter thread (Unrolled Link), [Alvaro] walks us through his discovery and progress towards an encapsulated solution. It turns out that the USB-C spec supports a “Debug-Accessory Mode” specification, where some pins are allowed to be repurposed if pins CC1 and CC2 are pulled up to Logic-1. Under these circumstances, the pin functions are released, and a JTAG programmer can step in to borrow them. To expose the port to a programmer, [Alvaro] cooked up a small breakout board with a USB-C plug and separate microcontroller populated on it.

This board also handles a small quirk. Since [Alvaro’s] choice of programming pins aren’t reversible, the USB-C plug will only work one of the two ways it can be plugged in. To keep the user informed, this breakout board sports a red LED for incorrect orientation and a green LED for correct orientation–nifty. While this design quirk sacrifices reversibility, it preserves the USB 2.0 D+ and D- pins while also handling some edge cases with regard to the negotiating for access to the port.

Stick through [Alvaro]’s Twitter thread for progress pics and more details on his rationale behind his pin choices. Who knows? With more eyes on the USB-C feature, maybe we’ll see this sort of programming interface become the norm?

[Alvaro] is no stranger to Hackaday. In fact, take a tour back to our very first Supercon to see him chat about shooting lasers at moving targets to score points on a DEFCON challenge in the past

Bend It Like (Sonar) Beacon With A Phased Array

Ultrasonic transducers are incredible, with them you can detect distances, as well as levitate and peer through objects. They can emit and receive ultrasonic soundwaves (typically above 18khz) and just like all waves, they can be steered via a phased array. [Bitluni] was trying to accurately measure distances but found the large field of view of the sensor was just too imprecise, so he made a phased array of transducers.

The inspiration came from a Hackaday Supercon talk from 2019 about phased arrays. [Bitluni] walks through an excellent explanation of how the array works with a bucket of water and his finger, as well as a separate simulation. By changing the phase offset of the different array members, the beam can effectively be steered as interference muffs the undesired waves. Using a set of solenoids, he created a test bench to validate his idea in a medium he could see; water. The solenoids fire a single pulse into the water creating a wave. You can see the wave move in the correct direction in the water, which validates the concept. A simple PCB sent off to a fab house with a stencil offers a surface to solder the transducers and drivers onto. An ESP32 drives the 8 PWM signals that go to the transmitters and reads in the single receiver via a small amplifier. Still not content to let the idea be unproven, he sets up the receiver on his CNC gantry and plots the signal strength at different points, yielding beautiful “heat maps.”
bitluni's heatmap for his sonar array

It sweeps a 60-degree field in front of it at around 1-3 frames per second. As you might imagine, turning sound wave reflections into distance fields is a somewhat noisy affair. He projects the sonar display on top of what we can see in the camera and it is fun to see the blobs line up in the correct spot.

We noticed he built quite a few boards, perhaps in the future, he will scale it up like this 100 transducer array? Video after the break.

Continue reading “Bend It Like (Sonar) Beacon With A Phased Array”

Backpack Board For OLEDs Boasts Fancy Features

Back when LCD character displays based on the HD44780 controller were the bee’s knees, a way to make them easier to work with came in the form of “backpack” PCBs, which provided an accessible serial interface and superior display handling at the same time. [Barbouri] has updated that idea with a backpack board that mounts to OLED displays using the US2066 display driver, and provides an I2C interface with powerful and convenient high-level functions that make the display simple to use.

On the software side, the backpack uses this I2cCharDisplay driver project which provides functions like cursor control, fading, display shifting, and of course writing characters or strings. While [Barbouri] designed the board specifically to accommodate Newhaven Slim Character OLED displays, it should in theory work with any US2066-based OLED character display. [Barbouri]’s design files for the Slim-OLED Display backpack board are available for download directly from the project page (link is near the bottom), or boards can be purchased directly from OSH Park.

OLED technology is nifty as heck; we’ve seen some neat tricks done by stacking transparent OLED displays, and even seen OLEDs made in the home lab.

This ESP32 Pico Wristwatch Has Plenty Of Potential

First hand-built prototype. Nurse! isopropyl alcohol, stat!

Prolific hacker [Sulfuroid] is a medical doctor by day, and an electronics hobbyist by night, and quite how he finds the time, we have no idea.

The project we want to highlight is an ESP32 based LED smart watch, which we’ll sure you’ll agree, looks pretty nicely developed so far, and [Sulfuroid] has bigger plans, as you may find, when you dig into the GitHub repo. This analog-style design uses four groups of 0603-sized LEDs, arranged circularly to indicate the passage of time, or anything else you fancy. Since there are four control buttons, a pancake vibration motor, as well as Wi-Fi and Bluetooth, the possibilities are endless.

In order to stand a hope of driving those 192 LEDs from a single ESP32-Pico-D4, it was necessary to use a multiplexed LED driver, courtesy of the Lumissil IS31FL3733 device, which can handle arrays up to 12 x 16 devices. This chip is one to remember, since it has some really nice features, such as global current control to reduce CPU overhead, automatic breathing loops for those fancy fade effects, and even includes a handy open/short detection function, so it can report back assembly problems, assisting in reworking your dodgy soldering!

Routing circular arrays is such a pain.

Power and interfacing are taken care of via USB-C, with a TP4054 single Li-Ion cell charger chip handling the battery. This is a Taiwanese clone of the popular LTC4054, but that chip may be a bit hard to get at the moment. There is the common-as-muck CP2104 USB chip dealing with the emulated serial port side of things, since for some reason, the ESP32 still does not support USB. The Pico-D4 does have RTC support, but [Sulfuroid] decided to use a DS3231M RTC chip instead. We noticed the touch functionality wasn’t broken out – that could be added easily in the next revision!

We’ve covered watches a lot, because who doesn’t want custom geek-wear! Here’s a slick one, a fun one with the brains on display, and finally one using charlieplexing to get the component count down.