Arduino Magic Clock: 16 kroków (ze zdjęciami)

Arduino Magic Clock: 16 kroków (ze zdjęciami)

Spisu treści:

Anonim

Co jeśli zegar może powiedzieć ci więcej niż tylko czas? W tym Instruktażu zrobimy zegar, który jednym spojrzeniem może powiedzieć komuś, gdzie jesteś i po prostu ożywić temperaturę twojego otoczenia. Dobra, weź Arduino i zacznijmy:)

Rzeczy, których będziesz potrzebować do tego Instruktażu:

  • Arduino
  • Deska do krojenia chleba
  • Przewody
  • Drewno (Balsa lub nawet karton)
  • Serwo
  • Czujnik temperatury
  • Rezystory
  • Gorący klej
  • Brokat
  • Papier

Kieszonkowe dzieci:

Krok 1: Projektowanie zegara prototypowego

Rozpocznij projekt, zapisując miejsca, w których najprawdopodobniej będziesz w ciągu dnia. Będą to pierwsze kilka pozycji na zegarze, a następnie dodaj kilka zabawnych, aby Twój zegar był wyjątkowy. Dodałem „Mortal Danger” i „Lost” do mojego zegara. Pomyśl o 5 słowach, aby opisać temperaturę, od super zimnej do super gorącej. Użyłem „zamrożenia”, „chłodno”, „po prostu dobrze”, „ciepło” i „pchnięcie”.

Następnie przystąpiłem do projektowania mojego prototypu w Illustratorze. Jeśli chcesz użyć mojego szablonu, możesz pobrać załączony plik. Wyciąłem papierowy prototyp nożem Xacto i wyśledziłem zewnętrzny okrąg na kawałku drewna. Mój zegar będzie miał średnicę około 12 cali. Jeśli twoja drukarka nie może obsłużyć całej tarczy zegara za jednym razem, po prostu sklej dwie połówki obrazu i zaznacz pozycje otworu.

Krok 2: Wytnij tarczę zegara farby

Użyj X-acto lub piły do ​​przecięcia zewnętrznego profilu zegara i wiertła 3/4 ", aby wyciąć otwory. Następnie użyłem taśmy malarskiej do części górnej połowy i spryskałem ją na niebiesko. Odwróciłem linię taśmy i pomalowałem sprayem dolną połowę srebra, podczas gdy wszystko wysycha, użyj noża X-acto, aby wyciąć miejsca na zegar.

Krok 3: Udekoruj tarczę zegara

Teraz, kiedy nasze pozycje zostały wycięte, odwróć je, wmasuj w klej, wyśrodkuj je na tarczy zegara i dociśnij.

W tej części mogłem trochę polubić, ale pomyślałem: „wiesz, co uczyniłoby ten zegar bardziej magicznym ….. blask!” Pobiegłem więc paciorki kleju po brzegach pozycji zegara, a następnie posypałem obfite ilości brokatu na wierzchu. Gdy go potrząśniesz, wokół twojej litery pozostanie przyjemna błyszcząca granica.

Krok 4: Dodawanie silnika serwo

Musiałem dostosować rozmiar otworu w środku zegara, aby pomieścić serwomechanizm, wiertło i plik sprawiają, że proces ten jest krótki. Następny, gorący klej w silniku serwo. Bardzo ważne jest, aby utrzymać serwo pod kątem 90 stopni do przedniej powierzchni, aby mechanizm zegara nie zadrapał tarczy zegara. Trzymałem serwo we właściwej pozycji, aż klej wyschnął.

Krok 5: Rozszerzenia LED

Będziemy musieli rozszerzyć nogi diody LED, aby można je było łatwo podłączyć do naszej płyty. W tym celu skręcimy przewody i połączymy je elektrycznie lutem. Rozpocznij od ściągnięcia obu końców przewodów za pomocą uniwersalnego ściągacza. Następnie skręć przewody, aby utworzyć mocny zamek mechaniczny, powinieneś być w stanie lekko pociągnąć za przewody bez ich rozłączania. Nie wahaj się użyć szczypiec, aby uzyskać więcej zwrotów akcji. Następnie użyj żelazka i przylutuj przewody.

Krok 6: Dodaj diody LED do zegara

Dzięki wszystkim lutowanym diodom LED możemy dodać je do tylnego zegara. Zgięłam przewody u podstawy diod LED pod kątem 90 stopni i za pomocą pistoletu do klejenia na gorąco zamocowano je na środku pięciu wyłączników temperatury.

Krok 7: Część 1 okablowania LED

Za pomocą podwójnej taśmy klejącej zapiąłem Arduino i płytę chlebową na tylnej części zegara. Aby rozpocząć okablowanie diod LED, wkładam wszystkie przewody uziemiające (zielone przewody) do ujemnej kolumny płytki. Następnie podłączyłem wszystkie przewody zasilające w kolejności na płytce.

Krok 8: Okablowanie LED - część 2

Teraz dodaj kolejny przewód ze wszystkich dodatnich doprowadzeń LED do Arduino. Użyłem do tego pinów od 4 do 8, ale możesz oczywiście użyć dowolnych pinów.

Krok 9: Okablowanie serwomotoru

Zacznij od podłączenia przewodu zasilającego serwomechanizmu do złącza 5 V w Arduino. Następnie podłącz czarny przewód do GND, a kabel sygnałowy (twój może być biały lub pomarańczowy w zależności od serwomechanizmu) do pinów z funkcją PWM, użyłem pin 3. Po podłączeniu serwa i podłączeniu diody LED dodaj przewód uformuj Arduino GND do szyny uziemiającej używanej przez wszystkie diody LED.

Krok 10: Dodawanie czujnika temperatury

Ten czujnik temperatury działa poprzez zmianę napięcia w zależności od temperatury w pomieszczeniu, bardzo podobnie jak czujnik światła zmienia napięcie na podstawie ilości światła w pomieszczeniu. Aby podłączyć czujnik temperatury, zacznij od umieszczenia przewodu od środkowej nogi, która jest sygnałem, do szpilki A0. W moim obwodzie przewód sygnałowy jest pomarańczowy.

Następnie będziesz chciał dodać zasilanie i uziemienie do czujnika. Będzie to wymagało niewielkiej modyfikacji obwodu silnika serwo. Zamiast podłączać zasilanie serwomechanizmu bezpośrednio do styku 5 V w Arduino, poprowadź przewód od zasilania 5 V do płytki, a następnie podłącz czujnik temperatury i serwo do tego samego rzędu. Jeśli twój obwód wygląda podobnie do tego poniżej, jesteś na dobrej drodze.

Krok 11: Podłącz rękę zegara

Teraz, gdy wszystkie obwody tego projektu są gotowe, możemy odwrócić zegar i pracować na twarzy. Aby wykonać wskazówkę zegarową, zacząłem od przycięcia wskazówki zegara na starym zegarze, który znalazłem. Noś okulary ochronne podczas robienia tego, co tylko się zdarzy:) Następnie chwyć pistolet do klejenia i włóż cienką warstwę kleju na końcówkę serwomotoru, a następnie szybko przymocuj wskazówkę zegara.

Krok 12: Kodowanie Część 1

Nasze kodowanie rozpoczynamy standardową, ale nieco większą inicjalizacją 5 diod LED, serwomechanizmu i czujnika temperatury. Dodatkowo tworzymy zmienne zastępcze dla pozycji zegara serwomechanizmu i zmiennej temperatury, którą nazywam initialTemp. Zauważ, że jest on oznaczony jako pływak i zawiera liczbę z kropką dziesiętną, co da nam większą rozdzielczość w pomiarach temperatury

#include Servo myservo; int clockPos = 0; int tempSensorPin = A0; const float initialTemp = 20,0; int tempLED1 = 4; int tempLED2 = 5; int tempLED3 = 6; int tempLED4 = 7; int tempLED5 = 8;

Oprócz wielu ustawień pinModes musimy dołączyć serwo, które podłączyliśmy do Arduino, do jego oprogramowania, w tym biblioteki. Załączam serwo do pinów trzy, więc użycie funkcji myservo.attach (3) pozwoli Arduino wiedzieć, który pin powinien być PWM.

void setup () {Serial.begin (9600); myservo.attach (3);

Krok 13: Kodowanie Część 2

Aby łatwiej kontrolować wskazówkę zegara, zaprogramujemy Arduino do oznaczenia możliwych pozycji na zegarze (np. Praca, podróże itp.) Liczbami od 0 do 6. Użycie polecenia Serial.parseInt () powoduje, że praca jest krótka zrozumienie liczb, które wysyłamy do Arduino.Aby wyzwolić rzeczywisty ruch ręki, sprawdzamy, czy klawisz Enter został trafiony, pamiętaj o niewidocznym „n”, który zostanie wysłany, teraz sprawdzimy koniec naszej wiadomości i jeśli zostanie znaleziony, napiszemy nowa pozycja do serwomechanizmu.

if (Serial.available ()> 0) {int clockPos = Serial.parseInt (); if (Serial.read () == 'n') {myservo.write (clockPos * 25 + ((clockPos + 1) * 3)); opóźnienie (200); }}

Matematyka, której użyłem do uzyskania kątów położenia zegara, wymagała wielu poprawek, ale sprowadza się do pomnożenia wprowadzonej liczby (zegarPos) o 25, a następnie określenia właściwego przesunięcia, aby strzałka była skierowana blisko środka pozycji logo na tarczy zegara. Dla mnie dodałem jeden, a następnie pomnożyłem go przez trzy, aby uzyskać dobrze wyglądające przesunięcie. Przejdźmy przez matematykę z pewnymi liczbami rzeczywistymi, aby pokazać, jak to działa.

Matematyka położenia serwomechanizmu

Korzystając z moich pozycji zegara, zakładam, że chcę tak pokazać, że jestem „Podróżujący”. Będzie to reprezentowane przez liczbę 2, gdzie 1 oznacza „śmiertelne niebezpieczeństwo”, a 0 to „praca”.

Zatem nasze clockPos = 2:

Kąt serwomechanizmu = (2 * 25) + ((2 + 1) * 3)

Kąt serwomechanizmu = 59 stopni

Aby Arduino rozwiązało matematykę, linia zapisu serwomechanizmu wygląda teraz tak, jak chcemy.

myservo.write (59);

Krok 14: Kodowanie Część 3

W następnym bloku kodu, który powrócimy do głównej pętli i analogowego odczytu czujnika temperatury, krótkie opóźnienie zapewnia, że ​​wartość ma czas na ustalenie. Następnie, aby przekształcić odczytane napięcie w temperaturę, dzielimy otrzymaną liczbę z ADC przez maksymalną wartość 1024 i mnożymy przez 5V. Daje nam to wartość czujnika temperatury w woltach. Aby uzyskać go w stopniach, odejmujemy o.5, a następnie pomnożymy to przez 100. Whew! To było skomplikowane, ale prawie skończyliśmy.

int tempVal = analogRead (tempSensorPin); opóźnienie (10); float temp = (((tempVal / 1024.0) * 5) -. 5) * 100; Serial.println (temp);

Aby zakończyć kodowanie czujników temperatury, stworzymy obudowę przełącznika dla każdej lampy LED, wykorzystując wiele tego samego kodu i funkcji, których używaliśmy wcześniej. Jedynym dodatkiem, który zamierzamy zrobić, jest odwzorowanie temperatury w pomieszczeniu na liczbę od 0 do 4. Pozwoli nam to łatwo wykorzystać obudowę przełącznika do sterowania diodami LED.

int switchcase = mapa (temp, 12, 28, 0, 4); Serial.println (switchcase);

Krok 15: Prześlij kod i test

Uff! Był to zdecydowanie najtrudniejszy kod, jaki do tej pory napisaliśmy. Teraz prześlij go i przetestuj nasz zegar.

Krok 16: Ciesz się nowym zegarem!

ZROBIŁEŚ TO!!!! Powiesić zegar z dumą w miejscu, które każdy może zobaczyć. Nie tylko zakończyłeś niesamowity projekt, ale wiele się nauczyłeś.