Close
0%
0%

Multifunction alarm clock + USB charging station

An ESP32-powered desk alarm clock that also doubles as a USB charging station, and more!

Similar projects worth following
An ESP32-S3-powered alarm clock with a web interface that also can be used as a USB charging station and a desk organiser, wrapped up in a somewhat retro aesthetic.

The clock will obviously have basic alarm clock functionality, with the ability to sync time, as well as retrieve weather data, over the network.

In addition, it will also have at least 2 USB-A ports and 1 USB-C (non-PD) port in order to charge external devices. The idea is that this could be useful when charging a relatively large amount of devices, say my small collection of smartphones, as I wouldn't have to use up multiple outlets and I could charge them all at the same time.

It will also have two modular side slots for storage 'pods' in order to help (partially) clean up my extremely messy desk.

Rationale:

I decided to do this project mostly as a learning opportunity on how to design a consumer electronics product from the ground up, which will help me with future projects. Also, I haven't done any major electronics projects for a while now, and I don't want to just watch others build stuff.

Major components/ planned design elements:

As previously stated, the alarm clock's main processor will be the ESP32-S3, which should have more than enough processing power and pins for what I need.

There will be two interfaces for controlling the clock: A small touchscreen LCD (https://www.aliexpress.com/item/1005006112241357.html) on the front of the device plus some buttons to navigate the on-screen interface and stop the alarm, and also ideally a web interface that will be able to perform everything that the physical interface can, but not requiring me to have to lean uncomfortably on my desk to use the buttons or touchscreen.

Due to the relatively high-power-consumption nature of charging multiple USB devices, the alarm clock can't be battery-powered alone, so it will have to use a USB-C PD charger for full functionality. When it is disconnected, the alarm clock will switch to Li-ion battery power and only perform 'alarm clock' functions. I'll use a BQ24075 power path battery charger to manage battery charging and switching power sources.

One of the main design philosophies of this project is to be able to do all of its core functions without needing to be connected to the Internet, because as we all know, closed-source devices that have to be internet-connected for core functionality generally don't fare well after their parent company fails... (I will make the hardware and software open-source and I have no intention to sell this product, so this doesn't really apply, but still good to have redundancy in case of power/internet outages :) ). As such, I've decided to add a BME280 sensor in order to have local temperature, humidity and pressure output as a local fallback. I'll also add a DS3231 RTC in order to help keep the time if the battery is removed, and so that a fairly accurate time value can be automatically retrieved when power returns without having to use NTP.

For the industrial design aspect of this build I want to go with something fuctional looking but also retro, kind of along the lines of an original Mac or IBM PC. The idea is for the clock to feel reliable and dependable, which kind of fits with the aforementioned aesthetic.

  • Starting on web interface

    Daniel05/18/2025 at 10:22 0 comments

    OK, so I've done a bit of research on ways to create a web server on the ESP32, and I've decided to use the ESPAsyncWebServer library to create and manage the web server, as apparently it's supposed to be better than the WebServer.h library and it should work fine for what I need it to do. Maybe there's something better out there, I don't know. If there's issues maybe I'll go with something else, like Mongoose, which looks interesting.

    Honestly I've never done anything like this before, so my head hurts every time I have to look at this stuff. And starting is probably the best way to stop that from happening.

    Suggestions on what to use are welcome. Stay tuned!

    https://github.com/ESP32Async/ESPAsyncWebServer

  • Initial entry - Basic proof of concept code + test rig completed

    Daniel05/14/2025 at 07:27 0 comments

    Sorry, it's been a long time since I started this project page. 

    It's one thing to start a project, another thing to actually follow through and finish it.

    I've acquired a DS3231 and BME680 (I wanted a BME280, but since I got it for free from my local hackerspace, I don't mind the extra features), and I've wired them up with my ESP32-WROOM-32 devboard as a simple proof of concept at least two weeks ago. I've also recently finished making a simple text-based proof of concept program that allows the user to connect to WiFi, automatically update the RTC upon connection and output the time, with an NTP-only fallback in case the RTC is missing. As I don't currently have the display I need to create the actual UI for the clock, I'm planning to start working on the web server to remotely manage and control the clock. Right now I'm starting to figure out how I'm actually going to create the website. 

    I have some experience with HTML, but I haven't done anything really complex with it. There seem to be some interesting-looking web development frameworks, so at this point I'm not really sure what I'll use. I'll update this project log when I've decided what I'm going to be using.

    Picture of the proof of concept circuit:

    Test program in action:

    Stay tuned!

View all 2 project logs

Enjoy this project?

Share

Discussions

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates