Compact Calendar Display Reduces Phone Dependency

Phones can be distracting objects if you’re not an enlightened master of the mental arts. Even just reading an email or glancing at your calendar can get you caught up checking other apps and notifications and waste your time. [Paul Lagier] built a device to eliminate this problem by showing him critical information right on his desk.

The device is based around an off-the-shelf Waveshare ESP32 board which packs in a small 8×8 RGB LED matrix on one side. It’s a neat way to get an LED project up and running quickly, but [Paul] noted that it didn’t look that great out of the box. He had to experiment with some different solutions for diffusing the light, eventually wrapping the board in a 3D printed housing with a black grid to separate the light output from each LED to make a clear pixelated display.

The ESP32’s wireless connectivity comes in handy, because it’s able to query web services for [Paul’s] calendar and other useful data. The user interface is minimal—you merely flip the housing into a different orientation to display different information, relying on the onboard QMI8658 6-axis sensor. The main display shows [Paul’s] calendar in 15 minute blocks so he can keep track of meetings without having to open his phone. Shaking the device in this mode will display the events as scrolling text. There’s also an ambient mode that looks pretty, and a pairing mode for setting up the wireless connectivity.

The great thing about modern electronic hardware is that it’s very easy to produce productivity aids like this to suit your own lifestyle.

Continue reading “Compact Calendar Display Reduces Phone Dependency”

ESP32Synth : An Audio Synthesis Library For The ESP32

With MCUs becoming increasingly more powerful it was only a matter of time before they would enable some more serious audio-processing tasks. [Danilo Gabriel]’s ESP32Synth library is a good example here, which provides an ESP-IDF based 80+ voice mixing and synthesis engine. If you ever wanted to create a pretty impressive audio synthesizer, then all you really need to get started is an ESP32, ESP32-S3 or similar dual-core Espressif MCU that has the requisite processing power.

Audio output goes via I2S, requiring only a cheap I2S DAC like the UDA1334A or PCM5102 to be connected, unless you really want to use the internal DAC. With this wired up you get 80 voices by default, with up to 350 voices demonstrated before the hardware cannot keep up any more. You can stream multiple WAV files from an SD card for samples along with the typical oscillators like sinewave, triangle, sawtooth and pulse, as well as noise, wavetables and more.

In order to make this work in real-time a number of optimizations had to be performed, such as the removal of slow floating-point and division operations in the audio path. The audio rendering task is naturally pinned to a single core, leaving a single core for application code to use for remaining tasks. While the code is provided as an Arduino project, it uses ESP-IDF so it can likely be used for a regular ESP-IDF project as well without too much fuss.

A Solar Powered Plant Monitor That Almost Works

Keeping plants alive is easy if you’re diligent and never forget to check on your green friends. However, a little electronic help never hurts. To that end, [Narrow Studios] built a simple solar powered monitor to assist in plant maintenance, and it mostly does the job.

An ESP32-C3 development board serves as the brains of the operation. It’s set up with a capacitive soil moisture sensor, a great choice because they tend to last longer than other types. Power is courtesy of a small lithium-polymer battery and a solar panel, which keeps everything running off the juice from interior lighting alone. SK6812 addressable LEDs are used to show current soil moisture status. To avoid excessively draining the batteries with the limited power available, a HCSR505 PIR motion sensor is used to only light the status LEDs if the device detects someone in the vicinity.

There were some issues in the build. The voltage regulator doesn’t supply enough current to enable the ESP32 to jump on WiFi, so soil dryness indication is via LED only. The solar setup is a little weak, too. Still, the project was a great learning experience and with a few mods, would be even more capable.

We’ve featured some great plant monitors over the years, like this Hackaday Prize entry from 2023.

Continue reading “A Solar Powered Plant Monitor That Almost Works”

ESP32 Hosts A Public Website

If you wanted to host a website, you could use any one of a number of online services, or spin up a server on a spare computer at home. If you’re a bit more daring, you could also do what [Tech1k] did, and run one on an ESP32 microcontroller.

The site in question is available (or at least, should be) at HelloESP.com. The first revision ran entirely on an ESP32, serving pages from a SPIFFS filesystem. The device was also fitted with a BME280 environment sensor and an OLED screen. It had an uptime of 500 days before the board failed.

The site has since been relaunched, running on a board that is framed on [Tech1k]’s wall. It runs on an ESP32-WROOM-32D, paired with a BME280 again, along with a CCS811 CO2 and air quality sensor and a DS3231 RTC for accurate timekeeping. The ESP32 is setup to hold an outbound WebSocket to a Cloudflare worker, with the Worker routing HTTP requests to the site via that route. This avoids the need for port forwarding for the ESP32 to be visible to the outside world, and the Cloudflare Worker will also serve a static version of the page in the case of WiFi dropouts or other temporary failures.

It’s true that this isn’t a completely unheard of project—microcontrollers have been working as simple web servers for a long time now. Still, [Tech1k] did a great job of making this as robust as possible and more like a real functional webserver rather than just something that runs on a local network to serve up a config page. That’s worthy of note.

You can run webservers on all kinds of chips these days, even the Raspberry Pi Pico. If you’re doing web stuff on something weird, you know we always wanna hear about it on the tipsline!

Building A Big RC Mini Truck

Kei trucks are some of the smallest commercial vehicles out on the roads today. You can also get lots of cute kei RC cars if you’re into the toy side of things. [Victor] wanted to split the difference with Truck-Kun, and built a 1:3 scale kei truck to show off at a recent anime convention. 

The truck is modelled on the Suzuki Carry.

The build started with a classic hacker favorite—a bunch of old hoverboard motors. These brushless hub motors are pretty easy to drive and have plenty of torque right out of the box. A simple ladder frame was whipped up with a hoverboard wheel at each corner, with a body whipped up out of cardboard, paint, and a few 3D printed parts to hold everything together.

Steering was courtesy of a leadscrew and stepper motor from an old 3D printer. RP2040s were thrown in to talk to the motor controllers, while an ESP32-S3 was charged with communicating with an Xbox One controller to receive directional commands.

It was a neat build that stood tall over most any other kei RC car at Anime Los Angeles. Only, it ended in tears when the 100-pound machine accidentally drove at full throttle into a wall and smashed itself to pieces. Still, that’s just an excuse for [Victor] to build a better one for next year.

We love a good RC build around these parts, and we love kei trucks too.

 

Rust-y Firmware For Waveshare Smartwatch

Waveshare makes a nifty little ESP32-S3 based smartwatch product, but its firmware is apparently not to everyone’s liking. Specifically, it’s not to [infiniton] a.k.a [Bright_Warning_8406]’s liking, as they rewrote the entire code base in Rust. No_std Rust, to be specific, but perhaps that doesn’t need to be specified when dealing with ESP32.

On the Reddit thread about the project, he lists some of the advantages. For one thing, the size of the binary has dropped from 1.2 MB to 579 kB while maintaining the same functionality. More interesting is that he’s been able to eliminate polling entirely: the firmware is purely event-driven. The CPU is not just idle but parked until a timer or GPIO event wakes it up. For this form factor, that’s a big deal — you can’t fit a very large battery in a watch, after all.

Getting drivers for the AMOLED display, touch sensor, audio, and RTC modules written from scratch is an impressive accomplishment. Apparently the screen driver in particular was “a nightmare” and we believe it. There’s a reason most people go for existing libraries for this stuff. [Bright_Warning] did not post screenshots or video, but claims his version of the watch watch can make HTTP calls to Smart Home, play MP3s, play the old phone games– Snake, 2048, Tetris, Flappy Bird, Maze– and even comes with a T9 keyboard for text input.

If you’re looking to get closer to bare metal, and don’t mind it being Rust-y, take a look at the code on GitHub in the first link above. This author isn’t enough of a rustacean to say if the code is as good as it sounds at a glance, but nothing egregious jumps out. The documentation describing exactly what’s going on under the hood isn’t half-bad, either. If you aren’t into Waveshare products, you could easily adapt this code into a more DIY ESP32 watch, too.

If you’re not into Rust, uh… washing soda and electric current can get it off of steel, and probably microcontrollers too. We can’t say that the chip will work after that, but hey — no rust.

Simulating The AVR8 For A Browser-based Arduino Emulator

It’s always nice to simulate a project before soldering a board together. Tools like QUCS run locally and work quite well for analog circuits, but can fall short with programmable logic. Tools like Wokwi handle the programmable side quite well but may have license issues or require the cloud. The Velxio project by [David Montero Crespo] is quite an excellent example of an (online) circuit simulator with programmable logic and local execution!

It’s built largely around Wowki’s AVR8JS library for Arduino simulation. All CPU simulation occurs on the local computer, while sketch compilation happens on the backend using official Arduino tools. But this was certainly not the most impressive aspect of the project. Likewise, Velxio features RP2040 execution using the rp2040js library. It also features the execution of some ESP32 derivative boards built around the RISC-V architecture using the RiscVCore.ts library.

Continue reading “Simulating The AVR8 For A Browser-based Arduino Emulator”