Spisu treści:

Zegar z powrotem do przyszłości: 8 kroków (ze zdjęciami)
Zegar z powrotem do przyszłości: 8 kroków (ze zdjęciami)

Wideo: Zegar z powrotem do przyszłości: 8 kroków (ze zdjęciami)

Wideo: Zegar z powrotem do przyszłości: 8 kroków (ze zdjęciami)
Wideo: Polak Obudził Się Po 19 Latach Śpiączki. To, Co Powiedział Zszokowało Wszystkich... 2024, Listopad
Anonim
Zegar z powrotem do przyszłości
Zegar z powrotem do przyszłości

Ten projekt zaczął życie jako budzik dla mojego syna. Stworzyłem go tak, by wyglądał jak obwód czasu z Powrotu do Przyszłości. Wyświetlacz może pokazywać czas w różnych formatach, w tym oczywiście z filmów. Można go skonfigurować za pomocą przycisków na górze obudowy, ale także za pośrednictwem strony internetowej obsługiwanej przez Raspberry Pi Zero wewnątrz. W jednym z trybów wyświetlania pokaże lokalną pogodę (z mojej stacji pogodowej Arduino), a także prognozę i wszelkie codzienne przypomnienia, skonfigurowane za pomocą interfejsu internetowego. Ma również dźwięk dzięki przetwornikowi cyfrowo-analogowemu i będzie przesyłać muzykę za pomocą protokołu AirPlay. Dźwiękiem alarmu może być dowolny wybrany plik audio. Automatycznie przyciemnia i rozjaśnia wyświetlacz o określonych porach dnia (np. świt i zmierzch).

Krok 1: Tło

W zeszłym roku szukałem nowego projektu Arduino, właśnie skończyłem mój pierwszy w historii, domową stację pogodową. Mój 11-letni syn po raz pierwszy obejrzał film Powrót do przyszłości, więc pomyślałem, że fajnie byłoby zbudować mu na urodziny budzik, który wyglądałby jak obwód czasowy w Delorean. To nie jest nowy pomysł, istnieje sporo podobnych projektów (na przykład ten), więc pomyślałem, że fajnie byłoby uczyć się od innych i zdobywać nowe umiejętności.

Pierwsza wersja działała całkiem dobrze (nie była gotowa na jego urodziny: zrobiłem to przed świętami Bożego Narodzenia), ale byłem dość ambitny w tym, co chciałem, i stwierdziłem, że mój szkic wciąż przekracza limit pamięci Arduino. Miałem też kilka małych zewnętrznych modułów sprzętowych (WiFi, odtwarzacz MP3, wzmacniacz audio, RTC itp.), więc wszystko stawało się trochę nieporęczne. W końcu zdecydowałem się przejść na platformę Raspberry Pi, która uprościła sprzęt i pozwoliła mi zapakować o wiele więcej funkcji i funkcji.

Krok 2: Główne komponenty sprzętowe

W pudełku

Oto elementy elektroniczne, których użyłem. Większość z nich pochodziła z Core Electronics w Australii, ale oczywiście są one również łatwo dostępne w innych miejscach:

  • 4 x poczwórny wyświetlacz alfanumeryczny - żółto-zielony
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC dla Raspberry Pi Zero
  • Wzmacniacz audio (PAM8403 IC)
  • Zasilacz Raspberry Pi 3+
  • 4 x zworka - 0,1", 5-pinowa, 12"
  • 40-pinowy (2 x 20) kabel taśmowy
  • Złącze męskie GPIO Raspberry Pi
  • Raspberry Pi Model B - osłonięty nagłówek GPIO (2X20)
  • GPIO Stacking Header dla Pi A+/B+/PI 2/PI 3 - bardzo długi 2X20
  • 4 x 5-pinowy męski nagłówek
  • 2 małe głośniki 3W
  • 2 x kable koncentryczne do analogowego połączenia audio DAC do Amp
  • Veraboard lub niestandardowa płytka drukowana do obsługi Rpi do wzmacniacza, diody LED, przycisków
  • 5 x chwilowych przełączników przyciskowych
  • 4 x 2-drożne złączki śrubowe do montażu na płytce drukowanej

Pudełko

  • Kawałki i kawałki MDF, śruby i śruby do „podwozia”
  • Pleksi barwione na zielono, lokalny dostawca
  • Styren, klej modelarski, farba w sprayu (kolor aluminium) z lokalnego sklepu hobbystycznego
  • Naklejki (plik dostępny na życzenie - wydrukowany przez Redbubble)

Krok 3: Łączenie wszystkiego w całość

Kładąc wszystko razem
Kładąc wszystko razem

Wyświetlacz LED zegara składa się z 16x14-segmentowych wyświetlaczy alfanumerycznych, na szczęście takiej samej liczby znaków jak obwód czasu Powrót do przyszłości. Chociaż tylko pierwsze trzy znaki muszą być alfanumeryczne, a reszta może być 7-segmentowymi wyświetlaczami numerycznymi, aby emulować rekwizyt filmowy, postanowiłem uczynić je wszystkie alfanumerycznymi, aby zapewnić pewną elastyczność w wyświetlaniu i aby wszystkie wyglądały jak To samo. Quad-plecaki Adafruit są tutaj świetnym rozwiązaniem i mogą być uruchamiane na magistrali I2C Raspberry Pi. Więcej informacji na temat tych jednostek i sposobu ich podłączenia można znaleźć tutaj na stronie internetowej Adafruit. Jedyną nieco niestandardową rzeczą, którą musiałem zrobić, to zmienić adresy trzech z nich, aby każdy plecak był niepowtarzalny.

Aby odtwarzać dźwięk (w stereo), dołączyłem przetwornik cyfrowo-analogowy Pimoroni pHAT oraz 2 x 3W stereofoniczny wzmacniacz audio oparty na układzie PAM8403. DAC pHAT jest naprawdę łatwy do podłączenia do Pi. Umieściłem męskie złącze 2 x 20 pin na Pi i złącze GPIO do łączenia w stos na przetworniku cyfrowo-analogowym, aby można je było podłączyć jeden na drugim. Męskie styki nagłówka przechodzą przez górną część przetwornika cyfrowo-analogowego, co pozwala mi na poprowadzenie kabla taśmowego ze złączami żeńskimi, początkowo do złącza Raspberry Pi w celu przetestowania płytki stykowej, ale ostatecznie do osłoniętego nagłówka na wykonanej na zamówienie płytce drukowanej.

W przypadku wzmacniacza audio istnieje wiele opcji (w tym po prostu uzyskanie układu i złożenie własnego). Ten ma możliwość wyciszenia wyjścia poprzez zmianę stanu jednego z pinów (wysoki jest włączony, niski jest wyłączony) i podłączyłem go, aby można było nim sterować z Pi. Podczas moich pierwszych prób podłączenia tego połączenia odkryłem sporo szumów w tle, gdy dźwięk był włączony. Po wielu zabawach z uziemieniem, w końcu spróbowałem przenieść napięcie zasilania wejściowego z 5 V na 3,3 V i to naprawiło. Wydaje mi się, że jest sporo szumu generowanego przez różne sygnały cyfrowe, ale wydaje się, że zasilanie 3,3 V jest w jakiś sposób izolowane.

Inne połączenia obejmują dźwięk analogowy z przetwornika cyfrowo-analogowego do wzmacniacza (użyłem tutaj kabla koncentrycznego, aby pomóc w zarządzaniu odbieraniem szumów) i wyjście audio do pary małych głośników o mocy 3 W, które mieszczą się w obudowie. Istnieją również połączenia GPIO dla czterech przełączników chwilowych na górze pudełka i podłączyłem przycisk chwilowy do pinów „RUN” twardego resetu (patrz sekcja Dodatkowe połączenia na tej stronie). Przycisk resetowania jest montowany z tyłu obudowy poza zasięgiem wzroku. Oto schemat przedstawiający połączenia:

Krok 4: Niestandardowa płytka drukowana

Niestandardowa płytka drukowana
Niestandardowa płytka drukowana

Chociaż w obwodzie nie ma nic zbyt skomplikowanego, jest sporo okablowania, a płytka stykowa może dość szybko wyglądać jak spaghetti. Dlatego zaprojektowałem płytkę PCB, aby mieć wszystko pod kontrolą. Jest to jednostronna deska do samodzielnego parzenia, a do pomocy przy jej przygotowaniu poprosiłem znajomego. Po wykonaniu i okablowaniu zdałem sobie sprawę, że zapomniałem dołączyć połączenia dla listew zaciskowych dla dźwięku, a później wprowadziłem zmianę, aby przenieść zasilanie wzmacniacza audio z 5 V na 3,3 V, więc nie jest to idealne i musiałem się przyczepić niektóre Veroboard, aby umożliwić połączenia audio. Ponadto pinouty płyty wzmacniacza audio znajdują się w niestandardowej separacji (różnią się nawet między pinami), więc połączenie tego z główną płytką drukowaną jest trochę okropne z 11 krótkimi przewodami połączeniowymi o długości około 1 cm.

Gdybym zrobił inną płytkę, to uwzględniłbym wszystkie te modyfikacje, a także zmieniłbym złącze dla czterech przycisków na coś ładniejszego. DAC i Pi układałyby się bezpośrednio na górze, więc nie jest potrzebny kabel taśmowy. Powyższy schemat pokazuje, jak to może wyglądać.

Krok 5: Obudowa

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

Chciałem zrobić obudowę, która wyglądałaby jak jeden rząd obwodu czasu filmu. Trzy rzędy wyświetlaczy LED byłyby za dużo jak na budzik i znacznie zwiększyłyby koszty. Myślałem o zrobieniu obudowy z aluminium, ale nie mam w tym żadnych umiejętności. W swoim życiu zrobiłem jednak sporo modeli plastikowych i mam trochę doświadczenia w obróbce drewna, więc postanowiłem zrobić ramę z płyty MDF do zamontowania diod LED i głośników oraz przymocować pleksiglas z przodu, a następnie pokryć ją 5-stronnym styrenem pudełko z ramką z przodu, pomalowane aluminiową metaliczną farbą w sprayu. Plastik i farbę uzyskano z lokalnego sklepu modelarskiego. Przyjrzałem się uważnie etykietom na rekwizycie filmowym i starałem się skopiować kolory, rodzaj i rozmiar czcionki. Użyłem Photoshopa do stworzenia etykiet i wydrukowałem je jako naklejki z Redbubble.

Powyższe zdjęcia pokazują:

  1. Przód podwozia MDF. Plecaki z 4 diodami LED są zamontowane z przodu za pomocą zabarwionego na zielono pleksiglasu
  2. W pudełku. Plecaki wszystkie zamontowane i ustawione, Raspberry Pi i niestandardowa płytka drukowana, głośniki po obu stronach.
  3. Zainstalowane okablowanie i zewnętrzna powłoka gotowa do pracy. To było trochę ucisku!

Krok 6: Konfiguracja Raspberry Pi

Miałem pewne problemy ze zgodnością z Raspbian Stretch (które mogły zostać rozwiązane, gdybym się upierał), ale Jessie dobrze sobie z tym radzi, więc zdecydowałem się na to.

Skonfigurowałem Pi jako jednostkę bezgłową z dostępem VNC i SSH. Mogło to zostać zrobione bez podłączania klawiatury lub monitora, ale po prostu pożyczyłem telewizor i wygrzebałem klawiaturę, i całkiem szybko skręciłem. Od tego czasu prawie używam VNC.

Mój kod zegara używa Pythona 2.7.9 i opiera się na kilku bibliotekach wymienionych poniżej. Oprócz tego używam serwera sieciowego Flask i MQTT do zdalnego sterowania i Shairplay do strumieniowego przesyłania muzyki. Po prostu postępowałem zgodnie z uwagami dotyczącymi instalacji on-line i nie miałem żadnych problemów. Oto biblioteki Pythona i inne pakiety itp., które musiałem zainstalować, korzystając z linków do notatek instalacyjnych lub po prostu polecenia, które musisz uruchomić, aby je uzyskać:

Biblioteki Pythona

  • Adafruit_LED_Plecak
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaudio
  • paho.mqtt.client (pip zainstaluj paho-mqtt)
  • flask (apt-get install python-flask)

Inne pakiety itp

  • komar (apt-get install mosquito)
  • port lotniczy
  • Witryna internetowa Pimoroni zawiera dobrą dokumentację dotyczącą konfigurowania DAC-a, więc po prostu z tym pobiegłem.

Krok 7: Oprogramowanie

Image
Image
Oprogramowanie
Oprogramowanie

Kod zegara został napisany w Pythonie i wykorzystuje wątki do odtwarzania alarmu i sporadycznych sygnałów dźwiękowych w tle bez blokowania aktualizacji wyświetlacza. Użyłem biblioteki ConfigParser, a plik konfiguracyjny, który utrzymuje, jest odczytywany i zapisywany przez kod zegara, a także przez aplikację internetową Flask, dzięki czemu za każdym razem, gdy konfiguracja zostanie zmieniona za pomocą interfejsu internetowego lub zegara, zostanie zsynchronizowana. Oprogramowanie zegara zawiera również brokera MQTT, który umożliwia zdalne sterowanie trybem wyświetlania i wyciszaniem. Moim ukrytym motywem jest ostatecznie napisanie aplikacji na iOS do zdalnego sterowania, ale interfejs sieciowy na razie działa wystarczająco dobrze.

Pierwszy obrazek powyżej pokazuje, jak wygląda zegar w różnych trybach wyświetlania, a także krótki film pokazujący go w trybie przewijania.

Chociaż kod nie jest ładny, jest ładny i stabilny. Z przyjemnością wyślę go każdemu, kto o to poprosi, i umieści go w Internecie, gdy będzie lepiej zorganizowany i skomentowany.

Aplikacja internetowa

Następny obrazek pokazuje, jak wygląda interfejs WWW do zegara. Dostępne są również strony konfiguracji i sterowania, które znacznie ułatwiają grę z zegarem bez zbytniego wciskania przycisków:-).

Krok 8: Co dalej?

Co następne?
Co następne?

Dostępny jest dekoder metadanych Pythona shareport, więc myślę, że dodam trochę kodu, aby wyświetlić informacje, takie jak tytuł i wykonawca, podczas odtwarzania muzyki. Byłoby również dość łatwo obliczyć czas wschodu i zachodu słońca, aby wyświetlacz mógł być automatycznie rozjaśniany i przyciemniany, zamiast ustawiać go ręcznie. Może dodanie funkcji radia internetowego też byłoby zabawne. Przewijany wyświetlacz mógłby być również bardziej konfigurowalny.

Zalecana: