Spisu treści:

Najlepszy zegarek binarny: 12 kroków (ze zdjęciami)
Najlepszy zegarek binarny: 12 kroków (ze zdjęciami)

Wideo: Najlepszy zegarek binarny: 12 kroków (ze zdjęciami)

Wideo: Najlepszy zegarek binarny: 12 kroków (ze zdjęciami)
Wideo: Jaki Smartwatch Warto Kupić w 2023? | Najlepszy Smartwatch do 500/1000/2000zł 🔴 2024, Listopad
Anonim
Najlepszy zegarek binarny
Najlepszy zegarek binarny
Najlepszy zegarek binarny
Najlepszy zegarek binarny
Najlepszy zegarek binarny
Najlepszy zegarek binarny

Niedawno zapoznałem się z koncepcją zegarków binarnych i zacząłem przeprowadzać badania, aby sprawdzić, czy mogę je zbudować dla siebie. Nie udało mi się jednak znaleźć istniejącego projektu, który byłby jednocześnie funkcjonalny i stylowy. Postanowiłem więc stworzyć własny projekt całkowicie od podstaw!

Kieszonkowe dzieci

Wszystkie pliki do tego projektu:

Biblioteki dla kodu Arduino można pobrać z GitHub tutaj:

Biblioteka M41T62 RTC

Biblioteka FastLED

Biblioteka LowPower

Krok 1: Pomysł

Niedawno natknąłem się na następujący film:

DIY binarny zegarek na rękę

Powyższy film przedstawia podstawowy zegarek binarny domowej roboty. Nie miałem pojęcia, że coś takiego istnieje, ale po przeprowadzeniu dalszych badań na temat zegarków binarnych szybko zdałem sobie sprawę, że istnieje mnóstwo różnych projektów! Chciałem zbudować taki dla siebie, ale nie mogłem znaleźć projektu, który by mi się podobał. Zegarki binarne, które znalazłem, nie miały wielu funkcji i nie wyglądały szczególnie dobrze. Postanowiłem więc zaprojektować własną całkowicie od podstaw!

Pierwszym krokiem było ustalenie kryteriów mojego projektu. Oto co wymyśliłem:

  • Binarny interfejs RGB
  • Wyświetlanie czasu (z bardzo dokładnym pomiarem czasu)
  • Wyświetlanie daty
  • Funkcjonalność stopera
  • Funkcjonalność alarmu
  • Żywotność baterii co najmniej 2 tygodnie
  • Ładowanie przez USB
  • Oprogramowanie łatwo konfigurowalne przez użytkownika
  • Czysty i prosty projekt

Kryteria te stały się podstawą całego projektu. Następnym krokiem było ustalenie, jak chciałem, aby zegarek działał!

Krok 2: Trochę teorii zegarków binarnych

Trochę teorii zegarków binarnych
Trochę teorii zegarków binarnych

Plan był prosty. Zegarek binarny działałby jak zwykły zegarek, z tym wyjątkiem, że interfejs byłby binarny, a konkretnie BCD (Binary Coded Decimal). BCD to rodzaj kodowania binarnego, w którym każda cyfra dziesiętna jest reprezentowana przez stałą liczbę bitów. Potrzebuję 4 bitów, aby móc reprezentować cyfrę od 0-9. A za standard

gg:mm

format czasu, potrzebuję 4 z tych cyfr. Oznacza to, że potrzebuję w sumie 16 bitów, które będą reprezentowane przez 16 diod LED.

Odczytywanie czasu w BCD jest dość łatwe, gdy się do tego przyzwyczaisz. Wiersz na dole zegarka reprezentuje najmniej znaczący bit (1), a wiersz na górze to najbardziej znaczący bit (8). Każda kolumna reprezentuje cyfrę w

gg:mm

format czasu. Jeśli dioda LED jest włączona, liczysz tę wartość. Jeśli dioda LED jest WYŁĄCZONA, ignorujesz ją.

Aby odczytać pierwszą cyfrę wystarczy zsumować wszystkie włączone diody odpowiadające wartościom w pierwszej (najbardziej od lewej) kolumnie. Zrób to samo dla pozostałych cyfr od lewej do prawej. Przeczytałeś teraz czas w BCD!

Ta zasada będzie taka sama dla pozostałych funkcji zegarka. Zastosowanie diod RGB pomoże rozróżnić różne funkcje i tryby przy użyciu różnych kolorów. Kolory są wybierane przez użytkownika i można je łatwo dostosować do preferowanej przez siebie palety kolorów. Pozwala to użytkownikowi na łatwe poruszanie się po funkcjach bez pomyłki.

Kolejnym krokiem było stworzenie schematu blokowego!

Krok 3: Dotarcie do pracy

Zbierać się do pracy
Zbierać się do pracy

Jak każdy typowy projekt elektroniczny, schemat blokowy jest istotną częścią na wczesnym etapie projektowania. Korzystając z kryteriów, udało mi się złożyć powyższy schemat blokowy. Każdy blok na schemacie reprezentuje funkcję w obwodzie, a strzałki pokazują związek funkcji. Schemat blokowy w całości daje dobry przegląd sposobu działania obwodu.

Kolejnym krokiem było rozpoczęcie podejmowania decyzji dotyczących poszczególnych komponentów dla każdego bloku na schemacie blokowym!

Krok 4: Wybór komponentów

Okazało się, że podzespołów w tym obwodzie jest całkiem sporo. Poniżej wybrałem niektóre z najważniejszych wraz z wyjaśnieniem, dlaczego je wybrałem.

Diody LED

W przypadku interfejsu binarnego wybór był dość prosty. Wiedziałem, że chcę użyć diod LED do wyświetlania i stwierdziłem, że potrzebuję 16 z nich (w siatce 4×4), aby wyświetlić jak najwięcej informacji. Podczas moich poszukiwań idealnej diody LED APA102 ciągle się pojawiał. Jest to bardzo mała (2mm x 2mm) adresowalna dioda LED o szerokiej gamie kolorów i jest dość niedroga. Mimo że nigdy wcześniej z nimi nie pracowałem, wydawały się idealnie pasować do tego projektu, więc postanowiłem je wykorzystać.

Mikrokontroler

Wybór mikrokontrolera również był dość prosty. Mam duże doświadczenie w używaniu Atmega328P-AU w samodzielnych aplikacjach i bardzo dobrze znałem jego funkcje. To ten sam mikrokontroler, który jest używany w płytkach Arduino Nano. Zdaję sobie sprawę, że prawdopodobnie istnieje tańszy mikrokontroler, którego mogłem użyć, ale świadomość, że Atmega328 będzie miała pełne wsparcie dla wszystkich bibliotek Arduino, była dużym czynnikiem przy wyborze go do tego projektu.

RTC (zegar czasu rzeczywistego)

Podstawowym wymogiem dla RTC była dokładność. Wiedziałem, że zegarek nie będzie miał żadnego połączenia z Internetem, a tym samym nie będzie mógł się ponownie skalibrować za pośrednictwem połączenia internetowego, użytkownik będzie musiał ponownie skalibrować go ręcznie. Dlatego chciałem, aby pomiar czasu był jak najdokładniejszy. RTC M41T62 ma jedną z najwyższych dokładności, jakie udało mi się znaleźć (±2ppm, co odpowiada ±5 sekundom na miesiąc). Połączenie wysokiej dokładności z kompatybilnością I2C i bardzo niskim poborem prądu sprawiło, że ten RTC był dobrym wyborem dla tego projektu.

Konwerter doładowania DC-DC

Wyboru IC konwertera doładowania DC-DC dokonano po prostu patrząc na obwód i ustalając, jakie napięcia i prądy są wymagane. Uruchomienie układu na niskim napięciu zmniejszyłoby pobór prądu, ale nie mógłbym zejść poniżej 4,5V (minimalne napięcie mikrokontrolera przy zegarze 16MHz) i nie mógłbym zejść powyżej 4,5V (maksymalne napięcie zegara RTC). Oznaczało to, że musiałem uruchomić obwód dokładnie pod napięciem 4,5 V, aby działały komponenty zgodnie z zalecanymi specyfikacjami. Obliczyłem, że maksymalny prąd obwodu nie przekroczy 250mA. Zacząłem więc szukać konwertera doładowania, który mógłby spełnić wymagania i szybko natknąłem się na TPS61220. TPS61220 wymagał minimalnych komponentów zewnętrznych, był dość niedrogi i był w stanie spełnić wymagania dotyczące prądu i napięcia.

Bateria

Podstawowym wymogiem dla baterii był rozmiar. Bateria musiała być na tyle mała, aby zmieściła się w obudowie zegarka, nie sprawiając, że wygląda na nieporęczną. Doszedłem do wniosku, że bateria nie może przekraczać 20mm × 35mm × 10mm. Przy tych ograniczeniach wielkości i obecnych wymaganiach 250mA mój wybór akumulatorów ograniczał się do akumulatorów LiPo. Znalazłem na Hobbyking akumulator "Turnigy nano-tech 300mAh 1S", którego postanowiłem użyć.

Układ ładowania IC

Nie było szczególnych wymagań dotyczących kontrolera ładowania, z wyjątkiem tego, że musiał być kompatybilny z akumulatorem 1S LiPo. Znalazłem MCP73831T, który jest w pełni zintegrowanym kontrolerem ładowania przeznaczonym do zastosowań związanych z ładowaniem pojedynczych ogniw. Jedną z jego cech jest możliwość regulacji prądu ładowania za pomocą zewnętrznego rezystora, co w tej aplikacji uznałem za przydatne.

Ochrona przed LiPo

Chciałem uwzględnić monitorowanie napięcia i prądu, aby chronić akumulator przed wszelkimi niebezpiecznymi warunkami przeładowania i nadmiernego rozładowania. Istniała ograniczona liczba układów scalonych, które zapewniały takie funkcje, a jedną z tańszych opcji był układ scalony BQ29700. Wymagał minimalnej ilości komponentów zewnętrznych i zawierał wszystkie niezbędne zabezpieczenia dla jednoogniwowego akumulatora LiPo.

Teraz, gdy komponenty zostały wybrane, nadszedł czas na stworzenie schematu!

Krok 5: Schemat

Schemat
Schemat

Korzystając z Altium Designer, udało mi się złożyć powyższy schemat, korzystając z zaleceń z każdego arkusza danych komponentu. Schemat został podzielony na różne bloki, aby był bardziej czytelny. Dodałem też kilka notatek z ważnymi informacjami na wypadek, gdyby ktoś inny chciał odtworzyć ten projekt.

Następnym krokiem było rozłożenie schematu na płytce drukowanej!

Krok 6: Układ PCB

Układ PCB
Układ PCB
Układ PCB
Układ PCB
Układ PCB
Układ PCB
Układ PCB
Układ PCB

Najtrudniejszą częścią tego projektu okazał się układ PCB. Zdecydowałem się na użycie dwuwarstwowej płytki drukowanej, aby ograniczyć koszty produkcji płytki do minimum. Zdecydowałem się użyć standardowego zegarka o rozmiarze 36 mm, ponieważ wydawało się, że całkiem dobrze pasuje do diod LED. Dodałem kilka otworów na śruby o średnicy 1 mm, aby zabezpieczyć płytkę drukowaną w obudowie zegarka. Celem było utrzymanie czystego i dobrze wyglądającego projektu poprzez umieszczenie wszystkich komponentów (oczywiście z wyjątkiem diod LED) na dolnej warstwie. Chciałem również użyć absolutnie minimalnej liczby przelotek, aby uniknąć widocznych przelotek na górnej warstwie. Oznaczało to, że musiałem poprowadzić wszystkie ślady na jednej warstwie, jednocześnie upewniając się, że „zaszumione” części obwodu są z dala od wrażliwych śladów sygnału. Upewniłem się również, że wszystkie ścieżki są jak najkrótsze, umieszczając kondensatory bocznikujące blisko obciążenia, używając grubszych ścieżek dla komponentów o dużej mocy, a poza tym przestrzegając wszystkich powszechnych dobrych praktyk projektowania PCB. Trasowanie zajęło trochę czasu, ale myślę, że wyszło bardzo dobrze.

Kolejnym krokiem było stworzenie modelu 3D obudowy zegarka!

Krok 7: Projektowanie 3D

Projektowanie 3D
Projektowanie 3D
Projektowanie 3D
Projektowanie 3D
Projektowanie 3D
Projektowanie 3D

Obudowa zegarka została zaprojektowana według bardzo konwencjonalnego, klasycznego projektu zegarka przy użyciu Fusion 360. Użyłem standardowego odstępu 18 mm dla paska zegarka, aby zegarek był kompatybilny z wieloma innymi paskami. Wycięcie na płytkę PCB zaprojektowano o 0,4 mm większe niż sama płytka PCB, aby uwzględnić wszelkie niedokładności produkcyjne. Dołączyłem kilka słupków śrubowych do montażu płytki drukowanej i małą krawędź do układania płytki drukowanej. Upewniłem się, że płytka PCB została zagłębiona o kilka milimetrów od góry, aby uniknąć przyklejania się ostrych krawędzi diod LED do ubrania. Wysokość obudowy determinowała wyłącznie grubość baterii. Reszta obudowy została zaprojektowana tak, aby po prostu dobrze wyglądać z zaokrąglonymi krawędziami i wypolerowanymi narożnikami. Musiałem zadbać o to, aby projekt był przyjazny dla druku 3D, aby móc go wydrukować w domu bez żadnych materiałów pomocniczych.

Teraz, gdy sprzęt był gotowy, nadszedł czas na rozpoczęcie pracy nad oprogramowaniem!

Krok 8: Kodeks

Kod
Kod

Zacząłem kod od włączenia wszystkich niezbędnych bibliotek. Obejmuje to bibliotekę do komunikacji z RTC i do sterowania diodami LED. Następnie stworzyłem osobne funkcje dla każdego z trybów. Gdy użytkownik przełącza tryby przez naciśnięcie przycisku, program wywołuje funkcję odpowiadającą temu trybowi. Jeśli użytkownik nie naciśnie przycisku w określonym czasie, zegarek przechodzi w stan uśpienia.

Tryb uśpienia jest sygnalizowany przez zgaśnięcie wszystkich diod LED, aż do całkowitego zgaszenia. Korzystanie z trybu uśpienia znacznie wydłuża żywotność baterii i sprawia, że diody LED są wyłączone, gdy nie są używane. Użytkownik może wybudzić zegarek, naciskając górny przycisk. Po przebudzeniu zegarek sprawdzi poziom naładowania baterii, aby upewnić się, że nie wymaga ładowania. Jeśli wymagane jest ładowanie, diody LED zamigają kilka razy na czerwono przed wyświetleniem czasu. Jeśli poziom naładowania baterii spadnie poniżej krytycznego poziomu, w ogóle się nie włączy.

Resztę czasu poświęcono na programowanie, aby inne tryby były tak intuicyjne, jak to tylko możliwe. Pomyślałem, że posiadanie tego samego przycisku odpowiedzialnego za tę samą funkcjonalność we wszystkich trybach byłoby najbardziej intuicyjne. Po kilku testach jest to konfiguracja przycisków, którą wymyśliłem:

  • Naciśnięcie górnego przycisku: wybudzanie / przełączanie między trybami „Wyświetlanie czasu”, „Wyświetlanie daty”, „Stoper” i „Alarm”.
  • Przytrzymanie górnego przycisku: Wejdź w tryb „Ustaw czas”, „Ustaw datę”, „Uruchom stoper” lub „Ustaw alarm”.
  • Naciśnięcie dolnego przycisku: Zwiększ jasność.
  • Przytrzymanie dolnego przycisku: Wejdź w tryb „Wybierz kolor”.

Dolny przycisk jest zawsze odpowiedzialny za regulację jasności i kolorów, niezależnie od tego, w jakim trybie się znajdujesz. Gdy użytkownik wejdzie w tryb „Wybierz kolor”, diody LED zaczną przełączać się między wszystkimi możliwymi kolorami RGB. Użytkownik może wstrzymać animację i wybrać preferowany kolor dla danego trybu (wyświetlanie czasu na czerwono, wyświetlanie daty na niebiesko itp.). Kolory mają być łatwo dostosowywane przez użytkownika, aby pomóc mu rozróżnić różne tryby.

Skoro kod został ukończony, nadszedł czas, aby wgrać go do mikrokontrolera!

Krok 9: Programowanie

Programowanie
Programowanie

Już prawie czas na lutowanie i montaż, ale wcześniej musiałem zaprogramować mikrokontroler. Śledziłem ten samouczek

Wypal bootloader na ATmega328P-AU SMD

o tym, jak wypalić bootloader i zaprogramować mikrokontroler za pomocą zwykłego Arduino Uno jako programatora.

Pierwszym krokiem było przekształcenie Arduino Uno w dostawcę usług internetowych poprzez przesłanie przykładowego kodu „ArduinoISP”. Użyłem płytki stykowej wraz z gniazdem programistycznym i podłączyłem schemat z samouczka. Następnie udało mi się nagrać bootloader do mikrokontrolera, naciskając po prostu "Burn Bootloader" w Arduino IDE.

Gdy mikrokontroler miał bootloader, po prostu usunąłem istniejący mikrokontroler z Arduino Uno i użyłem płytki Arduino Uno jako adaptera USB na szeregowy, aby wgrać kod do mikrokontrolera w gnieździe do programowania. Po zakończeniu wgrywania mogłem rozpocząć proces lutowania.

Kolejnym krokiem było zebranie wszystkich komponentów i zlutowanie ich razem!

Krok 10: Lutowanie

Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie
Lutowanie

Proces lutowania został podzielony na dwie części. Najpierw trzeba było przylutować dolną warstwę, a potem górną.

Zabezpieczyłem płytkę zegarka między kilkoma płytkami prototypowymi za pomocą taśmy. Zapewniło to, że płytka PCB nie przesunęła się podczas lutowania, co jest bardzo ważne. Następnie umieściłem szablon lutowniczy na płytce drukowanej i użyłem dużej ilości pasty lutowniczej, aby pokryć wszystkie pola lutownicze. Zacząłem używać cienkiej pęsety, aby umieścić wszystkie elementy na odpowiednich podkładkach. Następnie użyłem opalarki do lutowania rozpływowego wszystkich komponentów na miejscu.

Kiedy dolna warstwa została przylutowana, poddałem ją szybkiemu oględzinom, aby upewnić się, że lutowanie się powiodło. Następnie odwróciłem płytkę i powtórzyłem proces lutowania po drugiej stronie, tym razem ze wszystkimi diodami LED. Bardzo ważne było, aby nie przegrzać płytki podczas lutowania górnej warstwy, ponieważ wszystkie elementy na spodzie są zagrożone odpadnięciem. Na szczęście wszystkie elementy pozostały na miejscu, a po przylutowaniu przycisków zwykłą lutownicą, płytka PCB była gotowa!

Nadszedł czas na ostateczny montaż!

Krok 11: Montaż

montaż
montaż

Montaż był bardzo prosty. Podłączyłem baterię do PCB i umieściłem baterię i PCB wewnątrz drukowanej obudowy 3D. Zacząłem wkręcać cztery śruby w otwory montażowe w każdym rogu płytki PCB. Następnie przymocowałem paski do zegarków za pomocą sprężynowych prętów 18 mm i zegarek był kompletny!

Krok 12: Wnioski i ulepszenia

Wnioski i ulepszenia
Wnioski i ulepszenia
Wnioski i ulepszenia
Wnioski i ulepszenia

Zegarek działa zgodnie z oczekiwaniami i jestem bardzo zadowolony z tego, jak się okazało. Do tej pory nie miałem z nim żadnych problemów, a bateria pozostaje prawie w pełni naładowana po całym tygodniu użytkowania.

Być może w przyszłości dodam do zegarka inne funkcje. Ponieważ port USB jest podłączony do mikrokontrolera, oprogramowanie układowe można w każdej chwili zaktualizować o nowe funkcje. Na razie jednak będę nadal korzystał z tej wersji zegarka i zobaczę, jak wytrzyma po dłuższym użytkowaniu.

Jeśli masz jakieś przemyślenia, komentarze lub pytania dotyczące tego projektu, zostaw je poniżej. Możesz również wysłać je na adres [email protected].

Konkurs na zegary
Konkurs na zegary
Konkurs na zegary
Konkurs na zegary

I nagroda w Konkursie Zegarów

Zalecana: