Isi kandungan:

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, Jun
Anonim
Image
Image

Ini mengenai membina jam menggunakan cincin neopixel hebat dari Adafruit. Perkara yang menyeronokkan pada jam ini ialah ia sebenarnya mempunyai dua cincin neopixel, satu untuk memberitahu jam dan satu untuk minit, saat dan milisaat. Jam menjadikan masa yang tepat menggunakan cip Jam Real Time DS3234 DeadOn dari Sparkfun. Mudah dibina dan senang diubah suai. Harapan saya ialah ia akan memberi inspirasi kepada orang lain untuk membina jam atau seni lain menggunakan cincin neopixel.

Bagi anda yang ingin mendapatkan semua fail saya dalam format yang mudah dikendalikan, sila muat turunnya dari repositori github saya untuk projek ini di

Langkah 1: Merancang Jam

Merancang Jam
Merancang Jam
Merancang Jam
Merancang Jam
Merancang Jam
Merancang Jam
Merancang Jam
Merancang Jam

Sejak awal saya tahu bahawa saya mahu menggunakan sekurang-kurangnya dua cincin neopixel. Selepas beberapa kerja, saya memutuskan reka bentuk terbaik ialah mempunyai satu cincin di dalam yang lain, yang menyimpan bentuk jam yang asli. Cincin yang lebih kecil adalah jam dan baki masa akan disimpan di cincin yang lebih besar. Beberapa pertimbangan reka bentuk merangkumi kos neopixel, keperluan kuasa, ukuran potongan laser, dan jenis seni apa yang ingin saya pakai.

Dengan langkah ini selesai saya memutuskan saya perlu memahami elektronik sebelum membuat rancangan laser memotong badan jam.

Langkah 2: Merancang Elektronik

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

Reka bentuk elektronik mula mengetahui terlebih dahulu elemen yang saya mahukan dalam masa:

  • Cincin Neopixel (60 kiraan dan 24 kiraan)
  • Arduino (otak)
  • Peraturan Jam (arduino tidak menyimpan waktu yang baik)
  • Pengurusan tenaga

Keperluan saiz dan kuasa neopixel didokumentasikan dengan baik. Oleh kerana mereka menggunakan 5V DC, saya memutuskan untuk menggunakan Arduino 5V dan mempermudah saya. Dengan pertimbangan ruang, saya memutuskan untuk membuat prototaip pada Arduino Uno biasa tetapi untuk elektronik terakhir saya memilih Arduino Mini.

Iterasi pertama projek ini datang langsung dari halaman NeoPixel Basic Connection Adafruit. Saya telah memasukkan rajah dari laman web untuk mempermudahkan segala urusan. Dua perkara penting dari ini:

  1. Kapasitor 1000uF diperlukan untuk mengelakkan getaran arus awal merosakkan piksel.
  2. Perintang 470ohm diperlukan pada piksel pertama cincin kiraan 60 (perintang ini dibina ke dalam cincin kiraan 24)

Adafruit juga mempunyai satu set Amalan Terbaik NeoPixel yang harus anda baca sebelum meneruskan reka bentuk.

Menjaga masa pada waktu adalah masalah lain. Jam terpasang di arduino tidak mencukupi untuk menjaga waktu yang baik dalam jangka masa yang lama. Masalah yang lebih teruk adalah bahawa waktu di arduino mungkin perlu diset semula setiap kali. Komputer menyelesaikan masalah ini dengan menggunakan bateri kecil pada cip jam untuk memastikan masa antara pemadaman kuasa. Dahulu saya akan menggunakan sesuatu seperti ChronoDot dari Adafruit. Tetapi dalam kes ini, saya mahukan alasan untuk menggunakan DS3234 (DeadOn RTC) dari SparkFun. Anda juga boleh menyimpan maklumat tarikh di DeadOn RTC jika anda mahu mengintegrasikannya ke dalam jam.

Akhirnya, pengurusan kuasa memerlukan pertimbangan. Saya sudah tahu semuanya perlu menjadi 5V tetapi jumlah arus yang diperlukan sepertinya menjadi misteri. Pengatur voltan biasa dalam kebanyakan projek adalah L7805. Ini akan mengambil voltan hingga 24V dan arus maksimum hingga 1.5A. Saya tahu bahawa saya mempunyai wort dinding 12V 1.5A di sekitarnya jadi saya memutuskan ini akan menjadi pengatur voltan yang sempurna (dan murah!) Untuk projek ini.

Selebihnya akan datang dari kotak alat ganti saya atau Radio Shack. Mereka termasuk wayar, suis, dan soket kuasa DC.

Langkah 3: Membangun Elektronik

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

Senarai lengkap elektronik yang saya beli untuk membina projek ini boleh didapati di repositori github saya di sini: Senarai Bahagian Elektronik. Ia mempunyai pautan ke halaman produk untuk setiap bahagian dan termasuk beberapa maklumat tambahan termasuk SKU produk. Saya membuat prototaip ini dengan cepat di papan roti dan beralih ke pemotongan dan bangunan laser sebelum mengambil gambar. Walau bagaimanapun, saya membuatnya mudah dipisahkan, jadi saya telah memecahkan potongan-potongan dalam gambar di atas untuk anda.

Perhatikan gambar dengan teliti kerana wayar sengaja dibengkokkan agar mudah diikuti dan memastikan keseluruhan profil elektronik tetap nipis. Melakukan prototaip awal ini sebelum merancang pemotongan laser membolehkan saya memeriksa ketebalan bahagian sehingga saya dapat mengetahui dimensi akhir untuk badan jam.

Anda akan melihat bahawa saya membuat beberapa papan roti tersuai. Saya telah cuba mengambil gambar bahagian belakang papan tersebut supaya anda dapat mengulanginya. Anda boleh membeli pelbagai jenis papan roti seperti ini untuk beberapa dolar dan membuatnya sesuai dengan projek anda.

Pendawaiannya lurus ke hadapan tetapi perkara penting yang perlu diingat dari gambar adalah:

  • Suis Mod dan Set memerlukan perintang tarik ke bawah. Saya menggunakan perintang 2.21Ohm yang saya letak tetapi perintang kecil akan berfungsi (lebih baik tidak kurang dari 1kOhm). Ini menstabilkan pin input Arduino yang disambungkan sehingga ketika mereka naik tinggi, ia dapat dibezakan dari kebisingan.
  • Gelombang persegi (SQW) pada DS3234 dibumikan kerana tidak digunakan.
  • Kekuatan dari L7805 dimasukkan ke dalam Arduino Mini dalam pin RAW. Sentiasa letakkan kekuatan yang ada di Arduino menjadi RAW.
  • Piksel pertama dari cincin neopixel 60 mempunyai perintang 470Ohm untuk mengurangkan kerosakan pada piksel pertama dari lonjakan data. Ini tidak seharusnya menjadi masalah kerana neopixel 24 kiraan mempunyai perintang terpasang untuk ini, tetapi lebih selamat daripada menyesal.
  • Suis Mod dan Set adalah suis butang tekan sesaat SPST

Warna dawai adalah:

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

Sekiranya ini adalah kali pertama anda menggunakan neopixel, anda harus ingat bahawa ia boleh dianggap sebagai rantai panjang. Oleh itu, mungkin aneh untuk membicarakan "piksel pertama" dalam sebentuk cincin, tetapi sebenarnya ada permulaan dan akhir setiap rantai di gelang tersebut. Dalam projek ini 24 piksel cincin kecil didahulukan dan 60 piksel cincin yang lebih besar muncul selepasnya. Ini benar-benar bermaksud saya mempunyai rantai 84 neopixel.

Untuk pendawaian di Arduino Mini:

  • DS3234 menyambung pada pin 10 - 13
  • Suis Mod dan Set berada pada pin 2 dan 3
  • Data neopixel berasal dari pin 6.

Saya juga mengesyorkan meletakkan 6 header di bahagian bawah Arduino Mini supaya anda dapat memprogramnya melalui kabel FTDI.

Catatan penting mengenai arus: Jam ini memerlukan banyak. Saya pasti dapat mengatasinya tetapi pengalaman praktikal saya adalah bahawa apa-apa yang sama atau kurang daripada 500mA akhirnya akan menyebabkan warna coklat. Ini menjelma sebagai jam yang berkelip warna gila dan tidak menjaga masa. Wort dinding terakhir saya adalah 12V dan 1.5A dan saya tidak pernah mempunyai warna coklat dengannya. Walau bagaimanapun, 1.5A adalah had yang akan diambil oleh pengatur voltan (dan bahagian lain). Oleh itu, jangan melebihi jumlah ini.

Langkah 4: Pengekodan Jam

Mengekodkan Jam
Mengekodkan Jam

Kod penuh untuk jam boleh didapati di Kod NeoClock di GitHub. Saya telah memasukkan fail di sini tetapi sebarang perubahan akan berlaku di repositori.

Saya dapati menulis kod boleh menakutkan jika anda cuba melakukan semuanya sekaligus. Daripada melakukannya, saya cuba memulakan dari contoh yang berfungsi dan membina ciri-ciri yang saya perlukan. Sebelum saya mengetahuinya, saya ingin menunjukkan bahawa kod saya berasal daripada menggabungkan banyak contoh dari repositori berikut dan forum Arduino CC. Sentiasa memberi kredit di tempat yang sepatutnya!

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

Beberapa contoh kod dari repositori ini boleh didapati di Direktori Contoh Kod saya

Urutan operasi yang saya gunakan untuk membina kod seperti ini:

  • Sahkan kerja neopixel dengan Contoh Ujian Strand
  • Cuba jalankan jam dengan Time Loop Code
  • Ubah suai jam untuk menggunakan dua dering dan bukannya satu
  • Tambahkan DS3234 untuk mengekalkan masa melalui Contoh RTC DeadOn
  • Tambah Mod dan Tetapkan Suis
  • Tambahkan kod Debounce dengan bantuan dari Arduion Debounce Tutorial
  • Tambahkan beberapa tema warna untuk LED jam
  • Tambahkan beberapa animasi untuk tanda 0, 15, 30, dan 45 minit
  • Tambahkan titik kompas ke jam untuk mengorientasikan tanda 0, 15, 30, dan 45 minit

Sekiranya anda ingin melihat bagaimana saya membina kod ini, anda sebenarnya boleh menggunakan GitHub untuk melihat setiap kod komit. Sejarah untuk masa ini terdapat dalam Sejarah Komit.

Skema warna senang ditambahkan tetapi pada akhirnya saya hanya memasukkan empat daripadanya dalam menu. Setiap tema menetapkan warna tertentu pada "tangan" jam, minit, kedua, dan milisaat. Betul pilihannya tidak ada di sini tetapi saya memasukkan tema (nama kaedah disenaraikan):

  • setColorBlue
  • setColorRed
  • setColorCyan
  • setColorOrange

Walau bagaimanapun, anda boleh mendapatkan kaedah tambahan ini dalam kod:

  • setColorPrimary
  • setColorRoyal
  • setColorTequila

Animasi ditambahkan kerana saya menyukai idea jam lama yang berputar pada titik empat lima belas minit pada jam itu. Untuk jam ini, saya membuat animasi berikut:

  • 15 minit: Warnakan cincin Merah
  • 30 minit: Warnakan cincin Hijau
  • 45 minit: Warnakan cincin Biru
  • Waktu Teratas: Lakukan pelangi di kedua cincin

Kebolehgunaan ternyata menjadi masalah pada jam kerana tidak ada yang dapat mengarahkan jam. Ini hanya dua cincin LED. Oleh itu, untuk menyelesaikan masalah itu saya menambahkan titik kompas ke jam. Ini meningkatkan keupayaan untuk memberitahu banyak masa. Sekiranya saya mengetahui perkara ini sebelum menghantar potongan laser, saya mungkin telah menambahkan sesuatu pada seni itu. Tetapi ternyata anda tidak dapat melihat seni dengan baik dalam kegelapan, jadi mempunyai titik kompas sangat membantu. Satu pertimbangan dengan ini adalah bahawa apabila anda memutuskan untuk mewarnai piksel anda harus terlebih dahulu menangkap warna semasa dan membuat warna campuran baru. Ini memberikan rasa yang lebih semula jadi.

Satu berita terakhir adalah mengenai milisaat. Millisaat pada Arduino keluar dari kristal Arduino dalaman dan bukan DS3234. Terpulang kepada anda jika anda mahu memaparkan milisaat atau tidak tetapi saya melakukannya sehingga jam selalu kelihatan melakukan sesuatu. Mungkin mengganggu anda bahawa milisaat dan saat tidak selalu berbaris, tetapi dalam praktiknya tidak ada yang pernah menyebutnya kepada saya ketika melihat jam dan saya rasa ia kelihatan bagus.

Langkah 5: Merancang Fail Potong Laser

Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser
Merancang Fail Potong Laser

Terdapat dua pertimbangan yang harus saya buat semasa merancang fail potong laser. Yang pertama adalah bahan yang ingin saya bina dan yang kedua adalah bagaimana ia akan dibina. Saya tahu bahawa saya mahukan kemasan kayu dengan akrilik yang meresap neopixel. Untuk mengetahui bahannya, saya mula-mula memesan beberapa sampel dari Ponoko:

  • 1x Veneer MDF - Walnut
  • 1x Veneer MDF - Ceri
  • 1x Akrilik - Kelabu Muda
  • 1x Akrilik - Opal

Pilihan kayu membolehkan saya melihat seperti apa rasterisasi dan bagaimana kesannya akan kelihatan di sisi jam. Akrilik ini membolehkan saya menguji penyebaran neopixel dan membandingkan bagaimana rupa kayu itu. Pada akhirnya saya memutuskan kayu Cherry dengan akrilik Opal.

Dimensi jam terutamanya ditentukan oleh ukuran cincin neopixel. Yang tidak saya ketahui adalah betapa tebalnya agar sesuai dengan elektronik. Setelah membina elektronik dan mengetahui bahawa kayu setebal 5.5mm, saya memutuskan bahawa saya memerlukan ruang sekitar 15mm dalam masa. Itu bermaksud tiga lapisan kayu. Tetapi dengan bahagian depan dan belakang sudah mengambil sebahagian besar ruang dalam rekaan saya, saya perlu memecahkan cincin itu menjadi "tulang rusuk" yang boleh saya tempelkan kemudian.

Saya menggunakan InkScape untuk melukis templat yang disediakan oleh Ponoko. Setelah mengeluarkan badan jam, saya kemudian melukis pokok dengan tangan. Saya tidak dapat mengimport gambar asal yang memberi inspirasi kepada saya tetapi tidak mengerikan memikirkan bagaimana melakukan sesuatu yang serupa dengan diri saya.

Kos bahan itu hanya sekitar $ 20 tetapi kos pemotongan menjadi sekitar $ 100 lebih. Dua perkara menyumbang kepada perkara ini:

  • Lengkung dan Lingkaran lebih mahal kerana mesin bergerak dalam dua paksi dan reka bentuk ini mempunyai banyak lekuk
  • Rasterisasi memerlukan banyak hantaran bolak-balik di bahagian tersebut. Menjatuhkan ini akan menjimatkan banyak wang tetapi saya menyukainya.

Setelah menyelesaikan reka bentuk, saya menghantar fail EPS ke Ponoko dan karya saya selesai kira-kira seminggu kemudian.

Perhatikan bahawa saya tidak memasukkan suis Mode dan Set atau Jack Power DC dalam reka bentuk. Semasa saya menghantarnya, saya masih belum memutuskan bahagian tersebut. Untuk memberi saya lebih banyak kelonggaran, saya membiarkannya dan memutuskan untuk menggerudi mereka kemudian dengan tangan.

Langkah 6: Membina Jam

Membina Jam
Membina Jam
Membina Jam
Membina Jam
Membina Jam
Membina Jam
Membina Jam
Membina Jam

Apabila semua keping tiba, saya membina jam. Langkah pertama adalah badan jam yang memerlukan saya menebuk tulang rusuk dan merekatkannya ke belakang dan depan. Saya meletakkan dua lapisan tulang rusuk di bahagian belakang dan satu lapisan di bahagian depan dan meletakkannya dengan gam kayu. Untuk bahagian depan saya menggunakan gam kayu untuk memotong cincin akrilik dan bulatan kayu bersama-sama. Saya mempunyai bahagian pusat ganti yang akan saya potong sebagai kosong yang berguna semasa pembinaan. Saya melekatkannya di bahagian belakang pokok dan itu memberi saya tempat di mana saya boleh merekatkan neopixel kemudian.

Dengan badan yang dibina, saya memutuskan untuk membuka lubang untuk suis dan soket kuasa. Geometri yang sedikit (seperti yang dilihat dalam gambar) membantu saya menyelaraskan semuanya. Dengan menggunakan sekeping kayu yang terpisah di bahagian luar ketika saya menggerudi (sangat berhati-hati!) Saya membuat lubang dan terpaku pada suis dan soket.

Elektronik semuanya masuk seterusnya. Saya melekatkan neopixel terlebih dahulu diikuti oleh kapasitor. Ini saya masukkan ke papan pemecah kuasa neopixel. Kemudian untuk bahagian belakang saya meletakkan wayar pada suis dan soket kuasa. Saya juga memasukkan pengatur voltan L7805.

Nota ringkas mengenai orientasi cincin. Untuk cincin besar 60 piksel, anda perlu mengarahkan jam supaya salah satu piksel berada tepat di atas untuk menandakan minit sifar. Piksel mana yang tidak penting dan saya akan sampaikan mengapa dalam satu minit. Untuk cincin kecil 24 piksel, anda perlu mengarahkan jam supaya bahagian atas sebenarnya antara dua piksel. Sebabnya ialah jika anda mahu menandakan 12 jam maka anda akhirnya menyalakan dua piksel dan bukannya satu. Dengan mengimbangi, dan dengan penyebaran plastik, ia akan kelihatan seolah-olah anda benar-benar mempunyai 12 piksel lebar.

Untuk piksel mana kod tersebut dinyatakan sebagai "teratas" untuk setiap deringan, anda perlu sedikit mengedit kodnya. Saya mempunyai dua nilai dalam kod saya bernama "inner_top_led" dan "external_top_led". Dalam jam saya, "inner_top_led" adalah 11 piksel dari awal cincin kecil dan "external_top_led" adalah 36 piksel dari awal cincin besar. Sekiranya anda mengarahkan cincin dengan cara yang berbeza maka anda akan menukar nilai-nilai ini menjadi nilai dari arah anda. Sedikit percubaan dan anda akan mendapat nilai yang tepat dengan cepat.

Pada ketika ini saya menguji bahawa semuanya berjalan seperti yang diharapkan.

Tetapi seperti semua projek, saya menghadapi masalah kerana menyedari bahawa saya belum mengetahui bagaimana ia akan berlaku bersama. Saya perhatikan bahawa saya mempunyai ruang sekitar 3/8 inci antara neopixel dan tulang rusuk sehingga saya menuju ke Home Depot dan mendapat dowel 3/8 inci dan sejumlah magnet neodymium. Saya membina dudukan kayu kecil di tiga tempat dan mencampakkannya sehingga saya dapat meletakkan dua magnet pada setiap dudukan (menggunakan gam super). Saya berakhir dengan 3 pasang 2 berdiri masing-masing. Kemudian saya menempelkannya ke bingkai dan memegangnya dengan pengapit. Saya melakukan ini semasa gam di dudukan basah sehingga semuanya akan sejajar dan kemudian kering di tempat yang betul. Ini berfungsi dengan sempurna dan saya suka bahawa pelepasan semuanya tersembunyi.

Terakhir saya tahu bahawa saya perlu menggantungnya di dinding sehingga saya menggerudi di hangar kecil di belakang supaya saya dapat meletakkannya di dinding.

Langkah 7: Pemikiran Akhir

Projek ini sangat menyeronokkan untuk dibina dan saya seronok belajar mengenai neopixel dan DS3234. Saya sangat gembira akhirnya membina projek yang kelihatan baik dari awal hingga akhir. Terdapat beberapa perkara yang akan saya kemas kini sekiranya saya melakukan ini lagi, tetapi perkara kecil:

  • Saya memilih dua butang dan bukannya tiga untuk kesederhanaan. Tetapi mempunyai butang yang membolehkan saya turun dan naik juga bagus untuk mengatur jam
  • Butang mod dan butang set tidak dapat dibezakan. Saya sering mencampurkannya. Mungkin saya akan meletakkannya di seberang pada masa akan datang.
  • Saya tidak pernah menyelesaikan bahagian depan kayu. Saya suka penampilan mentah pada mulanya dan kemudian bimbang bahawa jika saya merosakkan penamat, ia akan memerlukan banyak kos untuk diperbaiki.
  • Memulihkan pokok itu kelihatan baik tetapi saya mungkin akan memperoleh lebih terperinci untuk pokok itu pada masa akan datang.
  • Mengecilkan jam juga merupakan ciri yang bagus kerana cukup terang dalam gelap. Walau bagaimanapun, peredupan terikat dengan warna dan memikirkan bit itu terlalu lama sehingga saya menjatuhkannya. Saya mungkin akan melabur semula pada ciri tersebut pada masa akan datang.

Terima kasih kerana membaca arahan ini. Saya harap anda akan membuat jam atau projek neopixel anda sendiri dan berkongsi dengan saya. Selamat membina!

Disyorkan: