Spisu treści:

Zegar zmierzchu/świtu Arduino: 15 kroków
Zegar zmierzchu/świtu Arduino: 15 kroków

Wideo: Zegar zmierzchu/świtu Arduino: 15 kroków

Wideo: Zegar zmierzchu/świtu Arduino: 15 kroków
Wideo: mn-tech.pl 34. Budowa sterownika akwariowego. Cz.3. Arduino, czas, 1xPWM 2024, Lipiec
Anonim
Zegar zmierzchu/świtu Arduino
Zegar zmierzchu/świtu Arduino

Streszczenie:

Ten zegar oparty na Arduino może przełączać jedno światło 220 V o zmierzchu, świcie lub o określonej godzinie.

Wstęp:

Niektóre światła w moim domu włączają się automatycznie o zmierzchu, do ustawionej godziny lub do świtu (całą noc).

Lokalizacja świateł nie pozwala na zastosowanie czujnika światła. Regularnie dostępne zegary zegarowe włączają się o określonej godzinie. Włączenie o zmierzchu wymaga zatem regularnego dostosowywania ustawień programu czasowego.

Jako miłe wyzwanie zdecydowałem się zbudować niestandardowy, samodzielny timer oparty na Arduino. Wykorzystuje zegar czasu rzeczywistego oraz bibliotekę Dusk2Dawn do określenia godziny, o której należy włączyć lub wyłączyć światło. Obudowa tego timera jest wydrukowana w 3D i można ją znaleźć na Thingiverse. Kod Arduino dla tego projektu można znaleźć na GitHub.

Przy tworzeniu tego timera czerpałem inspirację z wielu projektów i obwodów w Internecie. Dziękuję wszystkim współpracownikom, którzy nie są wyraźnie wymienieni.

Aby zapewnić czytelność, w razie potrzeby w krokach przedstawiono częściowe schematy zamiast pełnego schematu obwodu.

Alternatywne rozwiązania:

Zamiast samodzielnego timera istnieje wiele rozwiązań, w których oświetleniem steruje system inteligentnej automatyki domowej. Moim celem było posiadanie niezależnego rozwiązania, które nie zależy od łączności WIFI (lub innej).

Ograniczenia:

Kod dostarczony wraz z tym projektem zawierał implementację zmian dotyczących czasu letniego w oparciu o europejski system letniskowy.

Krok 1: Lista części i narzędzia

Lista części i narzędzia
Lista części i narzędzia

Części:

Całkowite koszty części (z wyłączeniem druku 3d) około 30 €, -.

  • Arduino Nano V3 (kompatybilny) bez nagłówków
  • Zasilanie 5V 0,6A (34x20x15mm)
  • Przekaźnik półprzewodnikowy 5V - Aktywny niski - 2A 230VAC
  • Zegar czasu rzeczywistego DS3231 (mały)
  • Wyświetlacz OLED 0,96” SPI 128*64 pikseli
  • Enkoder obrotowy - EC11 - 20mm
  • Pokrętło 6mm wałek 15mm * 17mm
  • Płytka drukowana z płytką do krojenia chleba,
  • 4 * śruby M3x25mm
  • Drukowana obudowa 3d
  • Rurki termokurczliwe
  • Przewody
  • Blok zacisków śrubowych (do podłączenia przewodów neutralnych)

Wymagane narzędzia:

  • Lutownica
  • Drut lutowniczy
  • Pompa rozlutownicza
  • Narzędzia do ściągania izolacji
  • Przecinaki
  • drukarka 3D (do wydruku obudowy)
  • Różne małe narzędzia

OSTRZEŻENIE

Ten obwód działa na 230 V AC i jeśli nie jesteś przyzwyczajony do pracy z napięciem sieciowym lub nie masz wystarczającego doświadczenia w pracy z napięciem sieciowym 230 V AC, trzymaj się z dala od tego projektu

Nie ponoszę odpowiedzialności za jakiekolwiek straty lub szkody wynikające bezpośrednio z lub w wyniku realizacji tego projektu

Zawsze zaleca się zachowanie odpowiedniej ostrożności i ostrożności podczas pracy przy zasilaniu prądem zmiennym

Krok 2: Przygotuj wyświetlacz OLED i zegar czasu rzeczywistego

Przygotuj wyświetlacz OLED i zegar czasu rzeczywistego
Przygotuj wyświetlacz OLED i zegar czasu rzeczywistego

Obudowa wydrukowana w 3D została zaprojektowana z myślą o minimalnym rozmiarze. W rezultacie należy usunąć nagłówki wyświetlacza OLED i zegara czasu rzeczywistego.

Przygotowując się do następnego kroku, usuń pozostałości lutowia z otworów za pomocą pompki do rozlutowywania.

Krok 3: Przygotuj enkoder obrotowy

Przygotuj enkoder obrotowy
Przygotuj enkoder obrotowy

Enkoder obrotowy ma cienkie złącza. Aby zapobiec uszkodzeniom, przymocuj kawałek płytki drukowanej do enkodera.

Na zdjęciu połączenie masowe (u góry po prawej i na środku na dole) jest już przygotowane.

Uwaga: Upewnij się, że enkoder obrotowy z płytką drukowaną pasuje do obudowy bez dotykania Arduino. Może być konieczne szlifowanie płytki drukowanej w celu dokładnego dopasowania.

Krok 4: Załącznik

Załącznik
Załącznik
Załącznik
Załącznik

Wydrukuj trzy części obudowy za pomocą drukarki 3d. Zapoznaj się z instrukcjami na Thingiverse.

Krok 5: Wyłącz diodę LED zasilania Arduino (opcjonalnie)

Wyłącz diodę LED zasilania Arduino (opcjonalnie)
Wyłącz diodę LED zasilania Arduino (opcjonalnie)

Aby zapobiec świeceniu zegara na zielono, dioda LED zasilania Arduino może zostać wyłączona.

Zauważ, że ta modyfikacja jest opcjonalna.

Modyfikacja Arduino Nano polega na usunięciu rezystora obok diody zasilania (patrz czerwone kółko na zdjęciu).

Krok 6: Zasilanie + przekaźnik półprzewodnikowy

Zasilacz + przekaźnik półprzewodnikowy
Zasilacz + przekaźnik półprzewodnikowy

W tym kroku zasilacz i przekaźnik półprzewodnikowy są łączone i montowane w dolnej części obudowy.

Połączenia między zasilaczem a przekaźnikiem są wykonane na dole tych elementów. Blok zacisków śrubowych przekaźnika będzie używany do połączenia z Arduino.

Uwaga: Podczas wykonywania połączeń należy upewnić się, że otwory montażowe przekaźnika półprzewodnikowego są wolne.

  • Przylutuj przewód połączeniowy między przekaźnikiem półprzewodnikowym A1 do jednego z połączeń AC zasilacza
  • Przylutuj przewód do drugiego złącza AC zasilacza (będzie on podłączony do bloku zacisków śrubowych zera w kroku 7)
  • Przylutuj przewód między zasilaczem -Vo a przekaźnikiem DC-
  • Przylutuj przewód do podłączenia zasilania +Vo do przekaźnika DC+

Uwaga: Może być konieczne skrócenie przewodów zasilacza i przekaźnika, aby zmieściły się w obudowie.

Krok 7: Arduino Nano + zasilacz + przekaźnik półprzewodnikowy

Arduino Nano + zasilacz + przekaźnik półprzewodnikowy
Arduino Nano + zasilacz + przekaźnik półprzewodnikowy

W tym kroku Arduino Nano jest podłączone do zasilania i przekaźnika półprzewodnikowego.

  • Przetnij dwa przewody o długości około 70 mm. Zdejmij 30 mm izolacji z jednej strony i 4 mm z drugiej strony.
  • Przylutuj bok z izolacją 30mm do Arduino +5V i GND, z wystającym przewodem
  • Wytnij dwie rurki termokurczliwe o długości 20 mm i zamontuj je na pozbawionej izolacji części 25 mm. To izoluje przewody do połączenia z blokiem zacisków śrubowych DC+ i DC- przekaźnika półprzewodnikowego.
  • Zwróć uwagę, że przewody dla GND i +5V muszą być skrzyżowane, aby prawidłowo połączyć się z blokiem zacisków śrubowych przekaźnika.
  • Przetnij przewód o długości około 40 mm i usuń 4 mm izolacji z obu końców. Przylutuj jedną stronę do złącza A2 z TYŁU Arduino, a drugą stronę podłącz do złącza CH1 półprzewodnikowego bloku zacisków śrubowych.

OSTRZEŻENIE

Arduino jest zasilane bezpośrednio ze stabilnego zasilacza +5V zamiast używania wewnętrznego regulatora mocy Arduino. Dlatego podłączenie USB nie jest bezpieczne, gdy Arduino otrzymuje zasilanie z zasilacza.

Zawsze odłączaj zasilanie 230VAC przed użyciem połączenia Arduino USB.

Krok 8: Arduino Nano + zegar czasu rzeczywistego

Arduino Nano + zegar czasu rzeczywistego
Arduino Nano + zegar czasu rzeczywistego

W tym kroku zegar czasu rzeczywistego jest podłączony do Arduino, częściowo za pomocą kabli przygotowanych w poprzednim kroku.

  • Przylutuj przewód wychodzący z Arduino GND (również podłączony do DC- przekaźnika) do „–” zegara czasu rzeczywistego.
  • Przylutuj przewód pochodzący z Arduino +5V (również podłączony do DC+ przekaźnika) do „+” zegara czasu rzeczywistego.
  • Przetnij dwa przewody o długości około 40 mm i usuń 4 mm izolacji z obu końców.
  • Przylutuj przewód pomiędzy Arduino A4 a zegarem czasu rzeczywistego D (SDA).
  • Przylutuj przewód pomiędzy Arduino A5 a zegarem czasu rzeczywistego C (SCL).
  • Ukształtuj przewody zegara czasu rzeczywistego, aby nie zakłócały pracy enkodera obrotowego. W tym celu przewody muszą znajdować się na dole obudowy.

Krok 9: Podłącz wyświetlacz OLED

Podłącz wyświetlacz OLED
Podłącz wyświetlacz OLED

W tym kroku do Arduino dodawany jest wyświetlacz OLED SPI.

  • Przetnij 2 przewody o długości 65 mm i usuń 4 mm izolacji z obu końców.
  • Przylutuj przewód do połączenia GND wyświetlacza OLED. Przylutuj ten przewód do izolowanego przewodu rurki termokurczliwej wychodzącej z Arduino GND (patrz krok 4) i podłącz oba przewody do bloku zacisków śrubowych DC-mount przekaźnika półprzewodnikowego.
  • Przylutuj przewód do złącza VCC wyświetlacza OLED. Przylutuj ten przewód do izolowanego przewodu termokurczliwego pochodzącego z Arduino +5 V (patrz krok 4) i podłącz oba przewody do bloku zacisków śrubowych DC+ przekaźnika półprzewodnikowego.
  • Przetnij 5 przewodów o długości 65 mm i usuń 4 mm izolacji z obu końców.
  • Przylutuj przewód do podłączenia D0 (CLK) do Arduino D10
  • Przylutuj przewód do podłączenia D1 (MOSI/DATA) do Arduino D9
  • Przylutuj przewód do podłączenia RES (RT) do Arduino D8
  • Przylutuj przewód do podłączenia DC do Arduino D11
  • Przylutuj przewód, aby podłączyć CS do Arduino D12

Uwaga: Kolejność przewodów wyświetlacza nie jest logiczna. Jest to wynik użycia najpierw przykładu Adafruit, a następnie zmiany połączeń, ponieważ użycie D13 powoduje, że przez cały czas na Arduino świeci się czerwona dioda LED.

Alternatywny

Możliwe jest użycie „normalnej” kolejności dla połączeń SPI. W tym celu należy odpowiednio dostosować definicję wyjścia cyfrowego programu Arduino w pliku oledcontrol.cpp:

// Korzystanie z oprogramowania SPI

// przypinanie definicji

#zdefiniuj CS_PIN 12

#zdefiniuj RST_PIN 8

#zdefiniuj DC_PIN 11

#zdefiniuj MOSI_PIN 9

#zdefiniuj CLK_PIN 10

Krok 10: Obrotowy enkoder

Enkoder obrotowy
Enkoder obrotowy

Schemat przedstawia połączenia Arduino z enkoderem obrotowym (enkoder widziany od góry).

  • Przetnij 4 przewody po 45 mm i usuń 4 mm izolacji z obu końców.
  • Podłącz Arduino GND do górnego prawego i dolnego środkowego złącza enkodera
  • Podłącz Arduino D2 do dolnego lewego rogu enkodera
  • Podłącz Arduino D3 do prawego dolnego rogu enkodera
  • Podłącz Arduino D4 do górnego lewego rogu enkodera

Krok 11: Instalacja w obudowie

Instalacja w obudowie
Instalacja w obudowie

Zamontuj całą elektronikę w dolnej części obudowy:

  • Wsuń Arduino na pionowe gniazdo
  • Wsuń zegar czasu rzeczywistego w dolną komorę
  • Wsuń zasilacz i przekaźnik do górnej komory, upewnij się, że przekaźnik jest osadzony na swoich mocowaniach.

Krok 12: Podłączanie do sieci / światło do przełączenia

Podłączanie do sieci / światła do przełączenia
Podłączanie do sieci / światła do przełączenia
Podłączanie do sieci / światła do przełączenia
Podłączanie do sieci / światła do przełączenia

OSTRZEŻENIE

Upewnij się, że zachowałeś odpowiednią ostrożność i środki ostrożności podczas pracy przy zasilaniu prądem zmiennym, upewnij się, że zasilanie prądem zmiennym jest odłączone

Nie ponoszę odpowiedzialności za jakiekolwiek straty lub szkody wynikające bezpośrednio z lub w wyniku realizacji tego projektu

  • Podłączyć fazę sieciową AC do listwy zaciskowej A1 (lewej) przekaźnika.
  • Podłącz fazę włączanego światła do listwy zaciskowej B1 (prawej) przekaźnika.
  • Do podłączenia przewodu neutralnego zasilania AC, przewodu neutralnego światła i przewodu neutralnego zasilacza należy użyć oddzielnego bloku zacisków śrubowych.
  • Aby odciążyć, zamontuj opaskę na każdym z przewodów zasilających.

Krok 13: Wykończenie obudowy

Wykończenie obudowy
Wykończenie obudowy

Na tym etapie montaż w obudowie jest zakończony

  • Wsuń wyświetlacz OLED przez otwór montażowy wyświetlacza w środkowej części obudowy.
  • Przesuń enkoder obrotowy przez otwór w środkowej części, upewnij się, że zabezpieczenie przed obrotem jest wyrównane. Zamontuj enkoder obrotowy za pomocą dołączonej podkładki i nakrętki.
  • Zamontuj górną część obudowy i zamknij obudowę montując cztery śruby M3x25mm od dołu.

Krok 14: Programowanie Arduino

OSTRZEŻENIE

Arduino jest zasilane bezpośrednio ze stabilnego zasilacza +5V zamiast używania wewnętrznego regulatora mocy Arduino. Dlatego podłączenie USB nie jest bezpieczne, gdy Arduino otrzymuje zasilanie z zasilacza.

Zawsze odłączaj zasilanie 230VAC przed użyciem połączenia Arduino USB.

Pobierz program czasowy Arduino z GitHub.

Program ten wykorzystuje środowisko Arduino IDE, które można pobrać tutaj.

Program wykorzystuje następujące dodatkowe biblioteki:

SSD1303Ascii

Biblioteka Arduino Wire

Zauważ, że biblioteka dusk2dawn jest również używana, ale dołączona jako kod ze względu na zmianę jej interfejsu.

Aby zapewnić prawidłowe obliczanie zmierzchu / świtu, należy ustawić długość i szerokość geograficzną oraz strefę czasową.

Jak opisano w przykładzie dusk2dawn, łatwym sposobem na znalezienie długości i szerokości geograficznej dla dowolnej lokalizacji jest znalezienie miejsca w Mapach Google, kliknięcie prawym przyciskiem myszy miejsca na mapie i wybranie „Co tu jest?”. Na dole zobaczysz kartę ze współrzędnymi.

Długość i szerokość geograficzna są zapisane na stałe w programie, w wierszu 19 i 20 Dusk2Dawn.cpp:

/* Tutaj należy ustawić szerokość i długość geograficzną swojej lokalizacji.

* * WSKAZÓWKA: Prostym sposobem na znalezienie długości i szerokości geograficznej dowolnej lokalizacji jest * znalezienie miejsca w Mapach Google, kliknięcie prawym przyciskiem myszy miejsca na mapie i * wybranie „Co tu jest?”. Na dole zobaczysz kartę ze współrzędnymi *. */ #define LATITUDE 52.097105; // Utrecht #define LONGTITUDE 5.068294; // Utrecht

Strefa czasowa jest również zakodowana na sztywno w linii 24. Dusk2Dawn.cpp. Domyślnie ustawiona jest na Holandia (GMT + 1):

/* Tutaj wpisz swoją strefę czasową (przesunięcie względem GMT).

*/ #define STREFA CZASOWA 1

Przy pierwszym programowaniu Arduino należy zainicjalizować pamięć EEPROM. W tym celu zmień wiersz 11 timera.cpp, aby wykonać inicjalizację EEPROM:

// zmiana na true przy pierwszym programowaniu

#define INITIALIZE_EEPROM_MEMORY fałszywe

Wgraj program do Arduino i uruchom Arduino.

Wyłącz inicjalizację EEPROM i ponownie wgraj program do Arduino. Zegar będzie teraz pamiętał ustawienia czasu przełączania po ponownym uruchomieniu.

Krok 15: Konfiguracja czasu i czasów przełączania

Koncepcje interakcji z użytkownikiem:

  • Krótkie naciśnięcie służy do potwierdzania wyboru. Ponadto na głównym ekranie timera krótkie naciśnięcie włącza lub wyłącza światło.
  • Długie naciśnięcie służy do wejścia do menu z głównego ekranu timera. W dowolnym miejscu menu długie naciśnięcie spowoduje powrót do głównego ekranu timera.
  • ‘>’ Kurs selekcji. Ten kursor wskazuje wybraną opcję w menu.

Główny ekran timera

Główny ekran timera pokazuje:

Dzień tygodnia Su

Aktualna godzina 16:00

Aktualny stan timera i następny czas przełączenia Timer wyłączony do 17:12

Czas świtu i zmierzchu Świt 08:05 Zmierzch 17:10

Ustawienie prawidłowego czasu

Przytrzymaj, aby wejść do menu. Wyświetlane są następujące opcje:

PowrótUstaw godzinęProgram dnia tygodniaProgram weekenduOpcje

Wybierz ustaw czas, aby ustawić datę i godzinę zegara czasu rzeczywistego. Wprowadź prawidłowe wartości dla:

RokMiesiącDzieńGodzina

Timer automatycznie określa dzień tygodnia. Przełączanie czasu letniego odbywa się również automatycznie. Czas letni jest zaimplementowany tylko dla europejskiej strefy czasowej.

Ustawianie programu czasowego

Timer ma 2 programy, jeden na dni tygodnia, jeden na weekend. Pamiętaj, że piątek jest uważany za część weekendu, światła mogą pozostać włączone nieco dłużej.

Każdy timer ma moment włączenia i wyłączenia. Momentem może być:

  • Czas: dokładnie określony czas
  • Świt: Przełączanie na podstawie obliczonego czasu świtu
  • Zmierzch: Przełącznik oparty na obliczonym czasie zmierzchu

Dla zmierzchu i świtu możliwe jest wprowadzenie wartości korekty 59 minut przed lub po.

Przykłady:

Aby włączyć światło na całą noc, wybierz włącz o (zmierzch + 10min), wyłącz o (świt - 10min)

Aby zapalić światło wieczorem wybierz włącz o zmierzchu, wyłącz o godzinie 22:30.

Opcje

Na ekranie opcji można ustawić limit czasu przełączania ekranu.

Gdy ekran jest wyłączony, naciśnięcie pokrętła enkodera spowoduje powrót do głównego ekranu timera.

Zalecana: