A Custom Zigbee Touch Keypad

[Dominic Buchstaller] wanted a neat, tidy entryway keypad that actually looked good. Prime goals were something slim, wireless, and with no visible screws. Dependency on the cloud was also a no-go. With few ready-to-go options available on the market, he set about whipping up his own.

The heart of the build is an ESP32-C6 microcontroller devboard. This device has the benefit of including Zigbee communication functionality baked right into the chip. It’s hooked up to an MPR121 capacitive touch controller, which allows different segments of the touchpad PCB to act as capacitive buttons for numerical entry. The number labels are directly printed on the PCB solder mask, so there’s no overlay or other label required on top. Power is courtesy of a 1300 mAh lithium-polymer cell which gives a useful lifespan of six months between recharges. A simple 3D-printed case holds everything together and completes the clean and simple look. [Dominic] notes that it’s possible to also use the device via Matter or Thread without a lot of changes, as the ESP32-C6 can easily handle those protocols, too.

If you’re looking for a cheap, handsome keypad for your Home Assistant setup or similar, you might find this useful. We’ve explored DIY keypad entry systems before, too. If you’ve come up with some other creative way to get into your house, car, or bank vault, be sure to notify us via the tipsline.

A GUI Solution For ESP32 Web Development

These days, a lot of embedded projects feature some sort of screen, and a screen often creates a desire for a nice user interface. [Geoffrey Wells] has created a tool for developing web interfaces for the ESP32, named ESP-GenUI.

The aim was to make UI development as easy as possible for this platform. ESP-GenUI allows the creation of a website by dragging various nodes on to a canvas and linking them up to create the desired web interface. There are nodes for GPIO control, camera feeds, gauges, and all sorts of other common elements for quickly putting together dashboards and control panels. All this is done from within the browser, and the code generated by the tool can even be flashed without having to open any external tools. Alternatively, it can spit out Arduino code that you can open and flash from within the IDE. You can try the tool out yourself right here.

We’ve featured some other great resources for developing embedded user interfaces, like this highly-flexible display library for the ESP32. Feel free to espouse on your own favorite tools and techniques in the comments.

Continue reading “A GUI Solution For ESP32 Web Development”

Flying Cell Towers Are A Thing

Typically, when you’re sitting on a plane on the tarmac, you switch your phone to flight mode while you’re sitting through yet another “quirky” (boring) safety video. You’ll watch some inflight entertainment, read the airline magazine if you get really desperate, and wonder if anyone ever buys those random watches for sale in the “duty free” section. Then, finally, upon landing, you’ll be connected back to the Internet and you’ll finally feel like you can breathe again.

Only, this time, you forgot to set your plane on flight mode. You’re sitting at 30,000 feet, and… your phone has signal? You’re online, and you’re getting notifications and emails just like you’re on the ground. You’ve accidentally discovered that your flight has an on-board cell tower.

Continue reading “Flying Cell Towers Are A Thing”

Laser Scanning A Cave With Homebrew Gear

How do you measure the inside of a cave? You could do a bunch of hard work with classic surveying gear… or you could just use a laser scanner. [9nl] did the latter, with a scanning rig of his own creation.

The build is based around an Ouster VLP-16 mid-range lidar sensor. It shoots out pulses of light and measures how long it takes them to bounce back in order to determine the range of objects in the vicinity, and thus can be used to great effect for 3D scanning tasks. For [9nl], though, the sensor had a serious limitation. Since it only had a 40-degree field of view, it wasn’t ideal for the desired application of scanning a cave. However, by building a custom rig that could rotate the sensor, [9nl] ended up with a rig that could 3D scan an area through a full 360 degrees. There’s nothing wildly complex involved, just some good old mechanical engineering—putting the sensor on a shaft and spinning it with a belt drive. Then it’s just a matter of processing the data correctly. The hard part is then getting the rig in and out of the cave without breaking anything.

There are plenty of off-the-shelf 3D scanning solutions that can do this work, but few of them come cheap. Plus, rolling your own teaches you a great many things as you hone your solution to your particular needs. Video after the break.

Continue reading “Laser Scanning A Cave With Homebrew Gear”

Battery Tester Gets An App Upgrade

Do you have a ZKETECH EBC-A20 battery tester? Perhaps you don’t like the default software used to control the device. In that case, you might like the alternative whipped up by [Kazhuu.]

A reverse-engineering effort targeted at the EBC-A20 served as the basis for the work. The battery tester is ultimately controlled by a simple serial interface, running at 9600 bps, 8 bits, with odd parity. Armed with a relatively complete understanding of the commands used to control the device, [Kazhuu] was able to whip up a simple web app to control the device instead, using WebUSB to access the device over a USB-to-serial converter, though a desktop version for Linux and Windows is also available. If you’ve got one of these battery testers sitting on your bench, using the app is as simple as pointing your browser here with the device plugged in via USB. Then you can run basic load tests on battery cells and graph the results right on your computer without having to deal with the proprietary software.

Of course, if you don’t like the EBC-A20 battery tester, you could always build your own. If you’re whipping up your own test hardware on the lab bench, don’t hesitate to notify us on the tipsline.

Picking A CRC

You send a file, but how do you know it arrived intact? In other words, how do you know that it didn’t get cut off, garbled, or changed somehow? Simplistically, you could just add up all the bytes in the file — a checksum — and send that along with the file. You compute the checksum when you know the file is good, and the receiver can compare the checksum to see if they match.

However, a simple addition doesn’t catch certain classes of errors, which is why there are better checksum algorithms that, for example, wrap the carry bit around or otherwise modify files with common errors so they produce different checksums. There are two problems with checksums. First, no matter how much you modify the algorithm, the chances that two files produce the same checksum are pretty high. Especially with common error patterns.

For example, assume a very simple algorithm that simply adds the bytes and discards any carry. If a file contains 0x80, 0x80, those numbers essentially cancel each other out. If you replace them with 0, 0, you’ll get the same checksum. To some degree, using anything other than a second copy of the entire file will have this problem — some corruption goes undetected — but you want to minimize the number of times that happens.

The other problem is that a checksum by itself doesn’t let you correct anything. You know the data is bad, but you don’t know why. If you think about it, the simplest checksum is a parity bit on a byte: odd parity is simply summing all the bits together. If the parity bit doesn’t match, you know the byte is bad, but you don’t know why. Any even number of errors goes undetected, but I am sure one-, three-, five-, or seven-bit errors will get caught.

People invent better error-checking codes by devising schemes that can promise they can detect a certain number of bit flips and, at least in some cases, correct them. One of these is the cyclic redundancy check (CRC). It is easy to think of the CRC as a “strong checksum,” but it actually works differently. What’s more, there isn’t just a single CRC algorithm. You have to select or design a particular algorithm based on your needs. Most people pick a “named” implementation like CCITT or Ethernet and assume it must be the best. It probably isn’t.

A CRC is a checksum in the broad sense: you feed it a message, and it gives you a small value that you append, store, or compare later. But unlike a simple additive checksum, a CRC is based on polynomial division over GF(2), which is a fancy way of saying “divide using XOR instead of carries.” That detail matters. It gives CRCs very strong guarantees against common classes of errors, provided you choose the right polynomial for the job. That’s the key. You must choose the right polynomial.

Continue reading “Picking A CRC”

PCB Map Display Keeps An Eye On Family

PCBs are traditionally designed with traces laid out to support a circuit full of electronic components. However, they’ve become increasingly popular as a way to produce functional visual artworks. This PCB map from [Jonathan] is a great example.

The PCB was designed as a map of the California East Bay area. The roads are laid out as the top-side copper layer, while the land and roads are used for the top solder mask layer, with the flipped land and roads area making up the solder mask on the bottom side. The map data itself was cribbed from Snazzy Maps. Behind the PCB, [Jonathan] mounted a 64 x 32 RGB LED array, which can be seen glowing through from behind the material. The LEDs are controlled by an ESP32, which grabs location data from [Jonathan’s] family member’s mobile devices over MQTT, and uses it to light their positions on the map. Files are on Github for the curious.

If you’ve got a family that is open to location tracking, and the money to pay for a custom PCB, you could probably recreate this project yourself. We’ve seen some other great PCB maps before, too, like this amazing metro tracker. Video after the break.
Continue reading “PCB Map Display Keeps An Eye On Family”