Spisu treści:

Wielofunkcyjny zegar sześcienny oparty na pozycji: 5 kroków (ze zdjęciami)
Wielofunkcyjny zegar sześcienny oparty na pozycji: 5 kroków (ze zdjęciami)

Wideo: Wielofunkcyjny zegar sześcienny oparty na pozycji: 5 kroków (ze zdjęciami)

Wideo: Wielofunkcyjny zegar sześcienny oparty na pozycji: 5 kroków (ze zdjęciami)
Wideo: Wielkie i pojemne - Pickupy do 65k zł | Przegląd Ogłoszeń OTOMOTO TV 2024, Lipiec
Anonim
Image
Image
Wielofunkcyjny zegar sześcienny oparty na pozycji
Wielofunkcyjny zegar sześcienny oparty na pozycji
Wielofunkcyjny zegar sześcienny oparty na pozycji
Wielofunkcyjny zegar sześcienny oparty na pozycji

Projekty Fusion 360 »

Jest to zegar oparty na Arduino z wyświetlaczem OLED, który działa jako zegar z datą, minutnik drzemki i lampka nocna. Różne "funkcje" są sterowane przez akcelerometr i wybierane przez obracanie zegara sześciennego.

Chciałem mieć nowy zegar nocny, ale nie chciałem wydawać pieniędzy na fantazyjny zegar, który miał mnóstwo funkcji, z których bym nie korzystał. Dodatkowo zbierałem komponenty i czujniki, które właśnie leżały, więc postanowiłem użyć ich do stworzenia własnego zegara!

Miałem kilka celów do tego projektu:

  1. Wyświetlaj ten czas z opcją do wyłączenia
  2. Dołącz funkcję lampki nocnej
  3. Dołącz 15-minutowy minutnik drzemki z alarmem
  4. Być w stanie wyświetlić datę

Kieszonkowe dzieci

  • Arduino Pro Mini 5V
  • 3-osiowy akcelerometr ADXL335
  • DS3231 AT24C32 IIC precyzyjny zegar czasu rzeczywistego
  • Mały głośnik
  • Wyświetlacz OLED SSD1306 IIC 0,96 cala
  • Zasilanie 5V DC
  • LED x 2
  • Rezystory 220ohm x 2
  • Gniazdo lufy DC
  • Drut
  • Narzędzia
    • Przecinaki do drutu / szczypce do ściągania izolacji
    • Lutownica/lutownica
    • drukarka 3D (opcja)
    • Programator FTDI do interfejsu między Pro mini a Arduino IDE

Krok 1: Prototypowanie i testowanie obwodu

Prototypowanie i testowanie obwodu
Prototypowanie i testowanie obwodu
Prototypowanie i testowanie obwodu
Prototypowanie i testowanie obwodu
Prototypowanie i testowanie obwodu
Prototypowanie i testowanie obwodu

Podłącz komponenty do Arduino. Układ lub schemat płytki prototypowej pokazano powyżej. RTC i OLED używają protokołu I2C do łączenia się z Arduino i wykorzystują piny A4 i A5. Akcelerometr wykorzystuje 3 piny analogowe. Użyłem A0, A1, A2. Diody LED i Piezo mogą korzystać z dowolnego z pinów cyfrowych, użyłem odpowiednio 4 i 8.

Interfejs z każdym komponentem. Musiałem zainstalować kilka bibliotek Arduino, aby połączyć się z każdym komponentem. Pokazano je na powyższym obrazku.

Koduj za pomocą Arduino IDE. Przejrzałem kilka przykładowych szkiców dostarczonych przez każdą bibliotekę, aby znaleźć właściwą składnię dla każdego komponentu w oparciu o to, co chciałem, aby zrobili. Wymyśliłem szkic dla każdego komponentu, aby przetestować je indywidualnie. Są one podane poniżej. Zacząłem od głośnika piezo, ponieważ był najłatwiejszy. Właściwie nie potrzebował specjalnej biblioteki, tylko specyficznej funkcji, która ustawia częstotliwość i dźwięk. Aby diody LED działały, wystarczyło wyciągnąć jeden z pinów cyfrowych w górę i w dół. Następnie przeszedłem na OLED, który również był dość prosty w konfiguracji. Poniższy szkic to demo Adafruit, które przechodzi przez wszystkie animacje/teksty, które można wyświetlić. Następnie próbowałem uruchomić RTC. Dostarczony przeze mnie szkic był częścią przykładu w bibliotece, który pobiera aktualny czas i drukuje go na monitorze szeregowym. Na koniec wykorzystałem podany przykład do przetestowania akcelerometru. Wyjścia każdej osi są drukowane na monitorze szeregowym.

Teraz czas na złożenie wszystkiego w całość!

Krok 2: Program główny

Główny program
Główny program
Główny program
Główny program

Teraz, gdy wiem, że wszystko działa indywidualnie, mogę zacząć wymyślać program, który łączy wszystko w całość. Poniżej omówię mój proces pisania programu, ale możesz po prostu pobrać pełny kod poniżej, aby użyć go w swoim własnym projekcie. Starałem się zostawić konkretne komentarze, abyście sami mogli przejść przez kod.

Musiałem wyświetlić godzinę i datę na OLED, co było dość proste. Po prostu musiałem wydrukować aktualny czas na wyświetlaczu zamiast na monitorze szeregowym. Musiałem wziąć pod uwagę kilka rzeczy związanych z formatowaniem, aby wyświetlał 12-godzinny format zamiast 24 i dodawał/usuwał zera tam, gdzie były właściwe. Data była podobna z dodatkiem wyświetlania miesiąca i dnia w prostokątach narysowanych na ekranie. Użyłem zagnieżdżonej pętli FOR do utworzenia timera i odpalenia piezo po zakończeniu pętli. Postanowiłem, że ekran zacznie migać, gdy brzęczyk się włącza, co było podstawową animacją zaczerpniętą z dema Adafruit. Obrócenie kostki z powrotem do pozycji zegara uczyniłem jedynym sposobem na wyłączenie brzęczyka. Na koniec chciałem mieć sposób na wyłączenie ekranu, co zostało osiągnięte przez po prostu wyczyszczenie wyświetlacza. Teraz potrzebowałem wszystkich tych funkcji, aby działały w oparciu o wyjścia akcelerometru. Użyłem skryptu Accel_Test do określenia współrzędnych osi każdej pozycji, którą chciałem uruchomić każda funkcja. Ręcznie przesunąłem układ akcelerometru i zapisałem odczyty na monitorze szeregowym. Powyższy diagram podaje współrzędne wyjściowe każdej pozycji w kolorze SZARYM. Współrzędne na czerwono są granicami między poszczególnymi pozycjami i użyłem tych liczb w moim programie. W 4 pozycjach wyświetlania potrzebne są tylko współrzędne osi X i Y. Piąta pozycja lampki nocnej wykorzystuje oś Z. Użyłem prostych instrukcji IF dla pozycji akcelerometru przed każdym blokiem funkcyjnym. Jeśli używasz innego akcelerometru, współrzędne te mogą się różnić i należy je skorygować w programie.

Krok 3: Drukowanie kostki w 3D

Drukowanie 3D kostki
Drukowanie 3D kostki
Drukowanie 3D kostki
Drukowanie 3D kostki
Drukowanie 3D kostki
Drukowanie 3D kostki

Pomyślałem, że sześcian byłby najlepszym projektem, aby dostosować się do tego, jak chciałem, aby działał zegar. Do wykonania modelu użyłem fusion360. Potrzebowałem wycięcia na OLED i gniazdo lufy. Chciałem też mieć łatwy dostęp do wymiany baterii w RTC po okablowaniu. Potrzebowałem gniazda, aby utrzymać Arduino w orientacji, którą w razie potrzeby można łatwo przeprogramować. Dodatkowo obudowa musiała być łatwo zdejmowana, abym mógł uzyskać dostęp do Arduino. Możesz zobaczyć model CAD powyżej, a pliki STL znajdują się poniżej.

Korpus wydrukowałem w czarnym PLA z wypełnieniem 20%, rozdzielczość 0,2mm.

Obudowa lub rękaw zostały wydrukowane z elastycznego włókna Solutech ze 100% wypełnieniem, rozdzielczość 0,3 mm. Użyłem tego materiału, ponieważ ma pewną elastyczność, dzięki czemu łatwo się rozciąga na ciele. Jest również bardziej miękki podczas obracania zegara. Na koniec wybrałem przezroczysty żarnik, aby prześwitywały diody LED lampek nocnych.

Krok 4: Montaż

montaż
montaż
montaż
montaż
montaż
montaż

Połączyłem wszystko razem, korzystając ze schematu z kroku 1. Użyłem małego kawałka płyty perforowanej do połączenia wszystkich wspólnych przewodów, aby nie musiałem lutować wielu przewodów do jednego pinu w Arduino. Do zabezpieczenia wszystkiego na swoim miejscu z wyjątkiem Arduino użyto gorącego kleju. Został po prostu wepchnięty w wyznaczone miejsce. Upewniłem się, że tablica akcelerometru jest prostopadła i pozioma na spodzie korpusu, aby nie trzeba było zmieniać współrzędnych w kodzie.

Krok 5: Prześlij i gotowe

Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!
Prześlij i gotowe!

Teraz gotowy program można wgrać do zegara, aby ustawić poprawny czas. Bateria ogniwa powinna utrzymywać czas nawet po odłączeniu zasilania. Nasuń rękaw z nadrukiem 3D na korpus, aby ukryć wszystkie elementy, a otrzymasz kompletny zegar sześcienny!

Mam nadzieję, że spodoba ci się tworzenie tego projektu i uznasz go za równie przydatny jak ja. Miłą częścią tego projektu jest to, że można go bardzo dostosować. Możesz dodawać własne różne funkcje, takie jak funkcja alarmu, używać różnych komponentów, takich jak większy OLED, odbiornik radiowy FM itp. Miłego robienia!

Zalecana: