Spisu treści:

Oled Budzik: 8 kroków (ze zdjęciami)
Oled Budzik: 8 kroków (ze zdjęciami)

Wideo: Oled Budzik: 8 kroków (ze zdjęciami)

Wideo: Oled Budzik: 8 kroków (ze zdjęciami)
Wideo: Ukryta funkcja w iPhone 2024, Listopad
Anonim
Budzik Oled
Budzik Oled

Istnieje wiele zegarów arduino/ESP32, ale czy używają tych ładnych i wyraźnych diod OLED?

Od jakiegoś czasu eksperymentuję z arduino i ESP32, ale nigdy nie doszedłem do gotowego produktu. Zrobiłem budzik z 4 monochromatycznymi diodami OLED o przekątnej 1,3 cala. Zegar posiada również ściemnianą lampkę nocną oraz port ładowania USB (nikt nie ma wolnych gniazdek przy łóżku). Diody OLED są również ściemniane, zostało to dodane w ostatniej chwili po tym, jak moja dziewczyna zagroziła mojemu projektowi. Jeśli przyciemnienie nie będzie wystarczająco przyciemnione, mogę również dostarczyć wersję kodu, w której 3 wyświetlacze są zasilane w określonych godzinach. Celem było stworzenie łatwego w obsłudze zegara, wychodzącego poza „prototyp”. Podczas tworzenia mojego zegara napotkałem pewne trudności, które musiałem rozwiązać, dlatego uważam, że warto się tym pouczyć. Zegar można wykonać za pomocą małych narzędzi, nie podobają mi się samouczki „a do następnego kroku użyłem mojej frezarki CNC za 10 000 €/$”.

Niektóre rzeczy, które zostaną wyjaśnione w tym instruktażowym (in-structable-ception):

- Jak używać/podłączać wyświetlacz I2C OLED z arduino/ESP32?

- Jak korzystać z wielu obiektów I2C z jednym arduino/ESP32?

- Jak zrobić "przewijalne" menu za pomocą enkodera obrotowego (+ jak używać enkodera z ESP32/arduino)

- Jak zaprojektować i zamówić niestandardową płytkę drukowaną za pomocą frytu.

- Zegar wykorzystuje również RTC (zegar czasu rzeczywistego), sterownik led, moduł obniżania napięcia… Tak naprawdę nie będę się do tego zagłębiał, ponieważ dla tych modułów jest naprawdę wiele informacji łatwo dostępnych.

Zaznaczam, że nie jestem zawodowym programistą. Celem mojego instruktażu jest wyjaśnienie punktów, o których wspomniałem powyżej. Sposób, w jaki to wszystko złożyłem, aby uzyskać produkt końcowy, może nie być najczystszym sposobem. To sposób, który pozwolił mi to wszystko śledzić.

Kieszonkowe dzieci

Kupując materiały eksploatacyjne, zawsze staram się rozważyć znaczenie jakości/dokumentacji w porównaniu z ceną. Moje zapasy to mieszanka marek A i tańszych chińskich części. Mouser jest świetnym dostawcą, jeśli jakość jest ważna, zamawiam w Banggood/Aliexpress tańsze części.

- Płyta ESP32, użyłem Huzzah32 z adafruit, ale jest wiele innych (tańszych) opcji. Wybrałem Huzzah32, ponieważ jest bardzo dobrze udokumentowany.

- 4 1,3-calowe wyświetlacze I2C OLED (128x64, ze sterownikiem SH1106), te 0,96" są bardziej popularne, ale do tego projektu wolę 1,3"

- Sterownik femtobuck Sparkfun do sterowania diodą LED

- Zegar RTC, ja używałem z baterią litową

- Arduino nano

- Żeński port USB 2.0 (użyłem: SS-52200-002 ze Stewart Connector)

- Gniazdo żeńskie DC (użyłem: L722A z Switchcraft)

- Zasilacz 12V 3A DC (GST36E12-P1J firmy Mean Well)

- Niestandardowa płytka drukowana, opcjonalna, ale dzięki temu projekt jest o wiele bardziej kompaktowy i łatwy w obsłudze, jeśli część zginie + większa niezawodność, ponieważ mniej przewodów (jlcpcb.com)

- Śruby i śruby M3

- Wkładki mosiężne M3

- Moduł obniżania napięcia 12V do 5V firmy Pololu (DF24V22F5)

- 3 waty zasilane z radiatorem

- Przewody połączeniowe

- Brzęczyk

- multiplekser I2C (TCA9548A z adafruit)

- 2 enkodery obrotowe (próbowałem niektóre, nie wszystkie działają z moim kodem. Ten z „DFrobota” działa, podobnie jak ten z okrągłej płytki drukowanej „DIYmore”. Mój kod nie działa dla przycisku typu KY-040. Mój budzik używa tego z DIYmore, ponieważ są bardzo łatwe w montażu panelowym (nie są potrzebne żadne dodatkowe śruby/otwory).

- Asortyment żeńskich nagłówków (opcjonalnie)

- Drewno na ramę: 18mmx18mmx2400mm

- Kalka

Użyłem też kilku narzędzi (lutownica, trzecia ręka, piła…), ale nic naprawdę egzotycznego.

Krok 1: Korzystanie z Oled

Korzystanie z Oled
Korzystanie z Oled
Korzystanie z Oled
Korzystanie z Oled
Korzystanie z Oled
Korzystanie z Oled

Aby korzystać z diod OLED, musisz zainstalować bibliotekę. Używam U8G2lib od Oli Kraus, jest bardzo zrozumiały i ma przewodnik z jasnymi przykładami.

Aby podłączyć płytkę (ESP lub arduino) musisz znaleźć piny SDA i SCL. Te piny to piny komunikacyjne I2C. Google dla "pinout" konkretnej tablicy, jeśli nie możesz ich znaleźć.

Dodałem przykładowy kod. Kod działa zarówno dla arduino, jak i ESP32, ale w ESP32 jest mniej prawdopodobne, że zabraknie pamięci. Wszystkie dotychczas wypróbowane przeze mnie oledy działają zarówno z napięciem 3.3V (ESP32) jak i 5V.

Krok 2: Wiele diod OLED

Wiele diod OLED
Wiele diod OLED

W tym miejscu mój projekt zaczyna się różnić od wielu innych budzików. Większość arduino/ESP ma tylko jeden lub dwa piny I2C. Ten rodzaj ogranicza użycie części I2C. Co jeśli mam 4 czujniki I2C i chcę wyświetlać ich odczyty na wyświetlaczu I2C? Wejdź do multipleksera. Multiplekser umożliwia adresowanie 7 różnych części I2C. Dzięki temu mój ESP32 może używać zegara czasu rzeczywistego I2C i wyświetlać czas ponownie za pomocą I2C na 4 wyświetlaczach (lub więcej, nie pozwól, abym cię powstrzymał).

Dodałem przykładowy kod dla ESP32, odtąd nie jestem pewien, czy arduino może nadążyć. Przykład używa tylko wyświetlaczy, mogą to być również inne rzeczy, takie jak czujniki I2C itp. Zasada jest zawsze taka sama, wołasz właściwy kanał za pomocą "tcaselect(#);" funkcji, następnie wykonujesz dowolny kod niezbędny dla twojego obiektu I2C.

Krok 3: Tworzenie przewijalnego menu za pomocą enkodera obrotowego

Tworzenie przewijanego menu za pomocą enkodera obrotowego
Tworzenie przewijanego menu za pomocą enkodera obrotowego
Tworzenie przewijanego menu za pomocą enkodera obrotowego
Tworzenie przewijanego menu za pomocą enkodera obrotowego
Tworzenie przewijanego menu za pomocą enkodera obrotowego
Tworzenie przewijanego menu za pomocą enkodera obrotowego

Najpierw przetestuj swoje kodery. Dodałem trochę kodu, aby przetestować twoje moduły kodera. Jak podano w dostawach: Z powodzeniem przetestowałem mój kod tylko z modułami enkodera obrotowego od robota DF i modułem z okrągłą płytką drukowaną od DIYmore. Zobacz zdjęcia powyżej dla właściwych enkoderów.

Biblioteka, której użyłem, to ta:

Mam nadzieję, że plik PDF, który dodałem, pomaga w strukturze menu, której użyłem do mojego zegara.

Sprawienie, by enkoder działał, było dla mnie najtrudniejszą częścią tego projektu. Istnieje wiele różnych koderów i wiele różnych bibliotek, które nie zawsze są kompatybilne z ESP32. Ale myślę, że (działający) enkoder obrotowy jest eleganckim rozwiązaniem, jeśli chcesz coś wprowadzić. Gdybym używał tylko przycisków, potrzebowałbym więcej niż 1, a ustawienie czasu wymagałoby wielu naciśnięć.

Krok 4: Łączenie poprzedniego kodu

Łączenie poprzedniego kodu
Łączenie poprzedniego kodu

Tytuł podsumowuje to, co zrobiłem. Próbowałem część po części, a potem poskładałem wszystko w całość. Ale ponieważ nic nie jest łatwe, musiałem zmienić niektóre rzeczy. Komunikacja szeregowa to powolny proces. Utrudnia to prawidłowe odczytanie kodera. Aby temu zaradzić, dodałem przerwania do pinów enkodera. Kod do odczytu kodera jest natychmiast wywoływany po naciśnięciu lub obróceniu kodera.

Gdy zrozumiesz, jak zbudowane są menu, przekonasz się, że bardzo łatwo jest dodawać lub usuwać funkcje według własnych upodobań. A może chciałbyś pobrać aktualną pogodę lub godzinę z internetu i wyświetlić ją?

Wiele takich pomysłów pominąłem, bo przede wszystkim chciałem mieć niezawodny czas. Taki, który nic nie robi automatycznie. Pracuję w bardzo dziwnych godzinach w strefie czasu letniego. Za każdym razem, gdy zmienia się godzina, denerwuję się, że zasypiam. Czy mój telefon automatycznie zmieni godzinę? Czy mój zegarek? Cóż, mój zegar nie zrobi tego, chyba że sam go zmienię. A może chcesz postawić zegar w kuchni? Inny scenariusz, dodawaj funkcje do wyczerpania pamięci!

Krok 5: Niestandardowa płytka drukowana z Fritzing + schemat

Niestandardowa płytka drukowana z fryzowaniem + schemat
Niestandardowa płytka drukowana z fryzowaniem + schemat
Niestandardowa płytka drukowana z fryzowaniem + schemat
Niestandardowa płytka drukowana z fryzowaniem + schemat
Niestandardowa płytka drukowana z fryzowaniem + schemat
Niestandardowa płytka drukowana z fryzowaniem + schemat

Uwaga: Adafruit zwraca uwagę, że chociaż możesz zasilać huzzah32 przez pin USB, musisz uważać, aby nie używać jednocześnie gniazda zasilania micro USB. Moja płytka drukowana jest zasilana przez step down buck, który następnie zasila huzzah przez pin USB. Dlatego zawsze odłączaj zewnętrzne zasilanie / usuwaj huzzah z płyty podczas przesyłania.

Zdecydowałem się przylutować żeńskie złącza na płytce PCB, ponieważ ułatwia to wymianę części lub dodanie np. dodatkowego czujnika I2C. Pozwala mi to również na łatwe usunięcie nano lub ESP32 w celu załadowania programów.

Dodałem plik Frizting, tutaj mogę wpisać powieść, ale myślę, że przykład mówi najlepiej. Zacząłem od schematu całej konfiguracji. Chociaż Fritzing ma wiele części w pojemnikach, nie wszystko tam jest. Czasami możesz znaleźć część Fritzing w Internecie, czasami nie. Części, których nie mogłem znaleźć, po prostu wymieniłem na żeńską część nagłówka. Jeśli klikniesz prawym przyciskiem myszy, możesz edytować nagłówek do żądanej liczby pinów i przypisać do niego pinout. Zrobiłem to z każdą częścią, której nie mogłem znaleźć. Ponieważ prawie wszystkie moduły używają tego samego odstępu 0,1 cala (2,54 mm), zapewni to prawidłowe rozmieszczenie części.

Następnie przełączysz się na widok PCB aplikacji fritzującej. Płytka zostanie umieszczona na miejscu, po kliknięciu można ustawić jej rozmiar i wybrać jedno lub dwuwarstwową płytkę drukowaną. Mój używa 2 warstw. Fritzing zasugeruje połączenia, które wykonałeś na schemacie. Program ma opcję autoroute, ale nigdy jej nie używam. Lubię ręcznie organizować moje połączenia. W widoku PCB żółte połączenia znajdują się w górnej warstwie, pomarańczowe w dolnej warstwie. Ponownie, jeśli klikniesz na połączenie, możesz wybrać jego właściwości.

Aby wykonać właściwą płytkę drukowaną, musisz ją wyeksportować jako plik gerber. Zanim to zrobisz, w zakładce „routing” możesz sprawdzić zasady projektowania. Jeśli wszystko się zgadza, możesz kliknąć „eksportuj do PCB”. Większość producentów poprosi o plik gerber, więc wybierz eksport do gerber.

Zamówiłem moją płytkę drukowaną w JLCPCB, podoba mi się, że od razu podają cenę. Istnieje oczywiście wiele innych opcji.

O schemacie: używane są 2 napięcia. Dioda LED i femtobuck są zasilane bezpośrednio z zasilacza 12V. Reszta jest zasilana za pomocą step-down buck z napięciem 5 woltów.

Krok 6: Projekt + wycinarka laserowa

Projekt + wycinarka laserowa
Projekt + wycinarka laserowa
Projekt + wycinarka laserowa
Projekt + wycinarka laserowa

W swoim pierwszym projekcie próbowałem użyć litego dębu (śledzę zajęcia z obróbki drewna), ale szybko okazało się, że nie jest to idealne rozwiązanie. Drewno jest zbyt grube, co utrudnia dopasowanie części. Multipleks brzozowy 3 mm pozwala na łatwiejsze sposoby mocowania enkoderów i wyświetlaczy.

Znalazłem serwis laserowy online, snijlab.nl, dostępny dla hobbystów z Rotterdamu (wysyłają do Belgii, Holandii i Niemiec). Na ich stronie internetowej możesz przesłać swoje rysunki, a oni od razu podają Twoją cenę. Skorzystałem z programu Autocad, który mam w pracy, ale oprogramowanie nie ma większego znaczenia. Musi to być tylko rysunek wektorowy (Vectr, Illustrator, Inkscape…). Większość sklepów używa kolorów do określenia, czy chcesz wyciąć, czy wygrawerować.

Kilka rzeczy, o których należy pamiętać:

- Max. wymiary wycinarki laserowej (narysowałem ramkę wokół moich części)

- min. odległość między cięciami

- Upewnij się, że nie rysujesz żadnych podwójnych linii, laser wykona dodatkowe przejście, co będzie cię droższe.

- Podczas drukowania w formacie PDF upewnij się, że kreślisz 1:1. Nie chcesz zmniejszać rozmiaru ani pasować do papieru.

Krok 7: Montaż

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

Zegar zbudowałem na drewnianej ramie, panele są utrzymywane na miejscu za pomocą śrub M3 i wkładek w ramie. Gdybym kiedykolwiek zbudował wersję 2, użyłbym aluminiowych profili „L” do mocowania paneli. Bardzo trudno było precyzyjnie wywiercić otwory na mosiężne wkładki. Zajęło mi to bardzo długo, a wynik był zadowalający. Oznaczałoby to oczywiście, że rysunek wycięty laserem musi zostać poprawiony. Myślę, że dzięki aluminiowym profilom i tylko śrubom i nakrętkom uzyskasz lepszy wynik.

Aby lepiej rozproszyć światło, po wewnętrznej stronie perforacji przykleiłem kalkę kreślarską. To nadaje mu ładny blask.

Krok 8: Nie zatrzymuj się tutaj

Nie zatrzymuj się tutaj
Nie zatrzymuj się tutaj
Nie zatrzymuj się tutaj
Nie zatrzymuj się tutaj
Nie zatrzymuj się tutaj
Nie zatrzymuj się tutaj

Projekt skupia się wokół ESP32, ledwo go używałem. Moje światła w sypialni można obecnie zdalnie sterować za pomocą blynk. Sterowanie nimi za pomocą zegara to tylko mały krok dalej. A może potrzebujesz dodatkowych wyświetlaczy, które pokazują temperaturę wokół domu? Lub jakieś lokalne czujniki (na tym multiplekserze są jeszcze wolne połączenia I2C!). Może ustawić godzinę/alarm za pomocą aplikacji i bluetooth?

Daj mi znać, co zmieniłeś, co byś zmieniła, co powinienem zmienić…

Zalecana: