Lista potrzebnych rzeczy:
- Digispark Attiny85
- Wyświetlacz Oled 128x64 I2C
- czujnik temperatury ds18b20
- Rezystor 4,7 Kom 0,25 W.
- programista ISP lub Arduino Płyta z oprogramowaniem Digispark Attiny85
- Plastikowy tablet z spinaczem lub cienkim plastikiem
- przewody
- Złącza „żeńskie” Dupont 2,54 mm
- Przyciski 2 szt.
- Mała płytka drukowana lub małe wykończenie
- lutownica
- Lut, kalafonia
- nożyczki
- nóż biurowy
- Pistolet do klejenia na gorąco
- Gorący klej
Krok 1 Wybór komponentów.
Jako główny kontroler użyjemy Digispark Attiny85. Istnieje kilka ich rodzajów. Potrzebujemy płyty ze złączem micro USB. Reszta nie zmieści się w etui do zegarka.
Do wyświetlenia potrzebujemy wyświetlacza Oled 128x64 I2C. Występują w różnych kolorach: białym, niebieskim, niebieskim z żółtym. Zwracam uwagę! Termin „dwukolorowy” w opisie lub tytule tego ekranu oznacza pasek jednego koloru u góry ekranu, a drugi kolor całego pozostałego ekranu, a nie możliwość wyświetlania dwóch kolorów na tym ekranie! Wszystkie ekrany tego typu wyświetlają tylko jeden kolor, a na górze pasek jednego koloru na dole - inny. Jak na przykład ten, którego użyję. Pasek powyżej jest żółty, reszta ekranu jest niebieska. Możesz wybrać dowolny kolor.
Potrzebujemy również zintegrowanego czujnika temperatury DS18B20. Nie został wybrany przypadkowo. Po pierwsze, DS18B20 komunikuje się z mikrokontrolerem za pomocą jednoprzewodowej linii komunikacyjnej z wykorzystaniem protokołu interfejsu 1-Wire. W naszym przypadku jest to ważne, ponieważ wniosków Attiny85 bez czujnika jest niewiele. Po drugie, ten czujnik jest cyfrą, to znaczy, że sam wykonuje wszystkie pomiary i po prostu przesyła dane temperatury, nie zużywając zasobów obliczeniowych Attiny85.
Co do reszty, myślę, że nie będzie pytań, przejdźmy więc do produkcji skrzynki.
Krok 2 Montaż obudowy.
Obudowa zegarka będzie wykonana z cienkiego plastiku. Na rękach miałem plastikowy tablet z spinaczem do papieru. Jest wystarczająco twardy, aby utrzymać swój kształt, a jednocześnie można go ciąć zwykłymi nożyczkami i nożem biurowym. Podszedł idealnie.Jeśli nie jest pod ręką, możesz kupić tablet w sklepie z artykułami biurowymi lub znaleźć odpowiedni plastik do zastąpienia tabletu. Wykonujemy oznaczenia na plastiku zgodnie ze schematem:
Wytnij wszystkie ciągłe linie. Kropkowane - lekko cięte nożem biurowym. Kropkowane linie to linie zagięcia. Jak już zrozumiałeś, jest to zwykły układ kostki. Następnie musisz przylutować przewody do ekranu, najlepiej wziąć wielobarwne i zapisać, co prowadzi do czego. Przyklej ekran na kleju topliwym na środku, aby przednia strona wychodziła z tyłu. Jak widać, zamknęliśmy oznaczenia pinów ekranu. Dlatego konieczne było ich spisanie. Lekko podałem nóż, a tym samym odciąłem dolną część ciała. Nie ma w tym nic złego, wszystko można skleić. Ale lepiej nie powtarzać moich błędów.
Wynik powinien wyglądać następująco:
W tej sprawie jest gotowy. Nadal możesz wyciąć tylną pokrywę z tego samego plastiku, ale jest to opcjonalne.
Krok 3 Lutujemy.
Nasza sprawa jest niewielka i musimy tam dużo wcisnąć. Dlatego bierzemy kawałek płytki drukowanej nie większej niż 2,8 x 2,8 mm i lutujemy w dwóch przyciskach, czujnik ds18b20, rezystor i kilka styków. Zgodnie z następującym schematem:
Nie jest konieczne lutowanie przewodów bezpośrednio do Attiny, ponieważ konieczne jest odłączenie wszystkiego w przypadku oprogramowania układowego. Wynik powinien być mniej więcej taki:
Do ustawienia godziny potrzebne są przyciski. Zasilanie można pobierać z portu USB komputera. Łącząc odpowiednio plus i minus:
Jeśli chcesz obejść się bez przewodów, musisz znaleźć małą baterię litowo-jonową. Oto na przykład:
Bateria mieści się w obudowie. Konieczne jest jedynie przedstawienie wniosków dotyczących ładowania akumulatora.
Krok 4 Przygotowanie programatora.
Digispark Attiny85 można zaprogramować za pomocą złącza micro USB na płycie, używając Arduino IDE jako środowiska programowania. Ale musisz poświęcić 2 KB pamięci dla programu ładującego. Attiny 85 ma w sumie 8 KB Flash. Mój szkic nie pasuje do bootloadera, więc muszę programować za pomocą programatora ISP. Nie mam takiego programatora, ale jest płyta Arduino Uno, której będę używać jako programisty. Jeśli masz programistę ISB, możesz pominąć ten element. Otwórz Arduino IDE i wypełnij nasz szkic ArduinoISP w naszym Arduino Uno. Można go znaleźć tak: Plik - Przykłady - Arduino ISP. Szkic rozpoczyna się od podpowiedzi, jak podłączyć Arduino do programowalnego kontrolera. Zamiast Arduino Uno może istnieć dowolna inna tablica Arduino.
// 10: reset slave
// 11: MOSI
// 12: MISO
// 13: SCK
Schemat połączenia z Digispark Attiny85:
Arduino UNO - Digispark Attiny85
D11 - P0
D12 - P1
D13 - P2
D10 - P5
Krok 5 Przygotowanie środowiska programowania.
Aby edytować oprogramowanie wewnętrzne i wypełnić szkic w Attiny 85, musisz przygotować nie tylko programistę, ale także samo środowisko programowania. Aby to zrobić, zainstaluj Arduino IDE z oficjalnej strony Arduino.cc, a także zainstaluj dodatek Attiny dla mikrokontrolerów za pośrednictwem Boards Managera.
Uruchom Arduino IDE, a następnie Plik - Ustawienia - w polu Adresy URL Menedżera dodatkowych tablic wklej link:
https://raw.githubusercontent.com/damellis/attiny/ide-1.6.x-boards-manager/package_damellis_attiny_index.json
kliknij OK (w tym polu możesz wprowadzić kilka łączy oddzielonych przecinkiem). Dalej Narzędzia - Zarząd - Zarząd desek w polu filtra, wpisz Attiny i kliknij „attiny by David A. Mellis”. Kliknij Zainstaluj i poczekaj na zakończenie pobierania. Teraz w menu Narzędzia wybierz:
Zarząd - Attiny 25/45/85
Procesor - Attiny 85
Zegar - wewnętrzny 16
i wybierz port szeregowy, do którego jest podłączony programator ISP lub Arduino.
Próbowałem wielu różnych bibliotek do pracy z ekranem. Moim zdaniem najwygodniejszy i działający na Attiny85: TinyOzOLED.
Czujnik temperatury potrzebuje biblioteki OneWire.
Zainstaluj te dwie biblioteki. Możesz zainstalować biblioteki innych firm bezpośrednio w środowisku programowania. Bez rozpakowywania pobranych archiwów w Arduino IDE wybierz menu Szkic - Połącz bibliotekę. U góry listy rozwijanej wybierz element biblioteki Dodaj .Zip. W wyświetlonym oknie dialogowym wybierz bibliotekę, którą chcesz dodać. Otwórz ponownie menu Szkic - Połącz bibliotekę. Na samym dole listy rozwijanej powinieneś zobaczyć nową bibliotekę. Teraz biblioteki można używać w programach. Nie zapomnij zrestartować Arduino IDE po tym wszystkim.Jeśli to nie pomoże, po prostu rozpakuj archiwa do folderu „bibliotek” znajdującego się w folderze z zainstalowanym Arduino IDE.
Krok 6 Edytuj i wypełnij szkic.
Czujnik temperatury działa zgodnie z protokołem One Wire i ma unikalny adres dla każdego urządzenia - kod 64-bitowy. Zasoby Attiny nie wystarczą, aby za każdym razem szukać tego kodu. Dlatego musisz najpierw podłączyć czujnik do dowolnej płyty Arduino, wypełnić szkic znajdujący się w menu Plik - Przykłady - Temperatura Dallas - OneWireSearch. Następnie uruchom Narzędzia - Monitor portów. Arduino powinien znaleźć nasz czujnik, wpisać jego adres i aktualne odczyty temperatury. Kopiujemy lub po prostu zapisujemy adres naszego czujnika. Otwórz szkic Attiny85_Oled_SPI_Term_2, poszukaj linii:
bajt addr [8] = {0x28, 0xFF, 0x75, 0x4E, 0x87, 0x16, 0x5, 0x63};
Zapisujemy adres twojego czujnika pomiędzy nawiasami klamrowymi, zastępując adres mojego czujnika. Następnie podłącz Attiny do programisty lub Arduino jako programista (opisano to w kroku 4) i wypełnij szkic. Pozostaje odłączyć programator i podłączyć wszystko zgodnie ze schematem w 3 krokach. Zespół okazuje się mniej więcej taki:
Ekran jest mały, nie można ustawić czasu i temperatury, aby był widoczny. Dlatego zegar zmienia czas z odczytem temperatury co 10 sekund.