Skocz do zawartości

M5Stack Control Deck - bezprzewodowy panel sterowania komputerem na CoreS3 SE (bez lutowania)


Pomocna odpowiedź

Napisano

Cześć! Chciałem zbudować niewielki panel dotykowy, który mógłbym postawić obok klawiatury i używać do sterowania komputerem. Otwieranie ulubionych stron, uruchamianie narzędzi Windows, sterowanie muzyką czy szybkie blokowanie komputera, wszystko dostępne na osobnym ekranie, bez zapamiętywania skrótów klawiaturowych.

Wcześniej stworzyłem już ESP32 PC Control Deck, który wyświetlał wykorzystanie CPU, RAM, GPU i inne parametry komputera oraz pozwalał uruchamiać aplikacje. Projekt działał, ale wymagał połączenia USB i dodatkowego programu działającego na komputerze. Postanowiłem więc przygotować nową konstrukcję, tym razem z naciskiem na prostotę i działanie bezprzewodowe.

Wykorzystałem M5Stack CoreS3 SE z ekranem dotykowym, do którego dodałem opcjonalny akumulator i pokrętło. Efektem jest Touch Control Deck, który działa jako klawiatura Bluetooth, ma sześć ekranów z różnymi funkcjami, dwa zegary, własny panel konfiguracji i sterowanie multimediami.

Całość można zbudować bez lutowania, a po wgraniu oprogramowania nie trzeba instalować żadnego dodatkowego programu na komputerze.

Projekt przygotowałem we współpracy z Botland. Pełny kod źródłowy jest dostępny na GitHubie.

m5stack-touch-control-deck.thumb.jpg.d6a9f2bcc304f1c6c8b9bf55627e3634.jpg

Co potrafi panel?

Najważniejszym elementem urządzenia jest 2-calowy ekran dotykowy o rozdzielczości 320 × 240 pikseli. Nie ma tutaj fizycznych przycisków przypisanych na stałe do konkretnych funkcji. Zamiast tego przygotowałem sześć ekranów, między którymi przechodzimy, przesuwając palcem w górę lub w dół.

Na każdym ekranie znajduje się pasek statusu pokazujący połączenie Bluetooth, Wi-Fi oraz poziom naładowania akumulatora, jeżeli został podłączony.

1. Zegar

20261019_184852.thumb.jpg.fcb224b68445cfa2816821cd3955700f.jpg20261019_184849.thumb.jpg.281acf020db2d29b9123ec6455f6b666.jpg

Pierwszy ekran pokazuje aktualną godzinę w Polsce, datę i drugi zegar. Domyślnie ustawiłem strefę HKT, czyli czas w Hongkongu, ponieważ pracuję z osobami z innych stref czasowych i często muszę sprawdzać, która jest u nich godzina.

Drugą strefę można zmienić w ustawieniach. Wi-Fi służy do synchronizacji czasu przez NTP, ale po synchronizacji zegar może działać również bez połączenia z siecią, korzystając z RTC.

Kolor tła od razu pokazuje stan połączenia: niebieski oznacza aktywne Wi-Fi, a szary pracę offline.

2. Aplikacje i strony internetowe

20261019_184912.thumb.jpg.499ba8ee81674fae97242dea248c82ab.jpg

Tutaj umieściłem sześć kafelków w układzie 2 × 3:

  • ChatGPT, Claude, Gemini,
  • Canva, Admin Toolkit, Botland.

Wystarczy dotknąć ikony, a odpowiednia strona otworzy się na komputerze w domyślnej przeglądarce.

Są to tylko moje domyślne ustawienia. Każdy może zmienić nazwę i adres kafelka na własny, na przykład pocztę, kalendarz, YouTube lub inną często używaną stronę.

3. Sterowanie multimediami

20261019_184919.thumb.jpg.c0c0c50a5c254391b9caac36d7a2a447.jpg

Ten ekran działa podobnie do przycisków multimedialnych klawiatury. Można:

  • zmniejszać i zwiększać głośność,
  • wyciszać dźwięk,
  • zatrzymywać i wznawiać odtwarzanie
  • przełączać utwory.

Dodatkowo wykorzystałem moduł Scroll Unit, czyli niewielkie pokrętło. Obrót zmienia głośność, a naciśnięcie działa jak Play/Pauza. Jest to dla mnie jedna z najwygodniejszych funkcji, ponieważ nie muszę przechodzić na ekran multimediów, żeby ściszyć muzykę.

4. Skróty Windows

20261019_184926.thumb.jpg.b05b12a1aad101a4e57bbce8f26bcd3b.jpg

Czwarty ekran zawiera sześć przydatnych funkcji:

  • Menedżer zadań,
  • blokada komputera,
  • zrzut wybranego fragmentu ekranu,
  • pokaż pulpit,
  • Eksplorator plików,
  • przełączanie okien.

Przykładowo po naciśnięciu przycisku zrzutu ekranu nie jest wykonywane automatyczne zdjęcie całego pulpitu. Panel wysyła kombinację Win + Shift + S, co uruchamia systemowe narzędzie do zaznaczania wybranego fragmentu.

5. Ustawienia

20261019_184932.thumb.jpg.b713b7bdde6a1b5283c724bd7a08acff.jpg

Z poziomu urządzenia możemy regulować jasność ekranu, włączać i wyłączać Wi-Fi, uruchamiać własny punkt dostępowy oraz zmieniać drugą strefę czasową.

6. Połączenia

20261019_184940.thumb.jpg.49661c478aaf5429e7597236b6b28bde.jpg

Na ostatnim ekranie znajdują się informacje o Bluetooth, wersji firmware, dodatkowym pokrętle i sposobie wejścia do panelu konfiguracyjnego. Można tutaj również uruchomić parowanie z innym komputerem.

Dodałem jeszcze animacje uruchamiania, wyłączania i wybudzania, a także tryb czuwania, który wygasza ekran w celu ograniczenia zużycia energii.

Czego użyłem do budowy?

Zależało mi na konstrukcji, którą inni będą mogli łatwo odtworzyć. Dlatego zamiast osobnego wyświetlacza, mikrokontrolera, przycisków i przewodów wybrałem gotowe moduły M5Stack.

Do wykonania mojego egzemplarza wykorzystałem:

  • M5Stack CoreS3 SE - To główny element projektu, wyposażony w ESP32-S3, ekran dotykowy, Wi-Fi, Bluetooth Low Energy, RTC, 16 MB Flash i 8 MB PSRAM.
  • M5Stack Battery Module 13.2, 1500 mAh - Nakładka z akumulatorem, dzięki której panel może działać bez przewodu zasilającego. Montuje się ją bezpośrednio pod CoreS3 SE.
  • M5Stack Scroll Unit - Pokrętło z przyciskiem, które wykorzystałem do sterowania multimediami. Łączy się z CoreS3 SE za pomocą przewodu Grove.

Ważne: do zbudowania podstawowej wersji potrzebny jest tylko CoreS3 SE oraz przewód USB-C z transmisją danych do wgrania firmware. Akumulator i pokrętło są opcjonalne. Bez akumulatora panel może pracować z zasilania USB-C. Bez Scroll Unit sterowanie multimediami nadal działa z poziomu ekranu dotykowego.

Wszystkie trzy moduły aktualnie mieszczą się łącznie w budżecie 300 zł na elektronikę. Warto jedynie sprawdzić aktualne ceny przed zakupem.

Montaż bez lutowania

Montaż jest prosty, ponieważ moduły korzystają z gotowych złączy. Najpierw podłączamy Battery Module 13.2 do złącza znajdującego się pod modułem głównym. Scroll Unit podłączamy przewodem Grove do niebieskiego portu A. 

Moduł Scroll komunikuje się przez I2C i wykorzystuje:

  • adres 0x40,
  • SDA na GPIO 2,
  • SCL na GPIO 1.

W kodzie obsługiwany jest przez magistralę M5.Ex_I2C.

Nie trzeba lutować przewodów, przygotowywać płytki PCB ani wykonywać dodatkowych połączeń. Po złożeniu zestawu możemy przejść do wgrywania oprogramowania.

Przygotowałem też krótki film na YouTube pokazujący montaż i działanie urządzenia:

 

Obudowa wydrukowana w 3D

Chciałem, żeby urządzenie wyglądało jak gotowy produkt i wygodnie stało obok klawiatury. Nie projektowałem jednak obudowy samodzielnie, tylko poszukałem gotowego rozwiązania. Znalazłem model M5Stack Core 2 case 45° angle w/Unit holder opublikowany w MakerWorld przez użytkownika Gigi.

Nie jestem autorem tej obudowy. Wykorzystałem projekt innej osoby, ponieważ w moim przypadku świetnie pasował do CoreS3 SE, modułu akumulatora i bocznego pokrętła. Wydrukowałem go bez problemu na moim Bambu Lab A1. Nachylenie ekranu pod kątem 45 stopni sprawia, że urządzenie jest dobrze widoczne podczas pracy przy komputerze.

20261019_192151.thumb.jpg.8472ffe9dbc1d212ee61b50199b9137f.jpg

Pliki do druku można pobrać z podanej strony, zgodnie z warunkami licencji autora. Nie dołączałem ich do własnego repozytorium.

Obudowa jest całkowicie opcjonalna. Można wydrukować inną, zaprojektować własną albo korzystać z samego modułu CoreS3 SE.

Jak to działa bez dodatkowego programu na komputerze?

Kluczową częścią projektu jest Bluetooth HID, czyli standard wykorzystywany między innymi przez bezprzewodowe klawiatury. Po sparowaniu M5Stacka Windows rozpoznaje go jako urządzenie wejściowe. Kiedy naciskamy kafelek na ekranie, firmware wysyła odpowiedni skrót klawiaturowy.

Przykładowo:

  • Win + L blokuje komputer,
  • Ctrl + Shift + Esc otwiera Menedżera zadań,
  • Win + E otwiera Eksplorator,
  • Win + D pokazuje pulpit,
  • Win + Shift + S otwiera narzędzie wycinania.

Przyciski multimedialne wysyłają odpowiednie polecenia HID do regulacji głośności, wyciszania oraz sterowania odtwarzaniem.

A jak działa otwieranie stron internetowych?

Po dotknięciu przycisku ChatGPT urządzenie wysyła Win + R, wpisuje adres https://chatgpt.com/ i zatwierdza go klawiszem Enter. Windows otwiera stronę w domyślnej przeglądarce. Podobnie działają pozostałe kafelki.

Bluetooth jest więc używany do sterowania komputerem, a Wi-Fi nie jest do tego potrzebne. Wi-Fi wykorzystuję osobno do synchronizacji zegara i dostępu do konfiguracji.

Pierwsza publiczna wersja projektu została przygotowana dla Windows 10 i Windows 11 z układem klawiatury Polski programisty. Skróty charakterystyczne dla innych systemów operacyjnych nie są jeszcze obsługiwane.

Jak wgrać oprogramowanie?

Cały projekt, kod źródłowy i instrukcję przygotowałem w repozytorium:

M5Stack Touch Control Deck na GitHubie

Firmware jest napisany w C++ z wykorzystaniem Arduino Framework i PlatformIO. Nie trzeba jednak ręcznie konfigurować całego środowiska, ponieważ w repozytorium znajdują się skrypty instalacyjne.

Potrzebujemy komputera z Windows 10 lub 11, Pythona 3.9 lub nowszego, przewodu USB-C obsługującego dane oraz Internetu podczas pierwszego uruchomienia.

  • Krok 1. Na GitHubie klikamy Code, a następnie Download ZIP. Rozpakowujemy pobrany katalog na komputerze.
  • Krok 2. Podłączamy CoreS3 SE przez USB-C.
  • Krok 3. Otwieramy katalog projektu i uruchamiamy:
    tools\upload_windows.bat

Skrypt automatycznie przygotowuje środowisko PlatformIO, pobiera biblioteki, kompiluje firmware, wykrywa port USB Espressif i wgrywa program na urządzenie.

Screenshot2026-10-19at19_36_19.thumb.png.1799b959cc160da1ddf1d3324d7900c3.png

Jeżeli komputer ma kilka portów COM, można wskazać właściwy ręcznie:

tools\upload_windows.bat COM7

Oczywiście COM7 to tylko przykład. Należy podać port przypisany do swojego CoreS3 SE.

W przypadku problemów z wykrywaniem modułu można wejść w sprzętowy tryb wgrywania. Przy podłączonym USB-C przytrzymujemy przycisk RST przez około 2–3 sekundy, do zapalenia zielonej diody, następnie zwalniamy przycisk i ponawiamy wgrywanie. Ważne, aby nie mylić przycisku RST z przyciskiem zasilania.

Po zakończeniu instalacji panel uruchomi się i wyświetli animację startową oraz informacje o inicjalizacji poszczególnych funkcji.

Screenshot2026-10-19at19_33_50.thumb.png.6a42ff4722d86385811c349fc06c6761.png

Osoby korzystające z PlatformIO w środowisku programistycznym mogą również otworzyć projekt bezpośrednio i samodzielnie go kompilować.

Pierwsze parowanie z Windows

Po wgraniu programu otwieramy w Windows ustawienia Bluetooth i wybieramy dodanie nowego urządzenia.

Na liście powinien pojawić się: M5 Control Deck

Wybieramy urządzenie i przeprowadzamy parowanie. Po połączeniu ikona Bluetooth w górnym pasku M5Stacka zmienia kolor na zielony. Od tego momentu możemy sterować komputerem z panelu. Żaden dodatkowy program działający w tle nie jest wymagany.

Jest tu jednak jedno ograniczenie. Obecna wersja obsługuje jedno powiązanie Bluetooth. Jeżeli chcemy połączyć panel z innym komputerem, musimy uruchomić nowe parowanie w ustawieniach urządzenia.

Podczas testów zauważyłem, że Windows może zachować stare powiązanie Bluetooth, nawet jeśli zostało już usunięte po stronie M5Stacka. Gdy chcemy ponownie połączyć się z wcześniej używanym komputerem, czasem trzeba usunąć M5 Control Deck z listy urządzeń Bluetooth w Windows i sparować go od początku.

Konfiguracja przez przeglądarkę

Chciałem, żeby można było zmieniać ustawienia urządzenia bez każdorazowego edytowania kodu i ponownego wgrywania firmware. Dlatego przygotowałem prosty lokalny panel WWW.

Jeżeli M5Stack nie ma zapisanej domowej sieci Wi-Fi, uruchamia własny punkt dostępowy o nazwie: M5-Control-Deck

Screenshot2026-10-19at19_30_16.thumb.png.543d0afcaf4183cf004eecc0aefe7012.png

Domyślne hasło do sieci to: m5control

Po połączeniu się z tą siecią otwieramy w przeglądarce: http://192.168.4.1

Domyślne dane logowania:

  • login: admin,
  • hasło: admin123.

W panelu możemy podać dane domowej sieci Wi-Fi, zmienić adresy i nazwy sześciu kafelków, wybrać drugą strefę czasową, ustawić jasność oraz skonfigurować automatyczne czuwanie. Można również zmienić nazwę i hasło punktu dostępowego oraz dane logowania do panelu.

Screenshot2026-10-19at19_30_33.thumb.png.6102f402bbf08c6b5a1f875fa977fe99.png

Po pierwszym uruchomieniu zdecydowanie warto zmienić domyślne hasła. Portal działa lokalnie przez HTTP, dlatego po zakończeniu konfiguracji najlepiej wyłączyć AP. Punkt dostępowy można później uruchomić ręcznie z ustawień M5Stacka, również gdy panel jest połączony z domowym Wi-Fi.

Jak dostosować projekt do własnych potrzeb?

W repozytorium starałem się oddzielić najważniejsze ustawienia od pozostałego kodu.

Większość domyślnych wartości znajduje się w pliku:

include/UserConfig.h

Można tam ustawić między innymi:

  • dane Wi-Fi i punktu dostępowego,
  • jasność ekranu,
  • drugą strefę czasową,
  • nazwy i adresy kafelków,
  • kierunek działania pokrętła,
  • czas bezczynności przed czuwaniem.

Domyślne przyciski są zapisane w dwóch tablicach: APP_LABELS i APP_URLS.

Przykładowo, żeby zmienić jeden z przycisków na własną stronę, wystarczy podmienić nazwę i odpowiadający jej adres w tej samej pozycji obu tablic. Można zrobić to również przez portal konfiguracyjny, bez ponownego wgrywania oprogramowania.

Obsługa klawiatury znajduje się w plikach BleController, a wygląd ekranów i ikon w UserInterface. W repozytorium dostępny jest też osobny poradnik modyfikowania projektu.

Warto pamiętać, że ustawienia zapisane przez portal w pamięci urządzenia mają pierwszeństwo przed wartościami domyślnymi w kodzie. Jeśli po zmianie UserConfig.h nie widać efektu, można przywrócić ustawienia fabryczne z poziomu portalu.

Dodatkowe funkcje i oszczędzanie energii

W trakcie testowania dodałem kilka funkcji, które nie były potrzebne do samego sterowania komputerem, ale poprawiają wygodę codziennego korzystania. Po włączeniu urządzenia pojawia się krótka animacja ładowania. Podobne animacje wyświetlane są przy przechodzeniu do czuwania, wybudzaniu i wyłączaniu. Krótkie naciśnięcie przycisku Power otwiera menu z opcjami Czuwanie, Wyłącz i Anuluj. Dłuższe przytrzymanie rozpoczyna wyłączanie urządzenia.

Dodałem również automatyczne oszczędzanie energii. Jeżeli panel przez określony czas nie jest używany i nie jest połączony przez Bluetooth z komputerem, wyświetla pytanie o przejście do czuwania.

Domyślnie dzieje się to po pięciu minutach bezczynności. W trybie czuwania ekran zostaje wygaszony, natomiast elektronika i komunikacja nadal działają. Gdy Bluetooth jest połączony, urządzenie nie proponuje automatycznego czuwania.

Co sprawiło najwięcej problemów?

Najwięcej czasu podczas pracy nie zajęło samo podłączenie elementów, ale dopracowanie oprogramowania i interfejsu. Początkowo zegar odświeżał cały ekran co sekundę, przez co widocznie migał. Zmieniłem sposób rysowania interfejsu tak, aby aktualizowane były tylko wybrane fragmenty, a nie cała zawartość ekranu.

Kolejnym problemem było rozpoznawanie gestów. Gdy próbowałem przesunąć ekran, zdarzało się, że uruchamiałem przypadkowo funkcję znajdującą się pod palcem. Rozwiązaniem było oddzielenie krótkich dotknięć od wyraźnych gestów pionowych.

Dopiero później dopracowałem ikony aplikacji, sterowania multimediami i funkcji Windows. Wszystkie są rysowane bezpośrednio przez firmware, bez konieczności przechowywania dodatkowych plików graficznych.

Problemy pojawiły się również przy przygotowywaniu prostego skryptu wgrywania. Ostatecznie dodałem automatyczne instalowanie zależności i rozpoznawanie właściwego portu USB, aby inni mogli łatwiej uruchomić projekt na własnym komputerze.

Co można rozbudować w przyszłości?

W poprzednim ESP32 PC Control Deck miałem możliwość wyświetlania wykorzystania procesora, pamięci RAM, GPU, temperatur i innych parametrów komputera. Nowy panel na razie tego nie robi, ponieważ standardowa klawiatura Bluetooth HID nie udostępnia takich informacji z Windows.

Można jednak w przyszłości przygotować opcjonalny, niewielki program, który będzie przesyłał statystyki do M5Stacka przez Wi-Fi. Pozwoliłoby to połączyć bezprzewodowe sterowanie z monitorowaniem komputera.

Innym ciekawym kierunkiem byłaby obsługa większej liczby profili Bluetooth, aby łatwiej przełączać urządzenie między komputerami, albo dodatkowe zestawy skrótów dla innych systemów operacyjnych.

Na razie chciałem jednak zachować najważniejszą zaletę projektu: prostotę.

Podsumowanie

M5Stack Touch Control Deck to niewielki, bezprzewodowy panel, który można zbudować z gotowych modułów bez lutowania i bez projektowania własnej elektroniki. Po wgraniu firmware wystarczy sparować go przez Bluetooth z komputerem z Windows 10 lub 11. Nie trzeba instalować dodatkowego programu do codziennego sterowania.

Akumulator, pokrętło i obudowa 3D są opcjonalne, dlatego każdy może zacząć od samego CoreS3 SE, a później rozbudować urządzenie według własnych potrzeb.

Kod udostępniłem bezpłatnie na licencji MIT. Można go modyfikować i dostosowywać do własnych potrzeb. Jestem ciekaw, jakie funkcje dodalibyście do takiego urządzenia i czy widzielibyście dla niego miejsce na swoim biurku.

Materiały projektu:

Kod źródłowy i instrukcja na GitHubie - https://github.com/lepczynski-cloud/M5Stack-Touch-Control-Deck

Model obudowy 3D na MakerWorld - https://makerworld.com/en/models/3128546-m5stack-core-2-case-45deg-angle-w-unit-holder#profileId-3530280

Poprzedni ESP32 PC Control Deck - https://github.com/lepczynski-cloud/ESP32-PC-Control-Deck

 

 

Podoba Ci się ten projekt? Zostaw pozytywny komentarz i daj znać autorowi, że zbudował coś fajnego!

Masz uwagi? Napisz kulturalnie co warto zmienić. Doceń pracę autora nad konstrukcją oraz opisem.

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...