Spisu treści:

Budzik binarny Arduino DIY: 14 kroków (ze zdjęciami)
Budzik binarny Arduino DIY: 14 kroków (ze zdjęciami)

Wideo: Budzik binarny Arduino DIY: 14 kroków (ze zdjęciami)

Wideo: Budzik binarny Arduino DIY: 14 kroków (ze zdjęciami)
Wideo: Arduino 7: BUDZIK 2024, Lipiec
Anonim
DIY binarny budzik Arduino
DIY binarny budzik Arduino
DIY binarny budzik Arduino
DIY binarny budzik Arduino
DIY binarny budzik Arduino
DIY binarny budzik Arduino

To znowu klasyczny zegar binarny! Ale tym razem z jeszcze większą funkcjonalnością! W tej instrukcji pokażę, jak zbudować binarny budzik z Arduino, który może pokazywać nie tylko godzinę, ale także datę, miesiąc, nawet z funkcjami timera i alarmu, które mogą być również używane jako lampka nocna! Bez zbędnych ceregieli zacznijmy!

Uwaga: Ten projekt nie wykorzystuje modułu RTC, więc dokładność zależy od użytej płyty. Dołączyłem mechanizm korygujący, który skoryguje dryf czasu w określonym przedziale czasu, ale będziesz musiał poeksperymentować, aby znaleźć prawidłową wartość dla tego okresu (więcej na ten temat poniżej), a nawet z mechanizmem korygującym nadal będzie dryfował przez długi czas (w porównaniu z brakiem). Zainteresowanych zapraszam do wdrożenia modułu RTC w tym projekcie

Kieszonkowe dzieci

Dioda LED 5mm (dowolnego koloru, użyłem 13 białych diod LED z jedną diodą RGB jako wskaźnikiem) --- 14 szt

Arduino Nano (inne mogą działać) --- 1 szt

Mikroprzełącznik --- 1 szt

Mały kawałek folii aluminiowej

Płyta montażowa (do obudowy, ale możesz zaprojektować własną)

Kawałek białego papieru (lub innego koloru)

Trochę folii z tworzywa sztucznego (tej używanej jako okładka książki)

Wiązka przewodów

Brzęczyk --- 1 szt

Tranzystor NPN --- 1 szt

Rezystory 6k8 --- 14 szt, 500R --- 1 szt, 20R (10Rx2) --- 1 szt, 4k7 --- 1 szt

Zasilanie do projektu (użyłem baterii li-on)

Taśma LED 5050 i przełącznik suwakowy (opcja)

Krok 1: Podłącz obwód

Podłącz obwód!
Podłącz obwód!

Podzielę ten krok na:

1) część brzęczyka

2) Panel LED

3) Przełącznik (przycisk)

4) pasek LED

5) czujnik pojemności;

6) Zasilanie

7) Połącz je wszystkie z Arduino

W większości przypadków jest to po prostu krok „podążaj za schematem”. Więc sprawdź powyższy schemat lub nawet pobierz i wydrukuj!

Krok 2: Przygotowanie części brzęczyka

Przygotowanie części brzęczyka
Przygotowanie części brzęczyka
Przygotowanie części brzęczyka
Przygotowanie części brzęczyka
Przygotowanie części brzęczyka
Przygotowanie części brzęczyka

Jeśli używałeś wcześniej buzzera z Arduino, będziesz wiedział, że jeśli podłączymy go bezpośrednio do Arduino, nie będzie wystarczająco głośno. Więc potrzebujemy wzmacniacza. Do skonstruowania wzmacniacza potrzebujemy tranzystora NPN (w zasadzie każdy NPN będzie działał, użyłem S9013, bo dostałem go ze starego projektu) i rezystora ograniczającego prąd. Aby rozpocząć, najpierw zidentyfikuj kolektor, emiter i bazę tranzystora. Trochę googlowania arkusza danych będzie w tym celu działać. Następnie przylutuj kolektor tranzystora do ujemnego zacisku brzęczyka. Na dodatnim zacisku brzęczyka po prostu przylutowujemy do niego kawałek drutu, abyśmy mogli go później przylutować do naszego Arduino. Następnie przylutuj rezystor 500R (lub o podobnej wartości rezystora) do bazy tranzystora i od rezystora przylutuj kolejny kawałek drutu do wykorzystania w przyszłości. Na koniec przylutuj szeregowo dwa rezystory 10R do emitera tranzystora i podłącz drugi przewód z rezystorów.

Naprawdę, odnieś się do schematu.

p/s: W chwili pisania tego nie wiem jak dobrać rezystor do tranzystora. Użyta przeze mnie wartość jest dobierana empirycznie.

Krok 3: Przygotowanie panelu LED

Przygotowanie panelu LED
Przygotowanie panelu LED
Przygotowanie panelu LED
Przygotowanie panelu LED
Przygotowanie panelu LED
Przygotowanie panelu LED

Podłącz odpowiednio diody LED i rezystor do płytki prototypowej i przylutuj. Otóż to. Postępuj zgodnie ze schematem. Jeśli interesuje Cię zastosowany odstęp, 3 otwory na każdą kolumnę i 2 otwory na każdy rząd (patrz rysunek). A kontrolka LED? Podłączyłem go losowo.

Po przylutowaniu diod i rezystora do płytki połącz ze sobą wszystkie dodatnie zaciski diod. Następnie przylutuj przewody jeden po drugim do każdego z rezystorów na ujemnych zaciskach diod LED, abyśmy mogli później przylutować je do Arduino.

UWAGA: Ten krok może Cię pomylić. Pamiętaj, zamiast łączyć wszystkie masy razem, łączymy wszystkie zaciski dodatnie razem, a zacisk ujemny do pojedynczego pinu w Arduino. Dlatego używamy pinu Arduino GPIO jako uziemienia, a nie Vcc. W przypadku, gdy przypadkowo połączysz go z powrotem, nie martw się. Możesz zmienić wszystkie wartości HIGH na LOW i LOW na HIGH w funkcji ledcontrol.

Krok 4: Przygotowanie przełącznika (właściwie przycisk)

Przygotowanie przełącznika (właściwie przycisk)
Przygotowanie przełącznika (właściwie przycisk)
Przygotowanie przełącznika (właściwie przycisk)
Przygotowanie przełącznika (właściwie przycisk)
Przygotowanie przełącznika (właściwie przycisk)
Przygotowanie przełącznika (właściwie przycisk)

Do przełącznika (nazwę go przełącznikiem, bo użyłem mikroprzełącznika, ale wiesz, że to przycisk) potrzebujemy rezystora 4k7 pull-down i oczywiście samego przełącznika. Ach, nie zapomnij przygotować przewodów. Zacznij od przylutowania rezystora i kawałka drutu do masy (COM) mikroprzełącznika. Następnie przylutuj kolejny kawałek drutu do normalnie otwartego (NO) mikroprzełącznika. Na koniec podłącz kolejny przewód do rezystora. Zabezpiecz go gorącym klejem.

Kącik wiedzy: Dlaczego potrzebujemy rezystora pull-down?

„Jeśli odłączysz pin I/O cyfrowe od wszystkiego, dioda LED może nieregularnie migać. Dzieje się tak dlatego, że wejście jest „pływające” – to znaczy, że losowo zwróci albo WYSOKI, albo NISKI. Dlatego potrzebujesz podciągania lub rezystor pull-down w obwodzie. -- Źródło: strona Arduino

Krok 5: Przygotowanie taśmy LED

Przygotowanie taśmy LED
Przygotowanie taśmy LED
Przygotowanie taśmy LED
Przygotowanie taśmy LED

Taśma LED jest przeznaczona do lampki nocnej, która jest opcjonalna. Wystarczy połączyć szeregowo pasek LED i przełącznik suwakowy, nic specjalnego.

Krok 6: Przygotowanie czujnika pojemności

Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności
Przygotowanie czujnika pojemności

Ok patrz na zdjęcie. Zasadniczo po prostu przymocujemy przewód do małego kawałka folii aluminiowej (ponieważ folii aluminiowej nie można lutować), a następnie przykleimy go na małym kawałku płyty montażowej. Uprzejmie przypomnienie, upewnij się, że folia aluminiowa nie została całkowicie zaklejona taśmą. Pozostaw część odsłoniętą do bezpośredniego kontaktu.

Krok 7: Przygotowanie zasilacza

Przygotowanie zasilacza
Przygotowanie zasilacza
Przygotowanie zasilacza
Przygotowanie zasilacza
Przygotowanie zasilacza
Przygotowanie zasilacza

Ponieważ jako zasilacz używałem akumulatora litowo-jonowego, potrzebuję modułu TP4056 do ładowania i ochrony oraz konwertera doładowania do konwersji napięcia na 9v. Jeśli zdecydujesz się użyć adaptera ściennego 9V, możesz potrzebować gniazda DC lub po prostu podłączyć go bezpośrednio. Zauważ, że wartość rezystora dla wzmacniacza jest zaprojektowana dla 9V i jeśli chcesz użyć innego napięcia, być może będziesz musiał zmienić rezystor.

Krok 8: Podłączanie ich do Arduino

Podłączanie ich do Arduino
Podłączanie ich do Arduino
Podłączanie ich do Arduino
Podłączanie ich do Arduino
Podłączanie ich do Arduino
Podłączanie ich do Arduino

Postępuj zgodnie ze schematem! Postępuj zgodnie ze schematem! Postępuj zgodnie ze schematem!

Nie podłączaj złego pinu, bo rzeczy będą dziwne.

Krok 9: Obudowa

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

Wymiar mojego projektu to 6,5 cm * 6,5 cm * 8 cm, więc jest trochę nieporęczny. Składa się z przedniej szyby na wyświetlacz LED i górnego okienka na lampkę nocną. Dla mojego projektu, patrz zdjęcia.

Krok 10: Czas programowania

Image
Image
Czas programowania!
Czas programowania!

Pobierz mój szkic poniżej i wgraj do swojego Arduino. Jeśli nie wiesz, jak to zrobić, nie zawracaj sobie głowy tym projektem! Nie żartuję, oto dobry samouczek na ten temat: Prześlij szkic do arduino

Następnie otwórz monitor szeregowy i powinieneś zobaczyć, jak wyświetla bieżący czas. Aby ustawić czas, oto jak to zrobić.

Aby ustawić godzinę: h, XX -- gdzie xx to aktualna godzina

Aby ustawić minuty: min, XX -- xx to bieżąca minuta

Aby ustawić sekundę: s, XX

Aby ustawić datę: d, XX

Aby ustawić miesiąc: pon, XX

Kiedy powyższy komentarz zostanie wykonany, powinien zwrócić ci właśnie ustawioną wartość. (Na przykład, gdy ustawisz godzinę za pomocą h, 15, powinno zwrócić godzinę: 15 w monitorze szeregowym.

W przypadku czujnika pojemności może być konieczna kalibracja, zanim zacznie działać. Aby to zrobić, naciśnij dwukrotnie mikroprzełącznik i spójrz na monitor szeregowy. Powinno to wypisać kilka liczb. Teraz połóż palec na czujniku pojemności i zobacz, zwróć uwagę na zakres liczby. Następnie zmodyfikuj zmienną „captrigger”. Załóżmy, że po naciśnięciu otrzymujesz 20-30, a następnie ustawiasz wyzwalacz na 20.

Szkic korzysta z biblioteki ADCTouch, upewnij się, że go zainstalowałeś.

Krok 11: Mechanizm naprawczy

Okres czasu dla mechanizmu korekcyjnego w moim kodzie jest ustawiony na taki, który jest dla mnie właściwy. Jeśli czas nadal nie jest dokładny, należy zmienić wartość zmiennej „corrdur”

W najnowszej aktualizacji corrdur jest teraz domyślnie ustawiony na 0.

Wartość corrdur oznacza, ile milisekund zajmuje spowolnienie jednej sekundy

Aby poznać wartość korrduru, użyj wzoru:

2000/(y-x)/x)

gdzie x=rzeczywisty czas, jaki upłynął, a y=czas trwania zegara, oba w sekundach

Aby znaleźć wartość x i y, musisz przeprowadzić mały eksperyment.

Ustaw czas zegara na aktualny czas i zapisz czas początkowy (rzeczywisty czas początkowy i czas początkowy zegara powinny być takie same). Po chwili (kilka godzin) zanotuj ostateczną rzeczywistą godzinę i zegar czasu końcowego.

x=rzeczywisty czas końcowy-czas początkowy i y=czas końcowy-czas początkowy-zegar

Następnie zmień wartość corrdur w kodzie i prześlij ponownie do Arduino.

Następnie powtórz test i tym razem formuła zmieniła się na:

2000/((2/z)+(y-x/x))

Gdzie x i y to to samo, co poprzednio, podczas gdy z jest bieżącą wartością corrdur.

Prześlij ponownie i wykonuj test w kółko, aż będzie wystarczająco dokładny.

W przypadku, gdy twój zegar nadal przyspiesza, nawet jeśli corrdur jest ustawiony na 0 (oznacza brak mechanizmu korekcyjnego), musisz zmienić sekund++ na sekundę -- w części kodu mechanizmu korekcyjnego (ja to skomentowałem), ustaw corrdur na 0, następnie znajdź nie. milisekund, aby przyspieszyć jedną sekundę.

Krok 12: Jak korzystać ze wszystkich funkcji

Image
Image

Możesz zmienić tryb, naciskając mikroprzełącznik.

W pierwszym trybie po prostu wyświetla czas. Jeśli kontrolka miga 1 raz na sekundę, alarm jest wyłączony. Jeśli 2 razy na sekundę, alarm jest włączony. Możesz włączyć drzemkę alarmu na 10 minut w pierwszym trybie, naciskając czujnik pojemności.

W drugim trybie wyświetla datę. Naciśnięcie czujnika pojemności nic nie robi.

W trzecim trybie możesz ustawić timer. Naciśnięcie czujnika pojemności włączy timer i powinieneś zobaczyć, że kontrolka zacznie migać. Czujnik pojemności służy również do ustawiania czasu timera. Zakres timera wynosi od 1 minuty do 59 minut.

W czwartym trybie możesz ustawić godzinę alarmu za pomocą czujnika pojemności;

W piątym trybie można ustawić minutę alarmu za pomocą czujnika pojemności.

W szóstym trybie naciśnięcie czujnika pojemności resetuje minuty na 30, a sekundy na 0 bez zmiany godziny. Oznacza to, że dopóki twój zegar nie dryfuje przez 30 minut, możesz go ponownie skalibrować za pomocą tego trybu.

Siódmy tryb to tryb nic nie rób w przypadku, gdy czujnik pojemności zepsuje się podczas ładowania.

Och, aby odrzucić alarm, wystarczy nacisnąć mikroprzełącznik. (NAJNOWSZA AKTUALIZACJA DOTYCZĄCA DRZEMKI ALARMU)

A co powiesz na odczytanie zegara? To jest łatwe! Czytanie zegara binarnego -- Wikihow Na początku możesz czuć się dziwnie, ale przyzwyczaisz się do tego!

Krok 13: Wniosek

Wniosek
Wniosek
Wniosek
Wniosek

Dlaczego zacząłem ten projekt. Początkowo to dlatego, że mam stary zegarek cyfrowy, który leży w pobliżu i chcę go zamienić w budzik. Niestety stary zegarek okazał się zepsuty. Więc pomyślałem, dlaczego nie zbudować jednego za pomocą Arduino? Przy odrobinie wyszukiwania w Google znalazłem ten projekt zegara binarnego bez RTC na instruktażu Cello62. Jednak nie ma funkcji budzika, której chcę, więc biorę kod i sam go modyfikuję. I narodził się projekt. Co więcej, ostatnio widziałem konkurs z zegarem na instruktażu, co dało mi jeszcze większą motywację do tego. W każdym razie to wciąż mój pierwszy projekt wykorzystujący Arduino, więc kilka możliwych ulepszeń.

Przyszła poprawa:

1) Użyj RTC

2) Ustaw alarm, czas lub minutnik bezprzewodowo!

3) Niezależnie od funkcji, o której myślę

Krok 14: Aktualizacja: po tygodniu użytkowania

Aktualizacja: po tygodniu użytkowania
Aktualizacja: po tygodniu użytkowania
Aktualizacja: po tygodniu użytkowania
Aktualizacja: po tygodniu użytkowania
Aktualizacja: po tygodniu użytkowania
Aktualizacja: po tygodniu użytkowania

Oprócz oczywistego problemu - dryfu czasu, następnym powiedziałbym, że jest zużycie energii. Najpierw podnoszę napięcie do 9v, które następnie będzie obniżane przez regulator liniowy w Arduino. Regulator liniowy jest bardzo nieefektywny. Zegar trwa tylko JEDEN DZIEŃ. To znaczy, że muszę go ładować codziennie. To nie jest największa sprawa, dopóki nie zdasz sobie sprawy, że cały system jest wydajny tylko w około 50%. Biorąc pod uwagę, że moja bateria ma 2000 mAh, byłbym w stanie obliczyć zużycie energii każdego dnia.

Zmarnowana moc=(7.4Wh*10%)+(7.4Wh*90%*50%)=4.07Wh dziennie

Czyli 1,486 kWh rocznie! Którego można użyć do zagotowania 283 g wody (od 25 C do 100 C)? Ale tak czy inaczej zamierzam poprawić wydajność zegara. Sposobem na to jest w ogóle nie używać regulatora liniowego. Oznacza to, że musimy dostosować konwerter doładowania, aby wyprowadzał napięcie 5 V bezpośrednio na pin 5 V w Arduino. Następnie, aby jeszcze bardziej zminimalizować marnowanie energii, muszę usunąć dwie diody LED na płycie (pin13 i zasilanie), ponieważ będą one marnować 0,95 Wh dziennie. Niestety w lutowaniu SMD jestem totalnie nieznośny, więc jedynym sposobem, aby to zrobić, jest przecięcie szyny na płytce. Po tym muszę wymontować rezystor emiterowy na brzęczyku i lampce nocnej (taśma LED nie działa przy 5V). Ale czy to oznacza, że musisz zrezygnować z tej niesamowitej funkcji? Nie! Masz tutaj dwie możliwości: użyj zwykłej diody LED 5mm lub użyj taśmy LED 5V. Ale dla mnie byłem już zmęczony robieniem tego projektu przez cały zeszły tydzień, więc postanowiłem zrezygnować z tej funkcji. Jednak pierwotnie używałem przełącznika do funkcji światła do włączania lub wyłączania panelu zegara w celu dalszego oszczędzania energii, ale skończyło się na tym, że dioda LED miga, gdy ją wyłączam. Bug stał się funkcją? Nie wiem (Ktoś wie, proszę powiedz mi poniżej).

Pod koniec modyfikacji zegar trwa już ponad 2 dni!

Następnie mam mniej poważny problem z zegarem. Podczas ładowania czujnik pojemności wariował, więc dodaję kolejny tryb, który zupełnie nic nie robi.

Jeśli chodzi o dryf czasu, ponieważ bardzo niewygodne jest codzienne podłączanie komputera, aby go zresetować, dodałem inny tryb, który ustawia minuty na 30, a sekundy na 0. Oznacza to, że możesz go zresetować o pół do godziny!

Zalecana: