Blueprint

CircadiUp

A smart, retro-style alarm clock. Specifically designed to gently interfere with the circadian cycle, this should be the perfect way to wake up easily in the morning, feeling energetic and motivated.

Created by Oussama NAOUAR Oussama NAOUAR

Tier 2

5 views

1 follower

No Demo Yet

Oussama NAOUAR Oussama NAOUAR added to the journal ago

Electronics Pt. 1 ; SUFFERING

21-02-2026 (Late Journal)

As I said last time, it is time to start tinkering with the electronics.

I started by soldering all of the components that came unsoldered, especially the 8 touch sensors (I even soldered some of them upside down :) but I fixed them later )

The speakers were a pain to solder. I cut some jumper wires for them, put some solder on the wires and the speakers' pads, but I couldn't get a proper solder joint.

Tried with 2 types of solder, soldering iron tips, flux... But nothing worked. When I thought that I solered a wire, the wire, solder, and even the pad of the speaker came off.

Tried the 2nd speaker, and I could barely get the wires attached.

I then layed out all of the components on a breadboard, excpet for the neopixel strip and RTC module since I used them before.
1771759984522
P.S. The speaker's negative wire disconnected just after testing, when I took the picture)

I decided to start with the DFPlayer module to test the speakers and see if they are powerful enough for the alarm clock. I have an electronics order pending, so I need to quickly check them.

I did some research, and wired everything up by following this picture :
image
I downloaded one of my favourite Tunisian songs and loaded it on the SD card, that I initially formatted to FAT32. I discovered that you should name the files by numbers for the DFPlayer to work, so I renamed the song to "0001.mp3"

I then used ChatGPT to write this test code :

#include "DFRobotDFPlayerMini.h"
#include "HardwareSerial.h"

HardwareSerial mySerial(2);   // Use UART2
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  Serial.begin(115200);

  // RX = 16, TX = 17
  mySerial.begin(9600, SERIAL_8N1, 16, 17);

  if (!myDFPlayer.begin(mySerial)) {
    Serial.println("DFPlayer not detected!");
    while(true);
  }

  Serial.println("DFPlayer ready.");

  myDFPlayer.volume(15);      // Volume 0-30
  delay(1000);

  myDFPlayer.play(1);         // Plays 0001.mp3
}

void loop()
{
}

I downloaded the DFPlayer library, and then realized that I need to download the ESP32 Core. And here the suffering began !

I tried downloading it directly from the Arduino IDE, but I repeatedly got this error :
image
I did some research and found that I must add a timeout setting in the "arduino-cli.yaml"
I did just that. Added a 12000s timeout, didnt help. Tried 600s since I saw most people enter that value, after the 12000s one, but it didn't work either.
I didn't really believe that it was a network issue. Yeah my network is slow, but the error came after a short "Processing" message.

Anyways, I decided to install the package manually by following this tutorial released by Espressif.

I didn't find any hardware folder in my Sketchbook, so I created one and cloned the directory there. After the cloning finished, I followed the next steps and ran all of the scripts mentioned in the tutorial, but I didn't find any ESP32 board when I opened the IDE.

I remembered that I have the STM32 core downloaded, so I tried locating the folder where it was installed. I couldn't, so I asked Bing Copilot, and it told me that it was in a folder called "Arduino15". Still didn't find a hardware folder there, so I started navigating the STM32 core folder, and found a hardware folder there. So I set it as a directory and restarted cloning the Git directory. When it finished, and I had to execute on of the files there, I didn't find the downloaded folder next to the STM32's. Only then did I realize that I made a stupid mistake and dowloaded the ESP32 Core inside of the STM32 one.

I didn't bother executing the "get.exe" file since I know that it won't work.

At this point, I became extremely frustrated and the only thing I wanted to to was to sleep. I also downloaded 4GB out of my own mobile data plan, so I didn't want to make alother failed attempt.

So I told myself "Let's give it a last try using the Arduino IDE". I got back to the config file and changed the timeout value to 100 000s and started installing the ESP32 Core. After some time, it finally worked !

I compiled and transfered the code to the ESP32 board, and the audio started playing from the small speaker !

The sound quality turned out great at low volumes (10/30).
When I tried to raise the volume to the max, it sounded a bit saturated. I don't know if it is a PSU issue or that it was the speaker's limit.

Since everybody was asleep at that time, I didn't want to test again with high volumes, so went to sleep convinced that I can get something nice out of those small speakers if I manage to solder them.

Oussama NAOUAR Oussama NAOUAR added to the journal ago

3D Design Pt. 6 ; It Turned Out Amazing !!

20-02-2026

I was expecting to work on the touch sensor holders, but I changed mymind when I opened the project.

Continuing to work on the sensor holders will add unecessary work. I will just test the sensors outside of the project, and determine the thickness I need for the sensor.
So I will keep what I made last time, as it will be the mounting system anyways.

So with that cancelled, I decided to work on the bells to get on with the actual exterior design.

I first drilled some holes coming from the inside of the clock. These are made in a way so that I will glue the whole bell assembly in place. I don't want to have something to play with on my desk while studying :)
image
Then I designed the bell holders :
image
I made a top interface so that the bell attaches with perfect alignment and then be glued in place.

And finally, I made the actual bells using the revolve feature, and made a female interface for the holder.
image
Here is how everything turned out :
image
It came out really amazing !

I spent some time experimenting with the angle between the bells, as well as the bell holders, and the bells themselves to get this clean and great-looking result.

And to finish things up, I remembered that when I adjusted the wall thickness of the outer ring, I didn't fix the neopixel holder and the diffuser accordingly. So that's what I did today.

And I also adjusted the diameter of the front light window, this way I could adjust the neopixel holder to get rid of the ugly margins I had before with the strips. This also enabled me to add a pixel on each side of the central segments.
image

I am really happy with the result, and I am looking forward to finishing it soon, to be able to move onto another project.

Now that I am getting pretty bored with CAD, I think that next time I will be experimenting with the electronics.

Oussama NAOUAR Oussama NAOUAR added to the journal ago

3D Design Pt. 5; Some thoughts

12-02-2026

The project had been on my mind during yesterday's lunch break, and there are a lot of things that I didn't really consider when starting to design.

  1. How much plastic is this gonna eat up ?
  2. Are the 92 neopixels that I managed to cram onto the neopixel mounting plates enough to light up my room ?
  3. How am I going to position the touch sensors.

I will start by answering 3 :

I first thought of placing them on the bells that are going to be mounted on the top, just like the retro alarm clocks. But this can make it tricky to use them, especially since they are too sensitive.

I also thought about placing them on the front/sides with some neopixels to make a minigame to snooze the alarm, but this is also not very ergonomic, and the front solution will eat up place for the neopixels.

So I decided to add them to the back with some finger guides to know how to position your hand.

And since those touch sensors can be very sensitive, and can even detect the finger through a material, or at a small distance, decided to make a modular design. There will be some mounting guides for a button holder. I will design some button holders with different thickness, to test and choose the most suitable design.
This will also make it easier to open the back cover, as the buttons will be removable, hence removing the link between the front and back parts of the alarm clock.

Number 2 : Short answer : No :(

I remember using 60 neopixels a few years ago without a diffuser, and they were good for mood lighting. They were not bright enough to illuminate my room, especially considering that 2 of 4 walls are painted in a dark shade of peacock blue.

I have a desk lamp with variable white temperature, and it is pretty bright. I believe that the strips used use 5V. So to solve the brightness issue, I think that I will be repurposing that lamp for this project.

Number 1 : A LOT !
Screenshot 2026-02-18 205029
I tried slicing it using the default profiles for 0.2mm in Creality Print with the addition of support, and it is a lot !
440g for the outer ring alone is really excessive.
BTW this will be printed on a Creality Hi.
Even with less infill, it will consume a lot of filament
So I will have to adjust the design to reduce print time and the amount of plastic it will use.

I will have to try and make the thing more compact. I hope that it won't result in me having to place the speakers on the back. But even if it does, I will connect them using JST-XH connectors, since I originally placed them on the sides to remove disassembly complications.

First of all, I made the entire thing thinner. I moved the speaker grills more to the back, this way I will have more freedom to position the neopixel holder for the best diffusion.

I removed the back legs and adjusted the position of the front ones. The thinner clock didn't really allow for the back legs, and when I checked the retro alarm clocks, they didn't have them. They were standing leaning a bit to the back.

Then I made some holes for heatset inserts for the back cover, in the outer ring. After that, I designed the back cover, with the same fillet as the front one, to make things symmetrical.

While doing that, I noticed that the walls I initally made of the outer ring are very thick, and they would require much more filament and print time when actually printing. So I made them thinner and adjusted the diffuser, the neopixels holder, and the back cover accordingly.
image
Then I spent some time thinking and prototyping some mounting solutions for interchangeable touch sensor mounts. I came up with the great idea of making them go inside of the back cover, and then have a sliding door pushing the holder in place. So I started by making the holder and the matching holes in the back cover.
image
image
This image is from the inside.

That's where I am stopping today, as I am very tired and want to sleep early.

Next time, I will be finishing the touch sensors attachement system.

Oussama NAOUAR Oussama NAOUAR added to the journal ago

3D Design Pt. 4 ; Some serious work

15-02-2026

I bought almost all of the components I will be using in this project, so I thought that it is good time to get back to work on the design !

I first started by making the display holder that will be mounted in the center of the diffuser. I still don't have a caliper, and I couldn't use a ruler to get the position of the screw holes, and I need a 3D model of the screen in my design, so I downloaded a model on Grabcad and got to work.
image
I made mounting holes to mount the display with screws, and the holder will also be mounted with screws to the light diffuser.
I made a small rectangle to try and fit the pins of the display itself.
Screenshot 2026-02-15 234340
Then I made the Neopixels mounting plate.

I bought a long strip of WS2812B Neopixel RGB with a density of 60pixels/m.

I measured the width of the strip and the distance between 2 LEDS/2 cutting spots to determine how long each segment should be.

I made big rectangles to see how long the segment should with n number of pixels, and another construction rectangle inside to see how the pixels themselves will be positioned.

I positioned them flush with the diffuser edges in the outer ring (the big construction circle). And I also made the pixels spaced vertically with the same distance that they are horizontally on the strip. This way, the light diffused should turn out very homogen.

In my first try, I started placing the strips from the top and going down, but it caused this :
Screenshot 2026-02-15 220628
No segments will be on the middle, and this would also make the segmets positioned oddly in the bottom, so I removed the positioning constraints and started working form the center.
Here how the first prototype turned out :
Screenshot 2026-02-15 222206
The grooves there are to help me position the strips.

But then I noticed that with very tight margins, I could cram another pixel in the first split segment, just above the middle one. So I did just that, and in fact, margins were extremely tight.
Screenshot 2026-02-15 223140
I was left with about 3mm sticking out, so I had to do something about it.
I first added 3mm to the outer diameter of the alarm clock. I didn't really want to do that at first so that I don't reach the edges of the A1's build plate, but I was obliged this time. I still made sure to leave 3mm. I then had to adapt the diffuser and all of the mounting holes to adapt correctly.

I then proceeded by making the display holder tighter around the screen so that I can make the middle circle of the Neopixel plates smaller. This left me with just about 0.7mm sticking out, but it wasn't a problem since I can trim it with cisors as they coincide with the cutting point of the strip.

Finally, I wanted to make the speaker grills. I spent some time thinking about where I should put them and about the design of the grills.

I initially wanted to mount them on the back, but I didn't want to do so, as it will add wires to a removable part, which is something I want to avoid. So I decided to place the speakers on the sides. I kept hesistating about making just some simple lines for the grills, or some shapes, as shapes might be more difficult to print, and they would absorb some of the sound.

But for the sake of a great design, I wanted to make a honeycomb pattern, with big hexagones to make it easier for the sound to go through.

I made a construction circle just a tiny bit lager that the speaker itself on the right. I then started by individually making each column on one side so that I can mirror them later. I made them in a way that they would fit inside of the construction circle to avoid having some ugly hexagones that would show the insides of the clock.

Everything was going great until Solidworks started acting up. When the number of hexagones became very great, especially for my computer, Solidworks was randomly showing me some "Over-defined sketch" errors.
Screenshot 2026-02-15 231047
Sometimes just exiting the sketch and re-opening it, or deleting a relation and putting it back in would make the error go away, and sometimes it doesn't. Also everything became very slow, so I restarted my PC.

That didn't solve it, so I deleted the sketch and restarted making the grills. This time, I made a first block of 2 columns that I would duplicate using the "Linear Sketch Pattern" feature in both directions, regardless of the speaker's diameter.
I made a solid circle with the diameter of the speakers, and the hexagones were made even outside of that circle to minimize constraints and handling of each column separately.

Then, with the "Cut-Extrude" feature, I selected all of the contours inside of the speaker's diameter. I also made sure to select "Through All" so that the pattern is cut on the left side.
image
Here's how it turned out :
image

And finally, I made the mounting place for the speakers on each side.
image

Oussama NAOUAR Oussama NAOUAR added to the journal ago

3D Design Pt.2 ; Legs

05-02-2026

Today, I made the legs for the thing.

I started by making 4 holes in the outer ring of the alarm clock.

Then I started by working on the legs.

I made them in a way that would make the leg starting point perfectly flush with the outer shell.

I made a cylinder and then cut the extra by making a circle matching the outer diameter of the alarm clock.
image
Next, I started making the leg itself.

I wanted it to be shaped like a cone with a sphere at the end, similar to the ones below :
image
I knew that I would need to use loft, but I only used it once, and I had so much difficulty with it. So I also figured that using revolved boss should also work if the sketch was made correctly.

So I worked on a sketch that I thought would work with revolved boss, but it didn't work.

Since the leg was going to be at an angle, this meant that the revolved feature would make the tip as designed, but the base would interfere with the starting shape.

So I scrapped this idea, and decided to use lofted boss base, as it seems like the most adapted to what I want to make.

And boy did it give me a headache.

At first, I made some sketches along the length of the leg. But when I wanted to select the sketch profiles, Solidworks didn't allow me to select the axis end point, and when I wanted to select the guide lines and curves, Solidworks didn't allow me to choose the inner axis.

I then realized that the guide curves should be part of the end shape wanted, and that the end point should be part of that guide curve.

After tweaking around, I got it about right. But when I added one leg to the assembly, it was extra short. So I tried to make it longer -> New headache.

When I made the guide sketch longer, and the inner axis longer, my sketch profiles didn't adapt to the new lines, so I had to manually adjust them.

And I repeated this process maybe 2-3 times before I got a satisfying leg length.

But then I realized that the angle I made for the legs which was 60 degrees from the clock curve, was too steep, and made the legs on opposites sides of the clock spread a lot more than desired. So I changed the guide angles, and came the need to adapt every single sketch profile.

But in the end, I got it right (I really hope...)
image
image
I then added 4 legs to the assembly.

And to align the legs in the direction I wanted, I had to make sketches in the clock housing and the legs to later mate them in the assembly.

Here's the end result :
image
image

Oussama NAOUAR Oussama NAOUAR added to the journal ago

3D Design Pt. 1 ; Initial design decisions and starting work

03-02-2026

As I said in the project description, this project, CircadiUp, is an alarm clock designed to wake me up in the best and smoothest way possible.

I saw a reel on Instagram a long time ago advertising a similar concept : An alarm clock that uses light to wake you up smoothly.

Basically how this clock will work, is progressively lighting up my room and maybe play some sounds, some time before the desired alarm time. This will allow the the alarm clock to prevent me from getting in a new deep sleep cycle right before the alarm goes off. So a while before the alarm rings, I will be sleeping lightly, and this will make it easier to wake up more energetic.

Seems very logical, so let's hope that sleep works this way :)

I want it to have a blend between a retro style look, and a touch of modernity and industrial feel.

It will feature a neopixel matrix at the front to have a very beautiful way to emit light.
This will enable the "clock" to adapt the colors and brightness based on time, temperature...

It will also feature a round OLED display in the middle to set the alarm time, lighting settings, play some animations, display the status of the clock...

With that in mind, I hopped in Solidworks to start designing.

Since it is very late now, I only started to get the main shape of the clock after doing some research and choosing some of the components that I will be using.

I started by making the outer shell. I started by making a cylindrical shape, made to be opened from the back.

I made it 250mm in diameter, just below the 256*256mm bed size of the Bambu Lab A1 that I will hopefully be getting soon.

I then made some holes for screws to mount the diffuser on the front, and added a fillet to make everything look better.

As I am really obsessed with detail, I made the fillet diameter in such a way that the screw holes will sit directly in the middle of the section between the inner edge and the fillet starting point !

I can't really be blamed here ! The clock will be always in front of me in my room, and I know that I will very quickly be frustrated about it XD

image

Then I went on by making the diffuser. This should be printed in white PLA, and maybe have a small black/colored portion where the screen will go, to make everthing look cleaner.

I made it very thin so that it effectively diffuses the light, not block it.

image

Oussama NAOUAR Oussama NAOUAR started CircadiUp ago

2/4/2026 - 3D Design Pt. 1 ; Initial design decisions and starting work

03-02-2026

As I said in the project description, this project, CircadiUp, is an alarm clock designed to wake me up in the best and smoothest way possible.

I saw a reel on Instagram a long time ago advertising a similar concept : An alarm clock that uses light to wake you up smoothly.

Basically how this clock will work, is progressively lighting up my room and maybe play some sounds, some time before the desired alarm time. This will allow the the alarm clock to prevent me from getting in a new deep sleep cycle right before the alarm goes off. So a while before the alarm rings, I will be sleeping lightly, and this will make it easier to wake up more energetic.

Seems very logical, so let's hope that sleep works this way :)

I want it to have a blend between a retro style look, and a touch of modernity and industrial feel.

It will feature a neopixel matrix at the front to have a very beautiful way to emit light.
This will enable the "clock" to adapt the colors and brightness based on time, temperature...

It will also feature a round OLED display in the middle to set the alarm time, lighting settings, play some animations, display the status of the clock...

With that in mind, I hopped in Solidworks to start designing.

Since it is very late now, I only started to get the main shape of the clock after doing some research and choosing some of the components that I will be using.

I started by making the outer shell. I started by making a cylindrical shape, made to be opened from the back.

I made it 250mm in diameter, just below the 256*256mm bed size of the Bambu Lab A1 that I will hopefully be getting soon.

I then made some holes for screws to mount the diffuser on the front, and added a fillet to make everything look better.

As I am really obsessed with detail, I made the fillet diameter in such a way that the screw holes will sit directly in the middle of the section between the inner edge and the fillet starting point !

I can't really be blamed here ! The clock will be always in front of me in my room, and I know that I will very quickly be frustrated about it XD

image

Then I went on by making the diffuser. This should be printed in white PLA, and maybe have a small black/colored portion where the screen will go, to make everthing look cleaner.

I made it very thin so that it effectively diffuses the light, not block it.

image

2/6/2026 - 3D Design Pt.2 ; Legs

05-02-2026

Today, I made the legs for the thing.

I started by making 4 holes in the outer ring of the alarm clock.

Then I started by working on the legs.

I made them in a way that would make the leg starting point perfectly flush with the outer shell.

I made a cylinder and then cut the extra by making a circle matching the outer diameter of the alarm clock.
image
Next, I started making the leg itself.

I wanted it to be shaped like a cone with a sphere at the end, similar to the ones below :
image
I knew that I would need to use loft, but I only used it once, and I had so much difficulty with it. So I also figured that using revolved boss should also work if the sketch was made correctly.

So I worked on a sketch that I thought would work with revolved boss, but it didn't work.

Since the leg was going to be at an angle, this meant that the revolved feature would make the tip as designed, but the base would interfere with the starting shape.

So I scrapped this idea, and decided to use lofted boss base, as it seems like the most adapted to what I want to make.

And boy did it give me a headache.

At first, I made some sketches along the length of the leg. But when I wanted to select the sketch profiles, Solidworks didn't allow me to select the axis end point, and when I wanted to select the guide lines and curves, Solidworks didn't allow me to choose the inner axis.

I then realized that the guide curves should be part of the end shape wanted, and that the end point should be part of that guide curve.

After tweaking around, I got it about right. But when I added one leg to the assembly, it was extra short. So I tried to make it longer -> New headache.

When I made the guide sketch longer, and the inner axis longer, my sketch profiles didn't adapt to the new lines, so I had to manually adjust them.

And I repeated this process maybe 2-3 times before I got a satisfying leg length.

But then I realized that the angle I made for the legs which was 60 degrees from the clock curve, was too steep, and made the legs on opposites sides of the clock spread a lot more than desired. So I changed the guide angles, and came the need to adapt every single sketch profile.

But in the end, I got it right (I really hope...)
image
image
I then added 4 legs to the assembly.

And to align the legs in the direction I wanted, I had to make sketches in the clock housing and the legs to later mate them in the assembly.

Here's the end result :
image
image

2/16/2026 - 3D Design Pt. 4 ; Some serious work

15-02-2026

I bought almost all of the components I will be using in this project, so I thought that it is good time to get back to work on the design !

I first started by making the display holder that will be mounted in the center of the diffuser. I still don't have a caliper, and I couldn't use a ruler to get the position of the screw holes, and I need a 3D model of the screen in my design, so I downloaded a model on Grabcad and got to work.
image
I made mounting holes to mount the display with screws, and the holder will also be mounted with screws to the light diffuser.
I made a small rectangle to try and fit the pins of the display itself.
Screenshot 2026-02-15 234340
Then I made the Neopixels mounting plate.

I bought a long strip of WS2812B Neopixel RGB with a density of 60pixels/m.

I measured the width of the strip and the distance between 2 LEDS/2 cutting spots to determine how long each segment should be.

I made big rectangles to see how long the segment should with n number of pixels, and another construction rectangle inside to see how the pixels themselves will be positioned.

I positioned them flush with the diffuser edges in the outer ring (the big construction circle). And I also made the pixels spaced vertically with the same distance that they are horizontally on the strip. This way, the light diffused should turn out very homogen.

In my first try, I started placing the strips from the top and going down, but it caused this :
Screenshot 2026-02-15 220628
No segments will be on the middle, and this would also make the segmets positioned oddly in the bottom, so I removed the positioning constraints and started working form the center.
Here how the first prototype turned out :
Screenshot 2026-02-15 222206
The grooves there are to help me position the strips.

But then I noticed that with very tight margins, I could cram another pixel in the first split segment, just above the middle one. So I did just that, and in fact, margins were extremely tight.
Screenshot 2026-02-15 223140
I was left with about 3mm sticking out, so I had to do something about it.
I first added 3mm to the outer diameter of the alarm clock. I didn't really want to do that at first so that I don't reach the edges of the A1's build plate, but I was obliged this time. I still made sure to leave 3mm. I then had to adapt the diffuser and all of the mounting holes to adapt correctly.

I then proceeded by making the display holder tighter around the screen so that I can make the middle circle of the Neopixel plates smaller. This left me with just about 0.7mm sticking out, but it wasn't a problem since I can trim it with cisors as they coincide with the cutting point of the strip.

Finally, I wanted to make the speaker grills. I spent some time thinking about where I should put them and about the design of the grills.

I initially wanted to mount them on the back, but I didn't want to do so, as it will add wires to a removable part, which is something I want to avoid. So I decided to place the speakers on the sides. I kept hesistating about making just some simple lines for the grills, or some shapes, as shapes might be more difficult to print, and they would absorb some of the sound.

But for the sake of a great design, I wanted to make a honeycomb pattern, with big hexagones to make it easier for the sound to go through.

I made a construction circle just a tiny bit lager that the speaker itself on the right. I then started by individually making each column on one side so that I can mirror them later. I made them in a way that they would fit inside of the construction circle to avoid having some ugly hexagones that would show the insides of the clock.

Everything was going great until Solidworks started acting up. When the number of hexagones became very great, especially for my computer, Solidworks was randomly showing me some "Over-defined sketch" errors.
Screenshot 2026-02-15 231047
Sometimes just exiting the sketch and re-opening it, or deleting a relation and putting it back in would make the error go away, and sometimes it doesn't. Also everything became very slow, so I restarted my PC.

That didn't solve it, so I deleted the sketch and restarted making the grills. This time, I made a first block of 2 columns that I would duplicate using the "Linear Sketch Pattern" feature in both directions, regardless of the speaker's diameter.
I made a solid circle with the diameter of the speakers, and the hexagones were made even outside of that circle to minimize constraints and handling of each column separately.

Then, with the "Cut-Extrude" feature, I selected all of the contours inside of the speaker's diameter. I also made sure to select "Through All" so that the pattern is cut on the left side.
image
Here's how it turned out :
image

And finally, I made the mounting place for the speakers on each side.
image

2/18/2026 - 3D Design Pt. 5; Some thoughts

12-02-2026

The project had been on my mind during yesterday's lunch break, and there are a lot of things that I didn't really consider when starting to design.

  1. How much plastic is this gonna eat up ?
  2. Are the 92 neopixels that I managed to cram onto the neopixel mounting plates enough to light up my room ?
  3. How am I going to position the touch sensors.

I will start by answering 3 :

I first thought of placing them on the bells that are going to be mounted on the top, just like the retro alarm clocks. But this can make it tricky to use them, especially since they are too sensitive.

I also thought about placing them on the front/sides with some neopixels to make a minigame to snooze the alarm, but this is also not very ergonomic, and the front solution will eat up place for the neopixels.

So I decided to add them to the back with some finger guides to know how to position your hand.

And since those touch sensors can be very sensitive, and can even detect the finger through a material, or at a small distance, decided to make a modular design. There will be some mounting guides for a button holder. I will design some button holders with different thickness, to test and choose the most suitable design.
This will also make it easier to open the back cover, as the buttons will be removable, hence removing the link between the front and back parts of the alarm clock.

Number 2 : Short answer : No :(

I remember using 60 neopixels a few years ago without a diffuser, and they were good for mood lighting. They were not bright enough to illuminate my room, especially considering that 2 of 4 walls are painted in a dark shade of peacock blue.

I have a desk lamp with variable white temperature, and it is pretty bright. I believe that the strips used use 5V. So to solve the brightness issue, I think that I will be repurposing that lamp for this project.

Number 1 : A LOT !
Screenshot 2026-02-18 205029
I tried slicing it using the default profiles for 0.2mm in Creality Print with the addition of support, and it is a lot !
440g for the outer ring alone is really excessive.
BTW this will be printed on a Creality Hi.
Even with less infill, it will consume a lot of filament
So I will have to adjust the design to reduce print time and the amount of plastic it will use.

I will have to try and make the thing more compact. I hope that it won't result in me having to place the speakers on the back. But even if it does, I will connect them using JST-XH connectors, since I originally placed them on the sides to remove disassembly complications.

First of all, I made the entire thing thinner. I moved the speaker grills more to the back, this way I will have more freedom to position the neopixel holder for the best diffusion.

I removed the back legs and adjusted the position of the front ones. The thinner clock didn't really allow for the back legs, and when I checked the retro alarm clocks, they didn't have them. They were standing leaning a bit to the back.

Then I made some holes for heatset inserts for the back cover, in the outer ring. After that, I designed the back cover, with the same fillet as the front one, to make things symmetrical.

While doing that, I noticed that the walls I initally made of the outer ring are very thick, and they would require much more filament and print time when actually printing. So I made them thinner and adjusted the diffuser, the neopixels holder, and the back cover accordingly.
image
Then I spent some time thinking and prototyping some mounting solutions for interchangeable touch sensor mounts. I came up with the great idea of making them go inside of the back cover, and then have a sliding door pushing the holder in place. So I started by making the holder and the matching holes in the back cover.
image
image
This image is from the inside.

That's where I am stopping today, as I am very tired and want to sleep early.

Next time, I will be finishing the touch sensors attachement system.

2/20/2026 - 3D Design Pt. 6 ; It Turned Out Amazing !!

20-02-2026

I was expecting to work on the touch sensor holders, but I changed mymind when I opened the project.

Continuing to work on the sensor holders will add unecessary work. I will just test the sensors outside of the project, and determine the thickness I need for the sensor.
So I will keep what I made last time, as it will be the mounting system anyways.

So with that cancelled, I decided to work on the bells to get on with the actual exterior design.

I first drilled some holes coming from the inside of the clock. These are made in a way so that I will glue the whole bell assembly in place. I don't want to have something to play with on my desk while studying :)
image
Then I designed the bell holders :
image
I made a top interface so that the bell attaches with perfect alignment and then be glued in place.

And finally, I made the actual bells using the revolve feature, and made a female interface for the holder.
image
Here is how everything turned out :
image
It came out really amazing !

I spent some time experimenting with the angle between the bells, as well as the bell holders, and the bells themselves to get this clean and great-looking result.

And to finish things up, I remembered that when I adjusted the wall thickness of the outer ring, I didn't fix the neopixel holder and the diffuser accordingly. So that's what I did today.

And I also adjusted the diameter of the front light window, this way I could adjust the neopixel holder to get rid of the ugly margins I had before with the strips. This also enabled me to add a pixel on each side of the central segments.
image

I am really happy with the result, and I am looking forward to finishing it soon, to be able to move onto another project.

Now that I am getting pretty bored with CAD, I think that next time I will be experimenting with the electronics.

2/22/2026 - Electronics Pt. 1 ; SUFFERING

21-02-2026 (Late Journal)

As I said last time, it is time to start tinkering with the electronics.

I started by soldering all of the components that came unsoldered, especially the 8 touch sensors (I even soldered some of them upside down :) but I fixed them later )

The speakers were a pain to solder. I cut some jumper wires for them, put some solder on the wires and the speakers' pads, but I couldn't get a proper solder joint.

Tried with 2 types of solder, soldering iron tips, flux... But nothing worked. When I thought that I solered a wire, the wire, solder, and even the pad of the speaker came off.

Tried the 2nd speaker, and I could barely get the wires attached.

I then layed out all of the components on a breadboard, excpet for the neopixel strip and RTC module since I used them before.
1771759984522
P.S. The speaker's negative wire disconnected just after testing, when I took the picture)

I decided to start with the DFPlayer module to test the speakers and see if they are powerful enough for the alarm clock. I have an electronics order pending, so I need to quickly check them.

I did some research, and wired everything up by following this picture :
image
I downloaded one of my favourite Tunisian songs and loaded it on the SD card, that I initially formatted to FAT32. I discovered that you should name the files by numbers for the DFPlayer to work, so I renamed the song to "0001.mp3"

I then used ChatGPT to write this test code :

#include "DFRobotDFPlayerMini.h"
#include "HardwareSerial.h"

HardwareSerial mySerial(2);   // Use UART2
DFRobotDFPlayerMini myDFPlayer;

void setup()
{
  Serial.begin(115200);

  // RX = 16, TX = 17
  mySerial.begin(9600, SERIAL_8N1, 16, 17);

  if (!myDFPlayer.begin(mySerial)) {
    Serial.println("DFPlayer not detected!");
    while(true);
  }

  Serial.println("DFPlayer ready.");

  myDFPlayer.volume(15);      // Volume 0-30
  delay(1000);

  myDFPlayer.play(1);         // Plays 0001.mp3
}

void loop()
{
}

I downloaded the DFPlayer library, and then realized that I need to download the ESP32 Core. And here the suffering began !

I tried downloading it directly from the Arduino IDE, but I repeatedly got this error :
image
I did some research and found that I must add a timeout setting in the "arduino-cli.yaml"
I did just that. Added a 12000s timeout, didnt help. Tried 600s since I saw most people enter that value, after the 12000s one, but it didn't work either.
I didn't really believe that it was a network issue. Yeah my network is slow, but the error came after a short "Processing" message.

Anyways, I decided to install the package manually by following this tutorial released by Espressif.

I didn't find any hardware folder in my Sketchbook, so I created one and cloned the directory there. After the cloning finished, I followed the next steps and ran all of the scripts mentioned in the tutorial, but I didn't find any ESP32 board when I opened the IDE.

I remembered that I have the STM32 core downloaded, so I tried locating the folder where it was installed. I couldn't, so I asked Bing Copilot, and it told me that it was in a folder called "Arduino15". Still didn't find a hardware folder there, so I started navigating the STM32 core folder, and found a hardware folder there. So I set it as a directory and restarted cloning the Git directory. When it finished, and I had to execute on of the files there, I didn't find the downloaded folder next to the STM32's. Only then did I realize that I made a stupid mistake and dowloaded the ESP32 Core inside of the STM32 one.

I didn't bother executing the "get.exe" file since I know that it won't work.

At this point, I became extremely frustrated and the only thing I wanted to to was to sleep. I also downloaded 4GB out of my own mobile data plan, so I didn't want to make alother failed attempt.

So I told myself "Let's give it a last try using the Arduino IDE". I got back to the config file and changed the timeout value to 100 000s and started installing the ESP32 Core. After some time, it finally worked !

I compiled and transfered the code to the ESP32 board, and the audio started playing from the small speaker !

The sound quality turned out great at low volumes (10/30).
When I tried to raise the volume to the max, it sounded a bit saturated. I don't know if it is a PSU issue or that it was the speaker's limit.

Since everybody was asleep at that time, I didn't want to test again with high volumes, so went to sleep convinced that I can get something nice out of those small speakers if I manage to solder them.