Spisu treści:

NeoClock: 7 kroków (ze zdjęciami)
NeoClock: 7 kroków (ze zdjęciami)

Wideo: NeoClock: 7 kroków (ze zdjęciami)

Wideo: NeoClock: 7 kroków (ze zdjęciami)
Wideo: Samsung GEAR 2 Rozpakowanie Unboxing | ForumWiedzy 2024, Czerwiec
Anonim
Image
Image

Chodzi o zbudowanie zegara z fantastycznych pierścieni neopikselowych od Adafruit. Zabawną rzeczą w tym zegarze jest to, że w rzeczywistości ma dwa pierścienie neopikseli, jeden do wskazywania godzin, a drugi do minut, sekund i milisekund. Zegar pokazuje idealny czas dzięki chipowi DS3234 DeadOn Real Time Clock firmy Sparkfun. Łatwy w budowie i przyjemny w modyfikacji. Mam nadzieję, że zainspiruje innych do budowy zegarów lub innej sztuki z wykorzystaniem pierścieni neopikselowych.

Dla tych z Was, którzy chcą uzyskać wszystkie moje pliki w prostym do zarządzania formacie, zachęcam do pobrania ich z mojego repozytorium github dla tego projektu pod adresem

Krok 1: Projektowanie zegara

Projektowanie zegara
Projektowanie zegara
Projektowanie zegara
Projektowanie zegara
Projektowanie zegara
Projektowanie zegara
Projektowanie zegara
Projektowanie zegara

Od początku wiedziałem, że chcę użyć co najmniej dwóch pierścieni neopikseli. Po kilku pracach zdecydowałem, że najlepszym rozwiązaniem będzie umieszczenie jednego pierścienia w drugim, zachowując oryginalną formę zegara. Mniejszy pierścień to godziny, a pozostały czas będzie trzymany na większym pierścieniu. Niektóre względy projektowe obejmowały koszt neopikseli, zapotrzebowanie na moc, rozmiar wycinanych laserowo elementów i rodzaj grafiki, którą chciałem na nich umieścić.

Po wykonaniu tego kroku zdecydowałem, że muszę zrozumieć elektronikę przed stworzeniem planów laserowego cięcia korpusu zegara.

Krok 2: Projektowanie elektroniki

Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki
Projektowanie elektroniki

Projektowanie elektroniki sprowadzało się do wcześniejszego poznania elementów, które chciałem mieć w zegarze:

  • Pierścienie neopikselowe (60 zliczeń i 24 zliczenia)
  • Arduino (mózgi)
  • Regulacja zegara (arduino nie trzymają dobrego czasu)
  • Zarządzanie energią

Wymagania dotyczące rozmiaru i mocy neopikseli są dobrze udokumentowane. Ponieważ działają na 5 V DC, zdecydowałem się na Arduino 5 V i ułatwienie sobie pracy. Biorąc pod uwagę przestrzeń, postanowiłem wykonać prototyp na zwykłym Arduino Uno, ale do końcowej elektroniki wybrałem Arduino Mini.

Pierwsza iteracja tego projektu pochodzi bezpośrednio ze strony Adafruit NeoPixel Basic Connections. Dla ułatwienia dołączyłem schemat ze strony internetowej. Ważne są z tego dwie rzeczy:

  1. Potrzebny jest kondensator 1000uF, aby zapobiec uszkodzeniu pikseli przez początkowy wstrząs prądu.
  2. Na pierwszym pikselu pierścienia 60 zliczeń potrzebny jest rezystor 470 omów (rezystor ten jest wbudowany w pierścień 24 zliczeń)

Adafruit ma również zestaw najlepszych praktyk NeoPixel, które należy przeczytać przed kontynuowaniem projektu.

Kolejnym problemem jest trzymanie czasu na zegarze. Wbudowany zegar w arduino nie wystarcza, aby utrzymać dobry czas przez długi czas. Gorszy problem polega na tym, że czas na arduino może wymagać każdorazowego resetowania. Komputery rozwiązują ten problem, używając małej baterii w układzie zegara, aby zachować czas między przerwami w zasilaniu. Dawniej używałbym czegoś takiego jak ChronoDot od Adafruit. Ale w tym przypadku chciałem mieć pretekst do użycia DS3234 (DeadOn RTC) od SparkFun. Możesz również przechowywać informacje o dacie w DeadOn RTC, jeśli chcesz zintegrować je z zegarem.

Wreszcie, zarządzanie energią wymagało rozważenia. Wiedziałem, że wszystko musi być 5V, ale ilość potrzebnego prądu wydawała się tajemnicą. Powszechnym regulatorem napięcia w większości projektów jest L7805. Będzie to pobierało napięcia do 24 V i maksymalny prąd do 1,5 A. Wiedziałem, że mam brzeczkę ścienną 12 V 1,5 A, więc zdecydowałem, że będzie to idealny (i tani!) regulator napięcia dla tego projektu.

Pozostałe elementy miały pochodzić z mojego pudełka z częściami lub Radio Shack. Obejmowały one przewody, przełączniki i gniazdo zasilania DC.

Krok 3: Budowanie elektroniki

Budowanie elektroniki
Budowanie elektroniki
Budowanie elektroniki
Budowanie elektroniki
Budowanie elektroniki
Budowanie elektroniki

Pełną listę elektroniki, którą kupiłem do zbudowania tego projektu, można znaleźć w moim repozytorium github tutaj: Lista części elektronicznych. Zawiera linki do strony produktu dla każdego elementu i zawiera dodatkowe informacje, w tym kod SKU produktu. Szybko wykonałem prototyp na płytce prototypowej i przeszedłem do cięcia laserowego i budowania przed zrobieniem jakichkolwiek zdjęć. Jednak zbudowałem go, aby był łatwy do rozebrania, więc podzieliłem dla ciebie elementy na powyższych zdjęciach.

Przyjrzyj się uważnie obrazom, ponieważ przewody zostały celowo wygięte w taki sposób, aby były łatwe do śledzenia i aby cały profil elektroniki był cienki. Wykonanie tego wstępnego prototypowania przed projektowaniem cięcia laserowego pozwoliło mi sprawdzić grubość części, aby móc określić ostateczne wymiary korpusu zegara.

Zauważysz, że zrobiłem kilka niestandardowych płyt prototypowych. Próbowałem sfotografować tyły tych desek, abyście mogli je powtórzyć. Możesz kupić asortyment takich płyt do krojenia chleba za kilka dolców i dopasować je do swojego projektu.

Okablowanie jest proste, ale ważne rzeczy do zapamiętania ze zdjęć to:

  • Przełączniki Mode i Set będą wymagały rezystorów obniżających. Użyłem rezystorów 2,21 Ohm, które leżałem, ale każdy mały rezystor będzie działał (najlepiej nie mniej niż 1 kOhm). To stabilizuje podłączone piny wejściowe Arduino, dzięki czemu gdy pójdą wysoko, można je odróżnić od szumu.
  • Fala prostokątna (SQW) w DS3234 została uziemiona, ponieważ nie jest używana.
  • Zasilanie z L7805 wprowadzane jest do Arduino Mini w pinie RAW. Zawsze umieszczaj moc dostarczaną do Arduino w RAW.
  • Pierwszy piksel 60 neopikselowego pierścienia ma rezystor 470 omów, który zmniejsza wszelkie uszkodzenia pierwszego piksela spowodowane skokami danych. Nie powinno to stanowić problemu, ponieważ 24-krotny neopiksel ma już wbudowany rezystor, ale lepiej dmuchać na zimne.
  • Przełączniki trybu i ustawienia są chwilowymi przełącznikami przyciskowymi SPST

Kolory przewodów to:

  • Czerwony: +5VDC
  • Czarny: ziemia
  • Zielony: dane
  • Żółty, niebieski, biały: specjalne przewody do DS3234

Jeśli po raz pierwszy używasz neopikseli, pamiętaj, że można je traktować jako długi łańcuch. Może więc wydawać się dziwne mówienie o „pierwszym pikselu” w pierścieniu, ale w rzeczywistości każdy łańcuch w pierścieniu ma początek i koniec. W tym projekcie 24 piksele małego pierścienia są na pierwszym miejscu, a 60 pikseli większego pierścienia jest później. To naprawdę oznacza, że mam łańcuch 84 neopikseli.

Do okablowania w Arduino Mini:

  • DS3234 łączy się na pinach 10 - 13
  • Przełączniki Mode i Set znajdują się na stykach 2 i 3
  • Dane neopiksela pochodzą z pinu 6.

Polecam również umieszczenie 6 nagłówków na spodzie Arduino Mini, dzięki czemu można go zaprogramować za pomocą kabla FTDI.

Ważna uwaga na temat prądu: ten zegar wymaga wiele. Jestem pewien, że mógłbym to rozgryźć, ale z mojego praktycznego doświadczenia wynika, że wszystko o wartości równej lub mniejszej niż 500 mA w końcu spowoduje zaciemnienia. Objawia się to tym, że zegar miga szalonymi kolorami i nie trzyma czasu. Moja ostatnia brzeczka ścienna to 12 V i 1,5 A i nigdy nie miałem z nią brązu. Jednak 1,5 A to granica, którą zajmie regulator napięcia (i inne części). Więc nie przekraczaj tej kwoty.

Krok 4: Kodowanie zegara

Kodowanie zegara
Kodowanie zegara

Pełny kod zegara można znaleźć w kodzie NeoClock na GitHub. Załączyłem plik tutaj, ale wszelkie zmiany zostaną wprowadzone w repozytorium.

Uważam, że pisanie kodu może być zniechęcające, jeśli spróbujesz zrobić wszystko na raz. Zamiast tego próbuję zacząć od działającego przykładu i budować funkcje tak, jak ich potrzebuję. Zanim do tego przejdę, chcę zaznaczyć, że mój kod powstał z połączenia wielu przykładów z poniższych repozytoriów i forum Arduino CC. Zawsze podawaj kredyt tam, gdzie jest to należne!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Przykładowy kod z tych repozytoriów można znaleźć w moim Katalogu przykładów kodu

Kolejność operacji, których użyłem do zbudowania kodu, wyglądała mniej więcej tak:

  • Potwierdź, że neopiksele działają z przykładem testu pasm
  • Spróbuj uruchomić zegar z kodem pętli czasu
  • Zmodyfikuj zegar, aby działał na dwóch pierścieniach zamiast na jednym
  • Dodaj DS3234, aby zachować czas za pomocą przykładu DeadOn RTC
  • Dodaj tryb i ustaw przełączniki
  • Dodaj kod Debounce z pomocą samouczka Arduion Debounce
  • Dodaj motywy kolorystyczne dla diod LED zegara
  • Dodaj animacje dla znaków 0, 15, 30 i 45 minut
  • Dodaj punkty kompasu do zegara, aby zorientować znaki 0, 15, 30 i 45 minut

Jeśli chcesz zobaczyć, jak zbudowałem ten kod, możesz użyć GitHub, aby przyjrzeć się każdemu zatwierdzeniu kodu. Historia zegara znajduje się w Historii Zatwierdzenia.

Kolorystyka fajnie się dodawała, ale ostatecznie umieściłem w menu tylko cztery z nich. Każdy motyw ustawia określony kolor na „wskazówkach” godzinowych, minutowych, sekundowych i milisekundowych. Naprawdę opcje są tutaj nieskończone, ale dodałem motywy (wymienione nazwy metod):

  • ustawKolorNiebieski
  • ustawKolorCzerwony
  • ustawKolorCyan
  • setColorPomarańczowy

Możesz jednak znaleźć te dodatkowe metody w kodzie:

  • ustawKolorPodstawowy
  • setColorRoyal
  • setColorTequila

Animacje zostały dodane, ponieważ podobał mi się pomysł starych zegarów bijących w czterech piętnastominutowych punktach na zegarze. Do tego zegara wykonałem następujące animacje:

  • 15 minut: pokoloruj pierścienie na czerwono
  • 30 minut: pokoloruj pierścienie na zielono
  • 45 minut: pokoloruj pierścienie na niebiesko
  • Początek godziny: zrób tęczę na dwóch pierścieniach

Użyteczność okazała się problemem z zegarem, ponieważ nikt nie mógł go ustawić. W końcu to tylko dwa pierścienie diod LED. Aby rozwiązać ten problem, dodałem do zegara punkty kompasu. To poprawiło zdolność do mówienia dużo czasu. Gdybym wiedział o tym przed wysłaniem po wycięte laserowo kawałki, mógłbym zamiast tego dodać coś do sztuki. Ale okazuje się, że w ciemności nie można zobaczyć sztuki tak dobrze, więc posiadanie punktów kompasu naprawdę pomaga. Jedną z kwestii związanych z tym jest to, że decydując się na pokolorowanie piksela, należy najpierw uchwycić bieżący kolor i utworzyć nowy kolor mieszany. Daje to bardziej naturalny charakter.

Ostatnia ciekawostka dotyczy milisekund. Milisekundy na Arduino schodzą z wewnętrznego kryształu Arduino, a nie z DS3234. Od Ciebie zależy, czy chcesz wyświetlać milisekundy, czy nie, ale zrobiłem tak, że zegar zawsze coś robił. Może cię wkurzać, że milisekundy i sekundy nie zawsze się zgadzają, ale w praktyce nikt nigdy mi o tym nie wspomniał, patrząc na zegar i myślę, że wygląda ładnie.

Krok 5: Projektowanie plików wycinanych laserowo

Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo
Projektowanie plików wycinanych laserowo

Projektując pliki wycinane laserowo, musiałem wziąć pod uwagę dwie kwestie. Pierwszym był materiał, z którego chciałem go zbudować, a drugim sposób, w jaki zostanie zbudowany. Wiedziałem, że chcę mieć drewniane wykończenie z akrylem, który rozprasza neopiksele. Aby rozgryźć materiał, najpierw zamówiłem kilka próbek od Ponoko:

  • 1x Fornir MDF - Orzech
  • 1x Fornir MDF - Wiśnia
  • 1x Akryl - Jasnoszary
  • 1x Akryl - Opal

Wybór drewna pozwolił mi zobaczyć, jak wyglądałaby rasteryzacja i jak wyglądałoby wypalenie z boku zegara. Akryl pozwoliłby mi przetestować dyfuzję neopikseli i porównać, jak by to wyglądało na tle drewna. W końcu zdecydowałam się na drewno wiśniowe z akrylem opalowym.

O wymiarach zegara decydowała głównie wielkość pierścieni neopikselowych. Nie wiedziałem, jaka musi być gruba, aby zmieścić elektronikę. Po zbudowaniu elektroniki i wiedząc, że drewno ma około 5,5 mm grubości, stwierdziłem, że potrzebuję około 15 mm przestrzeni wewnątrz zegara. Oznaczało to trzy warstwy drewna. Ale ponieważ przód i tył zajmują już większość miejsca w moim projekcie, musiałem rozbić te pierścienie na „żebra”, które mogłem później skleić.

Użyłem InkScape do rysowania na szablonie dostarczonym przez Ponoko. Po wyjęciu korpusu zegara zabrałem się do ręcznego rysowania drzewa. Nie mogłem zaimportować oryginalnego obrazu, który mnie zainspirował, ale nie było strasznie zastanawiać się, jak zrobić coś podobnego samemu.

Koszt materiałów wyniósł tylko około 20 dolarów, ale koszt cięcia okazał się o około 100 dolarów wyższy. Przyczyniły się do tego dwie rzeczy:

  • Krzywe i koła kosztują więcej, ponieważ maszyna porusza się w dwóch osiach, a ten projekt ma wiele krzywych
  • Rasteryzacja wymaga wielu przejść w tę i z powrotem w całym kawałku. Upuszczenie tego zaoszczędziłoby najwięcej pieniędzy, ale podobało mi się.

Po sfinalizowaniu projektu wysłałem pliki EPS do Ponoko, a moje prace były gotowe około tydzień później.

Zwróć uwagę, że w projekcie nie uwzględniłem przełączników trybu i ustawień ani gniazda zasilania prądem stałym. Kiedy to wysłałem, nadal nie zdecydowałem się na te części. Aby zapewnić sobie większą elastyczność, porzuciłem je i zdecydowałem, że później wywiercę je ręcznie.

Krok 6: Konstruowanie zegara

Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara
Konstruowanie zegara

Kiedy wszystkie elementy dotarły, skonstruowałem zegar. Pierwszym krokiem była obudowa zegara, która wymagała ode mnie wybicia żeber i przyklejenia ich z tyłu i z przodu. Nakładam dwie warstwy żeber z tyłu i jedną z przodu i nakładam je klejem do drewna. Do frontu użyłem kleju do drewna, aby poskładać razem akrylowe pierścienie i drewniane kółka. Miałem zapasowy element centralny, który wyciąłem jako blank, który przydał się podczas budowy. Przykleiłem go z tyłu kawałka drzewa, co dało mi miejsce, w którym mogłem później przykleić neopiksele.

Po zbudowaniu korpusu postanowiłem wywiercić otwory na przełączniki i gniazdo zasilania. Trochę geometrii (jak widać na zdjęciu) pomogło mi wszystko wyrównać. Używając osobnego kawałka drewna na zewnątrz, gdy wierciłem (bardzo ostrożnie!), zrobiłem otwory i wkleiłem przełączniki i gniazdo.

W następnej kolejności weszła cała elektronika. Najpierw przykleiłem neopiksele, a następnie kondensator. Podłączyłem je do płytki zaciskowej neopixel power. Następnie z tyłu położyłem przewody na przełącznikach i gnieździe zasilania. Dołączyłem również regulator napięcia L7805.

Krótka uwaga na temat orientacji pierścieni. W przypadku dużego pierścienia składającego się z 60 pikseli należy ustawić zegar tak, aby jeden z pikseli znajdował się dokładnie na górze, co oznacza zero minut. Który piksel nie ma znaczenia i za chwilę dowiem się dlaczego. W przypadku małego pierścienia 24 pikseli należy ustawić zegar tak, aby góra znajdowała się między dwoma pikselami. Powodem tego jest to, że jeśli chcesz oznaczyć 12 godzin, w końcu zapalisz dwa piksele zamiast jednego. Dzięki przesunięciu i rozproszeniu plastiku będzie się wydawać, że naprawdę masz 12 szerokich pikseli.

Jeśli chodzi o to, który piksel kod oznacza jako „górę” dla każdego pierścienia, musisz nieco edytować kod. Mam w kodzie dwie wartości o nazwach „inner_top_led” i „outer_top_led”. W moich zegarach „inner_top_led” miał 11 pikseli od początku małego pierścienia, a „outer_top_led” 36 pikseli od początku dużego pierścienia. Jeśli zdarzy ci się zorientować pierścienie inaczej, zmienisz te wartości na te z twojej orientacji. Trochę eksperymentów i dość szybko znajdziesz odpowiednią wartość.

W tym momencie sprawdziłem, że wszystko działa zgodnie z oczekiwaniami.

Ale tak jak w przypadku wszystkich projektów, napotkałem problem, ponieważ zdałem sobie sprawę, że nie wymyśliłem, jak to się trzyma. Zauważyłem, że mam około 3/8 cala odstępu między neopikselami a żebrami, więc udałem się do Home Depot i dostałem 3/8 cala kołek i kilka magnesów neodymowych. Zbudowałem małe drewniane stojaki w trzech miejscach i zeszlifowałem je, aby móc umieścić dwa magnesy na każdym stojaku (przy użyciu super kleju). Skończyło się na 3 parach po 2 stojaki każda. Następnie przykleiłem je do ramy i przytrzymałem zaciskiem. Zrobiłem to, gdy klej na stojakach był mokry, aby wszystko się wyrównało, a następnie wyschło we właściwym miejscu. Udało się to idealnie i uwielbiam to, że wszystko jest ukryte.

Wreszcie doszedłem do wniosku, że muszę powiesić go na ścianie, więc wywierciłem mały hangar z tyłu, aby móc go powiesić na ścianie.

Krok 7: Końcowe myśli

Budowanie tego projektu było świetną zabawą i podobało mi się poznawanie neopikseli i DS3234. Szczególnie podobało mi się tworzenie projektu, który ładnie wyglądał od początku do końca. Jest kilka rzeczy, które chciałbym zaktualizować, gdybym zrobił to ponownie, ale są one drobne:

  • Dla uproszczenia wybrałem dwa przyciski zamiast trzech. Ale posiadanie przycisku, który pozwalałby mi zejść, a także w górę, byłoby miłe do ustawienia zegara
  • Przycisk trybu i przycisk ustawiania są nie do odróżnienia. Często je mieszam. Być może w przyszłości umieściłbym je po przeciwnych stronach.
  • Nigdy nie ukończyłem frontu drewnianego. Na początku podobał mi się surowy wygląd, a później martwiłem się, że jeśli zepsuję wykończenie, naprawa będzie kosztować dużo.
  • Rasteryzacja drzewa była w porządku, ale być może w przyszłości narysowałem więcej szczegółów dla drzewa.
  • Przyciemnianie zegara byłoby również fajną funkcją, ponieważ jest dość jasny w ciemności. Jednak ściemnianie jest związane z kolorem i ustalenie, że bit trwał zbyt długo, więc go upuściłem. Prawdopodobnie zainwestowałbym ponownie w tę funkcję w przyszłości.

Dzięki za przeczytanie tej instrukcji. Mam nadzieję, że stworzysz własny projekt zegara lub neopiksela i podzielisz się nim ze mną. Szczęśliwego budowania!

Zalecana: