logo elektroda
logo elektroda
X
logo elektroda
Dostępna jest polska wersja

Czy wolisz polską wersję strony elektroda?

Nie, dziękuję Przekieruj mnie tam

DIY micro tower (desktop version)

efi222  191 20040 Cool? (+109)
📢 Listen (AI):

TL;DR

  • A DIY micro tower combines a radio, spectrum visualizer, and amplifier in two compact desktop enclosures.
  • The radio uses ESP32S3, a 2.8-inch IPS display, MPR121 touch sensing behind 4 mm tinted glass, and encoder-based station browsing.
  • The units measure 200x61x130 mm for the radio and 200x40x130 mm for the spectrum and amplifier sections.
  • The spectrum runs on an ESP32 using both cores, refreshing two 1.9-inch IPS displays at 37 to 41 FPS.
  • The amplifier is not hi-fi, uses a TPA3110 module and AVT kit 2132 tone control, and the station list is stored rigidly in firmware.
Summary generated by AI based on the discussion content.


Hello :)
I was inspired to build the device by the topic https://www.elektroda.pl/rtvforum/topic4041603.html
Initially it was to be a radio for the kitchen. Eventually the decision was made to build one. As is usually the case, the question was - how to "package" it? After various measurements, the enclosure finally evolved into the above form.
Due to its small size it was given the name micro tower ;)

Dimensions of the unit:
Radio: 200 x 61 x 130 mm.
Spectrum and amplifier: 200 x 40 x 130 mm.
Size in my opinion - desktop.

Due to the low weight of the unit, I have dispensed with any mechanically pressed buttons (including the encoder button). Operation of the panels, with the exception of rotating the encoders, is by touch. Here it was not without experimentation.
In the end, I used two types of touch "systems". For the glass panel of the radio, because of the illuminated touch pads, I used the MPR121 chip. And here there was a need for changes to the library supporting this chip. The tinted glass is 4 mm thick and the default settings were not sensitive enough.

The touch buttons in the amplifier input selector and the power-up of all the micro tower components are handled by popular TTP223 modules mounted rather unusually for this sensor.

Both systems work reliably.

brief description of the modules:


Radio: The chip is based on ESP32S3 and a 2.8 inch IPS display. MPR121 touch support. Four touch buttons for mode selection and an encoder for scrolling through the radio station list. As the software stands today, the stations are stored rigidly in it (5 banks of 20 radio stations each). For me this is still a huge amount.... It might be worth adding SD card support and putting them there. There are no bytes here. I select a station and "play".
I downloaded the station list from the @robgold account on github. The ESP32-audioI2S library patches and core ESP32 version 3.2.0 patches were also downloaded from this account. thanks for sharing.



Widmo: ESP32 and two 1.9 inch IPS displays. Here both cores are used for maximum processing power. Sampling the two ADC channels and FFT processing requires considerable computing power. The refresh rate of each display is 37 to 41 Hz (FPS), depending on the motif being displayed. Themes are selected with an encoder. The device remembers the last selected theme.



Amplifier: Simple circuit with tone control (sound spoilage ;) ). Tone control schematic borrowed from AVT kit 2132. PCB made from scratch in stereo. It works so well. But maybe it is the fault of the speakers - not of the highest quality in my opinion. As a power amplifier I inserted a ready-made TPA3110 module. So it is not Hi-Fi equipment. I wondered about the operation of the touch input selector. This could have been done on three RS flip-flops, or something similar. In the end it fell on the atmega88. I have a lot of them so no regrets. But for that you can make a memory of the last selection. The audio inputs are selected by miniature relays.



Enclosures:
All enclosures are printed from PLA. "Wooden" sides are also a hot-glued melamine print with a woodgrain pattern. Here there is a bit of a shortcoming, because the widest furniture edging you can buy is 40mm. So you can see a little under the light where the strips are joined. I also have natural edging 80mm wide. Only that they are made of light wood and would need to be darkened.
Some parts are covered with self-adhesive veneer. E.g. the front and the top lid.

An illustrative picture of one of them:


Power supply:
The amplifier is powered by an external 12V/2A power supply. It also has a USB-C (5V) output to power the other modules. Their power supply is connected via such cables.



The inside of the devices:
Amplifier:




Touch sensors:



Radio:
Radio:

Touch pads and illumination of pictograms:


Front of radio from inside:
Front of radio from inside


Spectrum:



Diagrams:









Finally, a short video from the studio showing the activity:




The final turret module - BT-audio and SD player - is under construction.
I am making the radio and spectrum source codes available. If anyone is willing to build this turret, I will make *.stl available for printing.
Software updates on the radio and spectrum are done wirelessly via a web browser.
There is still a small list of fixes, such as support for Polish fonts etc.

And that's it in a nutshell.... Greetings :)




Tips to help run the spectrum:

The core ESP32 version is 1.0.4 - why so low?
Unfortunately this is the last version that allows ADC sampling even above 40kHz.
Each subsequent version has only been worse.

1 - After installing the TFT_espi library from the "SETUP_TFT_ESPI" directory, which is in the spectrum source directory, copy the "User_Setup" file to the TFT_espi library directory and replace the file with the same name. I suggest archiving the original one before swapping.
The file stores the display driver settings, SPI and other settings.

2 - Again the TFT_espi directory and then the Processors subdirectory.
and in the file "Tft_espi.h" comment out the entry #hal/gpio_11.h

default path:
...`Arduino_braries_TFT_eSPI_Processors_Tft_espi.h'



Errors found:
The radio's schematic incorrectly described the ESP pins connected to the PCM5102. I have changed the schematic to the correct one.
I have corrected the spectrum diagram.

Attachments:
  • mikro_tower.zip (5.88 MB) You must be logged in to download this attachment.

About Author
efi222
efi222 wrote 773 posts with rating 1212 , helped 12 times. Live in city Toruń. Been with us since 2019 year.

Comments

DJCheester 08 May 2026 20:53

Beautiful work, I confess I knew about this hardware beforehand, even before publication. Cool, modern on a cheap ESP32. Nothing to add or take away. Regards [Read more]

robgold 08 May 2026 22:12

Very nice workmanship. Ah those 3D printers...how much easier does it make ;) I like that kind of black and white vibe on the displays and just some touches of colour. What did you bring out the two USBs... [Read more]

elukam 08 May 2026 22:26

A beautiful rendition in a slightly retro style. A marvel! Audio is what it is, if it fills the needs it's cool. Tone correction is rather necessary with such a track. Only the input selector on relays...... [Read more]

efi222 08 May 2026 22:40

From this second USB, 5V power is given to the USB socket on the spectrum. The front is a print on glass. An adhesive film comes over the mirror-smooth surface. It holds atomically. It just takes... [Read more]

robgold 08 May 2026 22:56

And on PEI board it will not come out? I print all the IR windows on PEI and cover them with dark foil and it also holds. It is difficult to tell from the photos that it is foil! :) I think the only... [Read more]

efi222 08 May 2026 23:04

You can't tell in person either. Unless you make bubbles when gluing. I wipe the surface with isopropanol before gluing to get rid of pollen. As long as I have had the printer I have always printed on... [Read more]

robgold 08 May 2026 23:19

And do you have tempered glass on the mulled table? Or just a regular one? Since I print I basically use three plates of texture, satin and just for the smooth PEI themes but it's really some minimal amounts... [Read more]

efi222 08 May 2026 23:26

It's a regular glass is. The fact that I only print with PLA. I heat the table up to 50 degrees. I think it should be able to withstand more than that too. [Read more]

Krzysztof Kamienski 09 May 2026 00:39

Nice work and I'm adding a packet of triptychs as a reward. [Read more]

TechEkspert 09 May 2026 08:37

Super end result, very good example of showing the possibilities of 3D printers. I am convinced by this project to use touch buttons instead of mechanical ones. It is very easy to add FM radio reception... [Read more]

Jawi_P 09 May 2026 08:55

Beautiful. I only print on PEI. The sides I thought were wooden. I'm surprised that the touch switches work through the glass layer. Could you write something more? [Read more]

efi222 09 May 2026 09:36

I didn't go without modifying the Adafruit_MPR121 library to increase sensitivity. The modified library is available in the package with the radio source - (src/Adafruit_MPR121). There is a description... [Read more]

lechoo 09 May 2026 18:01

Hello, good work, I like the execution of the case. Am I the only one who noticed the swapping of the spectrum displays LEFT/RIGHT in places? [Read more]

efi222 09 May 2026 18:06

I've been meaning to change this for a long time now.... (swapping the wires on the CS displays). I didn't and it went to the Electrode. I was curious if anyone would notice it :D Congratulations on... [Read more]

Olkus 09 May 2026 20:04

The enclosures came out brilliantly - really great effect, I like the style :) It's a bit of a shame that the amplifier is so poor. It would have been better to dispense with the tone control and do... [Read more]

robgold 09 May 2026 20:16

Oh, there you go. The truly legendary LM is already years old and the class D still from Texas Instruments does not deviate from it. I suggest to listen to a good application of the older brother TPA3116... [Read more]

efi222 09 May 2026 20:43

Well. Printers print "as they are drawn". And the aesthetic craze is not there.... (in my opinion). I am referring to home FDM printers. If it is to look reasonably good, you have to process the prints... [Read more]

DJCheester 09 May 2026 22:07

It calls for an infrared remote control. The finished code is provided in the topic the author was inspired by. For me as a lazy remote control user this would be greatly missed. Apart from that, the... [Read more]

Szymonix 09 May 2026 22:26

As usual DIY premium 👍 [Read more]

FAQ

TL;DR: To FAQ dla osób budujących biurkową mikro wieżę DIY: front z 4 mm szkła, trzy moduły i obsługa, która „działa bardzo komfortowo”. Wyjaśnia, jak uruchomić radio i widmo na ESP32, jak zrobić dotyk przez przyciemniane szkło oraz jak uniknąć typowych błędów z TFT_eSPI, pinami i polaryzacją głośników. [#21903418]

Dlaczego to ważne: Ten wątek pokazuje nie tylko efektowną obudowę, ale też praktyczne rozwiązania problemów, które zwykle zatrzymują podobne projekty: dotyk przez szkło, kompilację starego core ESP32, OTA i błędy okablowania.

Obszar Zastosowane rozwiązanie Dlaczego właśnie to
Panel radia MPR121 + szkło 4 mm Obsługa podświetlanych pól dotykowych za szkłem
Przyciski wzmacniacza TTP223 Działały tam, gdzie patent z MPR121 i PLA się nie sprawdził
Końcówka mocy gotowy moduł TPA3110 Mała, prosta i wystarczająca do biurkowej mikro wieży

Najważniejszy wniosek: Najtrudniejsze w tym projekcie nie było samo ESP32, lecz dopracowanie integracji: czułości dotyku, zgodności bibliotek, mapowania GPIO i detali mechanicznych. Gdy te cztery rzeczy są poprawne, reszta składa się przewidywalnie.

Quick Facts

  • Wymiary modułów są typowo biurkowe: radio 200 × 61 × 130 mm, a widmo ze wzmacniaczem 200 × 40 × 130 mm. To pozwoliło utrzymać kompaktową, lekką konstrukcję. [#21899218]
  • Zasilanie jest rozdzielone: wzmacniacz pracuje z zewnętrznego zasilacza 12 V / 2 A, a pozostałe moduły dostają 5 V USB-C z jego wyjścia. [#21899218]
  • Dotyk przez szkło działa na polach o wymiarach 17 × 9 mm z przerwą 2 mm, ale wymaga zwiększonej czułości i dobrego dociśnięcia elektrod do szyby. [#21899490]
  • Widmo odświeża oba wyświetlacze z szybkością około 37–41 Hz, używając obu rdzeni ESP32 do próbkowania ADC i FFT. [#21899218]
  • Cała wieża waży około 1,3 kg, dlatego autor zrezygnował z wciskanego przycisku enkodera; nacisk przesuwałby urządzenie po biurku. [#21903418]

1. Jak wykonano przydymiony front szklany dla radia ESP32 i dlaczego wybrano szkło „anisol black” 4 mm zamiast pleksi?

Front wykonano z przyciemnianego szkła „anisol black” 4 mm, a panel maskujący to wydruk przyklejony samoprzylepną folią do gładkiej powierzchni szkła. Autor wybrał szkło zamiast pleksi, bo pleksi z czasem się rysuje, a szkło zachowuje „połysk szkła” i lepiej wygląda na froncie urządzenia. Krawędzie nie muszą być idealnie szlifowane, bo w tej konstrukcji są ukryte; autor często tylko je tępi papierem ściernym. [#21900849]

2. Jakie modyfikacje były potrzebne w bibliotece Adafruit_MPR121, aby przyciski dotykowe działały niezawodnie przez przyciemniane szkło 4 mm?

Trzeba było zwiększyć czułość biblioteki Adafruit_MPR121 i uruchamiać autokalibrację pól przy starcie programu. Autor udostępnił zmodyfikowaną bibliotekę w katalogu src/Adafruit_MPR121 i zaznaczył, że domyślne ustawienia były zbyt mało czułe dla szkła 4 mm. Dodatkowo pola mają 17 × 9 mm, odstęp 2 mm i muszą ściśle przylegać do szyby, bo luźne ułożenie pogarsza wykrywanie dotyku. [#21899490]

3. Dlaczego autor użył MPR121 w panelu radia i modułów TTP223 do przycisków wzmacniacza zamiast jednego rozwiązania dotykowego wszędzie?

Bo oba miejsca miały inne wymagania mechaniczne i optyczne. MPR121 sprawdził się w radiu za szkłem, gdzie potrzebne były podświetlane pola dotykowe. TTP223 zastosowano w selektorze wejść wzmacniacza i włączaniu modułów, bo patent z MPR121 nie działał poprawnie z przyciskiem z PLA, nawet gdy materiał był cieńszy niż szkło. To dało dwa niezawodne układy zamiast jednego kompromisu. [#21899218]

4. Czym jest tryb AP w tym analizatorze widma ESP32 i jak działa bezprzewodowy WebUpdate z przeglądarki?

Tryb AP to lokalny punkt dostępowy Wi‑Fi uruchamiany przez analizator do bezprzewodowej aktualizacji pliku .bin. „AP mode” jest trybem sieciowym, który tworzy własną sieć Wi‑Fi urządzenia, bez routera, i udostępnia stronę aktualizacji z przeglądarki.
  1. Przytrzymaj przycisk „update” około 3 s.
  2. Połącz się z siecią micro_widmo, hasło 12345678.
  3. Wpisz w przeglądarce 192.168.30.50 i wyślij firmware.
Autor zaznaczył, że to wersja testowa, ale działająca. [#21908843]

5. Jak poprawnie skompilować i uruchomić projekt widma na ESP32 z core 1.0.4 i TFT_eSPI bez błędów bibliotek?

Trzeba użyć starego core ESP32 1.0.4, odpowiedniego User_Setup dla TFT_eSPI i poprawki nagłówka w bibliotece. Najczęstszy błąd wynikał z kompilacji na core 3.3.8, który zmienił API timerów i WebServera.
  1. Zainstaluj core ESP32 1.0.4.
  2. Skopiuj plik User_Setup z katalogu SETUP_TFT_ESPI do głównego katalogu TFT_eSPI.
  3. Gdy trzeba, w Processors/Tft_espi.h zakomentuj wpis #hal/gpio_11.h.
Po tej sekwencji użytkownicy potwierdzili poprawną kompilację i start wyświetlaczy. [#21907200]

6. Dlaczego projekt widma wymaga starszej wersji core ESP32, takiej jak 1.0.4, i co psuje się w nowszych wersjach przy próbkowaniu ADC powyżej 40 kHz?

Bo wersja 1.0.4 była ostatnią, która pozwalała na próbkowanie ADC powyżej 40 kHz w sposób potrzebny temu projektowi. Autor napisał wprost, że każda kolejna wersja była pod tym względem gorsza. Na nowszych core spada przetwarzane pasmo: jeden z użytkowników zauważył, że przy core 2.0.17 widmo obejmowało tylko około 10 kHz. To uderza bezpośrednio w użyteczność analizatora FFT. [#21907102]

7. Co dokładnie trzeba zmienić w TFT_eSPI, łącznie z User_Setup i poprawką nagłówka hal/gpio, aby kod widma się budował?

Trzeba podmienić konfigurację sterownika i usunąć konflikt nagłówka. Konkretnie autor zalecił skopiowanie pliku User_Setup z folderu SETUP_TFT_ESPI do katalogu głównego biblioteki TFT_eSPI, bo trzyma on ustawienia sterownika wyświetlacza, SPI i innych parametrów. Następnie w Processors/Tft_espi.h należy zakomentować wpis #hal/gpio_11.h. Bez tego użytkownicy zgłaszali błędy typu „No such file or directory” oraz problemy z kompatybilnością biblioteki z core 1.0.4. [#21899218]

8. Które płytki ESP32 nadają się do tego projektu i jak etykiety GPIO na płytkach deweloperskich mapują się do oryginalnych nazw ESP32-WROOM-32 i ESP32-S3 ze schematów?

Do widma autor wskazał ESP32-WROOM-32D albo starszy ESP32-WROOM-32, a do radia ESP32-S3 1NR16R8. Płytki deweloperskie też mogą działać, ale schematy pokazują oryginalne nazwy GPIO, nie opisy z płytek. Dlatego trzeba sprawdzić mapowanie wyprowadzeń konkretnego developera na właściwe porty ESP32. To ważne szczególnie przy wyświetlaczach, enkoderze i I2S, bo błędne przeniesienie numerów z nadruku płytki kończy się brakiem obrazu lub błędną obsługą wejść. [#21903157]

9. Dlaczego wyświetlacze LEFT/RIGHT w widmie były zamienione i jak naprawić kolejność kanałów przez zmianę okablowania CS?

Były zamienione, bo autor nie przełożył przewodów linii CS dla dwóch wyświetlaczy przed publikacją projektu. Sam przyznał, że planował to zrobić wcześniej, ale finalnie „poszło na forum” z odwrotną kolejnością kanałów. Naprawa jest prosta: trzeba zamienić przewody CS między lewym i prawym ekranem. Autor później potwierdził, że właśnie tak należy przywrócić poprawne LEFT na lewo i RIGHT na prawo. [#21899772]

10. Jaka jest różnica między ESP32-WROOM-32, ESP32-WROOM-32D i ESP32-S3 1NR16R8 w kontekście tej mikro wieży DIY?

W tym projekcie różnica jest funkcjonalna: WROOM-32 / 32D obsługują analizator widma, a ESP32-S3 1NR16R8 obsługuje radio internetowe z ekranem 2,8 cala i MPR121. Widmo korzysta z dwóch rdzeni ESP32 do ADC i FFT oraz z dwóch wyświetlaczy 1,9 cala. Radio ma inną rolę: listy stacji, audio I2S i aktualizacje przez przeglądarkę. Autor podał też, że do widma pasuje WROOM-32D lub starszy WROOM-32, więc 32D jest tu praktycznym następcą starszej wersji. [#21899218]

11. TPA3110 klasy D kontra LM1876 lub LM3886 — co lepiej pasuje do małej biurkowej mikro wieży DIY i dlaczego?

Do małej, lekkiej mikro wieży lepiej pasuje gotowy TPA3110, jeśli priorytetem są rozmiar i prostota, a nie audiofilski tor. Autor użył modułu TPA3110 świadomie i zaznaczył, że to „nie jest Hi‑Fi”. W dyskusji pojawiły się głosy za LM1876/LM3886 dla lepszej jakości, ale też kontrargument, że dobra aplikacja TPA3116 z tej rodziny potrafi wypaść bardzo dobrze. W praktyce w tym projekcie ważniejsze były małe gabaryty obudowy i szybka integracja niż maksymalna jakość wzmacniacza. [#21899855]

12. Jak zrobić trwałe napisy na panelu czołowym i oznaczenia przycisków z użyciem drukarki laserowej, papieru samoprzylepnego, podgrzewania tonera i matowego lakieru?

Najtrwalsza metoda z wątku to wydruk laserowy na błyszczącym papierze samoprzylepnym, podgrzanie tonera i wykończenie lakierem matowym. Autor drukuje napisy, ogrzewa wydruk gorącym powietrzem aż toner zacznie się błyszczeć, nakleja etykietę, przycina nadmiar, szlifuje krawędź drobnym pilnikiem, retuszuje czarnym markerem białe brzegi papieru i na końcu daje matowy lakier bezbarwny. Na zdjęciu pokazał litery o wysokości około 2 mm. [#21902080]

13. Co powoduje słaby lub zniekształcony obraz stereo, gdy moduł TPA3110 ma jeden kanał głośnikowy podłączony z odwróconą polaryzacją, i jak zweryfikować poprawne wyjścia?

Odwrócona polaryzacja jednego kanału wprowadza przeciwfazę, przez co niskie częstotliwości częściowo się znoszą, a scena stereo robi się słaba i nienaturalna. Użytkownik wskazał, że na tym module błędnie opisano polaryzację wyjścia prawego kanału. Autor po tymczasowym odwróceniu przewodu potwierdził wyraźną poprawę „przestrzeni stereo i ogólnego brzmienia”. Weryfikację najlepiej zrobić według noty katalogowej układu TPA oraz porównując efekt odsłuchowy przed i po zamianie przewodów kanału prawego. [#21907328]

14. Jak zaprojektować system pilota IR dla wielomodułowej wieży z radiem, analizatorem widma, wzmacniaczem i przyszłymi modułami BT/SD?

Najprostszy wariant to osobny odbiornik IR w każdym module i różne przyciski pilota dla różnych funkcji. W dyskusji zaproponowano standard NEC, odbiorniki TSOP31238 i przypisanie oddzielnych klawiszy do radia, widma i wzmacniacza. Autor rozważał też wariant centralny: IR tylko we wzmacniaczu, a dalej komendy po UART do pozostałych modułów. Dla obecnej architektury prostszy i mniej inwazyjny jest jednak pierwszy wariant, bo nie wymaga dodatkowej magistrali między segmentami wieży. [#21900122]

15. Czym jest układ audio TDA7313 i jak wypada na tle TDA7318 oraz TDA8425 do wyboru wejść, głośności, balansu i regulacji barwy w wzmacniaczu DIY?

TDA7313 to procesor audio sterowany przez I2C, który łączy selektor wejść, głośność, balans i regulację barwy w jednym układzie. W wątku podano, że ma 3 wejścia, regulację barwy w 15 krokach po 2 dB i głośność w 63 krokach. TDA7318 jest z tej samej rodziny i ma 4 wejścia. TDA8425 według jednego z uczestników gra nieco lepiej, ale tylko trochę; nadal nie jest to układ wybitny jakościowo. Do małego wzmacniacza DIY wygrywa funkcjonalnością i prostszą integracją. [#21913240]
Summary generated by AI based on the discussion content.
%}