Daftar Isi:
- Langkah 1: Mengumpulkan Perlengkapan dan Alat
- Langkah 2: Penandaan, Pengeboran, dan Perutean
- Langkah 3: Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
- Langkah 4: Menginstal
- Langkah 5: Sentuhan Akhir
Video: 132 Pixel Clock: 5 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Terakhir diubah: 2024-01-30 09:57
Saya telah, selama yang saya ingat, terobsesi dengan LED dan waktu. Dalam proyek ini saya telah membuat jam dinding besar yang menampilkan waktu saat ini menggunakan 132 LED neopiksel yang dipasang dan bersinar melalui papan cemara. Ini adalah digital analog hybrid dengan piksel individu untuk setiap jam, menit dan detik.
Ini adalah proyek terbesar yang saya ambil hingga saat ini, saya mulai memikirkannya 6 bulan yang lalu dan ide itu perlahan muncul. Saya sangat senang dengan hasilnya dan saya tidak sabar untuk membagikannya kepada Anda.
Langkah 1: Mengumpulkan Perlengkapan dan Alat
Komponen
Proyek ini dibangun di atas papan hobi ciak dari toko DIY lokal saya. Papan berukuran lebar 850mm dengan tinggi 500mm dan kedalaman 18mm.
LED yang digunakan dalam proyek ini adalah 5050 WS2812b yang dipasang pada PCB melingkar yang berdiameter sekitar 9mm dengan bantalan solder di bagian belakang.
Saya menggunakan pengontrol mikro yang kompatibel dengan Arduino Pro Mini. Ini versi 5V 16 MHZ. Saya memilih yang ini karena memiliki desain yang sangat ramping, cetakan kaki yang kecil dan semua port yang diperlukan ditambah beberapa cadangan untuk peningkatan di masa mendatang. Ini juga 5 volt jadi saya bisa menggunakan catu daya tunggal untuk LED, pengontrol mikro, dan RTC
Pencatatan waktu ditangani oleh modul RTC (Real Time Clock) yang dilengkapi chip DS3231. Chip ini sangat akurat sehingga waktunya tidak terlalu banyak.
Juga digunakan:
Kabel. Solder dan lem panas.
Peralatan:
Bor listrik dan mata bor kayu (10mm dan 5mm)
Besi solder
Pistol lem panas
potongan kawat
Aksesoris router Dremel dan terjun
Langkah 2: Penandaan, Pengeboran, dan Perutean
Pengeboran
- Menggunakan tepi selat, temukan bagian tengah papan dengan menggambar garis dari sudut yang berlawanan.
- Tandai 3 lingkaran menggunakan seutas tali dan pena. Lingkaran paling luar harus sekitar 20mm dari tepi papan dengan 2 garis lainnya bergerak 15mm dari garis terakhir.
- Saya menggunakan tampilan jam yang dicetak untuk membantu saya menandai posisi masing-masing menit dan detik pada 2 baris luar dan jam pada baris dalam.
- Bor lubang 10mm sedalam 5mm untuk setiap jam, menit dan detik.
- Gunakan bor 5mm untuk membuat lubang pada papan selama berjam-jam, menit dan detik.
Rute
Meskipun langkah ini tidak diperlukan, ini akan memungkinkan jam dipasang rata ke dinding.
- Menggunakan router dan panduan lingkaran saluran kabel rute di papan
- Tandai dan rutekan reses untuk RTC dan Micro Controller untuk ditinggali.
- Rutekan saluran dari garis luar ke ceruk untuk kabel
Langkah 3: Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
Bagian selanjutnya ini jauh lebih mudah diucapkan daripada dilakukan. Saran saya akan dicatat untuk terburu-buru. mencoba dan menemukan sistem dan masuk ke ritme.
Masing-masing LED membutuhkan 5 volt in, 5 volt out, Data in, Data out, Ground in dan Ground out. termasuk daya untuk pengontrol mikro dan RTC lebih dari 400 kabel, semuanya dilucuti dan disolder di kedua ujungnya.
Zat biru norak sangat berguna untuk langkah ini.
- Saya mulai dengan menempatkan 2 LED di lubangnya di samping satu sama lain untuk mengetahui panjang kabel yang diperlukan untuk terhubung satu sama lain.
- Menggunakan potongan pertama dari kawat sebagai panduan saya kemudian memotong 60 dari setiap warna kawat.
- Lepaskan selongsong 2mm dari ujung setiap kawat dan timah dengan solder.
- Solder gumpalan kecil solder ke masing-masing bantalan LED.
- Solder kabel ke LED untuk membentuk dua rantai 60 untuk menit dan detik dan satu rantai 12 untuk jam. Saya menggunakan kabel merah untuk 5V, kuning untuk data dan biru untuk ground.
- Berhati-hatilah untuk menghubungkan setiap Data Keluar (DOUT) ke Data Masuk (DIN) dari LED berikutnya
- Led terakhir di setiap dosis rantai tidak memerlukan kabel data keluar.
Setelah semua rantai selesai, ada baiknya Anda mengujinya sebelum memasangnya. Saya menggunakan Arduino UNO dan Adafruit NeoPixel Strand Test untuk memastikan setiap LED berfungsi.
Solder kabel yang lebih panjang ke masing-masing rantai untuk 5V, Ground dan Data in.
Pada titik ini harus ada lima kabel 5v, tiga kabel Data yang terhubung ke Arduino Pro Mini dan 5 kabel Ground.
Lepaskan 5mm dari ujung kabel 5v dan solder semuanya bersama-sama dan ulangi untuk kabel Ground.
Setelah menyelesaikan tiga rantai, solder kabel 5V ke pin RAW Arduino Pro Mini dan juga ke pin VCC untuk RTC. Kabel Ground ke GND pada Arduino Pro Mini dan RTC dan kemudian 2 kabel lagi:
SCL dari RTC ke A5 di Pro Mini
SDA dari RTC ke A4 di Pro Mini
Jalur data dari LED harus terhubung ke:
- Detik - Pin Digital 3.
- Menit - DigitalPin 4
- Jam - DigitalPin 5
Langkah 4: Menginstal
Setelah disolder, memasang LED di lubangnya harus lurus ke depan. LED perlu dipasang agar data berjalan berlawanan arah jarum jam saat melihatnya dari belakang karena kodenya diatur menghadap ke depan.
Saya menggunakan sedikit lem panas untuk menahannya karena saya ingin dapat mengganti satu LED jika gagal di masa mendatang.
Saya juga menggunakan lem panas untuk menjaga semua kabel tetap rapi dan rapi dan untuk memperbaiki konektor barel ke papan.
Ada sejumlah panduan pemrograman arduino pro mini yang tersedia. Saya menggunakan metode konverter USB ke serial eksternal untuk memuat kode ini ke Arduino:
Kode ini juga akan mengatur waktu di RTC ke waktu kompilasi. jadi penting untuk hanya menutup tombol unggah agar sesuai dan mengunggah secepat mungkin.
Sebagian besar kode ini dipinjam dari Jam Cincin NeoPixel oleh Andy Doro. Beberapa dari Adafruit NeoPixel Strand Test dan beberapa saya kumpulkan.
Anda harus menginstal beberapa perpustakaan. Mereka tersedia dari Manajer Perpustakaan pada perangkat lunak Arduino.
NeoPixel Adafruit untuk LED ws2812b
Kawat untuk berbicara dengan RTC melalui I2C (ini dibuat sebagai standar)
dan RTClib untuk mengetahui apa yang harus ditanyakan kepada RTC
/************************************************* ************************* * * Jam Cincin NeoPixel oleh Andy Doro ([email protected]) https://andydoro.com/ringclock/ * * ************************************************ *****************************
Riwayat Revisi
Tanggal Oleh Apa
20140320 AFD Draf pertama 20160105 AFD Busur pudar 20160916 AFD Trinket kompatibel 20170727 AFD menambahkan STARTPIXEL untuk enklosur 3D, titik awal variabel, menambahkan dukungan DST otomatis 20180424 AFD menggunakan pustaka DST https://github.com/andydoro/DST_RTC *
/ sertakan kode perpustakaan:
#sertakan #sertakan
#termasuk
// tentukan pin
#menentukan SECPIN 3 #menentukan MINPIN 4 #menentukan HOUPIN 5
#define BRIGHTNESS 20 // atur kecerahan maksimal
#tentukan r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // Menetapkan objek jam
Adafruit_NeoPixel stripS = Adafruit_NeoPixel(60, SECPIN, NEO_GRB + NEO_KHZ800); // menghapus objek
Adafruit_NeoPixel stripM = Adafruit_NeoPixel(60, MINPIN, NEO_GRB + NEO_KHZ800); // strip objek Adafruit_NeoPixel stripH = Adafruit_NeoPixel(24, HOUPIN, NEO_GRB + NEO_KHZ800); // strip objek byte pixelColorRed, pixelColorGreen, pixelColorBlue; // menyimpan nilai warna
batalkan pengaturan () {
Kawat.mulai(); // Mulai I2C rtc.begin(); // mulai jam
Serial.begin(9600);
// mengatur mode pin pinMode(SECPIN, OUTPUT); pinMode(MINPIN, OUTPUT); pinMode(HOUPIN, OUTPUT);
jika (rtc.lostPower()) {
Serial.println("RTC kehilangan daya, ayo atur waktunya!"); // baris berikut menyetel RTC ke tanggal & waktu sketsa ini dikompilasi rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Baris ini menetapkan RTC dengan tanggal & waktu yang eksplisit, misalnya untuk menetapkan // 21 Januari 2014 pukul 3 pagi Anda akan memanggil: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); }
stripS.mulai();
stripM.mulai(); stripH.mulai(); //strip.tampilkan(); // Inisialisasi semua piksel ke 'mati'
// urutan startup
penundaan (500);
colorWipeS(stripS. Color(0, g, 0), 5); // Warna biruWipeM(stripM. Color(r, 0, 0), 5); // Warna biruHapusH(stripH. Warna(0, 0, b), 50); // Biru
penundaan (1000);
DateTime theTime = rtc.now(); // memperhitungkan DST byte secondval = theTime.second(); // dapatkan detik byte minuteval = theTime.minute(); // dapatkan menit int hourval = theTime.hour(); jam = jam % 12; // Jam ini adalah 12 jam, jika 13-23, ubah menjadi 0-11`
for (uint16_t i = 0; i < secondval; i++) { stripS.setPixelColor(i, 0, 0, b); stripS.tampilkan(); penundaan (5); }
for (uint16_t i = 0; i < minuteval; i++) { stripM.setPixelColor(i, 0, g, 0); stripM.tampilkan(); penundaan (5); }
for (uint16_t i = 0; i < hourval; i++) { stripH.setPixelColor(i, r, 0, 0); stripH.tampilkan(); penundaan (5); }
}
lingkaran kosong () {
// dapatkan waktu
DateTime theTime = rtc.now(); // memperhitungkan DST
byte secondval = theTime.second(); // dapatkan detik
byte minuteval = theTime.minute(); // dapatkan menit int hourval = theTime.hour(); // dapatkan jam jam = jam % 12; // Jam ini adalah 12 jam, jika 13-23, ubah menjadi 0-11`
stripS.setPixelColor(kedua, 0, 0, 20); stripS.tampilkan(); penundaan (10); if (secondval ==59) { for (uint8_t i = stripS.numPixels(); i > 0; i--) { stripS.setPixelColor(i, 0, g, 0); stripS.tampilkan(); penundaan (16);} }
stripM.setPixelColor(minuteval, 0, g, 0);
stripM.tampilkan(); penundaan (10); if (secondval ==59 && minuteval == 59) { for (uint8_t i = stripM.numPixels(); i > 0; i--) { stripM.setPixelColor(i, r, 0, 0); stripM.tampilkan(); penundaan (16);} }
stripH.setPixelColor(val jam, r, 0, 0);
stripH.tampilkan(); penundaan (10); if (secondval == 59 && minuteval == 59 && hourval == 11) { for (uint8_t i = stripH.numPixels(); i > 0; i--) { stripH.setPixelColor(i, 0, 0, b); stripH.tampilkan(); delay(83);} } // untuk serial debug Serial.print(hourval, DEC); Serial.print(':'); Serial.print (menit, DEC); Serial.print(':'); Serial.println(kedua, DEC); }
// Isi titik-titik satu demi satu dengan warna
void colorWipeS(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < stripS.numPixels(); i++) { stripS.setPixelColor(i, c); stripS.tampilkan(); tunda (tunggu); } }
void colorWipeM(uint32_t c, uint8_t tunggu) {
for (uint16_t i = 0; i < stripM.numPixels(); i++) { stripM.setPixelColor(i, c); stripM.tampilkan(); tunda (tunggu); } }
void colorWipeH(uint32_t c, uint8_t tunggu) {
for (uint16_t i = 0; i < stripH.numPixels(); i++) { stripH.setPixelColor(i, c); stripH.tampilkan(); tunda (tunggu); } }
Langkah 5: Sentuhan Akhir
Yang tersisa sekarang adalah memperbaiki RTC dan Micro Controller di ceruk.
Saya telah memasang sisi baterai RTC sehingga saya dapat dengan mudah mengganti baterai jika diperlukan.
Hubungkan kabel 5v ke sisi + konektor dan Ground ke sisi -
Nyalakan!
Saya memiliki milik saya yang terhubung ke bank baterai USB tetapi pengisi daya telepon USB akan berfungsi dengan baik.
Catatan:
Kecerahan LED diatur dalam kode. Telah disetel rendah untuk menjaga penarikan saat ini tetap rendah. Pada kecerahan penuh dengan semua LED menyala itu bisa menarik hampir 8 amp. Dengan pengaturan saat ini kurang dari 1.
Runner Up dalam Kontes Jam
Direkomendasikan:
Vertikal Bartop Arcade Dengan Tampilan LED PIXEL Terintegrasi: 11 Langkah (dengan Gambar)
Arkade Bartop Vertikal Dengan Tampilan LED PIXEL Terintegrasi: **** Diperbarui dengan perangkat lunak baru Juli 2019, detailnya di sini ****** Arcade bartop dibangun dengan fitur unik yang diubah oleh tenda matriks LED agar sesuai dengan game yang dipilih. Seni karakter di sisi kabinet adalah tatahan potong laser dan tidak lengket
PIXELCADE - Mini Bartop Arcade Dengan Tampilan LED PIXEL Terintegrasi: 13 Langkah (dengan Gambar)
PIXELCADE - Mini Bartop Arcade Dengan Tampilan LED PIXEL Terintegrasi: **** Versi yang Ditingkatkan dengan Tenda LED Terintegrasi Di Sini **** Arcade bartop dibangun dengan fitur unik dari tampilan LED terintegrasi yang cocok dengan game yang dipilih. Seni karakter di sisi kabinet adalah inlay potongan laser dan bukan stiker
Electromagnetic Pendulum Laser Nixie Clock, Dengan Termometer: 5 Langkah (dengan Gambar)
Electromagnetic Pendulum Laser Nixie Clock, Dengan Termometer: Saya telah membuat beberapa jam Nixie Tube sebelumnya, menggunakan Arduino Nixie Shield yang saya beli di ebay di sini: https://www.ebay.co.uk/itm/Nixie-Tubes-Clock -IN-14…Papan ini dilengkapi dengan RTC (Real Time Clock) bawaan dan membuatnya sangat mudah
RGB Infinity Clock Dengan Aplikasi BT Sendiri: 15 Langkah (dengan Gambar)
Jam Infinity RGB Dengan Aplikasi BT Sendiri: Jam Digital dan Analog Normal membosankan, Jadi rencanakan untuk mengembangkan jam keren dengan warna khusus untuk Dial, Jarum jam, Jarum menit, dan Jarum detik. Untuk ini pertama-tama ingin mengembangkan jam menggunakan strip LED RGB Addressable. Kemudian untuk komunikasi dengan A
Bingkai Gambar LED Neo Pixel: 6 Langkah (dengan Gambar)
Bingkai Gambar LED Neo Pixel: Halo lagi! Saya telah melakukan proyek ini khusus untuk "warna pelangi" kompetisi. Jika Anda suka, silakan pilih saya dalam kontes. Jadi saya memutuskan untuk membuat proyek yang sangat cepat dan mudah untuk kompetisi. Ini adalah L neo-piksel