Przeszukaj forum
Pokazywanie wyników dla tagów 'M5Stack'.
Znaleziono 8 wyników
-
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. 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 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 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 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 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 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 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. 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. 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. 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 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. 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
-
Gotowe kontrolery USB potrafią kosztować kilkaset złotych, a mimo to często nie oferują dokładnie takiego układu przycisków, jakiego potrzebujemy. Na szczęście urządzenie takie można zbudować w ciągu jednego popołudnia. W tym przypadku wykorzystamy moduły M5Stack, aby stworzyć własny ButtonBox komunikujący się przez Bluetooth Low Energy, który sprawdzi się zarówno jako kontroler do gier i symulatorów, jak i panel sterujący własnymi aplikacjami. Projekt powstał we współpracy z firmą Botland. Projekt opisany w tym artykule powstał z myślą o prostocie wykonania. Nie wymaga projektowania własnej elektroniki ani lutowania – wykorzystujemy gotowe moduły M5Stack, drukowaną obudowę oraz kilka śrub. Całość można później łatwo rozbudować o kolejne elementy, zachowując tę samą architekturę oprogramowania. Jak zbudowany jest ButtonBox? Sercem całego urządzenia jest niewielki moduł M5Stack Atom Lite, który odpowiada za komunikację Bluetooth Low Energy oraz obsługę pozostałych elementów zestawu. Do niego, za pomocą przewodów Grove dołączonych przez producenta, podłączone zostały dwa moduły rozszerzeń. Pierwszym z nich jest M5Stack ByteButton Unit, wyposażony w osiem podświetlanych przycisków chwilowych. Drugi moduł, M5Stack ByteSwitch Unit, oferuje osiem przełączników dwupozycyjnych. Takie połączenie pozwala jednocześnie korzystać z przycisków do wykonywania krótkich akcji oraz przełączników do funkcji, które powinny zachowywać swój stan, na przykład włączania trybów pracy lub sterowania dodatkowymi funkcjami w symulatorach. Wszystkie elementy zamknięto w obudowie wydrukowanej z filamentu PETG. Moduły są mocowane mechanicznie za pomocą ośmiu śrub M4×12, dzięki czemu cała konstrukcja jest sztywna i odporna na wielokrotne użytkowanie. Wewnątrz obudowy znajdują się jedynie krótkie przewody Grove, dlatego montaż nie wymaga lutowania ani wykonywania własnej płytki drukowanej. Takie podejście doskonale wpisuje się w ideę modułowego projektowania. W razie potrzeby uszkodzony element można wymienić w ciągu kilku minut, a sam projekt łatwo rozbudować o kolejne moduły M5Stack. Drukowana obudowa Całość została zaprojektowana tak, aby wszystkie elementy można było zamontować w prostej obudowie wydrukowanej z PETG. PETG dobrze sprawdza się w tego typu konstrukcjach: jest bardziej odporny termicznie od PLA nie odkształca się podczas normalnego użytkowania dobrze znosi wielokrotne skręcanie śrubami Montaż sprowadza się do umieszczenia modułów w przygotowanych otworach i skręcenia obudowy ośmioma śrubami M4×12. Atom Lite jest montowany na wcisk z tyłu obudowy i jest połączony z pozostałymi modułami przewodami Grove. Nie są potrzebne żadne dodatkowe dystanse ani elementy montażowe. Pliki obudowy dostępne są poniżej: Model.zip Montaż elektroniki Jedną z największych zalet projektu jest brak lutowania. Połączenie wygląda bardzo prosto: ByteButton → Grove → Atom Lite ByteSwitch → Grove → ByteButton USB-C → Atom Lite Po podłączeniu przewodu USB urządzenie jest gotowe do wgrania programu. Całość wykorzystuje magistralę I²C, dlatego liczba przewodów została ograniczona do minimum, a montaż zajmuje zaledwie kilka minut. Co potrafi ButtonBox? Po uruchomieniu urządzenie zgłasza się przez Bluetooth jako: OST-BBX Firmware udostępnia dwie podstawowe funkcje: Pierwszą z nich jest odczyt wszystkich przycisków i przełączników - każdy stan przesyłany jest jako prosty ciąg znaków: np. 00000000 lub 10100110, gdzie każda pozycja odpowiada jednemu wejściu. Nie jest wymagane interpretowanie ramek binarnych ani skomplikowanych struktur danych, dzięki czemu praktycznie dowolny program potrafiący komunikować się przez BLE może odczytać aktualny stan urządzenia. Oprogramowanie umożliwia również sterowanie podświetleniem RGB obu modułów. Kolory ustawia się prostymi komendami tekstowymi wysyłanymi przez usługę UART BLE, np. Button:SetRGB:0:255:0:0; lub Switch:SetRGB:2:0:0:255; Takie rozwiązanie bardzo ułatwia testowanie oraz integrację z własnymi aplikacjami. Pierwsze uruchomienie Po wgraniu firmware dostępnego na GitHubie wystarczy uruchomić dowolny tester Bluetooth Low Energy. Po odnalezieniu urządzenia OST-BBX można: odczytywać stany przycisków, obserwować powiadomienia BLE, wysyłać komendy zmieniające kolory podświetlenia. Dzięki temu poprawność działania można sprawdzić jeszcze przed napisaniem własnego programu korzystającego z ButtonBoxa. Do czego można wykorzystać taki panel? Choć projekt wygląda niepozornie, możliwości zastosowań jest naprawdę sporo. ButtonBox świetnie sprawdzi się jako: panel do symulatorów lotu, kontroler do gier wyścigowych, panel skrótów do programów graficznych, sterownik aplikacji CAD, panel makr dla streamerów, sterownik własnych projektów Arduino lub ESP32, interfejs do automatyki domowej. Ponieważ komunikacja odbywa się przez Bluetooth Low Energy, urządzenie można wykorzystać zarówno z komputerami, jak i urządzeniami mobilnymi, które mogą pełnić funkcję pośrednika pomiędzy różnymi urządzeniami korzystającymi z tego samego albo różnych protokołów. Możliwości rozbudowy Jedną z największych zalet wykorzystania modułów M5Stack jest możliwość dalszego rozwijania projektu bez konieczności przebudowy całego urządzenia. Najprostszą rozbudową jest zastosowanie M5Stack Unit 8Encoder. Moduł dodaje osiem enkoderów obrotowych z funkcją przycisku oraz własnym podświetleniem RGB. Dzięki temu ButtonBox może stać się rozbudowanym kontrolerem do symulatorów, czy oprogramowania muzycznego. Firmware został przygotowany w sposób modułowy, dlatego dodanie obsługi enkoderów sprowadza się głównie do rozszerzenia komunikacji BLE o kolejne charakterystyki opisujące ich pozycję i stan. Drugą ciekawą możliwością jest zastąpienie modułu M5Stack Atom Lite poprzez M5Stack Atom S3. Oprócz większej wydajności mikrokontroler ten umożliwia pracę jako urządzenie USB HID. Oznacza to, że ButtonBox może być wykrywany przez komputer jako standardowa klawiatura, panel multimedialny lub kontroler HID, bez konieczności korzystania z Bluetooth. Takie rozwiązanie szczególnie dobrze sprawdzi się w komputerach stacjonarnych oraz symulatorach, gdzie przewodowe połączenie USB gwarantuje najniższe opóźnienia i eliminuje konieczność parowania urządzenia. Co więcej, dzięki zachowaniu tej samej konstrukcji mechanicznej użytkownik może wybrać wariant najlepiej dopasowany do własnych zastosowań - bezprzewodowy oparty na Atom Lite lub przewodowy USB z wykorzystaniem Atom S3. Dlaczego Bluetooth zamiast USB? Większość amatorskich ButtonBoxów działa jako urządzenia HID podłączane przewodem USB. Tutaj zdecydowano się na Bluetooth Low Energy z kilku powodów. urządzenie można połączyć z telefonem, tabletem lub komputerem bez dodatkowych przewodów BLE pozwala bardzo łatwo integrować urządzenie z własnymi aplikacjami bez konieczności implementowania sterowników HID, a zarazem nie koliduje z klawiaturą prosty tekstowy protokół znacznie ułatwia debugowanie. Do sprawdzenia działania wystarczy dowolna aplikacja obsługująca Bluetooth Low Energy Podsumowanie Ten projekt pokazuje, że stworzenie własnego kontrolera nie musi oznaczać projektowania elektroniki od podstaw. Dzięki wykorzystaniu gotowych modułów, drukowanej obudowy i kilku przewodów można w krótkim czasie zbudować estetyczne i funkcjonalne urządzenie, które sprawdzi się zarówno podczas codziennej pracy, jak i w hobbystycznych projektach. Projekt może być gotowym narzędziem do sterowania aplikacjami, ale równie dobrze stanowi punkt wyjścia do budowy bardziej rozbudowanych kontrolerów z dodatkowymi przyciskami, enkoderami czy wyświetlaczami. To dobra propozycja dla osób, które chcą rozpocząć przygodę z modułami M5Stack i jednocześnie stworzyć coś praktycznego.
-
M5Stack M5Stack - główne moduły i ich zastosowanie
H1M4W4R1 opublikował temat w Artykuły użytkowników
Wstęp Ten artykuł jest dedykowany dla osób, które nie są zaznajomione z ekosystemem M5Stack i chcą się dowiedzieć nieco więcej o modułach głównych należących do tego ekosystemu. Artykuł powstał we współpracy z firmą Botland. Moduł M5StickC Plus2 Czym jest M5Stack? Ekosystem M5Stack to zestaw modułowych płytek i akcesoriów elektronicznych, które pozwalają bardzo szybko budować urządzenia z mikrokontrolerem. W praktyce jest to coś pomiędzy zestawem edukacyjnym a gotową platformą do prototypowania. Najczęściej bazuje na układzie ESP32, czyli popularnym mikrokontrolerze z WiFi i Bluetooth. Arduino Nesso - moduł typu Stick z wbudowaną komunikacją LoRa (produkowany przez M5Stack dla Arduino) Idea jest prosta. Zamiast budować układ od zera na płytce stykowej, bierzesz gotowy moduł i łączysz go z innymi elementami jak klocki. W samym ekosystemie występują moduły główne oraz unity (jednostki), które dodają nowe funkcje do modułu głównego. Dzięki temu prototypowanie staje się szybkie i przyjemne, a elektronik nie gubi się w gąszczu przewodów. Z tego ekosystemu dość często korzystają również firmy, które tworzą tzw. MVP (minimalny produkt), w celu wykonania testów rynkowych. Serie modułów M5Stack Moduły M5Stack (na moment pisania artykułu) dzielą się na 4 główne serii: M5Stack Atom, M5Stack Core, M5Stack Stamp oraz M5Stack Stick. Każda z nich ma swoje zalety i ograniczenia, a tym samym konkretne zastosowania. Seria Atom jest przystosowana głównie do zastosowań IoT i często przychodzi z wgranym odpowiednim Firmware (np. Atom Echo jest dostarczany z wgranym asystentem głosowym kompatybilnym z HomeAssistant. Są to względnie małe moduły (24x24mm), które pasują idealnie do wszelkich miniaturowych rozwiązań IoT. Na szczególną uwagę zasługują moduły Echo posiadające wbudowany głośnik, a więc będące idealnymi do wielu rozwiązań z powiadomieniami dźwiękowymi. Przykładowe moduły Atom Seria Core to produkt flagowy firmy M5Stack, który służy głównie do projektowania urządzeń. Zazwyczaj są to moduły pełne najróżniejszych peryferiów od akcelerometru przez mikrofon aż po ekran dotykowy. Najczęściej jest wykorzystywana przez osoby, które chcą się nauczyć elektroniki. Moduł CoreS3 SE Seria Stick to kolejny dość interesujący produkt, który charakteryzuje się dość sporą ilością peryferiów, ale za to dużo mniejszym rozmiarem. Są to produkty, które posiadają wbudowany akumulator, a więc sprawdzają się idealnie w rozwiązaniach przenośnych. Przykładowe moduły z serii Stick Seria Stamp jest zaś interesująca dla miłośników pająków. Posiada ona łatwo dostępne pady i minimum peryferiów, a więc pozwala w bardzo prosty sposób protoypować urządzenia na tzw. "pająka". Jest to najlepsza seria dla osób chcących zbudować funkcjonalne urządzenie w produkcji jednostkowej (czyli większości hobbystów DiY). Moduł Stamp ESP32S3 Dostępne sposoby programowania Oprócz tego, że moduły M5Stack są dość praktyczne w obsłudze to jeszcze możemy korzystać z oprogramowania UIFlow2, systemu bloczkowego programowania, który często upraszcza tworzenie projektu. Wprawdzie w dobie AI jest on dość uciążliwy (względem kodu), aczkolwiek jest to dobry sposób, by zachęcić dzieci do nauki elektroniki i programowania. Interfejs M5Stack UIFlow2 Na co zwrócić uwagę podczas doboru modułu? Podczas doboru modułu głównego zwróć przede wszystkim uwagę na: dostępne peryferia - często nieznacznie droższy moduł główny może oszczędzić zakupu np. dodatkowego akcelerometru wbudowany procesor - szczególnie jeżeli chcesz używać USB, gdyż np. Atom Echo USB nie wspiera, a Atom EchoS3R już tak rodzaje wyjść na peryferia - część peryferiów jest łatwiej dostępna w wersji Hat, a część w wersji Unit; są to różne metody podłączeń, które nie są dostępne we wszystkich modułach ilość wyjść na peryferia (lub padów) - o ile można używać ekspanderów, tak znacznie lepiej jeżeli mamy te złącza wyprowadzone bezpośrednio z procesora Przykładowe projekty Jeszcze nie jesteś pewien czy warto korzystać z ekosystemu M5Stack? Obejrzyj kilka przykładowych projektów: Wewnętrzna stacja klimatyczna Podlewaczka roślin w stylu minimalistycznym Zabawy z autoryzacją - RFID vs odcisk palca -
M5Stack Podlewaczka roślin w stylu minimalistycznym
H1M4W4R1 opublikował temat w Projekty - DIY (mini)
W tym artykule, mała dygresja o podlewaniu roślinek. Jako, że kiedyś udało mi się zasuszyć kaktusa oraz to, że dzięki współpracy z Botlandem miałem moduł podlewania roślin to postanowiłem zbudować minimalistyczny moduł do podlewania mojej papryczki habanero (ma działać i nie kłuć w oczy). Moduł podlewania - cover dla ładnego wyglądu na głównej Elektronika i mechanika Wybór padł na wyżej wymieniony moduł podlewania roślin oraz na M5 Atom S3R, który nadaje się idealnie ze względu na wbudowany LCD, dzięki czemu łatwo zauważymy czy moduł jest zasilany oraz jaki jest obecnie status rośliny. Myślałem o dołożeniu akumulatorka, aczkolwiek pobór prądu pompy szybko by go zużywał (albo byłby zbyt duży), więc postanowiłem go pominąć i zasilać urządzenie ze złącza USB-C. Niestety M5 Atom nie posiada otworów montażowych i trzeba było zaprojektować i wdrożyć obudowę, do której zostanie zamocowany, a która te otwory doda (by móc go przykręcić bezpośrednio do modułu podlewającego). Model został zaprojektowan w Fusion360 i był stworzony na podstawie rysunków producenta. Krawędzie zostały zaokrąglone (lub ścięte), by przypadkiem nie rozciąć sobie palca (można się zdziwić jak ostry potrafi być plastik z drukarki 3D). STL.zip Obudowa dla M5 ATOM Oprogramowanie - wstępne przygotowania Na starcie trzeba było wykorzystać M5Burner, by wgrać firmware UIFlow2 na płytkę. Standardowo zapomniałem tego zrobić na początku, więc dla zapominalskich przypominam: bez tego UIFlow nie wgra oprogramowania O wgrywaniu rozpisywałem się już w tym wątku, a nie lubię się powtarzać. Mając LCD stwierdziłem, że dobrym pomysłem będzie wyświetlanie emotek na ekranie. Niestety wszystkie, które znajdowałem w sieci były na płatnych serwisach z plikami graficznymi, a płacić nie zamierzałem. Poszedłem więc do starego zaufanego przyjaciela zwanego ChatGPT i poprosiłem go o wygenerowanie buziek. Rezultat poniżej. Emoji wygenerowane przez ChatGPT Wygląd był w sam raz, a więc teraz wystarczyło to pociąć. W ruch poszła ciężka artyleria: Paint3D (ze względu na bardzo dobre zaznaczanie magiczne) oraz Affinity Designer 2. Obróbka obrazu przy użyciu Paint3D oraz Affinity Designer 2 Obróbka była prosta: zaznaczyć magicznie każdą buźkę z osobna i przerobić ją na osobny element (dzieje się to automatycznie po wykonaniu zaznaczenia magicznego). Potem skopiować element to Affinity Designer 2, którego kanwa jest odrobinę większa niż rozmiar elementu (do sprawdzenia użyłem zwykłego Painta, w którym zmniejszyłem kanwę do minimalnych rozmiarów i wkleiłem obrazek; zwykły Paint zawsze skaluje kanwę do rozmiaru obrazka, a wartość wyświetlana jest na dole). W Affinity Designer 2 wystarczyło ustawić anchor point nad środku obrazka, przenieść go na środek (połowa szerokości i wysokości kanwy) i wyeksportować do PNG/JPG. Dla leniwych gotowiec: Emoji.zip (wersja przezroczysta i z czarnym tłem). Oryginalnie chciałem użyć wersji przezroczystej, ale okazało się, że M5 nie czyści ekranu i pojawiały się paski. Dlatego do emoji zostało dodane czarne tło, które gwarantuje prawidłowe wyświetlanie obrazków. Oprogramowanie - ustawienie UIFlow2 oraz ekran Następnym etapem było przygotowanie oprogramowania w UIFlow2. Do tego celu założyłem nowy projekt na bazie ATOM S3R oraz dodałem moduł Watering Unit z menu po lewej stronie. Wybór modułu Watering Unit w UIFlow2 Kolejnym etapem było dodanie obrazków oraz kanwy obrazu na ekranie. W tym celu z paska po lewej stronie wybrałem "Image" oraz ustawiłem jego rozmiar tak, by pokrywał cały ekran. Obrazki (pliki graficzne) wgrywamy mając zaznaczoną kanwę obrazu i klikając przycisk zaznaczony na czerwono. Wgrany obrazek umieszczony na kanwie Należy też pamiętać, by podczas wgrywania zsynchronizować pliki z modułem, gdyż w innym przypadku program może nie działać poprawnie. Zapytanie o synchronizację plików (naciśnij SYNC, o ile pliki nie są już wgrane) Oprogramowanie - kod programu Kod programu w bloczkach Ostatnim elementem było stworzenie programu. Uprościłem go dzieląc go na dwie funkcje - jedna analizuje dane odczytane z czujnika, a druga zarządza pompą i obrazkiem na wyświetlaczu, ale od początku... Na starcie program inicjuje wszystko co potrzebne - mikrokontroler i moduł Unit. W następnym kroku obracamy ekran o 180 stopni, gdyż w normalnym ułożeniu spód ekranu jest od strony portu USB, a w zaprojektowanej obudowie port jest umieszczony od góry. Po tym inicjowane są dwie zmienne (właściwie to stałe, ale UIFlow ich nie rozróżnia, gdyż używa microPythona), które definiują histerezę pracy systemu. Należy dobrać je eksperymentalnie korzystając z tego, iż pętla programu po odczytaniu danych z czujnika wyświetla je na porcie szeregowym. Gdy czujnik jest suchy (dla pewności można go przetrzeć szmatką) uzyskujemy wartość dla suchego podłoża, a umieszczając czujnik w szklance z wodą otrzymujemy wartość dla 100% wilgotności. Od tych wartości bierzemy poprawkę na niedokładności pomiarowe i wpisujemy wartości do zmiennych. Opór czujnika maleje wraz ze wzrostem wilgotności, gdy pętla dotrze do funkcji analizującej wartość z czujnika weryfikujemy czy czujnik jest suchy (wartość ADC przekracza wartość graniczną dla suchego podłoża). Jeżeli tak to przypisujemy wartość 0 (czujnik suchy) do zmiennej. W innym przypadku porównujemy wartość ADC z wartością dla stanu mokrego. Jeżeli jest większa to zmieniamy wartość na 1 (czujnik mokry), a jak mniejsza to 2 (podłoże nasycone). Warto zauważyć, że wygląda to nielogicznie, ale jest jak najbardziej poprawne (nasycone podłoże ma większą wilgotność, a więc mniejszą wartość ADC niż podłoże mokre). Po zwróceniu wartości przypisujemy ją do zmiennej i uruchamiamy pętlę kontrolującą układ. Jeżeli wartość nie zmieniła się od ostatniego czasu to pomijamy cały kod (w innym przypadku obrazek może migotać lub wyświetlać się w formie skanowania). Gdy wartość uległa zmianie to aktualizujemy ją do nowej wartości i wchodzimy w analizę tej wartości względem stanu, na który się zmieniła. Gdy nowa wartość wynosi 0 (stan suchy) to aktywujemy pompę i wyświetlamy smutną buźkę. Gdy przejdziemy na 1 (stan mokry) to zmieniamy buźkę na uśmiechniętą i dezaktywujemy pompę (można usunąć dla roślin, które lubią bardzo wilgotne podłoże). W przypadku wartości 2 (stan nasycony) wyłączamy pompę i wyświetlamy szeroko uśmiechiętą buźkę. I wracamy do pętli (funkcja się kończy). Rezultat - działający układ podlewania rośliny i moja bardzo niezadowolona papryka, która pije więcej wody niż student kawy; Oryginał był prześwietlony, więc ChatGPT poprawił kolory, co by w oczy nie raziło. Wpis powstał we współpracy ze sklepem Botland, który jest dystrybutorem rozwiązań M5Stack. -
M5Stack Klawiatura USB do wprowadzania daty i godziny
H1M4W4R1 opublikował temat w Projekty - DIY (mini)
Wstęp Jako, że ostatnio dość często rozliczam się korzystając z arkuszy kalkulacyjnych (i to dość dokładnie) postanowiłem spróbować zaprojektować urządzenie, które pozwoli w szybki sposób wpisać datę i godzinę do odpowiednich pól. Wygląd urządzenia Artykuł powstał we współpracy z firmą Botland. Założenia i próba z UIFlow Urządzenie miało być akceptowalnie małe rozmiarowo i działać jako klawiatura USB. W celu minimalizacji czasu montażu postanowiłem użyć systemu M5Stack. Pierwszy wybór padł na Atom Echo oraz moduł przycisku. Rozpocząłem projekt aplikacji w UI Flow 2 i okazało się, że moduł Echo nie wspiera USB Device (nie można go użyć jako klawiatury). Trochę mnie to zdenerwowało, ale od czego jest partner, który dostarczył moduł Echo S3R, który taką funkcję już (teoretycznie) posiada. Program UIFlow2 Teoretycznie, bo gdy skończyłem projekt (i w przysłowiowym międzyczasie wydrukowałem obudowę) wyskoczyła kolejna niespodzianka: UIFlow2 nie wspiera klawiatury dla modułów Echo (mimo, że pojawia się ona na liście bloczków). MicroPython wyrzuca brak modułu USB. Teoretycznie można bawić się w kopilowanie własnego zestawu ustawień, ale to droga dla zapaleńców, a ja wolę prostotę. Padło więc na zmianę środowiska na stare zaufane PlatformIO z frameworkiem Arduino. Wersja, która nareszcie działa Po szybkim kodowaniu z pomocą Google Gemini (Claude akurat miał przerwę w działaniu) stworzyłem w pełni funkcjonalną aplikację. #ifndef CONFIG_H #define CONFIG_H // Ustawienia WiFi #define WIFI_SSID "SSID" #define WIFI_PASSWORD "PASSWD" // Ustawienia NTP #define NTP_SERVER "pool.ntp.org" #define GMT_OFFSET_SEC 0 // Obsolete #define DAYLIGHT_OFFSET_SEC 0 // Obsolete #define TZ_INFO "CET-1CEST,M3.5.0,M10.5.0/3" // Strefa czasowa // Format daty i czasu (zgodny ze strftime) // Użyj tych definicji, aby dostosować wysyłany tekst klawiatury #define DATE_FORMAT "%d/%m/%Y" // DD/MM/YYYY #define TIME_FORMAT "%H:%M" // HH:MM #define FULL_FORMAT "%Y-%m-%d %H:%M:%S" // Opcjonalny alternatywny format // Przypisanie pinów dla zewnętrznego modułu przycisku (Port A) // W Atom Echo S3R Port A: G1 (SDA) oraz G2 (SCL) // Zazwyczaj moduły przycisków od M5 używają żółtego przewodu (G1) #define EXTERNAL_BUTTON_PIN 1 #endif Powyżej plik konfiguracyjny #include <M5Unified.h> #include <WiFi.h> #include "config.h" #include "time.h" #include "USB.h" #include "USBHIDKeyboard.h" USBHIDKeyboard Keyboard; // Stałe czasowe constexpr unsigned long DEBOUNCE_MS = 250; unsigned long lastPressTime = 0; // Funkcja zwracająca sformatowany ciąg czasu String getFormattedTime(const char* format) { tm timeInfo; if (!getLocalTime(&timeInfo)) { return "NTP_ERR"; } char buffer[32]; strftime(buffer, sizeof(buffer), format, &timeInfo); return String(buffer); } void setup() { const auto cfg = M5.config(); M5.begin(cfg); // Połączenie z WiFi WiFi.begin(WIFI_SSID, WIFI_PASSWORD); while (WiFi.status() != WL_CONNECTED) { // To opóźnienie pozwala poczekać aż ESP znajdzie sieć WiFi (czasem to chwilę zajmuje) delay(500); } // Inicjalizacja NTP configTime(GMT_OFFSET_SEC, DAYLIGHT_OFFSET_SEC, NTP_SERVER); setenv("TZ", TZ_INFO, 1); tzset(); // Inicjalizacja pinu zewnętrznego przycisku pinMode(EXTERNAL_BUTTON_PIN, INPUT_PULLUP); // Inicjalizacja klawiatury USB HID USB.begin(); Keyboard.begin(); } void loop() { M5.update(); const unsigned long currentMillis = millis(); // 1. Wbudowany przycisk (Data) // M5.BtnA.wasPressed() obsługuje już wewnętrzne usuwanie drgań styków if (M5.BtnA.wasPressed()) { if (currentMillis - lastPressTime >= DEBOUNCE_MS) { const String dateStr = getFormattedTime(DATE_FORMAT); Keyboard.print(dateStr); lastPressTime = currentMillis; } } // 2. Zewnętrzny moduł przycisku (Czas) static bool lastExtState = HIGH; const bool currentExtState = digitalRead(EXTERNAL_BUTTON_PIN); // Wykrycie zbocza opadającego (stan aktywny niski) if (currentExtState == LOW && lastExtState == HIGH) { if (currentMillis - lastPressTime >= DEBOUNCE_MS) { const String timeStr = getFormattedTime(TIME_FORMAT); Keyboard.print(timeStr); lastPressTime = currentMillis; } } lastExtState = currentExtState; } Oraz sam kod programu, który inicjuje peryferia i WiFi, konfiguruje NTP (serwer do pobierania czasu), a w pętli oczekuje na wciśnięcie przycisku i tworzy "debouncing", który w rzeczywistości pozwala na łatwą reakcję na kliknięcie. Teoretycznie mogłem użyć wbudowanego systemu do obsługi kliknięc, ale zdarzało mu się podwójnie wykryć niektóre kliknięcia. Urządzenie dzięki wbudowanemu głośnikowi można również rozbudować o sygnał dźwiękowy odtwarzany po naciśnięciu dowolnego z przycisków. Dla ułatwienia również konfiguracja PlatformIO: [env:m5stack-atoms3r] platform = [email protected] board = esp32-s3-devkitc-1 framework = arduino board_build.arduino.memory_type = qio_opi build_flags = -DESP32S3 -DBOARD_HAS_PSRAM -mfix-esp32-psram-cache-issue -DCORE_DEBUG_LEVEL=5 -DARDUINO_USB_CDC_ON_BOOT=1 -DARDUINO_USB_MODE=1 lib_deps = m5stack/M5Unified @ ^0.1.12 Obudowa Obudowa została wykonana w pełni na drukarce 3D. Przyciski zostały rozdzielone na dwie części składane za pomocą imadła / prasy (taka technika pozwala na uniknięcie drukowania podpór). Dodatkowo za pomocą pracy, w odpowiednich wycięciach, są mocowane symbole D oraz H wydrukowane w innym kolorze. Użyty materiał to Fiberlogy Easy PETG (black oraz blue). Wszystkie elementy (włącznie z przewodem USB A do USB-C) zostały zamocowane wewnątrz obudowy. Moduł przycisku został przymocowany śrubami M4x12, a moduł Echo jest dociskany przez spodnią klapkę. Jedyna wada tej konstrukcji to możliwość rozłączenia przewodu USB (krótkotrwała) ze względu na dość słabą jakość gniazd USB-C w modułach Atom. Obudowa została zamknięta klapką mocowaną na 4 śruby M3x12. Pliki 3D - DateTime Keyboard.zip Prawidłowo złożony przycisk Wnętrze obudowy Filmik z działania -
M5Stack Alarm odległościowy - opinia o ekosystemie M5 Stack
H1M4W4R1 opublikował temat w Projekty - DIY (mini)
Wstęp Pozyskałem ostatnio mały zestaw do zapoznania się z ekosystemem M5 Stack (dwa moduły główne i kilka rozszerzeń) - znalazły się w nim między innymi M5Atom Echo oraz Ultrasonic-IO Unit, które wykorzystałem do testowania koncepcji alarmu, który pilnuje odległości mojej głowy od monitora. Wpis powstał we współpracy ze sklepem Botland, który jest dystrybutorem rozwiązań M5Stack. Łączenie modułów M5 Stack to czysta przyjemność Założenia Do celów testowych założyłem koncepcję: alarm działa na zasadzie pikacza w samochodzie, różni się tylko zakresem reakcji i mnożnikiem czasu między piknięciami. W projekcie wykorzystany został moduł główny M5 z wbudowanym głośnikiem oraz moduł czujnika ultradźwiękowego (przewód był w zestawie). Niestety moduły M5 Stack nie zawierają w komplecie przewodu USB-C, więc trzeba się w niego zaopatrzyć samemu. Wgrywanie oprogramowania Autorzy dostarczają oprogramowanie M5Burner, którego używamy do wgrywania wsadów na naszą kostkę. Oryginalnie Echo przychodzi z wgranym ESP32 Home Assistant, ale do naszych potrzeb wykorzystamy UIFlow2. Tutaj napotkałem dwa problemy - pierwszy (trochę wymyślony) to konieczność założenia konta, zalogowania się i przypisania urządzenia do konta... Ale to da się strawić. Drugi to straszny bałagan w liście oprogramowaniem, gdy wyszukamy UIFlow2 nie ma jednej opcji tylko są osobne wpisy dla każdego rodzaju płytki... Strasznie to nieintuicyjne, ale jak ktoś nie jest tak szybki jak ja i wybierze płytkę przed próbą wgrania niewłaściwego oprogramowania (przed tym nie ma żadnego zabezpieczenia) to raczej nie będzie miał problemów Interfejs M5 Burner Samo wgrywanie oprogramowania jest jednak dość proste - wystarczy skonfigurować kilka opcji (w tym WiFi, by móc wgrywać oprogramowanie przez OTA) czy serwery NTP (opcjonalnie) po czym użyć "Burn", przytrzymać przycisk resetu urządzenia aż mignie dioda i wybrać port pod, który podłączone jest urządzenie. Zatwierdzamy, czekamy i gotowe Wgrywanie oprogramowania na M5 Stack UI Flow2 Jak to przystało na bałaganiarzy część płytek jest kompatybilna z UIFlow, a część z UIFlow2... Na szczęście Echo jest kompatybilne z tym drugim, więc nie ma aż tak dużego problemu, aczkolwiek warto mieć to na uwadze podczas zakupów. Sama aplikacja jest przeglądarkowa, co mnie mocno zirytowało... Bo musiałem używać Chrome, gdyż Firefox nie wspiera portów szeregowych (a przynajmniej nie na moich ustawieniach bezpieczeństwa). W sumie miałem go zainstalowanego głównie z tego powodu, że lis z BLE też ma na pieńku. Dlaczego potrzebny był port szeregowy? Głównie do podglądu błędów (UIFlow2 korzysta z MicroPythona) oraz do wgrywania oprogramowania. Niestety nie wiem czy to wina mojego WiFi, które czasem ma problemy z transmisją czy jakiś problem po stronie M5, ale wgrywanie poprzez chmurę (Cloud) nie zawsze się sprawdzało. Na szczęście to alternatywne rozwiązanie istnieje. UIFlow2 jest narzędziem dla osób, które mają na bakier i z elektroniką (bo takie osoby zazwyczaj kupują produkty tytułowej firmy) i z programowaniem - jest to budowanie oprogramowania za pomocą bloczków, a prawie każdy szanujący się programista (w tym ja) woli kod, bo nie dość, że można zrobić to szybciej to jeszcze można go zoptymalizować. Coś czuję, że UIFlow2 w życiu nie da rady "uciągnąć" firmware od mojego programatora pilotów. Programowanie bloczkowe Kilka krótkich przeciągnięć myszką i kliknięć w klawiaturę i program był gotowy. Gotowy program detekcji odległości Nie będę ukrywał, miałem styczność z wieloma rodzajami programowania bloczkowego (czy to node-y czy puzzle), ale aplikacja od M5... działa całkiem dobrze. Jeżeli ktoś nie jest programistą (w sumie nawet jeżeli jest) to rozwiązanie całkiem dobrze sprawdzi się w szybkim testowaniu koncepcji. Sam program był prosty w napisaniu - zainicjować używane podzespoły, odczytać odległość, sprawdzić czy jest w zakresie (moduł Ultrasonic-IO wykrywa odległości od 20 do 4500mm) oraz odtworzyć piknięcie za pomocą wbudowanego głośnika (2kHz przez 50ms), po czym odczekać chwilę w zależności od wykrytej odległości (im bliżej tym krócej czekamy). Liczba 450mm została wybrana "na oko" i działa całkiem dobrze. Teraz chcąc dokończyć projekt wystarczy zaprojektować jakiś system montażu na górze monitora, ale to już temat na jakiś wolny weekend. Podsumowanie W mojej skromnej opinii moduły M5 są bardzo dobre do prototypowania (w szczególności, że można ich też używać w Arduino IDE i PlatformIO i nie trzeba szukać pinoutu, gdyż wszystko jest oznaczone na tyle kostki). Takie moduły (jak producent wspomina) najlepiej sprawdzą się w rękach początkujących, którzy nie chcą mieć problemów z uciążliwymi płytkami stykowymi. Również małe firmy szybciej poskładają produkt z gotowych modułów i zamkną go w obudowie niż będą męczyć się z projektowaniem autorskiej płytki drukowanej, testowaniem i całym arsenałem testów. Przy 5-10 produktach sprzedanych w ciągu miesiąca nie ma sensu się przemęczać. Kończąc ten przydługi wywód - jeżeli chcesz nauczyć się elektroniki lub zbudować MVP produktowe możesz śmiało korzystać z modułów M5 Stack. -
- poniżej interfejs do odczytu parametrów stacji Xiaomi z odczytem wilgotności i temperatury oraz stanu baterii zasilającej. - stacja Xiaomi pracuje na BLE 4.0, z M5Stack Core 0 zapewnia zasięg około 8 - 10 metrów. - w M5Stack wbudowano screen capture oraz shutdown. - aby korzystać z czujników, należy adres MAC jednego z czujników wpisać do linii [516] programu i skompilować cały projekt. - załączono także pliki binarne oraz adres programu do wgrywania do flasha esp32. Xiaomi_M5Stack_core_4.zip
-
- 5
-
-
- Xiaomi
- Screen Capture
-
(i 1 więcej)
Tagi:
-
- za ciepło na budowę skomplikowanych projektów. - Rozbudowa interfejsu OBDII do eNiro MY2020 bazującego na M5Stack-core o możliwość nagrywania ekranu LCD na kartę SD podczas jazdy to w sam raz. - Program Screen-Capture używałem już wcześniej dla zrzutów ekranu w samochodzie Gullietta na tym samym interfejsie BT. - Program autora screen-capture można znależć pod tym linkiem https://github.com/electricidea/M5Stack-Screen-Capture. - interfejs OBDII bazuje na Vgate iCAR Pro BT 4.0. - poniżej kilka zrzutów z uruchomienia na stole.
