Smart Rotating Platform
SRP is a smart system controlled by ESP32. It can control a platform that is illuminated by a neopixel ring, all using buttons and the web!
Created by
mavory
Tier 4
4 views
0 followers
mavory
submitted Smart Rotating Platform for review ago
zsharpminor
requested changes for Smart Rotating Platform ago
Hello, this is a dope project. A few requests - firstly, you do not have a demo link for this project. Please either add a demo link of your working project or add it in your reviewer note if it isn't letting you add one. Additionally, you have a ton of journals for very little work - if you remove the journals (i.e. unpacking components for 1.2 hours) that aren't necessary, you should be able to reduce this to a more realistic hour count of 5-8 hours. Finally, please either include an image of your wiring that's not just made in KiCad (preferrably just an image of how everything's wired together IRL.) Thanks! :)
mavory
submitted Smart Rotating Platform for review ago
mavory
added to the journal ago
Smart-Rotating-Platform
SRP is a smart system controlled by ESP32. It can control a platform that is illuminated by a neopixel ring, all using buttons and the web!

Why did I do this?
I wanted to create a project where I could put a thing on a platform and plug it in, then it would spin. So I thought about it and created this!
Features
- Web interface
- It has a buzzer for notification
- Platform rotation with speed adjustment
- Neopixel ring for lighting
Scripts
The script has approximately 230 lines, at the top you can add WiFi and password, then the system will be connected to the internet! Just upload it to the ESP32 and everything should work.
Home page:

How it works?
- If you turn on the system and if everything is written correctly, the ESP32 will connect to the internet and you can control everything via the web!
- On the OLED display you can see the speed of the motor and whether it is spinning.
- You can also see the IP address to which the system is connected.
- You can control various things via the buttons and you can also map them to something else in the code yourself!
Libraries:
WiFi.h
ESPAsyncWebServer.h
AccelStepper.h
Adafruit_SSD1306.h
Adafruit_NeoPixel.h
3D models
Here is a view of the top and bottom of the case:


Circuit and Wiring Diagram

.png)
Bill of Materials (BOM)
| Item | Quantity | Link |
|---|---|---|
| ESP32 | 1 | AliExpress |
| Breadboards | 2 | AliExpress |
| Touch sensor | 1 | AliExpress |
| Buzzer | 1 | AliExpress |
| Jumpers | Much | AliExpress |
| Button | 1 | AliExpress |
| Neopixel ring | 1 | AliExpress |
| OLED display | 1 | AliExpress |
| Stepper motor | 1 | AliExpress |
There is the final video of how it works!
Here is a youtube video where you can see how it works: Link
mavory
added to the journal ago
Exporting files
Once I had everything ready, I moved on to creating a GitHub repo because I couldn't use it... I had to create all the folders and upload the files that were needed.
It also took me quite a while to convert the .STL files to .STEP, but we did it! Next, we added a bill of materials to the README.md, where I included everything. Later, I also uploaded and exported all the files.

mavory
added to the journal ago
Finishing the scheme!
After a long time I had a finished schematic. It took me about +- 2.5 hours in total.
I added the wiring of everything there and then I connected everything to the ESP32. It took me a while to put everything together, but I think it's good now!

mavory
added to the journal ago
Scheme in Kicad
Right after making the BOM, I moved straight to KiCad, where I started working on the wiring. It took a while before I figured it out... I was gradually adding all the things and creating the wiring. Before I noticed it, I initially had 5 pins on the OLED, but then I fixed it to 4 :)

mavory
added to the journal ago
Making BOM
As always I have to create a BOM, so I started looking for all the parts on the internet and after about half an hour I had everything ready and ready. Then I put everything in spreadsheets and just edited... I always tried to find the cheapest things and to keep the shipping as low as possible!

mavory
added to the journal ago
Website and code completion
I did some research and thought, if I could control the motor, I thought of a "joystick" like the one used to control a printer:

So I added it and continued with the last edits to the website and catching errors. I didn't know how to make an OLED, but I decided to go for an easier option and put there:
- IP address where the website is running
- Motor speed
- Whether the motor is running

mavory
added to the journal ago
Implementing new things into the web
After the ESP32 main code was finished I was able to continue on the website, which is not finished at all and I was not satisfied yet, so I sat down again and started writing new code, but I left the theme and various things.
First I experimented with making a mod like every button and so far it looks pretty good:

mavory
added to the journal ago
Code editing!!
I was still finishing things on the code and adding functions like when I hold down a button something happens, but in this part I mainly focused on the ring mods and its modification.
At first I didn't know what mods I would make, but I decided on colorful ones and also different ones with effects, here is an example:

mavory
added to the journal ago
ESP32 code
Immediately after testing, I threw myself into writing the code itself, which will be for the ESP32. I was thinking about how I would make the buttons, and I decided that the touch sensor would mainly be used to control the lights and the limit switch to control the motor.

Website:
I was happy with the code for now, so I moved on to implementing the code for the website. I had to think about what it would look like, etc.:
- will it be white/black
- will it have normal buttons or smart black
- what will the motor control be like
And things like that took me a long time, but I started coding and here is the first result so far, which only indicates how it will look.

mavory
added to the journal ago
Component testing
First I thought about how I would make the logic of the system itself, I came up with the idea that the buttons could change various functions or even turn the motor!
But before that I had to test everything to see if it worked, so that I wouldn't have to find out at the end that it didn't work! So I started with all the things and it turned out that everything worked fine, which I'm happy about :)

mavory
added to the journal ago
The 3D case is finished after a long time
I can announce that I managed to finish the 3D case and put everything together.
I had a lot of problems getting it done at all, but on the other hand I'm happy with how it turned out. Everything fits together beautifully, I also modeled the parts well and now we can move on to coding!!!

mavory
added to the journal ago
Holder for rotating platform
Before I even started coding, I had to make a little holder for the motor that would stick to the spinning platform.
So I went back to TinkerCad and using the previous hole model I made it pretty quickly and printed it out in about 15 minutes! Then I just put it on the motor and glued it together, but here's the pain.... The glue didn't hold well and when I spun it, it either fell off or spun weirdly, but I fixed it and we can continue!

mavory
added to the journal ago
Gluing the case!!!
I took my glue and started gluing the main parts. As always, I had to be glued, but I got over it and continued gluing...
I also glued all the parts to the case and it went pretty quickly! I also put the ring on so I could glue the moving part.

mavory
added to the journal ago
Putting things in the case
After modifying the case (and solving my big problem) I put all the things in the case, but I didn't think it would be that hard... At first I had to think about how to put the breadboards in there and how to arrange the cables, but I managed it only after several attempts, because my cables kept falling out and running off the table :(
When I managed to do that, I had to deal with one more thing, getting the cable for the ring up, but I managed that too (it took me a while, but it was good).

mavory
added to the journal ago
Touch sensor problem
When i was checking if the power LEDs are on everywhere, I noticed that the LED on the touch sensor is always on (even when I'm not touching it) - and it shouldn't be.
So I thought it must be a broken sensor and I did some research and found out that the touch sensor always calibrates itself on the surface it's on.
I tried it and it really worked, I was surprised.

mavory
added to the journal ago
Preparing the case for gluing
Before I start gluing everything together, I have to sand all the surfaces that will be joined with sandpaper. This method has worked for me in the past, so I use it all the time now!
First I took all the edges with K240 sandpaper and later I took the larger joints with K80, which is even coarser.
I also cleaned everything with isopropyl alcohol, which removed the grease and made the glue stick as well as possible.

mavory
added to the journal ago
Cosmetic treatment for 3D case
When I had everything printed, I moved on to removing the supports and smoothing out the bumps on the case.
At first I removed the supports on the bottom and it went well and I was happy with that, but sometimes I had to take a knife and cut off the bottom part of the support a little because it was "glued" to the print.
Then I also used a knife to remove all the bumps on the parts and cut off the sharp edges. But I also had to take a lighter and burn the "cobwebs" that were on some parts.

mavory
added to the journal ago
Printing time!!
I had to print all the parts, so I got everything ready in BambuLab studio and started editing all the files... Once I had it, I had it printed and it came out great!

I just had to do a little research on ironing (the thing that smooths out the surfaces of 3D models) and it took me a while, but when I printed it, it looked really good.
Here are the settings:

mavory
added to the journal ago
Lower 3D case finished
After a few hours, the lower case is finished and now we can move on to the upper part, which will hold the neopixel ring.
I came up with a mobile system where you can adjust where you want to put the ring and then just secure it with a safety pin that sticks to the ring!

Making a stopper and a safety catch for the ring
I was thinking about how I would make a stopper, but mainly a safety catch....
At first I thought I could just make a small strip, but I ran out of that and so I made a small shape that will stick to the ring and prevent it from falling down.
I also made a stopper that will stick to the hand after I put on the neopixel ring.

mavory
added to the journal ago
Case improvements
After everything I started thinking about where to place the neopixel ring and I thought about making a raised area for it and having it in the air above the rotating platform.
I prepared things for this in the program and started modeling. I had it about 2cm thick before and then I made the walls smaller so that I didn't have to use so much plastic and that's just enough!

Rotating plate 🛸
I also spent some time on the turntable, which I had to do very well otherwise the project would fall apart.
I measured the motor and started modeling the hole for the rotating pin, which just slides in and glues on!

mavory
added to the journal ago
Making better holes
From my previous projects I have learned that it is always better to spend a little more time on making holes than to get angry and do it again.
So I measured the OLED and touch button again, which were important, and started making better holes for them and I think I did it and hopefully it will fit in them!

Motor bracket
After the holes for the components, I also worked on the motor mount, measuring exactly where the cables are, how tall it is, etc., and then I made the aforementioned mount for it.

mavory
added to the journal ago
Beginning of modeling
After measuring all the parts, I moved to TinkerCad, where I started thinking about how to make a big case to fit everything in... I tried different sizes, but they were too small, so I chose 120x120mmm and that should be enough.
Then I thought about how I could take my project further, so I made a groove for the turntable and started making holes in the lower case.

mavory
added to the journal ago
Measurement of all components!
Before I even started modeling, I had to measure all the important parts. I started measuring mainly the motor so I could make a housing for it and also so it wouldn't move all the time.
Once I had that, I continued with the OLED, the buttons, but I didn't forget the USB-C connector that will power everything!

mavory
added to the journal ago
Cable preparation
When I had finished soldering, I moved straight to connecting the cable to the components. I thought it would be easy, but it wasn't...
At first I had to look for cables that I could use at all, because they were either the wrong format or too short. When I had it, another problem appeared - the cable for the neopixel ring was too short, so I had to take more jumpers and connect it to it, and to keep it from falling, I took electrical tape and wrapped it...
.jpg)
mavory
added to the journal ago
Soldering button
Before I even started doing anything, I had to solder my new touch button!
I took a soldering iron and started... at first it kept falling out, but then I managed it, there was only one small mistake - I heated the soldering iron too much and the plastic melted a little and the pin moved down a lot, but luckily I noticed it soon and put it back.

mavory
added to the journal ago
The birth of my idea!
I've been thinking for a long time about what I could create with ESP32.
I came up with a project with a motor that can be controlled via the web and I started working on it! First I took out all the components that were needed for the project and started thinking again about how I would connect it...
mavory
started Smart Rotating Platform ago
1/20/2026 10 PM - The birth of my idea!
I've been thinking for a long time about what I could create with ESP32.
I came up with a project with a motor that can be controlled via the web and I started working on it! First I took out all the components that were needed for the project and started thinking again about how I would connect it...
1/20/2026 11:03 PM - Soldering button
Before I even started doing anything, I had to solder my new touch button!
I took a soldering iron and started... at first it kept falling out, but then I managed it, there was only one small mistake - I heated the soldering iron too much and the plastic melted a little and the pin moved down a lot, but luckily I noticed it soon and put it back.

1/20/2026 11:17 PM - Cable preparation
When I had finished soldering, I moved straight to connecting the cable to the components. I thought it would be easy, but it wasn't...
At first I had to look for cables that I could use at all, because they were either the wrong format or too short. When I had it, another problem appeared - the cable for the neopixel ring was too short, so I had to take more jumpers and connect it to it, and to keep it from falling, I took electrical tape and wrapped it...
.jpg)
1/20/2026 11:40 PM - Measurement of all components!
Before I even started modeling, I had to measure all the important parts. I started measuring mainly the motor so I could make a housing for it and also so it wouldn't move all the time.
Once I had that, I continued with the OLED, the buttons, but I didn't forget the USB-C connector that will power everything!

1/21/2026 9:51 AM - Beginning of modeling
After measuring all the parts, I moved to TinkerCad, where I started thinking about how to make a big case to fit everything in... I tried different sizes, but they were too small, so I chose 120x120mmm and that should be enough.
Then I thought about how I could take my project further, so I made a groove for the turntable and started making holes in the lower case.

1/21/2026 9:59 AM - Making better holes
From my previous projects I have learned that it is always better to spend a little more time on making holes than to get angry and do it again.
So I measured the OLED and touch button again, which were important, and started making better holes for them and I think I did it and hopefully it will fit in them!

Motor bracket
After the holes for the components, I also worked on the motor mount, measuring exactly where the cables are, how tall it is, etc., and then I made the aforementioned mount for it.

1/21/2026 10:24 AM - Case improvements
After everything I started thinking about where to place the neopixel ring and I thought about making a raised area for it and having it in the air above the rotating platform.
I prepared things for this in the program and started modeling. I had it about 2cm thick before and then I made the walls smaller so that I didn't have to use so much plastic and that's just enough!

Rotating plate 🛸
I also spent some time on the turntable, which I had to do very well otherwise the project would fall apart.
I measured the motor and started modeling the hole for the rotating pin, which just slides in and glues on!

1/21/2026 10:46 AM - Lower 3D case finished
After a few hours, the lower case is finished and now we can move on to the upper part, which will hold the neopixel ring.
I came up with a mobile system where you can adjust where you want to put the ring and then just secure it with a safety pin that sticks to the ring!

Making a stopper and a safety catch for the ring
I was thinking about how I would make a stopper, but mainly a safety catch....
At first I thought I could just make a small strip, but I ran out of that and so I made a small shape that will stick to the ring and prevent it from falling down.
I also made a stopper that will stick to the hand after I put on the neopixel ring.

1/21/2026 11:45 AM - Printing time!!
I had to print all the parts, so I got everything ready in BambuLab studio and started editing all the files... Once I had it, I had it printed and it came out great!

I just had to do a little research on ironing (the thing that smooths out the surfaces of 3D models) and it took me a while, but when I printed it, it looked really good.
Here are the settings:

1/21/2026 11:59 AM - Cosmetic treatment for 3D case
When I had everything printed, I moved on to removing the supports and smoothing out the bumps on the case.
At first I removed the supports on the bottom and it went well and I was happy with that, but sometimes I had to take a knife and cut off the bottom part of the support a little because it was "glued" to the print.
Then I also used a knife to remove all the bumps on the parts and cut off the sharp edges. But I also had to take a lighter and burn the "cobwebs" that were on some parts.

1/21/2026 12 PM - Preparing the case for gluing
Before I start gluing everything together, I have to sand all the surfaces that will be joined with sandpaper. This method has worked for me in the past, so I use it all the time now!
First I took all the edges with K240 sandpaper and later I took the larger joints with K80, which is even coarser.
I also cleaned everything with isopropyl alcohol, which removed the grease and made the glue stick as well as possible.

1/21/2026 6:35 PM - Touch sensor problem
When i was checking if the power LEDs are on everywhere, I noticed that the LED on the touch sensor is always on (even when I'm not touching it) - and it shouldn't be.
So I thought it must be a broken sensor and I did some research and found out that the touch sensor always calibrates itself on the surface it's on.
I tried it and it really worked, I was surprised.

1/21/2026 6:36 PM - Putting things in the case
After modifying the case (and solving my big problem) I put all the things in the case, but I didn't think it would be that hard... At first I had to think about how to put the breadboards in there and how to arrange the cables, but I managed it only after several attempts, because my cables kept falling out and running off the table :(
When I managed to do that, I had to deal with one more thing, getting the cable for the ring up, but I managed that too (it took me a while, but it was good).

1/21/2026 6:45 PM - Gluing the case!!!
I took my glue and started gluing the main parts. As always, I had to be glued, but I got over it and continued gluing...
I also glued all the parts to the case and it went pretty quickly! I also put the ring on so I could glue the moving part.

1/21/2026 7:37 PM - Holder for rotating platform
Before I even started coding, I had to make a little holder for the motor that would stick to the spinning platform.
So I went back to TinkerCad and using the previous hole model I made it pretty quickly and printed it out in about 15 minutes! Then I just put it on the motor and glued it together, but here's the pain.... The glue didn't hold well and when I spun it, it either fell off or spun weirdly, but I fixed it and we can continue!

1/21/2026 7:58 PM - The 3D case is finished after a long time
I can announce that I managed to finish the 3D case and put everything together.
I had a lot of problems getting it done at all, but on the other hand I'm happy with how it turned out. Everything fits together beautifully, I also modeled the parts well and now we can move on to coding!!!

1/21/2026 9:17 PM - Component testing
First I thought about how I would make the logic of the system itself, I came up with the idea that the buttons could change various functions or even turn the motor!
But before that I had to test everything to see if it worked, so that I wouldn't have to find out at the end that it didn't work! So I started with all the things and it turned out that everything worked fine, which I'm happy about :)

1/21/2026 9:22 PM - ESP32 code
Immediately after testing, I threw myself into writing the code itself, which will be for the ESP32. I was thinking about how I would make the buttons, and I decided that the touch sensor would mainly be used to control the lights and the limit switch to control the motor.

Website:
I was happy with the code for now, so I moved on to implementing the code for the website. I had to think about what it would look like, etc.:
- will it be white/black
- will it have normal buttons or smart black
- what will the motor control be like
And things like that took me a long time, but I started coding and here is the first result so far, which only indicates how it will look.

1/21/2026 9:36 PM - Code editing!!
I was still finishing things on the code and adding functions like when I hold down a button something happens, but in this part I mainly focused on the ring mods and its modification.
At first I didn't know what mods I would make, but I decided on colorful ones and also different ones with effects, here is an example:

1/21/2026 9:38 PM - Implementing new things into the web
After the ESP32 main code was finished I was able to continue on the website, which is not finished at all and I was not satisfied yet, so I sat down again and started writing new code, but I left the theme and various things.
First I experimented with making a mod like every button and so far it looks pretty good:

1/21/2026 9:53 PM - Website and code completion
I did some research and thought, if I could control the motor, I thought of a "joystick" like the one used to control a printer:

So I added it and continued with the last edits to the website and catching errors. I didn't know how to make an OLED, but I decided to go for an easier option and put there:
- IP address where the website is running
- Motor speed
- Whether the motor is running

1/24/2026 9 PM - Making BOM
As always I have to create a BOM, so I started looking for all the parts on the internet and after about half an hour I had everything ready and ready. Then I put everything in spreadsheets and just edited... I always tried to find the cheapest things and to keep the shipping as low as possible!

1/24/2026 10:05 PM - Scheme in Kicad
Right after making the BOM, I moved straight to KiCad, where I started working on the wiring. It took a while before I figured it out... I was gradually adding all the things and creating the wiring. Before I noticed it, I initially had 5 pins on the OLED, but then I fixed it to 4 :)

1/24/2026 10:44 PM - Finishing the scheme!
After a long time I had a finished schematic. It took me about +- 2.5 hours in total.
I added the wiring of everything there and then I connected everything to the ESP32. It took me a while to put everything together, but I think it's good now!

1/25/2026 12 PM - Exporting files
Once I had everything ready, I moved on to creating a GitHub repo because I couldn't use it... I had to create all the folders and upload the files that were needed.
It also took me quite a while to convert the .STL files to .STEP, but we did it! Next, we added a bill of materials to the README.md, where I included everything. Later, I also uploaded and exported all the files.

1/25/2026 2 PM - Smart-Rotating-Platform
SRP is a smart system controlled by ESP32. It can control a platform that is illuminated by a neopixel ring, all using buttons and the web!

Why did I do this?
I wanted to create a project where I could put a thing on a platform and plug it in, then it would spin. So I thought about it and created this!
Features
- Web interface
- It has a buzzer for notification
- Platform rotation with speed adjustment
- Neopixel ring for lighting
Scripts
The script has approximately 230 lines, at the top you can add WiFi and password, then the system will be connected to the internet! Just upload it to the ESP32 and everything should work.
Home page:

How it works?
- If you turn on the system and if everything is written correctly, the ESP32 will connect to the internet and you can control everything via the web!
- On the OLED display you can see the speed of the motor and whether it is spinning.
- You can also see the IP address to which the system is connected.
- You can control various things via the buttons and you can also map them to something else in the code yourself!
Libraries:
WiFi.h
ESPAsyncWebServer.h
AccelStepper.h
Adafruit_SSD1306.h
Adafruit_NeoPixel.h
3D models
Here is a view of the top and bottom of the case:


Circuit and Wiring Diagram

.png)
Bill of Materials (BOM)
| Item | Quantity | Link |
|---|---|---|
| ESP32 | 1 | AliExpress |
| Breadboards | 2 | AliExpress |
| Touch sensor | 1 | AliExpress |
| Buzzer | 1 | AliExpress |
| Jumpers | Much | AliExpress |
| Button | 1 | AliExpress |
| Neopixel ring | 1 | AliExpress |
| OLED display | 1 | AliExpress |
| Stepper motor | 1 | AliExpress |
There is the final video of how it works!
Here is a youtube video where you can see how it works: Link