logo elektroda
logo elektroda
X
logo elektroda
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Zegarek oparty o ATtiny85 w pierścionku

ghost666 29 Lut 2016 19:36 13272 9
  • Zegarek oparty o ATtiny85 w pierścionku
    Autor poniższej konstrukcji przedstawiał już podobny układ - miniaturowy zegarek oparty o ATtiny (Link) - ale teraz idzie krok dalej i umieszcza całą konstrukcję w niewielkiej obudowie w kształcie pierścionka. Poniżej, krok po kroku, przedstawiono jak zmontować takie urządzenie

    Krok 1: Przygotowania

    Zegarek oparty o ATtiny85 w pierścionku


    Mikrokontroler

    Układ oparty jest o mikrokontrolery AVR firmy Atmel ATtiny85. Autor wykorzystał element w obudowie SOIC z uwagi na niezwykle mały rozmiar. Układ ten zasilany jest z pojedynczej baterii; wybrana wersja ATtiny85V-10SU pracować może z zasilaniem już od 2 V.

    Programator

    Do zaprogramowania układu potrzebny będzie programator ISCP. Autor korzysta z modelu Digispark littleWire,

    Bateria

    Do zasilania zegarka wykorzystano pojedynczą baterię CR1220; autor przewiduje że czas pracy zegarka na tym układzie powinien wynosić co najmniej pół roku.

    Wyświetlacz

    Jako że liczba pinów wyjściowych z ATtiny85 jest bardzo mała autor wykorzystuje w projekcie wyświetlacz sterowany poprzez interfejs I²C. Dodatkowym czynnikiem wpływającym na wybór ekranu zegarka jest dostępność elementów na rynku i pobór prądu przez ten element. Po analizie dostępnych wyświetlaczy autor wybrał OLEDowy ekran sterowany przez układ SSD1306. Ekrany tego rodzaju dostępne są w kilku rozdzielczościach: 64 x 32, 128 x 64, 128 x 32 oraz 64x48.

    Obudowa Zegarka

    Wstępny pomysł zakładał wykonanie obudowy z drewna, ale z uwagi na swoje lenistwo (jak sam napisał) autor konstrukcji zdecydował się na wydruk 3D. W obudowie zamontowany jest kawałek przeźroczystej folii PET, która ochrania wyświetlacz.

    Pozostałe elementy i potrzebne narzędzia:
    * Klips do układów SOIC do programatora ISP
    * 3 x śrubka M2
    * 3 x przycisk (microswitch)
    * 2 x oporniki (powyżej 1k)
    * Emaliowany drucik miedziany.
    * Cienkie metalowe płytki do wykonania uchwytu do baterii
    * Przejściówka z SOIC8 do DIP8
    * Fragment płytki uniwersalnej7

    Krok 2: Konfiguracja Arduino do pracy z ATtiny85, EEPROMem i TinyWireM

    Najlepiej jest korzystać z Arduino IDE w wersji 1.6.5 - późniejsze (1.6.6 i 1.6.7 mają pewne problemy z kompatybilnością. Następnie pobieramy ArduinoTiny (https://github.com/vprimachenko/ArduinoTiny) i instalujemy wszystko na naszym komputerze. Najpewniej Arduino zainstaluje się w domyślnym folderze:

    C:\Program Files\Arduino

    Aby dodać wsparcie dla mikrokontrolerów z rodziny ATtiny rozpakowujemy pobraną paczkę i kopiujemy pliki do folderu z Arduino. Podobnie robimy ze wsparciem dla EEPROMu, kopiując potrzebne pliki z folderu hardware\arduino\avr\libraries\EEPROM\EEPROM.h do folderu hardware\tiny\avr\cores\tiny w folderze Arduino na dysku C:

    Następnie musimy zainstalować bibliotekę do TinyWireM. W tym celu uruchamiamy IDE, wybieramy następnie: Sketch Menu -> Include Library sub-menu -> Manage Libraries... na liście odszukujemy TinyWireM i naciskami przycisk instalacji. Teraz możemy zamknąć menu i wyłączyć IDE.

    Biblioteka TinyWireM ma pewien problem z działaniem, jednakże jest on szeroko znany i łatwo go naprawić. W folderze, gdzie zainstalowaliśmy bibliotekę ("My Documents\Arduino\libraries\TinyWireM) znajdujemy plik TinyWireM.cpp i w linii 53 zmieniamy z:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Na:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Krok 3: Kod źródłowy zegarka

    Kod źródłowy do obsługi zegarka pobrać możemy stąd. Kod zegarka (plik .ino) prezentuje się następująco:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Rozdzielczość ekranu OLED zmieniamy w pliku ssd1306.h:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod



    Krok 4: Wykonanie obudowy zegarka

    Obudowa wykonana została przez autora z plastiku w technologii druku 3D. Nic nie stoi na przeszkodzie, aby wykonać ją z drewna, aby cała konstrukcja była dużo bardziej elegancka.

    Do wykonania są dwa elementy, tutaj i tutaj odnaleźć można pliki .stl opisujące te elementy.

    Krok 5: Lutowanie ATtiny do PCB

    Zegarek oparty o ATtiny85 w pierścionku


    Przylutowania mikrokontrolera do płytki drukowanej nie jest niezbędne do montażu zegarka, jednakże istotnie ułatwi jego programowanie i kolejne kroki podczas montażu elementów elektronicznych.

    Krok 6: Płytka z przyciskami

    Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku


    W poprzednim projekcie, wspominanym we wstępie, autor wykorzystał do obsługi dwóch przycisków dwa piny mikrokontrolera. W prezentowanym tutaj zegarku trzy przyciski podłączone zostały do jednego pinu - wejścia analogowego - w bardzo sprytny sposób. Pierwszy przycisk (set) łączy masę z pinem PB3 (ADC3), drugi (up) podobnie, ale poprzez opornik 6,8 kΩ, a trzeci (down) poprzez opornik 68 kΩ. Dzięki temu odczytując wartość napięcia na wejściu można rozróżnić który przycisk został naciśnięty. Autor dobierając oporniki zmierzył napięcia dla różnych wartości. Jeśli planujecie użyć inne nic opisane powyżej, należy zmienić w programie linijkę odpowiedzialną za rozpoznawanie wartości:


    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku


    Krok 7: Lutowanie układu

    Jako że pierścionek jest zakrzywiony, nie można zamontować elementów na jednej płaskiej płytce drukowanej. Mikrokontroler, wyświetlacz, bateria i przyciski zamocowane są osobno i połączone ze sobą cienkim drucikiem w emaliowej izolacji. Do podłączenia masy i zasilania do poszczególnych elementów potrzebne jest około 6..8 cm drucika. Emalię zdjąć można z pomocą np. papieru ściernego, w miejscach, które mają być przylutowane.

    Do mikrokontrolera podłączamy:

    Pin 2: Moduł z przyciskami
    Pin 4: OLED GND; moduł z przyciskami; bateria
    Pin 5: OLED SDA
    Pin 7: OLED SCL
    Pin 8: OLED VCC; bateria

    Krok 8: Uchwyt do baterii

    Zegarek oparty o ATtiny85 w pierścionku
    Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku


    W pierścionku nie zmieści się normalny uchwyt na baterię CR1220, dlatego też trzeba wykonać taki element samodzielnie. Autor wykonał go z dwóch blaszek, do których przylutowano cienki drucik. Po umieszczeniu blaszek i baterii w obudowie sprawdzić można połączenie z wykorzystaniem multimetra.

    Krok 9: Programowanie mikrokontrolera

    Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku


    Aby zaprogramować układu musimy po kolei:

    * Podłączyć programator do komputera
    * Uruchomić Arduino IDE
    * Otworzyć plik ATtinyWatch.ino
    * Wybieramy z menu Tools -> Board -> ATtiny85
    * Wybieramy z menu Tools -> Clock -> 1 MHz (oscylator wewnętrzny, wyłączone BOD)
    * Wybieramy z menu Tools -> Programmer -> nasz kabel ISP
    * Usuwamy z zegarka baterię
    * Podłączamy klips do programowania do mikrokontrolera i naciskamy przycisk Upload.

    Jeśli nie dysponujemy klipsem dla elementów SOIC możemy podłączyć kabel w następujący sposób
    MISO -> Pin 6
    VCC -> Pin
    SCK -> Pin 7
    MOSI -> Pin 5
    RESET -> Pin 1
    GND -> Pin 4

    Krok 10: Ekran testowy

    Zegarek oparty o ATtiny85 w pierścionku


    Aby wejść do ekranu testowego, który wyświetla szereg interesujących parametrów należy nacisnąć przyciski up lub down gdy nie jest wybrane żadne pole daty lub godziny. Na ekranie zobaczymy wtedy informacje w czterech wierszach:

    Wiersz 1 (I): Licznik przerwania watchdoga (WDT); resetuje się on co godzinę.
    Wiersz 2 (M): Dostrajana liczba mikrosekund na jedno przerwanie watchdoga. Wartość ta jest dostrajana co godzinę.
    Wiersz 3 (V): Skalibrowana wartość napięcia z baterii w miliwoltach.
    Wiersz 4 (T): Temperatura układu ATtiny85 w jednostkach umownych; wartość uśredniona na podstawie 64 pomiarów.

    Krok 11: Kalibracja czasu

    Naciskamy przycisk set i ustawiamy się na pole czasu lub daty, które zostanie podświetlone. Przyciskami up i down przestawiają pole które jest aktualnie edytowane. Po naciśnięciu set podczas gdy podświetlone jest pole wyświetlające sekundy kalibracja zakończy się. Teraz czas będzie automatycznie dostrajany z pomocą watchdoga układu. Doświadczenia autora pokazały, że przy stabilnym napięciu zasilania i temperaturze zegarek nie spóźnia/śpieszy się więcej niż minutę dziennie po kalibracji.

    Krok 12: Kalibracja napięcia

    W kodzie programu musimy zakomentować linie #define z DEBUG_SCREEN_V i MULTI_METER_VOLTAGE w pliku WDT_time.h. programujemy zmienionym kodem układu i odczytujemy napięcie z ekranu, porównując je z wskazaniami multimetru. Następnie możemy wpisać wartość do kodu i od tego momentu wartość zmierzonego napięcia będzie poprawnie prezentowana. Program z uzupełnionymi polami będzie prezentował się tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Krok 13: Kalibracja termometru w układzie

    Analogicznie jak dla napięcia musimy zmienić kod programu - odkomentować zmienne DEBUG_SCREEN_T_1, TEMPERATURE_1, DEBUG_SCREEN_T_2 i TEMPERATURE_2 i uzupełnić je o wartości zmierzone dla dwóch temperatur. Następnie ponownie programujemy zegarek. Fragment kodu z definicjami tych stałych wyglądać po wypełnieniu powinien np. tak:

    Kod: C / C++
    Zaloguj się, aby zobaczyć kod


    Krok 14: Montaż

    Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku Zegarek oparty o ATtiny85 w pierścionku


    Ekran OLED umieszczamy w wyznaczonym miejscu w obudowie, następnie wsuwamy do niej resztę elementów. Obudowę skręcamy z pomocą trzech śrubek M2. Przeźroczystą folię, o wymiaracg 16 mm x 82 mm wsuwamy w obudowę, mocując przy brzegach taśmą. Warto delikatnie zaokrąglić rogi plastikowej folii, aby lepiej mieściła się w obudowie.

    Skończony zegarek prezentuje się następująco:

    Zegarek oparty o ATtiny85 w pierścionku


    Co dalej? autor w planach ma szereg modyfikacji układu:

    * Zmniejszenie jego wymiarów, poprzez usunięcie płytki do której przylutowany jest mikrokontroler, a płytka z przyciskami może być jeszcze zmniejszona z wykorzystaniem elementów SMD.
    * Podłączenie kolejnych modułów I²C.
    * Dodanie sensora światła w celu kontroli jasności ekranu i dostosowywania jej do warunków otoczenia.
    * Dodanie opcji lepszej synchronizacji czasu, np. poprzez GPS, WiFi, Bluetooth itp.

    Źródło: http://www.instructables.com/id/ATtiny85-Ring-Watch/?ALLSTEPS
    O autorze
    ghost666
    Tłumacz Redaktor
    Offline 
    Fizyk z wykształcenia. Po zrobieniu doktoratu i dwóch latach pracy na uczelni, przeszedł do sektora prywatnego, gdzie zajmuje się projektowaniem urządzeń elektronicznych i programowaniem. Od 2003 roku na forum Elektroda.pl, od 2008 roku członek zespołu redakcyjnego.
    https://twitter.com/Moonstreet_Labs
    ghost666 napisał 11960 postów o ocenie 10197, pomógł 157 razy. Mieszka w mieście Warszawa. Jest z nami od 2003 roku.
  • #2 15483563
    pheonix
    Poziom 13  
    Pomysł ciekawy może i ja coś takiego zrobię ale wykonie woła o pomstę do nieba.
    No ale jak na gotowce i płytkę uniwersalną fajnie mu to wyszło. Arduino? Jak by nie można było zaoszczędzić miejsca w pamięci na dodatkowe funkcje pisząc w C.
  • #3 15483853
    RometFan;p
    Poziom 26  
    Największy problem w tego typu konstrukcjach gdzie ogranicza nas rozmiar, jest z obudowaniem tego wszystkiego w sensowną całość. Mikroprocesor w wersji mini się znajdzie, program się napisze, ale zgrabna i funkcjonalna obudowa to już jest wyczyn, szacunek dla autora.
  • #4 15484003
    pietryna
    Poziom 13  
    pheonix napisał:
    Arduino? Jak by nie można było zaoszczędzić miejsca w pamięci na dodatkowe funkcje pisząc w C.

    Trochę bez sensu to narzekanie. Może inaczej nie umie? W gruncie rzeczy dzięki takim rozwiązaniom i bibliotekom oprogramowywanie kontrolera może trafić pod strzechy dużo prościej niż jakby wszystkim kazać pisać w assemblerze.

    RometFan;p napisał:
    funkcjonalna obudowa to już jest wyczyn

    Tutaj powinna się wkraść drukarka 3D. Nie ma obudowy na rynku do mojej jednostkowej zabawki? Nie ma problem - zrobię sobie swoją.
  • #5 15484264
    ghost666
    Tłumacz Redaktor
    pietryna napisał:
    RometFan;p napisał:
    funkcjonalna obudowa to już jest wyczyn

    Tutaj powinna się wkraść drukarka 3D. Nie ma obudowy na rynku do mojej jednostkowej zabawki? Nie ma problem - zrobię sobie swoją.


    Autor zaprezentowanej konstrukcji obudowę wykonał właśnie w technice druku 3D.
  • #7 15488346
    mrh
    Poziom 18  
    Gdzie mogę kupić taki wyświetlacz oled ?
  • #9 15488664
    ghost666
    Tłumacz Redaktor
    mrh napisał:
    Gdzie mogę kupić taki wyświetlacz oled ?


    Szukałbym na AliExpress.
  • #10 15566411
    Konto nie istnieje
    Poziom 1  
REKLAMA