Daftar Isi:

NeoClock: 7 Langkah (dengan Gambar)
NeoClock: 7 Langkah (dengan Gambar)

Video: NeoClock: 7 Langkah (dengan Gambar)

Video: NeoClock: 7 Langkah (dengan Gambar)
Video: 7 Best Rainmeter Skins You Should Use In 2023 2024, Juni
Anonim
Image
Image

Ini tentang membuat jam menggunakan cincin neopiksel fantastis dari Adafruit. Hal yang menyenangkan tentang jam ini adalah sebenarnya ia memiliki dua cincin neopiksel, satu untuk memberi tahu jam dan satu lagi untuk menit, detik, dan milidetik. Jam menjaga waktu yang tepat menggunakan chip DS3234 DeadOn Real Time Clock dari Sparkfun. Mudah dibuat dan menyenangkan untuk dimodifikasi. Harapan saya adalah ini akan menginspirasi orang lain untuk membuat jam atau karya seni lainnya menggunakan cincin neopiksel.

Bagi Anda yang ingin mendapatkan semua file saya dalam format pengelolaan yang sederhana, silakan unduh dari repositori github saya untuk proyek ini di

Langkah 1: Merancang Jam

Mendesain Jam
Mendesain Jam
Mendesain Jam
Mendesain Jam
Mendesain Jam
Mendesain Jam
Mendesain Jam
Mendesain Jam

Saya tahu dari awal bahwa saya ingin menggunakan setidaknya dua cincin neopiksel. Setelah beberapa pekerjaan, saya memutuskan desain terbaik adalah memiliki satu cincin di dalam cincin lainnya, yang mempertahankan bentuk asli jam. Cincin yang lebih kecil akan menjadi jam dan waktu yang tersisa akan disimpan di cincin yang lebih besar. Beberapa pertimbangan desain termasuk biaya neopiksel, kebutuhan daya, ukuran potongan laser, dan jenis seni apa yang ingin saya kenakan.

Dengan langkah ini selesai, saya memutuskan bahwa saya perlu memahami elektronik sebelum membuat rencana untuk memotong badan jam dengan laser.

Langkah 2: Merancang Elektronik

Merancang Elektronik
Merancang Elektronik
Merancang Elektronik
Merancang Elektronik
Merancang Elektronik
Merancang Elektronik
Merancang Elektronik
Merancang Elektronik

Merancang elektronik datang untuk mengetahui terlebih dahulu elemen yang saya inginkan di jam:

  • Cincin neopiksel (60 hitungan dan 24 hitungan)
  • Arduino (otak)
  • Pengaturan Jam (arduino tidak menyimpan waktu dengan baik)
  • Manajemen daya

Ukuran dan persyaratan daya neopiksel didokumentasikan dengan baik. Karena mereka berjalan pada 5V DC, saya memutuskan untuk menggunakan Arduino 5V dan membuat segalanya lebih sederhana untuk diri saya sendiri. Dengan pertimbangan ruang, saya memutuskan untuk membuat prototipe pada Arduino Uno biasa, tetapi untuk elektronik terakhir saya memilih Arduino Mini.

Iterasi pertama dari proyek ini datang langsung dari halaman NeoPixel Basic Connections Adafruit. Saya telah menyertakan diagram dari situs web untuk mempermudah. Dua hal penting dari ini:

  1. Kapasitor 1000uF diperlukan untuk mencegah sentakan arus awal merusak piksel.
  2. Sebuah resistor 470ohm diperlukan pada piksel pertama dari cincin 60 hitungan (resistor ini dibangun ke dalam cincin 24 hitungan)

Adafruit juga memiliki serangkaian Praktik Terbaik NeoPixel yang harus Anda baca sebelum melanjutkan ke desain.

Menjaga waktu pada jam adalah masalah lain. Jam bawaan pada arduino tidak cukup untuk menyimpan waktu yang baik dalam jangka waktu yang lama. Masalah yang lebih buruk adalah waktu pada arduino mungkin perlu diatur ulang setiap kali. Komputer memecahkan masalah ini dengan menggunakan baterai kecil pada chip jam untuk menjaga waktu antara pemadaman listrik. Di masa lalu saya akan menggunakan sesuatu seperti ChronoDot dari Adafruit. Tapi dalam hal ini saya ingin alasan untuk menggunakan DS3234 (DeadOn RTC) dari SparkFun. Anda juga dapat menyimpan informasi tanggal di DeadOn RTC jika Anda ingin mengintegrasikannya ke dalam jam.

Akhirnya, manajemen daya membutuhkan beberapa pertimbangan. Saya sudah tahu semuanya harus 5V tetapi jumlah arus yang dibutuhkan tampaknya menjadi misteri. Regulator tegangan umum di sebagian besar proyek adalah L7805. Ini akan mengambil tegangan hingga 24V dan arus maksimum hingga 1,5A. Saya tahu saya memiliki dinding 12V 1.5A yang tergeletak di sekitar jadi saya memutuskan ini akan menjadi pengatur tegangan yang sempurna (dan murah!) untuk proyek tersebut.

Potongan-potongan yang tersisa akan datang dari kotak suku cadang saya atau Radio Shack. Mereka termasuk kabel, sakelar, dan colokan listrik DC.

Langkah 3: Membangun Elektronik

Membangun Elektronik
Membangun Elektronik
Membangun Elektronik
Membangun Elektronik
Membangun Elektronik
Membangun Elektronik

Daftar lengkap elektronik yang saya beli untuk membangun proyek ini dapat ditemukan di repositori github saya di sini: Daftar Komponen Elektronik. Ini memiliki tautan ke halaman produk untuk setiap bagian dan mencakup beberapa informasi tambahan termasuk SKU produk. Saya membuat prototipe ini dengan cepat di papan tempat memotong roti dan pindah ke pemotongan dan pembuatan laser sebelum mengambil gambar apa pun. Namun, saya membangunnya agar mudah dibongkar, jadi saya telah memecah bagian-bagian di foto di atas untuk Anda.

Perhatikan baik-baik gambarnya karena kabel sengaja dibengkokkan agar mudah diikuti dan menjaga seluruh profil elektronik tetap tipis. Melakukan prototipe awal ini sebelum merancang potongan laser memungkinkan saya untuk memeriksa ketebalan bagian sehingga saya bisa mengetahui dimensi akhir untuk badan jam.

Anda akan melihat bahwa saya membuat beberapa papan tempat memotong roti khusus. Saya telah mencoba untuk mengambil gambar bagian belakang papan tersebut sehingga Anda dapat mengulanginya. Anda dapat membeli bermacam-macam papan tempat memotong roti seperti ini dengan harga beberapa dolar dan membuatnya sesuai dengan proyek Anda.

Pengkabelan lurus ke depan tetapi hal penting yang perlu diingat dari gambar adalah ini:

  • Sakelar Mode dan Set akan membutuhkan resistor pull down. Saya menggunakan resistor 2.21Ohm yang saya miliki tetapi resistor kecil apa pun akan berfungsi (sebaiknya tidak kurang dari 1kOhm). Ini menstabilkan pin input Arduino yang terhubung sehingga ketika menjadi tinggi dapat dibedakan dari noise.
  • Gelombang persegi (SQW) pada DS3234 di-ground karena tidak digunakan.
  • Daya dari L7805 dimasukkan ke Arduino Mini di pin RAW. Selalu masukkan daya yang masuk ke Arduino ke RAW.
  • Piksel pertama dari cincin 60 neopiksel memiliki resistor 470Ohm untuk mengurangi kerusakan pada piksel pertama dari lonjakan data. Ini seharusnya tidak menjadi masalah karena neopiksel 24 hitungan sudah memiliki resistor bawaan untuk ini, tetapi lebih baik aman daripada menyesal.
  • Sakelar Mode dan Set adalah sakelar tombol tekan sesaat SPST

Warna kawat adalah:

  • Merah: +5VDC
  • Hitam: Tanah
  • Hijau: Data
  • Kuning, Biru, Putih: Kabel khusus untuk DS3234

Jika ini pertama kalinya Anda menggunakan neopiksel, Anda harus ingat bahwa neopiksel dapat dianggap sebagai rantai panjang. Jadi mungkin aneh untuk berbicara tentang "piksel pertama" di sebuah cincin, tetapi sebenarnya ada awal dan akhir untuk setiap rantai di cincin. Dalam proyek ini 24 piksel dari cincin kecil didahulukan dan 60 piksel dari cincin yang lebih besar muncul setelahnya. Ini benar-benar berarti saya memiliki rantai 84 neopiksel.

Untuk pengkabelan pada Arduino Mini:

  • DS3234 terhubung pada pin 10 - 13
  • Sakelar Mode dan Set ada di pin 2 dan 3
  • Data neopixel berasal dari pin 6.

Saya juga merekomendasikan meletakkan 6 header di bagian bawah Arduino Mini sehingga Anda dapat memprogramnya melalui kabel FTDI.

Catatan penting tentang arus: Jam ini membutuhkan banyak. Saya yakin saya bisa menyelesaikannya tetapi pengalaman praktis saya adalah bahwa apa pun yang sama atau kurang dari 500mA pada akhirnya akan menyebabkan brown out. Ini bermanifestasi sebagai jam berkedip warna gila dan tidak menjaga waktu. Wall wort terakhir saya adalah 12V dan 1.5A dan saya tidak pernah mengalami masalah dengannya. Namun, 1,5A adalah batas yang akan diambil oleh pengatur tegangan (dan bagian lain). Jadi jangan melebihi jumlah ini.

Langkah 4: Mengkodekan Jam

Mengkodekan Jam
Mengkodekan Jam

Kode lengkap untuk jam dapat ditemukan di Kode NeoClock di GitHub. Saya telah menyertakan file di sini tetapi perubahan apa pun akan terjadi di repositori.

Saya menemukan menulis kode dapat menjadi sesuatu yang menakutkan jika Anda mencoba melakukan semuanya sekaligus. Alih-alih melakukan itu, saya mencoba memulai dari contoh yang berfungsi dan membangun fitur saat saya membutuhkannya. Sebelum saya membahasnya, saya ingin menunjukkan bahwa kode saya berasal dari menggabungkan banyak contoh dari repositori berikut dan forum Arduino CC. Selalu berikan kredit pada saat jatuh tempo!

  • https://github.com/adafruit/Adafruit_NeoPixel
  • https://github.com/zeroeth/time_loop
  • https://github.com/sparkfun/DeadOn_RTC

Beberapa contoh kode dari repositori ini dapat ditemukan di Direktori Contoh Kode saya

Urutan operasi yang saya gunakan untuk membuat kode berjalan seperti ini:

  • Konfirmasikan neopiksel berfungsi dengan Contoh Uji Strand
  • Mencoba menjalankan jam dengan Kode Loop Waktu
  • Ubah jam untuk bekerja pada dua dering, bukan hanya satu
  • Tambahkan DS3234 untuk menjaga waktu melalui Contoh RTC DeadOn
  • Tambahkan Mode dan Setel Sakelar
  • Tambahkan kode Debounce dengan bantuan dari Tutorial Debounce Arduion
  • Tambahkan beberapa tema warna untuk LED jam
  • Tambahkan beberapa animasi untuk tanda 0, 15, 30, dan 45 menit
  • Tambahkan titik kompas ke jam untuk mengarahkan tanda 0, 15, 30, dan 45 menit

Jika Anda ingin melihat bagaimana saya membuat kode ini, Anda sebenarnya dapat menggunakan GitHub untuk melihat setiap komit kode. Riwayat jam ada di Riwayat Komit.

Skema warna menyenangkan untuk ditambahkan tetapi pada akhirnya saya hanya memasukkan empat dari mereka ke dalam menu. Setiap tema menetapkan warna tertentu pada "jarum" jam, menit, detik, dan milidetik. Benar-benar pilihannya tidak terbatas di sini tetapi saya menyertakan tema (nama metode yang tercantum):

  • setWarnaBiru
  • setWarnaMerah
  • setWarnaCyan
  • setWarnaOranye

Namun, Anda dapat menemukan metode tambahan ini dalam kode:

  • setColorPrimary
  • setWarnaRoyal
  • setWarnaTequila

Animasi ditambahkan karena saya menyukai gagasan jam tua berdentang di empat titik lima belas menit pada jam. Untuk jam ini saya membuat animasi berikut:

  • 15 menit: Warnai cincin dengan Merah
  • 30 menit: Warnai cincinnya dengan Hijau
  • 45 menit: Warnai cincinnya dengan Biru
  • Top of the Hour: Lakukan pelangi di dua cincin

Kegunaan ternyata menjadi masalah dengan jam karena tidak ada yang bisa mengarahkan jam. Bagaimanapun, itu hanya dua cincin LED. Jadi untuk memecahkan masalah saya menambahkan titik kompas ke jam. Ini meningkatkan kemampuan untuk memberitahu waktu banyak. Seandainya saya tahu tentang ini sebelum mengirim potongan laser, saya mungkin telah menambahkan sesuatu ke seni sebagai gantinya. Tapi ternyata Anda tidak bisa melihat seni dengan baik dalam kegelapan, jadi memiliki titik kompas sangat membantu. Satu pertimbangan dengan ini adalah bahwa ketika Anda memutuskan untuk mewarnai piksel, Anda harus terlebih dahulu menangkap warna saat ini dan membuat warna campuran baru. Ini memberikan nuansa yang lebih alami.

Satu berita gembira terakhir adalah tentang milidetik. Milidetik pada Arduino berasal dari kristal Arduino internal dan bukan DS3234. Terserah Anda jika Anda ingin menampilkan milidetik atau tidak, tetapi saya melakukannya sehingga jam selalu tampak melakukan sesuatu. Mungkin mengganggu Anda bahwa milidetik dan detik tidak selalu sejajar, tetapi dalam praktiknya tidak ada yang pernah menyebutkannya kepada saya ketika melihat jam dan saya pikir itu terlihat bagus.

Langkah 5: Mendesain File Potong Laser

Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser
Mendesain File Potong Laser

Ada dua pertimbangan yang harus saya buat saat mendesain file potong laser. Yang pertama adalah bahan dari mana saya ingin membangunnya dan yang kedua adalah bagaimana konstruksinya. Saya tahu saya menginginkan lapisan kayu dengan akrilik yang menyebarkan neopiksel. Untuk mengetahui bahannya saya pesan dulu beberapa sample dari Ponoko:

  • 1x Veneer MDF - Kenari
  • 1x Veneer MDF - Ceri
  • 1x Akrilik - Abu-abu Muda
  • 1x Akrilik - Opal

Pilihan kayu memungkinkan saya melihat seperti apa rasterisasi dan bagaimana pembakaran akan terlihat di sisi jam. Akrilik akan memungkinkan saya menguji difusi neopiksel dan membandingkan tampilannya dengan kayu. Pada akhirnya saya memutuskan kayu Cherry dengan akrilik Opal.

Dimensi jam terutama ditentukan oleh ukuran cincin neopiksel. Apa yang saya tidak tahu adalah seberapa tebalnya agar sesuai dengan elektronik. Setelah membangun elektronik dan mengetahui bahwa kayu itu setebal 5,5 mm, saya memutuskan bahwa saya membutuhkan sekitar 15 mm ruang di dalam jam. Itu berarti tiga lapis kayu. Tetapi dengan bagian depan dan belakang sudah mengambil sebagian besar ruang dalam desain saya, saya perlu memecah cincin-cincin itu menjadi "tulang rusuk" yang bisa saya rekatkan nanti.

Saya menggunakan InkScape untuk menggambar pada template yang disediakan oleh Ponoko. Setelah menggambar badan jam, saya kemudian mulai menggambar pohon dengan tangan. Saya tidak dapat mengimpor gambar asli yang mengilhami saya, tetapi tidak buruk untuk mengetahui bagaimana melakukan sesuatu yang serupa sendiri.

Biaya bahan hanya sekitar $20 tetapi biaya pemotongan menjadi sekitar $100 lebih. Dua hal berkontribusi untuk ini:

  • Kurva dan Lingkaran lebih mahal karena mesin bergerak dalam dua sumbu dan desain ini memiliki banyak kurva
  • Rasterisasi membutuhkan banyak operan bolak-balik di seluruh bagian. Menjatuhkan ini akan menghemat uang paling banyak tetapi saya menyukainya.

Setelah menyelesaikan desain saya mengirim file EPS ke Ponoko dan potongan saya selesai sekitar seminggu kemudian.

Perhatikan bahwa saya tidak menyertakan sakelar Mode dan Set atau Jack Daya DC dalam desain. Ketika saya mengirim ini, saya masih belum memutuskan bagian-bagian itu. Untuk memberi diri saya lebih banyak fleksibilitas, saya meninggalkannya dan memutuskan untuk mengebornya nanti dengan tangan.

Langkah 6: Membangun Jam

Membangun Jam
Membangun Jam
Membangun Jam
Membangun Jam
Membangun Jam
Membangun Jam
Membangun Jam
Membangun Jam

Ketika semua bagian tiba, saya membuat jam. Langkah pertama adalah badan jam yang mengharuskan saya untuk meninju tulang rusuk dan merekatkannya ke belakang dan depan. Saya meletakkan dua lapis tulang rusuk di bagian belakang dan satu lapisan di bagian depan dan menempelkannya dengan lem kayu. Untuk bagian depan saya menggunakan lem kayu untuk menyatukan cincin akrilik dan lingkaran kayu. Saya memiliki bagian tengah cadangan yang saya potong sebagai blanko yang berguna selama konstruksi. Saya menempelkannya ke bagian belakang potongan pohon dan itu memberi saya tempat di mana saya bisa merekatkan neopiksel nanti.

Dengan bodi yang dibangun, saya memutuskan untuk mengebor lubang untuk sakelar dan colokan listrik. Sedikit geometri (seperti yang terlihat pada gambar) membantu saya menyelaraskan semuanya. Menggunakan sepotong kayu terpisah di luar saat saya mengebor (sangat hati-hati!) Saya membuat lubang dan menempelkan sakelar dan dongkrak.

Elektronik semua masuk berikutnya. Saya menempelkan neopiksel terlebih dahulu diikuti oleh kapasitor. Ini saya kabel ke papan breakout daya neopixel. Kemudian untuk bagian belakang saya pasang kabel pada saklar dan colokan listrik. Saya juga menyertakan regulator tegangan L7805.

Catatan singkat tentang orientasi cincin. Untuk cincin besar 60 piksel, Anda perlu mengarahkan jam sehingga salah satu piksel berada tepat di atas untuk menandai menit nol. Piksel mana yang tidak penting dan saya akan menjelaskan alasannya dalam satu menit. Untuk cincin kecil 24 piksel, Anda perlu mengarahkan jam sehingga bagian atas sebenarnya berada di antara dua piksel. Alasan untuk ini adalah bahwa jika Anda ingin menandai 12 jam maka Anda akhirnya menyalakan dua piksel, bukan satu. Dengan memiliki offset, dan dengan difusi plastik, akan tampak seolah-olah Anda benar-benar memiliki 12 piksel lebar.

Untuk piksel mana yang ditunjuk kode sebagai "atas" untuk setiap dering, Anda perlu sedikit mengedit kode. Saya memiliki dua nilai dalam kode saya bernama "inner_top_led" dan "outer_top_led". Di jam saya "inner_top_led" adalah 11 piksel dari awal cincin kecil dan "outer_top_led" adalah 36 piksel dari awal cincin besar. Jika Anda mengorientasikan cincin secara berbeda maka Anda akan mengubah nilai-nilai ini menjadi yang dari orientasi Anda. Sedikit eksperimen dan Anda akan menemukan nilai yang tepat dengan cukup cepat.

Pada titik ini saya menguji bahwa semuanya bekerja seperti yang diharapkan.

Tetapi seperti halnya semua proyek, saya mengalami masalah ketika saya menyadari bahwa saya tidak tahu bagaimana itu akan bertahan. Saya perhatikan bahwa saya memiliki sekitar 3/8 inci ruang antara neopiksel dan tulang rusuk, jadi saya menuju ke Home Depot dan mendapatkan paku kayu 3/8 inci dan sejumlah magnet neodymium. Saya membuat dudukan kayu kecil di tiga tempat dan mengampelasnya sehingga saya bisa meletakkan dua magnet di setiap dudukan (menggunakan lem super). Saya berakhir dengan 3 pasang masing-masing 2 stan. Kemudian saya merekatkan ini ke dalam bingkai dan menahan semuanya dengan penjepit. Saya melakukan ini saat lem pada dudukan basah sehingga semuanya akan sejajar dan kemudian mengering di tempat yang benar. Ini bekerja dengan sempurna dan saya suka rilisnya disembunyikan.

Terakhir saya menemukan bahwa saya perlu menggantungnya di dinding jadi saya mengebor hanggar kecil di bagian belakang sehingga saya bisa memasangnya di dinding.

Langkah 7: Pikiran Terakhir

Proyek ini sangat menyenangkan untuk dibuat dan saya senang belajar tentang neopiksel dan DS3234. Saya sangat menikmati akhirnya membangun proyek yang terlihat bagus dari awal sampai akhir. Ada beberapa hal yang akan saya perbarui jika saya melakukan ini lagi, tetapi itu kecil:

  • Saya memilih dua tombol, bukan tiga untuk kesederhanaan. Tetapi memiliki tombol yang memungkinkan saya untuk turun dan juga naik akan menyenangkan untuk mengatur jam
  • Tombol mode dan tombol set tidak dapat dibedakan. Saya sering mencampurnya. Mungkin saya akan menempatkan mereka di sisi yang berlawanan di masa depan.
  • Saya tidak pernah menyelesaikan bagian depan kayu. Saya menyukai tampilan mentah pada awalnya dan kemudian khawatir jika saya mengacaukan hasil akhirnya akan membutuhkan banyak biaya untuk memperbaikinya.
  • Rasterisasi pohon adalah tampilan yang baik, tetapi saya mungkin akan menggambar lebih detail untuk pohon di masa mendatang.
  • Meredupkan jam akan menjadi fitur yang bagus juga karena cukup terang dalam gelap. Namun, peredupan terkait dengan warna dan mencari tahu bahwa sedikit terlalu lama jadi saya menjatuhkannya. Saya mungkin akan menginvestasikan kembali fitur itu di masa mendatang.

Terima kasih telah membaca instruksi ini. Saya harap Anda akan membuat proyek jam atau neopiksel Anda sendiri dan membaginya dengan saya. Selamat membangun!

Direkomendasikan: