Popularny post cziter15 Napisano Marzec 4, 2024 Popularny post Udostępnij Napisano Marzec 4, 2024 (edytowany) Słowo wstępu Jeśli chodzi o tworzenie własnych PCB, zawsze (oprócz zapachu lutownicy) w powietrzu zawsze wisi trochę magii... Eksplozja kreatywności kończy się urządzeniem, które będzie służyć do rozwiązania konkretnego problemu i ułatwi życie. W naszym starym mieszkaniu miałem gniazdka elektryczne sterowane za pomocą radiowej częstotliwości 433MHz, kontrolowane przez ESP8266. Jednak teraz, gdy zbliżamy się do kolejnych kamieni milowych w naszej wspólnej drodze z moją wspaniałą żoną, w mojej głowie zrodziła się pewna idea i postawiłem sobie wyzwanie, aby zbudować własną Bramkę Zigbee. Chciałbym mieć pełną kontrolę nad urządzeniami, kontrolę nad przepływem między Zigbee a internetem oraz powiadomienia głosowe w jednym urządzeniu. Szczegóły techniczne Pierwszy krok, znany również jako MVP, polegał na stworzeniu urządzenia, które działa jako proxy Ser2Net (zdalny port szeregowy) i potrafi obsługiwać wbudowaną integrację ZHA w Home Assistant poprzez protokół EZSP. Urządzenie miało docelowo również obsługiwać powiadomienia dźwiękowe i posiadać wbudowany czujnik temperatury. Wszystkie kroki zakończyły się powodzeniem. Design funkcjonalny opiera się o następujące układy: ESP32S3 - główny procesor aplikacyjny ze wsparciem USB oraz WiFi. EFR32MG1 (w postaci modułu Ebyte E-180) - Zigbee Network Co-processor (NCP). MAX98357A - Wzmacniacz i kodek audio I2S. Ponadto na płytce zamontowane są: filtr wejściowy zasilania oparty na dławiku ferrytowym w konfiguracji LC, celem filtracji ewentualnych sygnałów RF. układ ograniczający prąd do 1A (~1.5A peak), dodatkowo działający jako soft-start (zapobiega tzw. inrush current, co w przypadku USB jest ważne). regulator napięcia 3.3V (low noise, ultra-low dropout). Software oparty jest o ksIotFrameworkLib a aplikacja składa się z kilku komponentów: AudioPlay - komponent odpowiedzialny za obsługę audio, w tym sterowanie częstotliwością CPU (dekodowanie wymaga 240MHz a bazowo jest 80MHz). Ser2Net - komponent pośredniczacy w komunikacji między HomeAssistant a procesorem sieci Zigbee. TempSensor - komponent odpowiedzialny za pomiary temperatury. Funkcjonalności takie jak zarządzanie połączeniem WiFi, komunikacja MQTT czy konfiguracja parametrów są dostarczane poprzez framework. Galeria multimediów Linki: Strona projektu na hackaday.io Edytowano Marzec 4, 2024 przez cziter15 5
Treker (Damian Szymański) Marzec 5, 2024 Udostępnij Marzec 5, 2024 @cziter15 dzięki za opis ciekawego DIY
roz Marzec 7, 2024 Udostępnij Marzec 7, 2024 Dlaczego jedna ścieżka od ESP32 w stronę złącza USB jest falowana?
Popularny post cziter15 Marzec 7, 2024 Autor tematu Popularny post Udostępnij Marzec 7, 2024 (edytowany) Ta treść została wynagrodzona przez moderatora! cziter15 otrzymał odznakę: "Za udzielenie wzorowej odpowiedzi" Dobre oko, @roz. USB jest interfejsem prowadzonym jako para różnicowa wraz z dopasowaniem impedancji. Ścieżki prowadzone meandrami (falowanie) stosuje się by dopasować długość jednej ścieżki pary do drugiej. W tym konkretnym przypadku nie jest to krytyczne a raczej wykonane jako dobra praktyka. Odpowiadając na pytanie - ścieżka jest falowana, by zrównać długości obu ścieżek pary. Przy szybkich interfejsach chodzi o dopasowanie czasu propagacji. Przy parach różnicowych chcemy dopasować sygnał różnicowy (- oraz +) ze sobą w czasie. To czego nie widać na zdjęciach to plan masy pod ścieżkami, gwarantujący dopasowanie impedancyjne dla interfejsu USB. Edytowano Marzec 7, 2024 przez cziter15 3 1
roz Marzec 7, 2024 Udostępnij Marzec 7, 2024 @cziter15 dziękuję za wyjaśnienie. Rozumiem, że program sam wylicza to falowanie w czasie rysowania ścieżki? Czy dla i2c jest to również istotne, te meandry?
Popularny post cziter15 Marzec 7, 2024 Autor tematu Popularny post Udostępnij Marzec 7, 2024 (edytowany) @roz są różne programy, niektóre mają i symulację takich par jeśli chodzi o zjawiska fizyczne. Te hobbystyczne, z których korzystam mają mniej spektakularne funkcjonalności, jednak nadal pozwalają zaprojektować urządzenie. To co jest postawą, to walidacja reguł podczas prowadzenia ścieżek. Program na bieżąco sprawdza, czy mieścimy się w zadanej tolerancji. Tolerancja zwykle wynosi 5-10%, jednak możemy ją edytować. Jeśli chodzi o fizykę, są specjalne kalkulatory typu Saturn PCB Toolkit. Ponadto fabryki zajmujące się produkcją płytek udostępniają swoje kalkulatory dla swoich "stackupów" (pod swoje parametry rozłożenia warstw). Tutaj zrzut ekranu z prowadzenia pary różnicowej w EasyEDA. Widać idealne dopasowanie długości (sam środek "match the rule"). Jeśli chodzi o I2C, to nie jest to interfejs różnicowy, więc odpada kwestia rygorystycznego dopasowania pod tą właściwość. Ten interfejs jest na tyle wolny, że spokojnie wystarczy czasu na propagację sygnału, zanim kolejny bit będzie samplowany. Oczywiście powyższe nie oznacza, że zaraz mamy ciągnąć z uporem ścieżki I2C jak najdalej od siebie. Czasy narastania zboczy mogą być krótsze niż minimum do skutecznej transmisji a to może rodzić odbicia sygnału / emisje. Warto mieć to na uwadze przy prowadzeniu dłuższych ścieżek. Generalnie to temat rzeka. PS. Projektując I2C warto mieć na uwadze rezystory podciągające. Edytowano Marzec 7, 2024 przez cziter15 3 2
cziter15 Styczeń 23, 2025 Autor tematu Udostępnij Styczeń 23, 2025 Ostatnio zaszło parę zmian w projekcie, szerzej opisuję raczej na hackadayu, niż tutaj. Niemniej najważniejsze warte odnotowania to: znaczne usprawnienie firmware i jego stabilizacja, poprawki w TTS i nie tylko zmiany dot. wylewki masy, dodanie kilku komponentów stabilizujących zasilanie zaprojektowanie i osadzenie urządzenia w dedykowanej obudowie 1
Pomocna odpowiedź
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ę »