Daftar Isi:

132 Pixel Clock: 5 Langkah (dengan Gambar)
132 Pixel Clock: 5 Langkah (dengan Gambar)

Video: 132 Pixel Clock: 5 Langkah (dengan Gambar)

Video: 132 Pixel Clock: 5 Langkah (dengan Gambar)
Video: VIDEO VIRAL DI MEDIA SOSIAL TERBARU 2021 PART 01 2024, November
Anonim
Image
Image
132 Jam Piksel
132 Jam Piksel

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

Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
Mengumpulkan Perlengkapan dan Alat
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

Penandaan, Pengeboran, dan Perutean
Penandaan, Pengeboran, dan Perutean
Penandaan, Pengeboran, dan Perutean
Penandaan, Pengeboran, dan Perutean
Penandaan, Pengeboran, dan Perutean
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

Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
Begitu Banyak Prajurit, Pemotongan, dan Pengupasan
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

Menginstal
Menginstal
Menginstal
Menginstal
Menginstal
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

Image
Image
Sentuhan Akhir
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.

Kontes Jam
Kontes Jam
Kontes Jam
Kontes Jam

Runner Up dalam Kontes Jam

Direkomendasikan: