Dev Board Watch Takes Path Of Least Resistance

Building your own watch or clock is kind of a maker’s rite of passage. Once upon a time, if you went with a wrist watch, you’d typically work on producing your own compact PCB with everything crammed into a typical watch form factor, maybe relying on a simple binary output for compactness and simplicity. Times have changed, however, and [Arnov]’s design is altogether different in its construction.

The build relies on a XIAO ESP32-C3 microcontroller board as the brains of the operation. It’s paired with the XIAO expansion board. It’s designed as a carrier for the ESP32-C3, giving it a bunch of IO that’s accessible over readily-accessible connectors. It also features a display, a real-time clock, and a battery — pretty much the three main things you’d need to add to an ESP32 to turn it into a watch.

Thus, with the electronics pretty much done, it was simply up to [Arnov] to turn the device into a watch. He achieved this by screwing the frame and strap of an old Casio watch to a 3D printed carrier for the XIAO expansion board. With that done, it was simply a matter of writing the code to show the time from the RTC on the display. There’s no connectivity features, no smart stuff going on — just the time and date for your perusal.

Some might decry the project for simply slapping a watch band on a devboard. Or, you could look at how this indicates just how fast and easy development can be these days. Once upon a time, you could spend weeks trying to find a cheap display and then further weeks trying to get it working with your microcontroller. Now you can spend $20, get the parts in a few days, and get your project blasting along minutes later.

If you’ve done an altogether more ornate watch build of your own, we’d love to see that, too. Show us on the tipsline!

Custom Library Rescues Good LoRa Hardware From Bad Firmware

The range of hardware that comes on some dev boards these days is truly staggering. Those little LoRa boards are a prime example — ESP32 with WiFi and Bluetooth, a transceiver that covers a big chunk of the UHF band, and niceties like OLED displays and plenty of GPIO. But the firmware and docs? Well, if you can’t say something nice, don’t say anything at all. Or better yet, just roll your own.

Of course that doesn’t hold true for all the LoRa dev boards on the market, but [Rop] certainly found it to be the case for the Heltec HTIT-WB32LA. This board has all the bells and whistles and would be perfect for LoraWAN and Meshtastic applications, but it needed a little help getting it over the line. [Rop]’s contribution to this end is pretty comprehensive and is based on his fork of the RadioLib library, which incorporates a library that greatly reduces wear on the ESP32’s flash memory. In addition to full radio support, the library supports all the hardware on the board from the pushbutton to the display, power management and battery charging, and of course the blinkenlights.

[Jop] includes quite a few example applications, from the bare minimum needed to get the board spun up to a full-blown spectrum analyzer. It’s a nice piece of work, and a great give-back to the LoRa community. And if you want to put one of these modules to work, you’re certainly in the right place. We’ve got everything from LoRaWAN networks to the magic of Meshtastic, so take your pick and get hacking.

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!

A breadboard showing a tiny ESP32 board and two HMC5883L sensors connected to it on different pins

Avoid I2C Address Conflicts On ESP32 By Pin Muxing

Using hardware I2C on an ESP32? Do you need to connect multiple I2C devices with the same address? Normally, you wouldn’t be able to do that without extra parts, but on the ESP32, [BastelBaus] has found a nice hack — just connect your devices to different pins and slightly abuse the ESP32 GPIO muxing, no extra hardware required!

Initially, they tried separating SDA and SCL completely, and after a bit of tinkering, that’s worked out wonders! For this method, [BastelBaus] provides example Arduino code you could easily integrate into your project, and shows logic analyzer captures that demonstrate there’s barely any overhead. Later, they’ve also found out that you could multiplex only one of the pins, specifically, SDA, having the SCL line be common! As far as we see, this could also work out with split SCL, but do let us know if that doesn’t sound right.

Typically, such a problem is solved with an I2C multiplexer, and we’ve highlighted projects with them before. However, this simple method could also work on chips like the RP2040 or even the Raspberry Pi 4 — just a bit more limited, since the GPIO muxing for I2C has less available ports! Also, if you’re not using a chip with such a comfortable GPIO mux and you must use devices with overlapping addresses, check out the comment section under our I2C ecosystem article – there’s a fair few other methods you can use. And, if this method ever malfunctions for you, there’s a bunch of very straightforward ways you could debug your bus!

ESP32 Weather Station Looks Great With Color E-Paper Display

[educ8s.tv] has built weather stations before, but his latest is his best yet. It’s all thanks to its low-power design, enabled by its e-paper display.

The build is based around an ESP32 microcontroller, combined with a BMP180 sensor for measuring barometric pressure, and a DHT22 sensor for measuring temperature and humidity. By taking these values and feeding them into the Zambretti algorithm, it’s possible to generate a rudimentary weather forecast.

The weather station looks particularly impressive thanks to its six-color e-paper display. It’s brightly colored and easy to read, and displays graphs of temperature, pressure, and humidity over time. Plus, by virtue of the fact that it only draws power when updating, it allows the project to last a long time running solely on battery power.

As far as DIY weather stations go, this is an attractive and clean design that offers plenty of useful data to the user. We’ve seen some other neat builds in this vein before, too.

Continue reading “ESP32 Weather Station Looks Great With Color E-Paper Display”

Internet Radio Built In Charming Cassette-Like Form Factor

You can listen to plenty of broadcast radio these days. There’s a lot of choice too, with stations on AM, FM, and digital broadcasts to boot. However, if you want the broadest possible choice, you want an internet radio. If that’s your bag, why not build a fun one like [indoorgeek’s] latest design?

The build is based around a PCB and 3D-printed components that roughly ape the design of a cassette tape. It even replicates the typical center window of a cassette tape by using a transparent OLED screen, which displays the user interface. In a neat way, the graphics on the display are designed to line up with those on the PCB, which looks excellent.

An ESP32 is the heart of the operation, which is responsible for streaming audio over the Internet via its WiFi connection. It’s powered by a small lithium-polymer battery, and hooked up with a MAX98357 Class D amplifier driven via the chip’s I2S hardware. Audio is played out over a small speaker salvaged from an old smartphone.

While it’s obviously possible to play whatever you like on a smartphone these days, sometimes it’s fun to have simple devices that just do a single job. Plus, we can’t deny this project looks really neat. Video after the break.

Continue reading “Internet Radio Built In Charming Cassette-Like Form Factor”

A Smarter Solar Water Heater

Installing solar power at a home is a great way to reduce electricity bills, especially as the cost of solar panels and their associated electronics continue to plummet. Not every utility allows selling solar back to the grid, though, so if you’re like [Rogan] who lives in South Africa you’ll need to come up with some clever tricks to use the solar energy each day while it’s available to keep from wasting any. He’s devised this system for his water heater that takes care of some of this excess incoming energy.

A normal water heater, at least one based on electric resistive heaters, attempts to maintain a small range of temperatures within the insulated tank. If the temperature drops due to use or loss to the environment, the heaters turn on to bring the temperature back up. This automation system does essentially the same thing, but allows a much wider range of temperatures depending on the time of day. Essentially, it allows the water heater to get much hotter during times when solar energy is available, and lets it drop to lower values before running the heater on utility electricity during times when it isn’t. Using a combination ESP32 and ATtiny to both control the heater and report its temperature, all that’s left is to program Home Assistant to get the new system to interact with the solar system’s battery charge state and available incoming solar energy.

While it’s an elegantly simple system that also affords ample hot water for morning showers, large efficiency gains like this can be low-hanging fruit to even more home energy savings than solar alone provides on paper. Effectively the water heater becomes another type of battery in [Rogan]’s home, capable of storing energy at least for the day in the form of hot water. There are a few other ways of storing excess renewable energy as well, although they might require more resources than are typically available at home.