1. Wstęp. Jak to zwykle bywa z takimi projektami, często powstają z potrzeby chwili. Również i u mnie pojawiła się potrzeba posiadania zegarka. Po wymianie telewizora na taki, który nie wyświetla czasu na bieżąco, stanąłem przed potrzebą zakupu zegara ściennego. Ponieważ poradniki Mirka na temat magick ledów miałem już za sobą, a ring ledy były w zakresie moich możliwości i pragnień, postanowiłem zbudować od podstaw taki oto właśnie zegar
2. Trochę o konstrukcji Na początku w planach był tylko sam ring z 60 diodami, ale pustka w środku zegarka nie dawała mi spać po nocach. W pierwszej fazie zapełniania pustki postawiłem na wyświetlacz ledowy z matryc 8x8, ale trudności z umieszczeniem takich matryc w środku obudowy skłoniły mnie do innego rozwiązania. Wygrzebałem z czeluści elektronicznego dobytku wyświetlacz OLED, przypasowałem i okazało się, że pasuje jak ulał Planowałem wykonać PCB do zegarka, ale zastosowana płytka uniwersalna pozwoliła na zgrabne złożenie całości. Przy okazji powstał schemat w Eagle, więc tę niedogodność zawsze można poprawić.
3. Nie zapominajmy o obudowie Już we wczesnej fazie projektowania sprzętu zacząłem zastanawiać się nad obudową. Na początku oczywistym stało się, że to musi być obudowa po rozwiązaniu fabrycznym, bo rzeźbienie w drewnie czy w glinie zajmuje za dużo czasu. Zegar w końcu ma to być ozdoba pokoju, a nie jakaś szkarada na ścianie .
Ostatecznie padło na zegarek wskazówkowy, kwarcowy zakupiony na portalu aukcyjny, w cenie ok 20 zł. Po wybebeszeniu niepotrzebnych gratów ze środka, podpiłowaniu tu i owdzie plastików, okazało się zakupiony zegar idealnie nadaje się do tego projektu.
W dość estetyczny sposób udało się umieścić płytkę uniwersalną z całą potrzebną elektroniką (zastosowałem gotowy klon Arduino Pro Mini oraz wyświetlacz OLED 2.42 cala ).
Fabrycznie dostarczone szkiełko zegarka przyozdobiłem folią do przyciemniania szyb, żeby nadać głębi kontrastu. Zastosowane diody RGB cechują się sporą jasnością, dlatego też w normalnym użytkowaniu jasność musi być ustawiona na wartość minimalną.
Fabryczna obudowa pozwala nam na bezpośrednie powieszenie zegarka na ścianie dzięki dedykowanej w obudowie zawieszce.
4. Teraz skromna prezentacja:
5. Jak obsługiwać to cudo? Całość zegarka, w obecnej wersji, należy obsługiwać za pomocą, zabudowanego od tyłu, enkodera, choć jak będzie można zobaczyć na zdjęciach, zegarek jest również sprzętowo przygotowany na obsługę pilota. To na razie przyszłość, ale planuję zaimplementować tryby uczenia z dowolnego pilota.
Lewo, prawo oraz magick button enkodera (short, medium, large time) pozwala na przełączanie między trybami wyświetlacza, sterowanie jasnością oraz wejściem i wyjściem z trybu ustawiania czasu.
Taki sposób sterowania to celowe założenie, zegar bowiem miał mieć cechy zegara analogowego, ustawianego za pomocą pokrętełka Planowana obsługo pilota niestety będzie wymagała dodatkowej pracy, pewnie niezbyt szybko się to uda, bo w zanadrzu mam już inne, nie mniej ciekawe (tak myślę ) projekty.
Dorzucam również szczegółowe zdjęcia dotyczące konstrukcji zegara oraz mam nadzieję, że w przyszłości cały kod, bowiem w założeniu jestem orędownikiem open hardware i open source . Sam nie mam nic do ukrycia, nie wstydzę się tego czego nauczyłem, a mam nadzieję również bardziej zaawansowani programiści również coś podpowiedzą.
Z kodem może być tylko taki problem, że ciężko będzie mi chyba wydzielić co moje, a co nie moje, ale na pewno podejmę temat.
6. Jak pracowałem nad softem? Podstawą były oczywiście książki Bluebook i Greenbook oraz poradniki Mirka: 1. Wyświetlacze Oled na SSD1306: https://www.youtube.com/watch?v=IDhnhCp61Ao
Warto nabyć wiedzę z tych filmów, żeby lepiej rozumieć działanie zegarka.
7. Z czego jestem zadowolony szczególnie: - własna biblioteka do obsługi klawiatury. Wpleciona obsługa zdarzeń i callbacków, rozwinięcie obsługi przycisków poprzez analizę czasu przyciśnięcia. - pisana od podstaw obsługa polskich znaków, skoncentrowana na kodowaniu znaków UTF-8. Dzięki temu podejściu, liczę na łatwiejszą przenośność w przyszłości kodów z Windows na inne platformy. - mocno modyfikowana obsługa WS2812, z poradników właściwie nie ruszałem tylko kodów asemblerowych, reszta to już pełna próba pisania kodu od A do Z. Od początku starałem wpleść kod oparty na strukturach. - właściwe praktycznie nie stosuję delayów, a moimi braćmi od dawna są soft timery - dzięki pracy nad takim, jakby nie było sporym, 22kB kodem, dość dogłębne zrozumienie przyswajanych zagadnień, co oczywiście nie oznacza, że już wszystko umiem, wręcz przeciwnie Większość kodu, który napisałem na pewno wymaga sporo pracy, żeby był bardziej przejrzysty i optymalny. Ważne jest to, że po kilku miesięcznej przerwie w pracy na zegarem, nie miałem większego problemu ze zrozumieniem tego co nabazgrałem PS. Z tym sporym kodem to trochę przesadziłem, większą część zajmują po prostu czcionki do wyświetlacza
8. Co należy jeszcze poprawić? - mało optymalna obsługa buforowania OLED. Brak optymalizacji rysowania pojedynczych znaków (pikseli) skutkuje dużym czasem rysowania: 35-70 ms. - dorobić trochę bajeranckich efektów wizualnych, ale to wymaga optymalizacji kodu i przemyślenia struktury projektu - dołożyć czujnik światła i odległości, żeby można było sterować "ręcznie" zegarem bez użycia pilota oraz zdejmowania zegarka ze ściany. Mam na podorędziu prawie gotową bibliotekę do obsługi takiego czujnika VCNL4010, może kiedyś go wykorzystam. - lepiej rozwiązać zasilanie zegarka - dedykowane gniazdo zasilające, najlepiej mikro usb. - dalej pracować nad kodem, zawsze jest coś co można poprawić
Miałem okazję widzieć to CUDEŃKO na żywo podczas warsztatów w Katowicach (dokładniej mówiąc w Bojszowach) .... mówię wam rewelacja!
Pomijam już sam pomysł i opracowanie ale staranność i precyzja wykonania tego wszystkiego "w środku" powala niejedną osobę na kolana ... Zresztą inne projekty tegoż autora również.
Ja ze swojej strony bardzo bardzo dziękuję za pokazanie tego projektu w naszym DIY , jest na czym oko zawiesić, o czym poczytać ... a tak w ogóle to dzięki warsztatom miałem okazję poznać osobiście wielu fajnych ludzi.
Mam nadzieję, że zaprezentowany tu pięknie projekt będzie mega inspiracją dla wielu "zarażonych" pasją elektroniki i programowania
Miałem okazję widzieć to CUDEŃKO na żywo podczas warsztatów w Katowicach (dokładniej mówiąc w Bojszowach) .... mówię wam rewelacja!
Dzięki za słowa uznania Na pewno zdopingują mnie do zamieszczania kolejnych projektów na forum.
Jaglarz napisał(a):
No piękne cacko ALE: razi mnie ta płytka uniwersalna. Gdyby była wytrawiona byłoby 100/100
Wiedziałem, że tutaj może być problem w ocenie. W rzeczywistości płytka ta lepiej wygląda niż na zdjęciach Na tyle lepiej, że brakło już motywacji do projektu PCB, dodatkowo schowana za przyciemnioną szybką jest niewidoczna.
Jak się patrzy na miliony różnych projektów zrobionych w oparciu o tego typu płytki andruino ... to przynajmniej mnie zawsze krew zalewa, bo zwykle widzi się taką płyteczkę andruino a dookoła niej dziesiątki kabli (przewodów połączeniowych) plączących się wszędzie - a wszystko zalane jest tzw "superglutem na gorąco"...
Zealota napisał(a):
W rzeczywistości płytka ta lepiej wygląda niż na zdjęciach
Potwierdzam, i żeby tak wszyscy andruinowcy robili to byłoby już bardzo dobrze. Moim zdaniem taki projekt ma o tyle walory edukacyjne, że pokazuje, jak można porządnie zmontować cały układ na takiej płytce uniwersalnej z mini modułem andruino bez tych kabli - ANTEN i dziesiątek litrów "hot glue" ... Połączenia krótkie, precyzyjnie wykonane itp
oczywiście, że w ostatecznej wersji przydałaby się powiedzmy gotowa zrobiona płytka PCB ... ale
... gdybyśmy mieli na nią czekać - to w ogóle nie zobaczylibyśmy tego projektu albo poczekalibyśmy jeszcze X czasu. A tak? ... a tak jest zrobione schludnie, precyzyjnie i może inspirować szczególnie wielu młodych andruinowców jak chodzi o samo wykonanie chociażby połączeń.
Ja również miałem okazję potrzymać ten zegarek w rękach- mówię Wam cudo!!! Zdjęcia tak naprawdę niczego nie oddają. Na żywo wygląda to przepięknie!!! Widać ten inżynierski zmysł, taką perfekcję ,dbałość o szczegóły i jeszcze ten kodzik zamieszczony na forum - super!!! Kiedy mnie uda się osiągnąć taki poziom -ech?! Gratulacje dla Ciebie Zealota i gorące pozdrowienia oczywiście!
Jakoś teraz nie mogę znaleźć dokładnie tego modelu. Na pewno jest to wyświetlacz Oled I2C 2.42 cala na sterowniku SSD1306. Więcej szczegółów obecnie nie znam, wyświetlacz kupowałem jakieś 2 lata temu na chińskim portalu aukcyjnym. Podobne wyświetlacze z przesyłką można obecnie kupić za ok 25 dolarów.
Dołączył(a): 19 cze 2014 Posty: 820 Lokalizacja: Tam gdzie PYRY są
Pomógł: 64
No panie.... To teraz mi rozwaliłeś system. Chciałbym powiedzieć piękne cacko ale to za mało dla tego projektu. Cud, miód i orzeszki...
Już sobie wyobrażam efekt na żywo, bo wiem, że nawet najlepiej wykonane zdjęcia czy film nakręcony mega dobrą kamerą nie oddadzą tego jaki efekt dają te maleństwa ws2812b. Na żywo to musi być petarda. Wiem co mówię, bo zdjęcia mojego sterownika szału nie robią a na żywo napatrzeć się na te kolory nie idzie.
Jeszcze raz dziękuję wszystkim za pozytywny odzew dotyczący projektu. Ochy, achy trochę mnie zaskoczyły, w końcu to kawałek plastiku i elektroniki No trochę więcej niż kawałek plastiku, bo sporo zaangażowania i serducha w to włożyłem. Dzięki również Mirkowi, w końcu to Jego zapał nam się udziela i powoduje, że chce się takie elaboraty pisać i przygotowywać kolejne projekty.
JarekK napisał(a):
Poziom programowania godny pozazdroszczenia.
Nie trzeba zazdrościć, wystarczy wziąć się do roboty Z mojej perspektywy ten kod to obecnie nic szczególnego, nie pisałem o tym, ale sam widzę sporo niedoróbek i jest duże pole do zmian. Przyznam się Wam również, że programowanie bardzo ciężko mi przychodzi. To są godziny, tygodnie i miesiące zmagania się z ograniczeniami, ale tym bardziej warto jeśli odzew jest tak pozytywny. Mam w zanadrzu kolejne projekty, przy których, jak myślę i mam nadzieję, magic clock to zwykła zabawka
PS Dorzucam kolejne zdjęcia, których zabrakło, żeby ostatecznie przekonać kolegę Jaglarza, że projekt PCB nie był potrzebny
Przejrzałem kod teraz przy okazji całkiem ładny aż się prosi ten timerek z while(1) wywalić i dac jakoś ładnie calbaczkiem - wtedy mamy sprawdzanie 4 eventów i wsio :p
Co prawda to prawda. Dzięki za hint. Jakoś tak zafiksowany byłem z tymi softimerami, żeby na "chama" je wrzucać
Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 1 gość
Nie możesz rozpoczynać nowych wątków Nie możesz odpowiadać w wątkach Nie możesz edytować swoich postów Nie możesz usuwać swoich postów Nie możesz dodawać załączników