Daftar Isi:
2025 Pengarang: John Day | [email protected]. Terakhir diubah: 2025-01-13 06:57
Hai lagi Instructables-orang-orang!:-P
Karena masalah pengiriman, saya tidak dapat melanjutkan Proyek ABTW saya, jadi saya memutuskan untuk menunjukkan kepada Anda yang lain, kreasi terbaru saya.
Saya pikir banyak dari kita, seperti saya, menyukai Strip LED yang dapat dialamatkan (juga disebut NEOPIXEL LED). Anda bisa mendapatkannya dari ADAFRUIT. Vendor lain juga akan menyediakan produk serupa. Ada perpustakaan yang tersedia di ADAFRUITS - GitHub (klik saya) termasuk beberapa kode sampel. Jadi pengkodean harus langsung…
Saya melihat NEOPIXELS itu sebuah pemikiran, apa yang bisa saya lakukan dengan hal-hal kecil yang mengkilap itu.
- Tampilan matriks LED? -> Untuk rumit dan saya tidak menggunakannya (saat ini)
- Pencahayaan X-Mas? -> Cocok dengan musim tetapi akan lebih murah untuk membelinya:-P
- sebuah jam? -> Mengapa tidak! Tapi itu harus bergaya dan tidak konvensional
Jadi, mari kita membuat jam dinding.
Jika kita melihat dari dekat jam tangan kita (jika Anda memiliki analog seperti saya) kita akan melihat bahwa kita memiliki 12 jam dan 60 menit (semoga). Itu berarti, kita membutuhkan 60 LED yang dapat dialamatkan, phu! Jika kita mengambil strip dengan 60 LED / meter kita akan mendapatkan diameter ~318mm (radius = scope /(2*Π)) itu pasti terlalu besar.
Sebenarnya, jika Anda menanyakan waktu kepada seseorang, tidak ada yang akan mengatakan bahwa ini sudah jam 3 lewat 2 menit! Anda akan mendapatkan "Sudah jam 5 lewat 3" sebagai jawaban. Jadi, mengapa kita tidak menurunkan semuanya menjadi 5 menit? Untuk itu kita hanya membutuhkan 12 LED yang berarti kita mendapatkan diameter 63.6mm. Kami juga dapat membedakan jam dan menit dengan memberi mereka warna terpisah. Kami juga akan dapat memberikan langkah-langkah satu menit yang "hilang" dengan Strip 4 LED tambahan (atau LED beralamat tunggal.
ITULAH RENCANANYA! Mari kita lihat bagaimana saya melakukan semuanya. Seperti biasa saya akan memberikan daftar/tagihan bahan dan instruksi tentang cara membuatnya.
Jika menurut Anda, hanya orang Swiss yang bisa membuat jam keren, buktikan bahwa Anda salah (maaf Swiss:-P)
Langkah 1: Desain & Pilihan Bahan
Desain:
Jika kita melihat lebih dekat pada jam/jam analog kita lagi kita melihat bahwa lingkaran dibagi menjadi 12 * 30° langkah kita tahu, bahwa kita membutuhkan 63.6mm untuk LED-Strip. Jadi mungkin untuk menyelaraskan strip di sekitar tabung entah bagaimana. Saya memutuskan untuk menggunakan kaca akrilik, karena terlihat bagus dan memungkinkan untuk memasukkan lampu LED ke dalamnya dan pada setiap cacat pada kaca, beberapa hamburan cahaya akan terjadi. Jadi, katakanlah: lebih banyak kotoran akan menyebabkan lebih banyak hamburan cahaya! Itulah yang kami inginkan. Jadi jangan ragu untuk mengambil alat ukiran Anda dan berkreasi:-)
Jika Anda mengacu pada daftar BoM saya dan nama yang saya berikan pada jam, saya telah memilih desain seperti matahari. Saya mendapatkan semua bagian akrilik dari penjual Jerman di E-Bay (tautan tersedia di BoM). Untuk desain saya Anda akan perlu:
- pelat tanah akrilik, ketebalan transparan = 6mm, diameter = 300mm
- pelat tengah akrilik, ketebalan transparan = 3mm, diameter = 150mm
- plat depan akrilik, satin, tebal = 3mm, diameter = 90mm
- tabung akrilik, transparan, diameter luar = 64mm (berarti kita harus mengubah sedikit dengan strip LED)
- batang akrilik, transparan, diameter = 5mm (ini akan menjadi balok kami); Ada juga batang akrilik di sekitar dengan gelembung di dalamnya, saya merekomendasikannya tetapi saya tidak memilikinya.
- lem akrilik
Elektronik (lihat file Fritzing):
- Arduino mini (atau yang serupa)
- 1 Strip LED yang dapat dialamatkan (12 LED untuk langkah jam dan 5 menit)
- 4 LED yang dapat dialamatkan (satu menit)
- 2 Resistor 330Ohm
- 1 1000µF Kapasitor
- 1 catu daya (5V/500mA)
- sebuah RTC DS-1307 (opsional!)
- Modul Bluetooth (opsional! ya Anda dapat mengatur waktu melalui BT dan Smartphone Android)
Jika Anda bertanya pada diri sendiri mengapa saya memiliki chip MAX485 di BoM saya. Jawabannya adalah, saya ingin menyinkronkan jam dengan sistem otomatisasi rumah yang akan saya buat (tidak perlu lagi mengatur jam untuk musim panas:-P). Saya akan menjelaskannya di blog saya berikutnya beberapa minggu/bulan.
Seperti yang Anda perhatikan, saya juga akan mencoba untuk mendapatkan jam off-grid dengan beberapa panel surya dan LiPo, tapi saya tidak membahasnya dalam Instruksi ini jangan ragu untuk mencobanya sendiri.
Langkah 2: Siapkan Bagian Akrilik
Alat:
Pertama-tama akan sangat membantu jika Anda mencetak rencana DWG yang saya tambahkan dalam skala 1:1. Ini akan membantu Anda untuk menyelaraskan semua bagian dan akan berfungsi sebagai rencana pengeboran.selanjutnya Anda akan membutuhkan:
- pisau hobi
- pengukur mitra
- gergaji besi
- klem
- bor tangan
- dapat mengebor, diameter 65mm
- satu set bor logam
- file logam kecil
- lem akrilik
Ayo mulai:
Ambil pelat dasar dan sejajarkan pada rencana, sehingga Anda bisa mendapatkan pusat lingkaran. Sekarang ambil bor tangan Anda dengan bor kaleng terpasang di atasnya dan bor (sangat lambat! tidak terlalu banyak tekanan!) lubang di tengah pelat tanah, lingkaran luar harus sedalam ~ 2-3mm. Ini untuk menenggelamkan strip LED ke pelat ground (strip LED lebar ~10mm, diameter balok hanya 5mm) dan menyelaraskannya dengan balok (lihat gambar 1).
Sekarang kita membutuhkan gergaji besi, pengukur mitra dan tabung akrilik. Potong saja menjadi beberapa bagian, saya memutuskan untuk membuat housing (tabung) dengan panjang 40mm (gambar 2). Sekarang ambil gergaji besi lagi dan buat kelinci kecil di satu sisi tabung, buat halus dengan kikir logam. Di situlah kabel akan keluar;-) (lihat gambar 3)
Waktunya untuk lem…Ambil pelat tengah (d=150mm) dan pelat depan (yang satin). Sejajarkan lagi dengan plan, beri lem di tengah pelat tengah, sejajarkan pelat depan dan tunggu sampai lem lem agak mengeras. Lem yang saya gunakan adalah lem yang light hardening dan bisa memakan waktu hingga 2-3 jam, jadi saya ingin menggunakan klem… (gambar 3 dan 4)
Lakukan hal yang sama untuk menempelkan tabung ke pelat tanah, pastikan kelinci menghadap ke pelat dan sejajar di suatu tempat di mana Anda ingin LED pertama (jam 12).
Tunggu sampai mengeras!
Kami sekarang dapat menyelaraskan 2 bagian (bookmatched) ke dalam rencana dan mengebor 4 lubang satu menit kami (diameter 5mm atau diameter LED yang Anda pilih; bor perlahan dengan tidak terlalu banyak tekanan). Bor sekitar 8-9mm. Hati-hati, pelat satin sangat rapuh dan dapat mengerem jika Anda mengebor terlalu dalam. Sekarang Anda dapat merekatkannya bersama-sama atau Anda memutuskan, seperti saya, untuk memotong ancaman ke pelat arde dan memasangnya dengan sekrup.
Sekali lagi, tunggu sampai lem mengeras. Sekarang sejajarkan dan rekatkan balok ke pelat tanah. (gambar 6) Coba tebak… tunggu sampai lem mengeras:-)Mari kita lanjutkan ke elektronik…
Langkah 3: Elektronik
Alat:
- besi solder
- Kawat Solder
- pisau hobi
- sepotong kecil prototipe PCB
- kawat berenamel atau kawat lain yang Anda inginkan
- lem panas
Saya mulai dengan LED tunggal. Jika Anda menggunakan kawat berenamel jangan lupa untuk mengikis lacquer sebelum menyolder. Anda dapat menggunakan pisau hobi untuk itu. Hubungkan mereka, Anda dapat merujuk ke gambar dengan pinout di flikto.de. Perhatikan bahwa DOUT masuk ke DIN pada LED berikutnya! (lihat gambar 2) Setelah itu Anda dapat memotong strip LED menjadi 4 elemen masing-masing dengan 3 LED. Ingat, kami memiliki Strip LED 63.6mm dan diameter luar 64mm tabung sehingga kami membutuhkan beberapa "panjang ekstra untuk menyelaraskannya dengan tepat ke balok. Hubungkan dengan kawat enamel seperti pada gambar 4. Saya membuat sedikit proto PCB yang akan berfungsi sebagai "penguat daya" dan akan berisi komponen untuk Strip LED (dua Resistor 330Ohm dan Kapasitor 1000µF, gambar 7). Lihat Gambar Fritzing untuk itu.
Sekarang pasang Strip di sekitar tabung, sejajarkan LED ke balok. Pixel pertama cocok dengan jam 12. Jika Anda telah membalikkan perumahan Anda, jangan lupa bahwa semuanya dicerminkan. Lanjutkan berlawanan arah jarum jam! Gunakan lem panas untuk menempelkannya ke tabung. Setetes kecil untuk setiap segmen akan berhasil!
Anda dapat melakukan hal yang sama untuk LED tunggal (akhirnya dicerminkan), cukup tambahkan lem panas dan tekan ke dalam lubang yang telah dibor sebelumnya.
Jangan menghubungkan Arduino, kami akan menggunakan serial perangkat keras untuk koneksi BT, jadi periksa dulu langkah selanjutnya di mana saya menjelaskan perangkat lunaknya.
Langkah 4: Kode
Anda sekarang dapat memuat sketsa ke Arduino. Anda juga dapat memasang kabel strip LED sekarang. Jangan hubungkan Modul BT!!! Pertama-tama kami ingin melihat kodenya, Anda harus tahu di mana Anda dapat mengubah beberapa hal…
Unduh Arduino IDE dan Library. Arduino IDE, AdafruitNeoPixel, Time, DS1307RTC
Instal IDE dan letakkan perpustakaan ke dalam folder perpustakaan. Buka file INO terlampir dan unggah ke arduino Anda. Kode yang dijelaskan di sini sama tetapi dengan komentar tambahan! Jika Anda telah melakukan semuanya dengan benar, Anda sekarang dapat melihat "bootanimation". Dimungkinkan untuk mengatur waktu melalui monitor serial. Cukup ketik @"hour"/"min"/"sec" mis. @10/33/00 (10:33).
Jangan ragu untuk bermain dengan kodenya… Di sini saya akan memberi Anda deskripsi singkat tentang Kode (Pengaturan tanpa RTC!)
DEFINISI:
#define PIN 6 //Strip LED Jam #define MINPIN 5 //LED menit Singel #define NUMPIXELS 12 //Jumlah Piksel untuk jam #define MINNUMPIXELS 4 //Jumlah Piksel untuk satu menit #define BAUDRATE 115200 //Baudrate, harus sesuai baudrate Modul BT #define utch '@' //mulai BYTE TimeSync
int waktu = 0; // tandai untuk menyimpan jika waktu disetel setelah bootint delayval = 20; //penundaan untuk memudar animasi int clocktimer = 10000; //waktu refresh int timebright = 250; //kecerahan jam Strip int mtimebright = 50; //kecerahan singelminint inisialisasi = 0; // tandai untuk memanggil fungsi clearpixels setelah booting satu jam; int jam lama = 0; // simpan sebelumnya jam satu menit; int lamamin = 0; //menyimpan menit sebelumnya untuk penyegaran sedetik; int aday; int sebulan; int setahun; int mmin;tmElements_t tm;
//Setup untuk 2 array LED NeoPixel (NAME = TYPE(JUMLAH PIXELS, WHICH PIN, FORMAT RGB OR GRB, FREQ); Lihat panduan Adafruit untuk informasi lebih lanjut. Adafruit_NeoPixel piksel = Adafruit_NeoPixel(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800); Adafruit_NeoPixel minpixels = Adafruit_NeoPixel(MINNUMPIXELS, MINPIN, NEO_RGB + NEO_KHZ800);
MEMPERSIAPKAN:
batalkan pengaturan() {
Serial.begin(BAUDRAT); Kawat.mulai(); // Inisialisasi strip, semua OFFpixels.begin(); minpixels.begin(); piksel.tampilkan(); minpixels.show();
//Buat sedikit animationSerial.println("SUNRISE"); matahari terbit(); penundaan (1000); Serial.println("Matahari Terbenam"); matahari terbenam(); piksel.tampilkan(); Serial.println("SIAP"); }
LINGKARAN:
void loop() { // memeriksa timesync while (Serial.available() >0){ char c = Serial.read(); if(c == utch) //jika ada @ pada baris, baca byte / int yang akan datang{ readtime(); } } // inisialisasi LED, hapus animasi boot
if(inisialisasi == 0){ clearpixels(); inisialisasi = 1; }
jam = jam();
menit = menit(); if(timeset == 1 || timeset == 0) // di sini Anda dapat memeriksa apakah Waktu telah disetel, Anda dapat menghentikan program di sini jika Timeset = FALSE, hapus saja "|| timeset == 0" !
{
if(oldamin < aminute || oldahour atur semua ke OFF, tampilkan waktu baru{ clearpixels(); ClockDisplay(); } } }
Menampilkan Jam:
batal Tampilan Jam(){
oldahour = sejam;
oldamin = satu menit; int xjam, xmin;
if (jam >= 12){ xjam = jam-12; //kami hanya memiliki 12 LED untuk tampilan 24 jam} else { xhour = ahour; } //skala menjadi 5 menit langkah xmin = (menit / 5); if(lama < menit){ oldamin = menit; clearpiksel(); } //ambil sisa pembagian dari LED singelmin mmin = (menit % 5); // operator modulo mis. 24% 5 = 4! sangat berguna:-Ppixels.setBrightness(timebright); pixels.setPixelColor(xmin, pixels. Color(5, 125, 255)); // Anda dapat mengubah warna di sini! bermain-main!pixels.setPixelColor(xhour, pixels. Color(255, 50, 0)); piksel.tampilkan();
//menampilkan minsfor tunggal (int m=0; m
minpixels.setBrightness(mtimebright); minpixels.setPixelColor(m, pixels. Color(255, 255, 0)); minpixels.show(); } }Membaca dan memproses informasi WAKTU dari Serial
void readtime() // jika kita sudah mendapatkan "@" terdepan memproses data yang akan datang dan menyimpan waktu untuk TIME Lib{
jam = Serial.parseInt(); menit = Serial.parseInt(); detik = Serial.parseInt(); aday = Serial.parseInt(); bulan = Serial.parseInt(); tahun = Serial.parseInt(); Serial.println("SET WAKTU"); Serial.print(jam); Serial.print(": "); Serial.println(semenit); setTime(satu jam, satu menit, satu detik, aday, satu bulan, satu tahun); }
Bersihkan semua
void clearpixels() // setel setiap PIXEL ke off untuk menyegarkan tampilan{
piksel.mulai(); minpixels.begin(); for(int i=0;ipixels.setPixelColor(i, pixels. Color(0, 0, 0)); minpixels.setPixelColor(i, pixels. Color(0, 0, 0)); pixels.show(); minpixels.menunjukkan(); } }
Langkah 5: Aplikasi Android dan Koneksi BT
Jika Anda berhasil dengan langkah sebelumnya, sekarang Anda dapat memasang Modul BT Anda. (saya harap Anda memastikan, bahwa baudrate cocok). jangan lupa untuk melewati jalur TX & RX:-)
Unduh dan instal aplikasi, pasangkan dengan dongle BT Anda, mulai aplikasi, sambungkan ke dongle dan Sinkronkan waktu dengan ponsel Anda. APP pada dasarnya melakukan hal yang sama seperti yang kami lakukan sebelumnya. Itu hanya mengirim @hh/mm/ss/dd/mm/YYYY yang dihasilkan dari waktu sistemnya. Saya juga menyediakan File APPInventor AIA dan penjelasan tentang langkah selanjutnya (bagi yang tertarik).
Langkah 6: Penemu APP
APP Inventor cukup mudah digunakan dan sepadan dengan usaha untuk program yang begitu sederhana.
Jika Anda membuat proyek baru, Anda akan menemukan diri Anda di layar DESIGNER. (gambar 1) Di sinilah kami menambahkan tabel, tombol, sensor, dan elemen lain untuk digunakan lebih lanjut. Dalam kasus kami, kami membutuhkan:
- tabel (untuk menyelaraskan semua elemen)
- listpicker (untuk pemilihan perangkat BT yang kami sambungkan)
- sebuah tombol (untuk menyalakan WAKTU di atas BT)
- beberapa label (menampilkan waktu dan tanggal aktual)
- sensor jam (menyegarkan waktu)
- sensor klien bluetooth (konektivitas)
Menambahkannya semudah drag & drop! Pada Gambar 2 Anda dapat melihat gambaran umum "APP" di layar BLOK. Nah, di situlah semua "keajaiban" terjadi. Di atas saya membuat beberapa variabel untuk menyimpan Waktu dan Tanggal. Blok pertama di kiri atas akan menginisialisasi elemen listpicker dengan daftar perangkat BT yang dipasangkan. Dengan blok kedua kami memutuskan apa yang harus dilakukan dengan elemen yang dipilih sebelumnya. Nah, kami ingin menghubungkannya.
Jika Anda melihat lebih dekat pada Blok berikutnya, Anda dapat melihat, yang kami hasilkan, jika status BT "terhubung", pesan BT. Ini sama dengan yang kita ketik di SerialMonitor sebelumnya. Blok terakhir di sebelah kiri akan memberi kita angka nol di depan untuk menampilkan waktu (mis. 01:08). Di sisi kanan Anda dapat menemukan blok terakhir kami, di situlah kami menggunakan elemen jam. Di sini kami memperbarui variabel dan menggabungkannya dengan prosedur digit, ini akan terjadi setiap 1000 ms (pengaturan default, ubah dalam mode desainer) dan tampilkan nilai-nilai yang diperbarui dengan label. Itu hanya deskripsi singkat, tetapi APPInventor semudah itu:-)Mungkin ada seseorang di komunitas yang ingin menulis perangkat lunak untuk iOS atau WindowsPhone. (akan bagus)
Saya harap Anda menyukai Instruksi saya! Bersenang-senanglah dengan jam dinding baru Anda! Mungkin Anda ingin memberikannya kepada seseorang yang Anda cintai (Ini musim X-Mas):-)
Dan jika ada pertanyaan, jangan ragu untuk bertanya kepada saya!
Salam Hormat dan Selamat X-Mas.