Zegar ścienny TheSUN, Arduino Powered Design: 6 kroków (ze zdjęciami)
Zegar ścienny TheSUN, Arduino Powered Design: 6 kroków (ze zdjęciami)
Anonim
TheSUN, zegar ścienny z zasilaniem Arduino
TheSUN, zegar ścienny z zasilaniem Arduino
TheSUN, zegar ścienny z zasilaniem Arduino
TheSUN, zegar ścienny z zasilaniem Arduino
TheSUN, zegar ścienny z zasilaniem Arduino
TheSUN, zegar ścienny z zasilaniem Arduino

Witam ponownie Instructables-Luks!:-P

Z powodu problemów z wysyłką nie byłem w stanie kontynuować mojego projektu ABTW, więc postanowiłem pokazać Wam kolejne, moje najnowsze dzieło.

Myślę, że wielu z nas, tak jak ja, lubi te ładne adresowalne paski LED (zwane również NEOPIXEL LED). Możesz je dostać od ADAFRUIT. Inni sprzedawcy również będą dostarczać podobne produkty. Istnieje biblioteka dostępna na ADAFRUITS - GitHub (kliknij mnie), w tym przykładowy kod. Więc kodowanie powinno być proste…

Zobaczyłem te NEOPIXELE i pomyślałem, co ja… mogę zrobić z tymi lśniącymi drobiazgami.

  • Wyświetlacz z matrycą LED? -> Za skomplikowane i nie używam go (w tej chwili)
  • Oświetlenie świąteczne? -> Pasuje do sezonu, ale taniej byłoby kupić:-P
  • zegar? -> Dlaczego nie! Ale powinno być stylowe i nieszablonowe

Zróbmy więc zegar ścienny.

Jeśli przyjrzymy się bliżej naszemu zegarkowi na rękę (jeśli masz analogowy taki jak ja), zauważymy, że mamy 12 godzin i 60 minut (miejmy nadzieję). Oznacza to, że potrzebujemy 60 adresowalnych diod LED, phu! Jeśli weźmiemy pasek z 60 diodami LED / metr, otrzymamy średnicę ~318mm (promień = zasięg /(2*Π)) to zdecydowanie za duży.

Prawda jest taka, że jeśli zapytasz kogoś o godzinę, nikt nie powie, że jest 2 minuty po 3! W odpowiedzi otrzymasz „Jest 5 po 3”. Dlaczego więc nie skalować wszystkiego do 5 minut? Do tego będziemy potrzebować tylko 12 diod, co oznacza, że otrzymamy średnicę 63,6mm. Jesteśmy również w stanie rozróżnić godziny i minuty, nadając im osobny kolor. Do „brakujących” pojedynczych kroków minutowych będziemy również mogli dodać dodatkowy pasek 4 diod LED (lub pojedynczą adresowalną diodę LED.

TO JEST PLAN! Zobaczmy, jak wszystko zrobiłem. Jak zawsze dostarczę listę/zestawienie materiałów i instrukcje, jak to zbudować.

Jeśli myślisz, że tylko Szwajcarzy mogą robić fajne zegary, pokażmy, że się mylisz (przepraszam, Szwajcaria:-P)

Krok 1: Projekt i wybór materiałów

Projekt i wybór materiałów
Projekt i wybór materiałów
Projekt i wybór materiałów
Projekt i wybór materiałów

Projekt:

Jeśli ponownie przyjrzymy się naszemu analogowemu zegarkowi/zegarowi, zobaczymy, że okrąg jest podzielony na 12 * 30° kroków, o których wiemy, że potrzebujemy 63,6 mm na pasek LED. Powinno więc być możliwe ustawienie paska wokół rury. Zdecydowałem się na zastosowanie szkła akrylowego, ponieważ ładnie wygląda i można w nim zatopić światło LED, a przy każdej skazie w szkle nastąpi pewne rozproszenie światła. Powiedzmy więc: więcej zanieczyszczeń prowadzi do większego rozpraszania światła! Właśnie tego chcemy. Więc chwyć swoje narzędzia do grawerowania i bądź kreatywny:-)

Jeśli odniesiesz się do mojej listy BoM i nazwy, którą nadałem zegarowi, wybrałem projekt podobny do słońca. Wszystkie części akrylowe dostałem od niemieckiego sprzedawcy na E-Bay (link podany w BoM). Dla mojego projektu będziesz potrzebować:

  • akrylowa płyta podkładowa, transparentna grubość = 6mm, średnica = 300mm
  • akrylowa płyta środkowa, transparentna grubość = 3mm, średnica = 150mm
  • szyld akrylowy, satyna, grubość = 3mm, średnica = 90mm
  • tuba akrylowa, przezroczysta, średnica zewnętrzna = 64mm (będziemy musieli trochę podrasować taśmą LED)
  • pręt akrylowy, przezroczysty, średnica = 5mm (to będą nasze belki); Wokół są też akrylowe pręty z bąbelkami w środku, polecam je, ale ich nie mam.
  • klej akrylowy

Elektronika (patrz teczki Fritzing):

  • Arduino mini (lub podobny)
  • 1 adresowalna taśma LED (12 diod LED co godzinę i 5 minut)
  • 4 adresowalne diody LED (pojedyncze minuty)
  • Rezystory 2 330 omów
  • 1 1000µF kondensator
  • 1 zasilacz (5V/500mA)
  • RTC DS-1307 (opcjonalnie!)
  • Moduł Bluetooth (opcjonalnie! tak, czas można ustawić za pomocą BT i smartfona z systemem Android)

Jeśli zapytasz siebie, dlaczego mam chipy MAX485 na moim BoM. Odpowiedź brzmi, że chcę zsynchronizować zegar z systemem automatyki domowej, który zamierzam wykonać (nigdy już nie będę musiał ustawiać zegara na czas letni:-P). Opiszę to na moim blogu w następnym kilka tygodni/miesiąc.

Jak zauważyłeś, postaram się również wyłączyć zegar z sieci za pomocą niektórych paneli słonecznych i LiPo, ale nie omawiam tego w tym Instruktażu, możesz spróbować sam.

Krok 2: Przygotuj części akrylowe

Przygotuj części akrylowe
Przygotuj części akrylowe
Przygotuj części akrylowe
Przygotuj części akrylowe
Przygotuj części akrylowe
Przygotuj części akrylowe

Narzędzia:

Przede wszystkim jest bardzo pomocne, jeśli wydrukujesz dodany przeze mnie plan DWG w skali 1:1. Pomoże to wyrównać wszystkie części i posłuży jako plan wiercenia. Ponadto będziesz potrzebować:

  • nóż hobby
  • miernik ukosu
  • brzeszczot
  • zaciski
  • wiertarka ręczna
  • może wiercić, średnica 65mm
  • zestaw wierteł do metalu
  • mały metalowy pilnik
  • klej akrylowy

Zaczynajmy:

Weź płytę gruntową i ustaw ją na planie, aby uzyskać środek okręgu. Teraz weź wiertarkę ręczną z zamontowanym wiertłem do puszek i wywierć (bardzo powoli! nie za dużo!) otwór w środku płyty gruntowej, zewnętrzny okrąg powinien mieć głębokość ~2-3mm. Ma to na celu zatopienie taśmy LED w płycie uziemiającej (pasek LED o szerokości ~10mm, promienie o średnicy tylko 5mm) i wyrównanie ich z belkami (patrz rysunek 1).

Teraz potrzebujemy piły do metalu, kątomierza i akrylowej rurki. Po prostu pociąłem go na kawałki i postanowiłem zrobić obudowę (tubę) o długości 40mm (zdjęcie 2). Teraz chwyć ponownie piłę do metalu i zrób mały felg z jednej strony tuby, wygładzając ją metalowym pilnikiem. Tam wyjdą przewody;-) (patrz zdjęcie 3)

Czas na trochę kleju…Weź środkową płytkę (d=150mm) i przednią płytkę (satynowa). wyrównaj je ponownie na planie, nałóż trochę kleju na środek środkowej płyty, wyrównaj przednią płytkę i poczekaj, aż klej jest lekko utwardzony. Klej, którego użyłem jest światłoutwardzalny i może to potrwać do 2-3h, więc może chcesz użyć zacisku… (zdjęcie 3 i 4)

Zrób to samo, aby przykleić rurkę do płyty uziemiającej, upewnij się, że zakładka jest skierowana w stronę płyty i jest wyrównana w miejscu, w którym ma być pierwsza dioda LED (na godzinie 12).

Poczekaj, aż stwardnieje!

Możemy teraz wyrównać 2 części (bookmatch) na planie i wywiercić nasze 4 jednominutowe otwory (o średnicy 5 mm lub średnicy wybranej diody LED; wiercić powoli, nie wywierając zbyt dużego nacisku). Wiercić na głębokość około 8-9mm. Uważaj, satynowana płyta jest bardzo krucha i może pęknąć, jeśli przewiercisz się zbyt głęboko. Możesz teraz je skleić lub zdecydować, tak jak ja, wyciąć zagrożenie w płycie uziemienia i przymocować ją śrubą.

Ponownie poczekaj, aż klej stwardnieje. Teraz wyrównaj i przyklej belki do płyty podłogowej. (zdjęcie 6) Zgadnij co… poczekaj, aż klej stwardnieje:-) Przejdźmy do elektroniki…

Krok 3: Elektronika

Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika
Elektronika

Narzędzia:

  • lutownica
  • drut lutowniczy
  • nóż hobby
  • mały kawałek prototypowej płytki PCB
  • emaliowany drut lub dowolny inny preferowany drut
  • gorący klej

Zacząłem używać pojedynczych diod LED. Jeśli używasz drutu emaliowanego, nie zapomnij zeskrobać lakieru przed lutowaniem. Możesz do tego użyć noża hobbystycznego. Podłącz je, możesz odnieść się do zdjęcia z pinoutem na flikto.de. Zauważ, że DOUT przechodzi do DIN na następnej diodzie LED! (patrz zdjęcie 2) Następnie możesz pociąć pasek LED na 4 elementy, każdy z 3 diodami LED. Pamiętaj, że mamy Taśmę LED 63,6mm i zewnętrzną średnicę tuby 64mm, więc potrzebujemy trochę „dodatkowej długości, aby dopasować ją dokładnie do wiązek. jako "wiązkę zasilania" i będzie zawierał komponenty do taśm LED (dwa rezystory 330Ohm i kondensator 1000µF, rysunek 7).

Teraz zamontuj pasek wokół rury, dopasuj diody LED do wiązek. Pierwszy Pixel pasuje do godziny 12. Jeśli odwróciłeś swoje mieszkanie, nie zapominaj, że wszystko jest odzwierciedlone. Kontynuuj w kierunku przeciwnym do ruchu wskazówek zegara! Użyj gorącego kleju, aby przymocować go do tuby. Mała kropla na każdy segment wystarczy!

Możesz zrobić to samo dla pojedynczych diod LED (ewentualnie lustrzanych), wystarczy dodać trochę gorącego kleju i wcisnąć je w nawiercone otwory.

Nie podłączaj jeszcze Arduino, użyjemy złącza szeregowego sprzętowego do połączenia BT, więc najpierw sprawdź kolejne kroki, w których opisuję oprogramowanie.

Krok 4: Kod

Kod
Kod
Kod
Kod

Możesz teraz załadować szkic do Arduino. Możesz teraz również okablować taśmy LED. Nie podłączaj modułu BT!!! Najpierw chcemy rzucić okiem na kod, powinieneś wiedzieć, gdzie możesz poprawić kilka rzeczy…

Pobierz Arduino IDE i biblioteki. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC

Zainstaluj IDE i umieść biblioteki w folderze library. Otwórz załączony plik INO i prześlij go do swojego arduino. Opisany tutaj kod jest taki sam, ale z dodatkowymi komentarzami! Jeśli zrobiłeś wszystko dobrze, możesz teraz zobaczyć „animację rozruchu”. Możliwe jest ustawienie czasu na monitorze szeregowym. Wystarczy wpisać @"godzina"/"min"/"sek" np. @10/33/00 (10:33).

Zapraszam do zabawy z kodem… Tutaj podam krótki opis kodu (Konfiguracja bez RTC!)

DEFINICJE:

#define PIN 6 //Godzinowa taśma LED #define MINPIN 5 //Singelminute LED #define NUMPIXELS 12 //Liczba pikseli na godzinę #define MINNUMPIXELS 4 //Liczba pikseli na jedną minutę #define BAUDRATE 115200 //Baudrate, powinno być zgodne szybkość transmisji modułu BT #define utch '@' //start BYTE of TimeSync

int czas = 0; //flaga do przechowywania, jeśli czas został ustawiony po bootint delayval = 20; //opóźnienie zanikania animacji int clocktimer = 10000; //czas odśwież int timebright = 250; //jasność godziny Strip int mtimebright = 50; //jasność singelminint initialize = 0; //flaga do wywołania funkcji clearpixels po bootincie godzinę; int oldagodzina = 0; // sklep poprz. godzina minuta; int oldamina = 0; //przechowuje poprzednią minutę na odświeżenie sekundy; w dzień; mies. miesiac; w roku; int mmin;tmElements_t tm;

//Konfiguracja dla 2 macierzy LED NeoPixel (NAZWA = TYP(ILOŚĆ PIKSELI, KTÓRY PIN, FORMAT RGB LUB GRB, CZĘSTOTLIWOŚĆ); Więcej informacji można znaleźć w przewodniku Adafruit. Adafruit_NeoPixel pikseli = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

USTAWIAĆ:

pusta konfiguracja () {

Serial.początek(BAUDRATE); Wire.początek(); // Zainicjuj paski, wszystkie OFFpixels.begin(); minpiksele.początek(); piksele.pokaż(); minpixels.show();

//Zrób małą animacjęSerial.println("SUNRISE"); wschód słońca(); opóźnienie (1000); Serial.println("ZACHÓD SŁOŃCA"); zachód słońca(); piksele.pokaż(); Serial.println("GOTOWE"); }

PĘTLA:

void loop() { // sprawdź synchronizację czasu while (Serial.available() >0){ char c = Serial.read(); if(c == utch) //jeśli w linii jest @, odczytaj kolejne bajty / ints{ readtime(); } } // zainicjuj diody, wyczyść animację rozruchu

if(inicjuj == 0){ clearpixels(); zainicjować = 1; }

godzina = godzina();

minuta = minuta(); if(timeset == 1 || timeset == 0) // tutaj możesz sprawdzić, czy czas został ustawiony, możesz zatrzymać program tutaj, jeśli Timeset = FALSE, po prostu usuń "|| timeset == 0" !

{

if(oldamin < minuta || oldahour ustaw wszystko na OFF, wyświetl nowy czas{ clearpixels(); ClockDisplay(); } } }

Wyświetl zegar:

nieważne wyświetlanie zegara (){

oldagodzina = godzina;

oldamina = minuta; int xgodzina, xmin;

if (godzina >= 12){ xgodzina = godzina-12; //mamy tylko 12 diod LED do wyświetlania 24h} else { xhour = ahour; } //skaluj w krokach co 5 minut xmin = (minuta / 5); if(oldamin < minuta){ oldamin = minuta; jasnepiksele(); } //weź resztę dzielenia lub singelmin LED mmin = (minuta % 5); // operator modulo np. 24% 5 = 4! bardzo przydatne:-Ppixels.setBrightness(timebright); piksele.setPixelColor(xmin, piksele. Kolor(5, 125, 255)); // tutaj możesz zmienić kolory! baw się!pixels.setPixelColor(xhour, pixels. Color(255, 50, 0)); piksele.pokaż();

//wyświetl pojedynczy minsfor (int m=0; m

minpixels.setJasność(mtimebright); minpixels.setPixelColor(m, piksele. Color(255, 255, 0)); minpixels.show(); } }Odczytaj i przetwórz informacje o CZASIE z Serial

void readtime() // jeśli mamy już wiodący "@" przetworzyć nadchodzące dane i zapisać czas dla TIME Lib{

godzina = Serial.parseInt(); minuta = Serial.parseInt(); asecond = Serial.parseInt(); aday = Serial.parseInt(); miesiąc = Serial.parseInt(); rok = Serial.parseInt(); Serial.println("USTAWIENIE CZASU"); Serial.print(godzina); Serial.print(": "); Serial.println(minuta); setTime(godzina, minuta, sekunda, dzień, miesiąc, rok); }

Wyczyść wszystko

void clearpixels() // wyłącz każdy PIXEL, aby odświeżyć wyświetlacz{

piksele.początek(); minpiksele.początek(); for(int i=0;ipixels.setPixelColor(i, piksele. Color(0, 0, 0)); minpixels.setPixelColor(i, piksele. Color(0, 0, 0)); piksele.show(); minpiksele.pokazać(); } }

Krok 5: Aplikacja na Androida i połączenie BT

Aplikacja na Androida i połączenie BT
Aplikacja na Androida i połączenie BT
Aplikacja na Androida i połączenie BT
Aplikacja na Androida i połączenie BT
Aplikacja na Androida i połączenie BT
Aplikacja na Androida i połączenie BT

Jeśli poprzednie kroki zakończyły się sukcesem, możesz teraz podłączyć moduł BT. (mam nadzieję, że upewniłeś się, że prędkości transmisji są zgodne). nie zapomnij przekroczyć linii TX i RX:-)

Pobierz i zainstaluj aplikację, sparuj z kluczem BT, uruchom aplikację, połącz się z kluczem i zsynchronizuj czas z telefonem komórkowym. Aplikacja zasadniczo robi to samo, co wcześniej. Po prostu wysyła @hh/mm/ss/dd/mm/RRRR wygenerowany z jego czasu systemowego. Dostarczyłem również plik APPInventor AIA i wyjaśnienie dotyczące następnego kroku (dla zainteresowanych).

Krok 6: APPInventor

APPInventor
APPInventor
APPInventor
APPInventor

APP Inventor jest dość łatwy w użyciu i wart wysiłku dla tak prostego programu.

Jeśli tworzysz nowy projekt, znajdziesz się na ekranie PROJEKTANT. (zdjęcie 1)Tutaj dodajemy tabele, przyciski, czujniki i inne elementy do dalszego wykorzystania. W naszym przypadku potrzebujemy:

  • stół (aby wyrównać wszystkie elementy)
  • listpicker (do wyboru urządzenia BT, z którym się łączymy)
  • przycisk (do odpalenia TIME przez BT)
  • niektóre etykiety (wyświetlają aktualną godzinę i datę)
  • czujnik zegara (odśwież czas)
  • czujnik klienta bluetooth (łączność)

Dodanie ich jest tak proste, jak przeciąganie i upuszczanie! Na Zdjęciu 2 widać przegląd „APP” na ekranie BLOKI. Cóż, w zasadzie to tam dzieje się cała „magia”. Na górze utworzyłem kilka zmiennych do przechowywania czasu i daty. Pierwszy blok w lewym górnym rogu zainicjuje element listpicker z listą sparowanych urządzeń BT. w drugim bloku decydujemy, co zrobić z wybranym wcześniej elementem. Cóż, chcemy się z nim połączyć.

Jeśli przyjrzysz się bliżej kolejnemu Blokowi, zobaczysz, że generujemy, jeśli status BT „jest podłączony”, komunikat BT. Jest to ten sam, który wpisaliśmy wcześniej w SerialMonitor. Ostatni blok po lewej dostarczy nam wiodące zera do wyświetlenia czasu (np. 01:08). Po prawej stronie znajduje się nasz ostatni blok, w którym używamy elementu zegara. Tutaj aktualizujemy zmienne i łączymy je z procedurą cyfr, będzie się to działo co 1000ms (ustawienie domyślne, zmień w trybie projektanta) i wyświetlaj zaktualizowane wartości z etykietą. To tylko krótki opis, ale APPInventor jest naprawdę tak prosty:-) Może jest ktoś w społeczności, kto chce napisać oprogramowanie dla iOS lub WindowsPhone. (byłoby wspaniale)

Mam nadzieję, że podobał Ci się mój Instructable! Baw się swoim nowym zegarem ściennym! Może chcesz podarować go komuś, kogo kochasz (to sezon świąteczny):-)

A jeśli są jakieś pytania, nie krępuj się pytać!

Pozdrawiam i Wesołych Świąt.