Isi kandungan:

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

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

Video: Jam Kembali ke Masa Depan: 8 Langkah (dengan Gambar)
Video: Jumlah Setelah Ditambah dengan Angka Ulang Tahun Anda? Jika Sama dengan 369, Anda Ditakdirkan... 2024, November
Anonim
Kembali ke Jam Masa Depan
Kembali ke Jam Masa Depan

Projek ini memulakan hidup sebagai jam penggera untuk anak saya. Saya membuatnya kelihatan seperti litar masa dari Back to the Future. Paparan dapat menunjukkan waktu dalam pelbagai format, termasuk yang tentu saja dari filem. Ia boleh dikonfigurasi melalui butang di bahagian atas kandang tetapi juga melalui laman web yang dilayan oleh Raspberry Pi Zero di dalamnya. Dalam salah satu mod paparan, ia akan menunjukkan cuaca tempatan (dari stesen cuaca berkuasa Arduino saya) serta ramalan dan peringatan setiap hari, yang dikonfigurasi melalui antara muka web. Ini juga berkat audio kepada DAC dan akan mengalirkan muzik menggunakan protokol AirPlay. Bunyi penggera boleh menjadi fail audio yang anda pilih. Ia akan meredup dan mencerahkan paparan secara automatik pada waktu tertentu (misalnya waktu subuh dan senja).

Langkah 1: Latar belakang

Tahun lalu saya mencari projek Arduino baru setelah menyelesaikan yang pertama, stesen cuaca rumah. Anak lelaki saya yang berusia 11 tahun baru pertama kali menonton filem Back to the Future untuk pertama kalinya, jadi saya fikir akan menyenangkan untuk membinanya jam penggera yang kelihatan seperti litar waktu di Delorean untuk ulang tahunnya. Ini bukan idea baru, ada beberapa projek serupa di luar sana (contohnya ini), jadi saya fikir ia adalah projek yang bagus untuk belajar dari orang lain dan mengambil beberapa kemahiran baru.

Versi pertama berfungsi dengan baik (ia belum siap untuk ulang tahunnya: saya menyelesaikannya menjelang Krismas) tetapi saya cukup bercita-cita tinggi dalam apa yang saya mahukan dan mendapati bahawa lakaran saya terus mencapai had ingatan Arduino. Saya juga mempunyai beberapa modul perkakasan luaran kecil (WiFi, pemain MP3, penguat audio, RTC dan lain-lain), jadi semuanya menjadi sedikit sukar. Pada akhirnya, saya memutuskan untuk berpindah ke platform Raspberry Pi yang mempermudah perkakasan dan membolehkan saya mengemas lebih banyak fungsi dan ciri.

Langkah 2: Komponen Perkakasan Utama

Di dalam Kotak

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

  • 4 x Paparan Alphanumerik Quad -Kuning-Hijau
  • Raspberry Pi Zero W
  • Pimoroni pHAT DAC untuk Raspberry Pi Zero
  • Audio Amp (PAM8403 IC)
  • Bekalan kuasa Raspberry Pi 3+
  • 4 x Jumper wire - 0.1 ", 5-pin, 12"
  • Kabel reben 40 pin (2 x 20)
  • Tajuk Lelaki Raspberry Pi GPIO
  • Raspberry Pi Model B - Header Berselubung GPIO (2X20)
  • GPIO Stacking Header untuk Pi A + / B + / PI 2 / PI 3 - ekstra panjang 2X20
  • Header lelaki 4 x 5 pin
  • 2 pembesar suara 3W kecil
  • 2 x kabel sepaksi untuk sambungan audio analog DAC ke Amp
  • Papan kenyataan atau PCB khusus untuk mengendalikan butang Rpi ke amp, LED,
  • 5 x suis butang tekan sesaat
  • Blok terminal skru 4 x 2-wayar yang boleh dipasang

Kotak itu

  • Potongan dan kepingan MDF, skru dan baut untuk membuat 'casis'
  • Perspex berwarna hijau, pembekal tempatan
  • Styrene, gam pemodelan, cat semburan (warna aluminium) dari kedai hobi tempatan
  • Pelekat (fail tersedia atas permintaan - dicetak oleh Redbubble)

Langkah 3: Menggabungkan Semuanya

Menggabungkan Semuanya
Menggabungkan Semuanya

Paparan LED untuk jam terdiri daripada paparan alfanumerik segmen 16x14, untungnya bilangan aksara yang sama dengan litar waktu Kembali ke Masa Depan. Walaupun hanya tiga watak pertama yang harus berupa alfanumerik dan selebihnya boleh menjadi paparan berangka 7 segmen untuk meniru tunjang filem, saya memutuskan untuk menjadikannya semua alfanumerik untuk memungkinkan sedikit kelonggaran dalam apa yang dapat dipaparkan dan membuat mereka semua terlihat sama. Beg galas Adafruit adalah penyelesaian hebat di sini dan boleh dijalankan dengan bas I2C Raspberry Pi. Maklumat lebih lanjut mengenai unit ini dan cara memasangnya boleh didapati di sini di laman web Adafruit. Satu-satunya perkara yang agak tidak standard yang harus saya lakukan ialah menukar alamat tiga daripadanya sehingga setiap beg galasnya unik.

Untuk memainkan audio (dalam stereo), saya memasukkan Pimoroni pHAT DAC dan penguat audio stereo 2 x 3W berdasarkan cip PAM8403. PHAT DAC sangat mudah disambungkan ke Pi. Saya meletakkan header lelaki 2 x 20 pin pada Pi dan header susun GPIO pada DAC sehingga mereka dapat dipasang bersama di atas yang lain. Pin header lelaki melalui bahagian atas DAC, membolehkan saya menjalankan kabel pita dengan penyambung wanita, pada mulanya untuk pelarian Raspberry Pi untuk ujian papan roti tetapi akhirnya ke kepala yang diselimuti pada PCB yang dibuat khas.

Untuk penguat audio, terdapat banyak pilihan (termasuk hanya mendapatkan cip dan memasang sendiri). Yang satu ini mempunyai pilihan untuk mematikan output dengan hanya mengubah keadaan salah satu pin (tinggi dihidupkan, rendah dimatikan) dan saya memasangnya sehingga ini dapat dikendalikan dari Pi. Dalam percubaan awal saya untuk menyambung ini, saya mendapati banyak bunyi latar ketika audio dihidupkan. Setelah banyak bermain-main dengan pembumian, saya akhirnya cuba mengalihkan voltan bekalan input dari Pi 5V ke 3.3V dan yang memperbaikinya. Saya rasa ada banyak bunyi yang dihasilkan oleh pelbagai isyarat digital yang melayang tetapi nampaknya bekalan 3.3V entah bagaimana terpencil.

Sambungan lain termasuk audio analog dari DAC ke penguat (saya menggunakan kabel sepaksi di sini untuk membantu menguruskan pengambilan bunyi) dan mengeluarkan audio ke sepasang pembesar suara 3W kecil yang sesuai di dalam kandang. Terdapat juga sambungan GPIO untuk empat suis sesaat di atas kotak dan saya memasang butang sesaat ke pin "RUN" tetapan semula yang keras (lihat bahagian Sambungan Tambahan pada halaman ini). Butang reset dipasang dari luar pandangan di bahagian belakang kandang. Berikut adalah rajah yang menunjukkan hubungannya:

Langkah 4: PCB Tersuai

PCB Tersuai
PCB Tersuai

Walaupun tidak ada yang terlalu rumit mengenai litar, terdapat sedikit pendawaian dan papan roti boleh kelihatan seperti spageti dengan cepat. Oleh itu, saya merancang PCB untuk memastikan semuanya terkawal. Ini adalah papan satu sisi buatan sendiri dan saya mendapat rakan untuk membantu membuatnya. Setelah dibuat dan disambung, saya menyedari bahawa saya lupa memasukkan sambungan untuk blok terminal untuk audio dan saya kemudian membuat perubahan untuk memindahkan bekalan amp audio dari 5V ke 3.3V, jadi ia tidak sesuai dan saya terpaksa mengatasi beberapa Veroboard untuk membenarkan sambungan audio. Juga, pin board audio amp berada pada pemisahan yang tidak standard (malah berbeza antara pin) jadi sambungan untuk PCB utama ini agak mengerikan dengan 11 wayar sambungan pendek ~ 1cm.

Sekiranya saya membuat papan lain, saya akan memasukkan semua pengubahsuaian ini dan juga menukar penyambung untuk keempat-empat butang menjadi sesuatu yang lebih bagus. DAC dan Pi akan menumpuk tepat di atas, jadi tidak perlu kabel pita. Gambar rajah di atas menunjukkan bagaimana ia kelihatan.

Langkah 5: Kandang

Pagar
Pagar
Pagar
Pagar
Pagar
Pagar

Saya mahu membuat kandang yang kelihatan seperti satu barisan litar waktu filem. Tiga baris paparan LED terlalu banyak untuk jam penggera dan akan menambahkan kos dengan ketara. Saya berfikir untuk membuat penutup dari aluminium tetapi saya tidak mempunyai kemahiran dalam bidang itu. Saya telah membuat beberapa model plastik dalam hidup saya, dan mempunyai pengalaman kerja kayu, jadi memutuskan untuk membuat bingkai menggunakan MDF untuk memasang LED dan pembesar suara dan memperbaiki perspeks ke depan, kemudian tutupnya dengan styrene 5 sisi kotak dengan bezel di bahagian depan, dicat dengan cat semburan logam aluminium. Plastik dan cat itu diperoleh dari sebuah kedai model tempatan. Saya melihat label pada bahagian prop filem dan melakukan yang terbaik untuk menyalin warna, jenis dan saiz fon. Saya menggunakan Photoshop untuk membina label dan mencetaknya sebagai pelekat dari Redbubble.

Gambar di atas menunjukkan:

  1. Bahagian depan casis MDF. Ransel 4 LED dipasang di bahagian depan dengan perspeks berwarna hijau
  2. Di dalam kotak. Beg galas semua dipasang dan berbaris, Raspberry Pi dan PCB khusus, pembesar suara di kedua-dua belah pihak.
  3. Pendawaian dipasang dan shell luar siap digunakan. Itu sedikit memerah!

Langkah 6: Menyiapkan Raspberry Pi

Saya mempunyai beberapa masalah keserasian dengan Raspbian Stretch (yang mungkin dapat diselesaikan sekiranya saya berterusan) tetapi Jessie bekerja dengan baik, jadi saya memutuskan untuk meneruskannya.

Saya menetapkan Pi sebagai unit tanpa kepala dengan akses VNC dan SSH. Ini dapat dilakukan tanpa perlu memasang papan kekunci atau monitor, tetapi saya hanya meminjam TV dan mengeluarkan papan kekunci, dan membuatnya cepat tanpa kepala. Sejak itu, saya menggunakan VNC sejak dulu lagi.

Kod jam saya menggunakan Python 2.7.9 dan bergantung pada beberapa perpustakaan, yang disenaraikan di bawah. Selain itu, saya menjalankan pelayan web Flask dan MQTT untuk kawalan jauh dan Shairplay untuk streaming muzik. Saya hanya mengikuti nota pemasangan dalam talian untuk semua ini dan tidak mempunyai masalah sama sekali. Berikut adalah pustaka python dan pakej lain yang perlu saya pasang dengan pautan ke nota pemasangan atau hanya arahan yang perlu anda jalankan untuk mendapatkannya:

Perpustakaan Python

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

Pakej lain dll

  • nyamuk (apt-get install nyamuk)
  • shairport
  • Laman web Pimoroni mempunyai beberapa dokumentasi yang baik untuk menyiapkan DAC, jadi saya hanya menjalankannya.

Langkah 7: Perisian

Image
Image
Perisian
Perisian

Kod jam ditulis dalam Python dan menggunakan threading untuk memainkan penggera dan sesekali bip di latar tanpa menyekat kemas kini paparan. Saya menggunakan perpustakaan ConfigParser dan file config yang dikendalikannya dibaca dan ditulis oleh kod jam serta aplikasi web Flask sehingga setiap kali konfigurasi diubah melalui antara muka web atau jam, ia akan diselaraskan. Perisian jam juga termasuk broker MQTT untuk membolehkan kawalan mod paparan dan penyenyapan suara dikendalikan dari jarak jauh. Motif tersembunyi saya akhirnya menulis aplikasi iOS untuk alat kawalan jauh tetapi antara muka web berfungsi dengan baik buat masa ini.

Gambar pertama di atas menunjukkan bagaimana jam kelihatan dalam pelbagai mod paparannya, dan ada video pendek yang menunjukkannya dalam mod tatal.

Walaupun kodnya tidak cantik, bagus dan stabil. Saya dengan senang hati menghantarnya kepada sesiapa sahaja yang memintanya dan akan meletakkannya dalam talian apabila disusun dan dikomentari dengan lebih baik.

Aplikasi Web

Gambar seterusnya menunjukkan bagaimana antara muka web ke jam kelihatan. Terdapat juga halaman konfigurasi dan kawalan dan ini menjadikannya lebih mudah untuk bermain dengan jam tanpa banyak penekanan butang:-).

Langkah 8: Apa Seterusnya?

Apa selepas ini?
Apa selepas ini?

Terdapat penyahkod metadata shareport Python yang tersedia, jadi saya fikir saya akan menambahkan beberapa kod untuk memaparkan maklumat seperti tajuk dan artis semasa muzik dimainkan. Akan sangat mudah untuk menghitung waktu matahari terbit dan terbenam sehingga paparan dapat secara terang dan redup secara automatik, daripada mengaturnya secara manual. Mungkin menambah ciri radio internet juga menyeronokkan. Paparan tatal juga lebih dapat dikonfigurasi.

Disyorkan: