Daftar Isi:

A Kembali ke Masa Depan Jam: 8 Langkah (dengan Gambar)
A Kembali ke Masa Depan Jam: 8 Langkah (dengan Gambar)

Video: A Kembali ke Masa Depan Jam: 8 Langkah (dengan Gambar)

Video: A Kembali ke Masa Depan Jam: 8 Langkah (dengan Gambar)
Video: Kasih nilai fotoku sesuai batrai kalian dong?🤣 me : 17% 2024, November
Anonim
Jam Kembali ke Masa Depan
Jam Kembali ke Masa Depan

Proyek ini memulai hidup sebagai jam alarm untuk anak saya. Saya membuatnya terlihat seperti sirkuit waktu dari Kembali ke Masa Depan. Layar dapat menunjukkan waktu dalam berbagai format, termasuk yang dari film tentunya. Ini dapat dikonfigurasi melalui tombol di atas enklosur tetapi juga melalui halaman web yang dilayani oleh Raspberry Pi Zero di dalamnya. Dalam salah satu mode tampilan, ini akan menunjukkan cuaca lokal (dari stasiun cuaca bertenaga Arduino saya) serta ramalan dan pengingat harian, yang dikonfigurasi melalui antarmuka web. Ini juga memiliki audio berkat DAC dan akan mengalirkan musik menggunakan protokol AirPlay. Suara alarm dapat berupa file audio apa pun yang Anda pilih. Ini akan meredupkan dan mencerahkan tampilan secara otomatis pada waktu tertentu dalam sehari (misalnya fajar dan senja).

Langkah 1: Latar Belakang

Tahun lalu saya sedang mencari proyek Arduino baru yang baru saja menyelesaikan proyek pertama saya, stasiun cuaca rumah. Putra saya yang berusia 11 tahun baru saja menonton film Back to the Future untuk pertama kalinya, jadi saya pikir akan menyenangkan untuk membangunkannya jam alarm yang terlihat seperti sirkuit waktu di Delorean untuk ulang tahunnya. Ini bukan ide baru, ada beberapa proyek serupa di luar sana (yang ini misalnya), jadi saya pikir ini akan menjadi proyek yang bagus untuk belajar dari orang lain dan mengambil beberapa keterampilan baru.

Versi pertama bekerja dengan cukup baik (belum siap untuk ulang tahunnya: Saya menyelesaikannya pada hari Natal) tetapi saya menjadi cukup ambisius dalam apa yang saya inginkan dan menemukan bahwa sketsa saya terus mencapai batas memori Arduino. Saya juga memiliki beberapa modul perangkat keras eksternal kecil (WiFi, pemutar MP3, penguat audio, RTC dll), jadi semuanya menjadi sedikit berat. Pada akhirnya, saya memutuskan untuk pindah ke platform Raspberry Pi yang menyederhanakan perangkat keras dan memungkinkan saya untuk mengemas lebih banyak fungsi dan fitur.

Langkah 2: Komponen Perangkat Keras Utama

Di dalam Kotak

Berikut adalah komponen elektronik yang saya gunakan. Sebagian besar dari mereka adalah sumber dari Core Electronics di Australia tetapi tentu saja mereka juga tersedia di tempat lain:

  • 4 x Tampilan Alfanumerik Quad -Kuning-Hijau
  • Raspberry Pi Nol W
  • Pimoroni pHAT DAC untuk Raspberry Pi Zero
  • Amplifier Audio (IC PAM8403)
  • Catu daya Raspberry Pi 3+
  • 4 x Kawat jumper - 0,1", 5-pin, 12"
  • 40 pin (2 x 20) kabel pita
  • Raspberry Pi GPIO Male Header
  • Raspberry Pi Model B - Header Terselubung GPIO (2X20)
  • GPIO Stacking Header untuk Pi A+/B+/PI 2/PI 3 - ekstra panjang 2X20
  • 4 x 5 pin header laki-laki
  • 2 speaker 3W kecil
  • 2 x kabel koaksial untuk koneksi audio analog DAC ke Amp
  • Veraboard atau PCB khusus untuk menangani Rpi ke amp, LED, tombol
  • 5 x sakelar tombol tekan sesaat
  • 4 x 2-arah blok terminal sekrup PCB-mountable

Kotak

  • Potongan-potongan MDF, sekrup dan baut untuk membuat 'sasis'
  • Perspex berwarna hijau, pemasok lokal
  • Styrene, lem model, cat semprot (warna aluminium) dari toko hobi lokal
  • Stiker (file tersedia berdasarkan permintaan - dicetak oleh Redbubble)

Langkah 3: Menyatukan Semuanya

Menyatukan Semuanya
Menyatukan Semuanya

Tampilan LED untuk jam terdiri dari tampilan alfanumerik segmen 16x14, untungnya jumlah karakter yang sama dengan sirkuit waktu Kembali ke Masa Depan. Meskipun hanya tiga karakter pertama yang harus berupa alfanumerik dan sisanya dapat berupa tampilan numerik 7-segmen untuk meniru prop film, saya memutuskan untuk membuat semuanya alfanumerik untuk memungkinkan beberapa fleksibilitas dalam apa yang dapat ditampilkan dan agar semuanya tetap terlihat sama. Ransel quad Adafruit adalah solusi hebat di sini dan dapat dijalankan di bus I2C Raspberry Pi. Informasi lebih lanjut tentang unit-unit ini dan cara memasangnya dapat ditemukan di sini di situs web Adafruit. Satu-satunya hal yang sedikit tidak standar yang harus saya lakukan adalah mengubah alamat mereka bertiga sehingga setiap ransel unik.

Untuk memutar audio (dalam stereo), saya menyertakan Pimoroni pHAT DAC dan amplifier audio stereo 2 x 3W berdasarkan chip PAM8403. DAC pHAT sangat mudah dihubungkan ke Pi. Saya menempatkan header laki-laki 2 x 20 pin pada Pi dan header susun GPIO pada DAC sehingga mereka dapat dihubungkan bersama di atas yang lain. Pin header laki-laki melewati bagian atas DAC, memungkinkan saya untuk menjalankan kabel pita dengan konektor perempuan, awalnya ke breakout Raspberry Pi untuk pengujian papan tempat memotong roti tetapi akhirnya ke header terselubung pada PCB yang dibuat khusus.

Untuk amplifier audio, ada banyak pilihan (termasuk hanya mendapatkan chip dan merakit sendiri). Yang ini memiliki opsi untuk mematikan output dengan hanya mengubah status salah satu pin (tinggi aktif, rendah mati) dan saya menghubungkannya sehingga ini dapat dikontrol dari Pi. Dalam upaya awal saya untuk menghubungkan ini, saya menemukan cukup banyak kebisingan latar belakang saat audio menyala. Setelah banyak bermain-main dengan pentanahan, saya akhirnya mencoba memindahkan tegangan suplai input dari 5V Pi ke 3.3V dan itu memperbaikinya. Saya kira ada cukup banyak kebisingan yang dihasilkan oleh berbagai sinyal digital yang terbang di sekitar tetapi tampaknya pasokan 3.3V entah bagaimana terisolasi.

Koneksi lainnya termasuk audio analog dari DAC ke amplifier (saya menggunakan kabel koaksial di sini untuk membantu mengatur pengambilan suara) dan output audio ke sepasang speaker 3W kecil yang sesuai dengan enklosur. Ada juga koneksi GPIO untuk empat sakelar sesaat di atas kotak dan saya menghubungkan tombol sesaat ke pin "RUN" hard reset (lihat bagian Koneksi Tambahan di halaman ini). Tombol reset dipasang tidak terlihat di bagian belakang enklosur. Berikut adalah diagram yang menunjukkan koneksi:

Langkah 4: PCB Kustom

PCB Khusus
PCB Khusus

Meskipun tidak ada yang terlalu rumit tentang sirkuit, ada sedikit kabel dan papan tempat memotong roti bisa terlihat seperti spageti dengan cukup cepat. Jadi saya merancang PCB untuk mengendalikan semuanya. Ini adalah papan satu sisi buatan rumah dan saya punya teman untuk membantu membuatnya. Setelah dibuat dan disambungkan, saya menyadari bahwa saya lupa menyertakan koneksi untuk blok terminal untuk audio dan saya kemudian membuat perubahan untuk memindahkan suplai amp audio dari 5V ke 3.3V, jadi itu tidak ideal dan saya harus memasangnya beberapa Veroboard untuk mengizinkan koneksi audio. Juga, pinout papan audio amp berada pada pemisahan non-standar (mereka bahkan bervariasi antar pin) sehingga koneksi untuk ini ke PCB utama agak buruk dengan 11 kabel koneksi pendek ~ 1cm.

Jika saya membuat papan lain, saya akan menyertakan semua modifikasi ini dan juga mengubah konektor untuk empat tombol menjadi sesuatu yang sedikit lebih bagus. DAC dan Pi akan menumpuk tepat di atas, jadi tidak perlu kabel pita. Diagram di atas menunjukkan bagaimana tampilannya.

Langkah 5: Kandang

Kandang
Kandang
Kandang
Kandang
Kandang
Kandang

Saya ingin membuat penutup yang tampak seperti satu baris sirkuit waktu film. Tiga baris tampilan LED akan terlalu banyak untuk jam alarm dan akan menambah biaya secara signifikan. Saya berpikir untuk membuat penutup dari aluminium tetapi saya tidak memiliki keahlian di bidang itu. Saya telah membuat beberapa model plastik dalam hidup saya, dan memiliki beberapa pengalaman pengerjaan kayu, jadi memutuskan untuk membuat bingkai menggunakan MDF untuk memasang LED dan speaker dan memperbaiki perspex ke depan, lalu menutupinya dengan stirena 5 sisi kotak dengan bezel di bagian depan, dicat dengan cat semprot logam aluminium. Plastik dan cat diperoleh dari toko model lokal. Saya memperhatikan label pada prop film dan melakukan yang terbaik untuk menyalin warna, jenis font, dan ukuran. Saya menggunakan Photoshop untuk membuat label dan mencetaknya sebagai stiker dari Redbubble.

Gambar di atas menunjukkan:

  1. Bagian depan sasis MDF. 4 ransel LED dipasang di bagian depan dengan perspex berwarna hijau
  2. Di dalam kotak. Ransel semua terpasang dan berbaris, Raspberry Pi dan PCB khusus, speaker di kedua sisi.
  3. Kabel terpasang dan kulit luar siap digunakan. Itu sedikit terjepit!

Langkah 6: Menyiapkan Raspberry Pi

Saya memiliki beberapa masalah kompatibilitas dengan Raspbian Stretch (yang mungkin dapat dipecahkan jika saya tetap bertahan) tetapi Jessie bekerja dengan baik, jadi saya memutuskan untuk melakukannya.

Saya mengatur Pi sebagai unit tanpa kepala dengan akses VNC dan SSH. Ini bisa dilakukan tanpa pernah mencolokkan keyboard atau monitor tetapi saya hanya meminjam TV dan mengambil keyboard, dan membuatnya tanpa kepala dengan cepat. Sejak saat itu, saya cukup banyak menggunakan VNC sejak saat itu.

Kode jam saya menggunakan Python 2.7.9 dan bergantung pada beberapa perpustakaan, tercantum di bawah ini. Selain itu, saya menjalankan server web Flask dan MQTT untuk remote control dan Shairplay untuk streaming musik. Saya hanya mengikuti catatan instalasi online untuk semua ini dan tidak memiliki masalah sama sekali. Berikut adalah pustaka python dan paket lain dll yang perlu saya instal dengan tautan ke catatan instalasi atau hanya perintah yang perlu Anda jalankan untuk mendapatkannya:

Pustaka Python

  • Adafruit_LED_Backpack
  • Rpi. GPIO (apt-get install python-rpi.gpio)
  • alsaaudio
  • paho.mqtt.client (instal pip paho-mqtt)
  • labu (apt-get install python-flask)

Paket lain dll

  • nyamuk (apt-get install nyamuk)
  • tempat potong rambut
  • Situs web Pimoroni memiliki beberapa dokumentasi bagus tentang pengaturan DAC, jadi saya hanya menjalankannya.

Langkah 7: Perangkat Lunak

Image
Image
Perangkat lunak
Perangkat lunak

Kode jam ditulis dengan Python dan menggunakan threading untuk memutar alarm dan sesekali berbunyi di latar belakang tanpa menghalangi pembaruan tampilan. Saya menggunakan perpustakaan ConfigParser dan file konfigurasi yang dikelolanya dibaca dan ditulis oleh kode jam serta aplikasi web Flask sehingga setiap kali konfigurasi diubah melalui antarmuka web atau jam, itu akan disinkronkan. Perangkat lunak jam juga mencakup broker MQTT untuk memungkinkan kontrol mode tampilan dan mematikan untuk dikendalikan dari jarak jauh. Motif tersembunyi saya pada akhirnya adalah untuk menulis aplikasi iOS untuk remote control tetapi antarmuka web berfungsi cukup baik untuk saat ini.

Gambar pertama di atas menunjukkan bagaimana jam terlihat dalam berbagai mode tampilan, dan ada video pendek yang menunjukkannya dalam mode gulir.

Meskipun kodenya tidak cantik untuk dilihat, itu bagus dan stabil. Saya senang mengirimkannya kepada siapa saja yang memintanya dan akan menempatkannya secara online ketika sudah diatur dan dikomentari dengan lebih baik.

Aplikasi web

Gambar berikutnya menunjukkan bagaimana antarmuka web ke jam terlihat. Ada juga halaman konfigurasi dan kontrol dan ini membuatnya lebih mudah untuk bermain dengan jam tanpa banyak menekan tombol:-).

Langkah 8: Apa Selanjutnya?

Apa selanjutnya?
Apa selanjutnya?

Ada dekoder metadata shareport Python yang tersedia jadi saya pikir saya akan menambahkan beberapa kode untuk menampilkan informasi seperti judul dan artis saat musik diputar. Ini juga akan cukup mudah untuk menghitung waktu matahari terbit dan terbenam sehingga tampilan dapat dicerahkan dan diredupkan secara otomatis, daripada mengaturnya secara manual. Mungkin menambahkan fitur radio internet akan menyenangkan juga. Tampilan bergulir juga bisa lebih dapat dikonfigurasi.

Direkomendasikan: