A graph from the article, showing dead zones and error bars for the ESP32 ADC

RP2040, ESP32, And An Atmega Have An ADC-Off

[Simon Monk] got frustrated with bad ADC performance when tinkering with an ESP32 board, and decided to put three of the nowadays-iconic boards to the test – a classic ESP32 devboard, a Pi Pico with an RP2040, and an Arduino Uno R3 with an ATmega328P. To do that, he took a bench PSU, added a filter circuit to it, went through the entire ADC range for each board, took a large number of samples at different points and plotted the results. The plots show us both linearity and precision, as well as ADC dead zones, and the results are quite surprising.

The ESP32 doesn’t only have the most limited ADC with maximum 1V input, it also produces the worst results out of all three, with large error bars and sizeable dead zones at both ends. The Pi Pico, despite being colloquially known for its subpar ADC, produces better results than the ESP32. However, both of them are dwarfed by the ATMega328P’s performance. If you need a dedicated ADC, it might just be a good idea to put an ATMega328P on your board.

The example code is provided, and we are wondering whether there are methodology errors. For instance, the ATMega328P code is written in Arduino-supplied C++, but ESP32 and RP2040 in particular used MicroPython, which does more than just running the code, and MicroPython for ESP32 in particular creates a WiFi access point – something known to induce noise into ADC readings. Nevertheless, this is a fun comparison, and we like when hackers do microcontroller standoffs like that – for instance, check out this review from 2017 which pits a dozen microcontrollers of the time against each other!

Festive PCB Gives The Gift Of Hacking

‘Tis the season for gift giving, and what better to give than a newfound love for hacking, soldering, and blinkenlights? In order to spread cheer and education at the local hackerspace, [Tom Goff] created this festive tree circuit board that can either sit in a stand to be admired, or worn as jewelry. The resistors are even designed to look like candy canes hanging from the boughs.

The brains of this festive little tree is an ATmega328P, which you probably recognize as the microcontroller that powers the Arduino Uno. Although this circuit has none of the extra bits you’d find on an Uno, not even a crystal oscillator, it can still be programmed with Arduino and use the 8 MHz internal clock.

[Tom] has provided good, thorough instructions, especially for the sticky bit of setting up the IDE to program using the 8 MHz internal clock. So even if you’re nowhere near Norwich Hackerspace, you can join in the fun. Be sure to check out the video after the break, wherein [Tom] walks through designing the PCB using Inkscape and Fritzing.

Want to whip up a little something for the hackerspace wall? Check out this Sierpinski Christmas tree.

Continue reading “Festive PCB Gives The Gift Of Hacking”

Off-Grid Radio Also Repairable Off-Grid

Low-power radios, often referred to in the amateur radio community as QRP radios, have experienced a resurgence in popularity lately. Blame it on certain parts of the hobby become more popular, like Parks on the Air (POTA) or Summits on the Air (SOTA). These are events where a radio operator operates off-grid at remote parks or mountaintops. These QRP rigs are a practical and portable way to make contacts. You would think that a five- or ten-watt rig running on batteries would be simple. Surprisingly, they can be enormously complex and expensive. That’s why [Dr. Daniel Marks] built the RFBitBanger, a QRP radio designed to not only be usable off-grid but to be built and maintained off-grid as well.

The radio accomplishes this goal by being built out of as many standard off-the-shelf components as possible. It eschews modern surface-mount components in favor of the much more accessible through-hole parts, including the ATMEGA328P at the center of the build. A PCB design is also available, but it can be built on perf board nearly as easily. The radio supports any mode a QRP operator might use, including CW, SSB, RTTY, and a new mode designed explicitly for this radio called SCAMP which is a low bandwidth, low SNR digital mode built into the Arduino-based firmware. It’s a single-band radio, but any band between 20 and 80 meters can be selected with pluggable filters.

As far as bomb-proof radios go, we can’t imagine a better way to live out an apocalypse than with a radio like this. As long as there’s a well-stocked parts drawer around, this radio could theoretically reach around the world without worrying about warranty claims, expensive parts, or even a company going out of business or not stocking parts for old radios anymore. There’s also more information about this build at the Open Research Institute for those interested. And, if you’re wondering how useful any radio could be using only five watts of transmitter power, take a look at this in-depth look at QRP radio operation.

Thanks to [Stephen Walters] for the tip.

A blue PCB remote control

The Remoteduino Nano Is A Tiny IR Remote That’s Truly Universal

Universal remotes are extremely convenient if they work correctly. But setting them up can be quite a hassle: often, you need to browse through long lists of TV models, key in the codes on the remote with just a blinking LED as confirmation, and then pray that the manufacturer included the correct codes for all your equipment. IR isn’t a very complicated technology, however, so it’s perfectly possible to roll your own universal remote, as [sjm4306] shows in his latest project, the Remoteduino Nano. It’s a fully programmable IR remote that gives you maximum flexibility when emulating the codes for those obscure A/V systems scattered around your home.

The remote runs on an ATmega328p in a tiny QFN package, which drives a standard 5 mm IR LED through a transistor. Eight buttons are available to the user, which can be freely mapped to any desired code. A five-pin header is included to program the ATmega through its serial port. However, this was mainly done to help debug – a user who only needs to program the device once would typically use a pogo-pin-based adapter instead.

Currently, codes can only be programmed through the serial port, but there’s also an IR receiver present that can be used to copy codes from an existing remote. [sjm4306] hasn’t implemented this feature in software yet, but will probably do so in a future update of the project’s Arduino sketch. If you’re impatient, you can also have a go at it yourself since all code and the board’s Gerber files are freely available for download.

Its tiny size makes the Remoteduino Nano a convenient tool to keep in your drawer if you like to tinker with A/V systems and keep losing those remotes. The Nano is actually an improved version of the original Remoteduino project that [sjm4306] developed a couple of years ago. The problem of a truly universal remote is one that dates back several decades, however.

Continue reading “The Remoteduino Nano Is A Tiny IR Remote That’s Truly Universal”

Kitchen timer project in a angled green 3d printed case with a 7 segment display and knob.

Printing A Brutalist Kitchen Timer

A kitchen timer is one of those projects that’s well defined enough to have a clear goal, but allows plenty of room for experimentation with functionality and aesthetics. [Hggh]’s exploration of the idea is a clean, Brutalist kitchen timer.

The case for [Hggh]’s kitchen timer is 3D printed with openings for a TM1637 four digit, seven segment display and for a KY-040 rotary encoder with knob attached. The internals are driven by an ATmega328P powered from a 18650 cell with a DW01-P battery protection chip and a TP4056 chip for charging. On the back of the case is a power switch and USB-C connector for power. It looks like the 3D printed case was sanded down to give it a smooth matte surface finish.

All the project files, including the STLs, OpenSCAD code, and KiCAD design, are available on GitHub. This Brutalist kitchen timer project is a nice addition to some of the kitchen timers we’ve featured in the past, including a minimalist LED matrix timer and a Nixie timer with keypad.

A pair of PCBs with OLED character displays, showing a simple encryption program

The CryptMaster 2001 Provides Basic Lessons In Cryptography

Sending secret messages to your friends is fun, but today it’s so simple that you don’t even notice it anymore: practically any serious messaging system features encryption of some sort. To teach his kids about cryptography, [Michal Zalewski] therefore decided to bring the topic to life by building a handheld encryption system, called the CryptMaster 2001.

The system consists of an identical pair of hand-held devices built on prototype PCBs. A standard 16×2 character OLED display is used as an output device, which generates the ciphertext in real time as the plaintext is entered character by character through a rotary encoder. An ATmega328P manages the input and output routines and performs the encryption.

For ease of use, [Michal] wanted to use a reciprocal cipher, meaning one that uses the same operation for encryption and decryption. Trivial ciphers like ROT13 would be a bit too easy to crack, so he devised a slightly more complex system where each character in the input is encoded using a separate rearranged alphabet – a basic polyalphabetic substitution cipher.

[Michal]’s kids apparently had some good fun with the CryptMaster 2001, until his eldest son managed to reverse-engineer the encryption method, enabling him to decode messages without having access to one of the devices. This made the project a pretty decent lesson about the limits of basic cryptography: simply swapping letters doesn’t present a real challenge to anyone. Luckily, much more secure methods are available, even if you’re only using pen and paper.

3d printed tiny gym in a box with mirror and led strip lighting

Get Pumped For This Miniature Gym

[Duncan McIntyre] lives in the UK but participated in a secret Santa gift exchange for his Dutch friends’ Sinterklaas celebration. In traditional maker fashion, [Duncan] went overboard and created a miniature gym gift box, complete with flashing lights, music and a motorized lid.

[Duncan] used [TanyaAkinora]’s 3D printed tiny gym to outfit the box with tiny equipment, with a tiny mirror added to round out the tiny room. An ATmega328P was used as the main microcontroller to drive the MP3 player module and A4988 stepper motor controller. The stepper motor was attached to a drawer slide via a GT2 timing belt and pulley to actuate the lid. Power is provided through an 18V, 2A power supply with an LM7805 providing power to the ATmega328P and supporting logical elements. As an extra flourish, [Duncan] added some hardware audio signal peak detection, fed from the speaker output, which was then sampled by the ATmega328P to be able to flash the lights in time with the playing music. A micro switch detects when the front miniature door is opened to begin the sequence of lights, song and lid opening.

[Duncan] provides source on GitHub for those curious about the Arduino code and schematics. We’re fans of miniature pieces of ephemera and we’ve featured projects ranging from tiny 3D printed tiny escalators to tiny arcade cabinets.

Video after the break!

Continue reading “Get Pumped For This Miniature Gym”