Isi kandungan:

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

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

Video: 132 Jam Pixel: 5 Langkah (dengan Gambar)
Video: Full Review Pengalaman Pakai Google Pixel 5 Di Tahun 2022 | BEST Android Experience Di Harga 5 Juta! 2024, November
Anonim
Image
Image
132 Jam Pixel
132 Jam Pixel

Saya ada, selama saya ingat saya taksub oleh LED dan masa. Dalam projek ini saya telah membuat jam dinding besar yang memaparkan masa semasa menggunakan 132 LED neopixel yang dipasang dan bersinar melalui papan spruce. Ini adalah digital analog hibrid dengan piksel Individu untuk setiap jam, minit dan saat.

Ini adalah projek terbesar yang saya jalankan sehingga kini, saya mula memikirkannya 6 bulan yang lalu dan idea itu perlahan-lahan muncul. Saya sangat gembira dengan hasilnya dan saya tidak sabar untuk berkongsi dengan anda.

Langkah 1: Mengumpulkan Bekalan dan Alat

Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan
Mengumpulkan Bekalan dan Alatan

Komponen

Projek ini dibina di atas papan hobi pipi dari kedai DIY tempatan saya. Papan berukuran lebar 850mm dengan tinggi 500mm dan kedalaman 18mm.

LED yang digunakan dalam projek ini adalah 5050 WS2812b yang dipasang pada PCB bulat yang berdiameter kira-kira 9mm dengan pad solder di bahagian belakang.

Saya menggunakan pengawal mikro yang serasi dengan Arduino Pro Mini. Ini adalah versi 5V 16 MHZ. Saya memilih yang ini kerana ia mempunyai reka bentuk yang sangat langsing, cetakan kaki kecil dan semua port yang diperlukan serta beberapa cadangan untuk peningkatan masa depan. Ia juga 5 volt sehingga saya dapat menggunakan bekalan kuasa tunggal untuk LED, Pengawal mikro dan RTC

Penjagaan masa dijaga oleh modul RTC (Real Time Clock) yang menampilkan cip DS3231. Cip ini sangat tepat sehingga masa tidak boleh terlalu banyak.

Juga digunakan:

Kawat. Pateri dan gam panas.

Alat:

Bor kuasa dan gerudi kayu (10mm dan 5mm)

Besi pematerian

Pistol gam panas

dawai dawai

Aksesori penghala Dremel dan terjun

Langkah 2: Penandaan, Penggerudian dan Laluan

Penandaan, Penggerudian dan Laluan
Penandaan, Penggerudian dan Laluan
Penandaan, Penggerudian dan Laluan
Penandaan, Penggerudian dan Laluan
Penandaan, Penggerudian dan Laluan
Penandaan, Penggerudian dan Laluan

Penggerudian

  • Dengan menggunakan tepi selat cari bahagian tengah papan dengan menarik garis dari sudut bertentangan.
  • Tandakan 3 bulatan menggunakan sehelai tali dan pen. Lingkaran paling luar hendaklah kira-kira 20mm dari tepi papan dengan 2 garisan lain bergerak 15mm dari garis terakhir.
  • Saya menggunakan muka jam yang dicetak untuk membantu saya menandakan kedudukan setiap minit dan saat pada 2 garis luar dan jam di garis dalam.
  • Bor lubang 10mm sedalam 5mm setiap jam, minit dan saat.
  • Gunakan gerudi 5mm untuk membuat lubang walaupun papan selama jam, minit dan saat.

Laluan

Walaupun langkah ini tidak diperlukan, jam akan dipasang dengan rata ke dinding.

  • Menggunakan saluran wayar laluan panduan penghala dan bulatan di papan
  • Tandakan dan laluan jalan keluar untuk tinggal di RTC dan Pengawal Mikro.
  • Laluan saluran dari saluran luar ke lubang wayar

Langkah 3: Banyak Menjual, Memotong dan Melucutkan

Begitu Banyak Askar, Memotong dan Melucutkan
Begitu Banyak Askar, Memotong dan Melucutkan
Begitu Banyak Askar, Memotong dan Melucutkan
Begitu Banyak Askar, Memotong dan Melucutkan
Begitu Banyak Askar, Memotong dan Melucutkan
Begitu Banyak Askar, Memotong dan Melucutkan

Bahagian seterusnya ini lebih senang diperkatakan daripada dilakukan. Nasihat saya perlu diberi perhatian untuk segera. mencuba dan mencari sistem dan mengikut rentak.

Setiap LED memerlukan 5 volt masuk, 5 volt keluar, Data masuk, Data keluar, Ground masuk dan Ground out. termasuk kuasa untuk pengawal mikro dan RTC lebih daripada 400 wayarnya, semua dilucutkan dan disolder di kedua hujungnya.

Bahan biru pekat sangat berguna untuk langkah ini.

  • Saya mulakan dengan meletakkan 2 LED di lubang mereka di sebelah satu sama lain untuk menyelesaikan panjang wayar yang diperlukan untuk berhubung antara satu sama lain.
  • Dengan menggunakan wayar pertama sebagai panduan, saya kemudian memotong 60 setiap wayar warna.
  • Tanggalkan selongsong 2mm dari hujung setiap wayar dan timah dengan pateri.
  • Pateri gumpalan pateri kecil ke setiap pad LED.
  • Pateri wayar ke LED untuk membentuk dua rantai 60 selama minit dan saat dan satu rantai 12 selama berjam-jam. Saya menggunakan wayar merah untuk 5V, kuning untuk data dan biru untuk tanah.
  • Berhati-hati untuk menghubungkan setiap Data Out (DOUT) ke Data In (DIN) LED seterusnya
  • Petunjuk terakhir dalam setiap dos rantai tidak memerlukan data keluar.

Setelah semua rantai selesai, ada baiknya anda mengujinya sebelum memasangnya. Saya menggunakan Arduino UNO dan Adafruit NeoPixel Strand Test untuk mengesahkan setiap LED berfungsi.

Memateri wayar yang lebih panjang ke setiap rantai untuk 5V, Ground dan Data in.

Pada ketika ini harus ada lima wayar 5v, tiga kabel Data yang disambungkan ke kabel Arduino Pro Mini dan 5 Ground.

Tanggalkan 5mm dari hujung wayar 5v dan pateri semuanya bersama-sama dan ulangi untuk kabel Ground.

Setelah menyelesaikan tiga rantai solder wayar 5V ke pin RAW dari Arduino Pro Mini dan juga ke pin VCC untuk RTC. Kabel Ground ke GND pada Arduino Pro Mini dan RTC dan kemudian 2 wayar lagi:

SCL dari RTC ke A5 pada Pro Mini

SDA dari RTC ke A4 pada Pro Mini

Garis data dari LED harus disambungkan ke:

  • Detik - Pin Digital 3.
  • Minit - DigitalPin 4
  • Jam - DigitalPin 5

Langkah 4: Memasang

Memasang
Memasang
Memasang
Memasang
Memasang
Memasang

Setelah disolder, memasang LED di lubang mereka harus lurus ke depan. LED perlu dipasang supaya data berjalan berlawanan arah jarum jam ketika melihatnya dari belakang ketika kodnya menghadap ke depan.

Saya menggunakan sebilangan kecil lem panas untuk menahannya kerana saya mahu dapat mengganti LED tunggal jika ia gagal pada masa akan datang.

Saya juga menggunakan gam panas untuk memastikan semua wayar sentiasa kemas dan kemas dan memasang penyambung tong ke papan.

Terdapat sebilangan panduan pengaturcaraan mini arduino pro yang tersedia. Saya menggunakan kaedah penukar bersiri USB ke siri untuk memuatkan kod ini ke Arduino:

Kod ini juga akan menetapkan waktu pada RTC ke waktu ia disusun. jadi penting untuk hanya menekan butang muat naik sehingga mematuhi dan memuat naik secepat mungkin.

Sebilangan besar kod ini dipinjam dari Jam Cincin NeoPixel oleh Andy Doro. Sebilangan dari Adafruit NeoPixel Strand Test dan beberapa yang saya kumpulkan.

Anda perlu memasang beberapa perpustakaan. Mereka boleh didapati dari Pengurus Perpustakaan pada perisian Arduino.

Adafruit NeoPixel untuk LED ws2812b

Kawat untuk bercakap dengan RTC melalui I2C (ini dibina sebagai standard)

dan RTClib kerana mengetahui apa yang harus ditanyakan kepada RTC

/ ************************************************* ************************* * * Jam Cincin NeoPixel oleh Andy Doro ([email protected]) https://andydoro.com/ringclock/ * * ************************************************ **************************

Sejarah Semakan

Tarikh Mengikut Apa

20140320 AFD Draf pertama 20160105 AFD Arka pudar 20160916 AFD Trinket serasi 20170727 AFD menambahkan STARTPIXEL untuk kepungan 3D, titik permulaan berubah, menambahkan sokongan DST automatik 20180424 AFD menggunakan perpustakaan DST https://github.com/andydoro/DST_RTC *

/ sertakan kod perpustakaan:

#sertakan #sertakan

#sertakan

// tentukan pin

#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5

#tentukan BRIGHTNESS 20 // tetapkan kecerahan maksimum

#tentukan r 10

#tentukan g 10 #tentukan b 10 RTC_DS3231 rtc; // Menetapkan objek jam

Adafruit_NeoPixel stripS = Adafruit_NeoPixel (60, SECPIN, NEO_GRB + NEO_KHZ800); // objek jalur

Adafruit_NeoPixel stripM = Adafruit_NeoPixel (60, MINPIN, NEO_GRB + NEO_KHZ800); // jalur objek Adafruit_NeoPixel stripH = Adafruit_NeoPixel (24, HOUPIN, NEO_GRB + NEO_KHZ800); // jalur objek byte pixelColorRed, pixelColorGreen, pixelColorBlue; // memegang nilai warna

batal persediaan () {

Wire.begin (); // Mulakan I2C rtc.begin (); // mulakan jam

Serial.begin (9600);

// tetapkan pinmode pinMode (SECPIN, OUTPUT); pinMode (MINPIN, OUTPUT); pinMode (HOUPIN, OUTPUT);

jika (rtc.lostPower ()) {

Serial.println ("RTC kehilangan kuasa, mari tetapkan masa!"); // baris berikut menetapkan RTC ke tarikh & masa lakaran ini disusun rtc.adjust (DateTime (F (_ DATE_), F (_ TIME_))); // Garis ini menetapkan RTC dengan tarikh & waktu yang jelas, misalnya untuk menetapkan // 21 Januari 2014 jam 3 pagi yang anda panggil: // rtc.adjust (DateTime (2014, 1, 21, 3, 0, 0)); }

stripS.begin ();

stripM.begin (); stripH.begin (); //strip.show (); // Memulakan semua piksel untuk 'mati'

// urutan permulaan

kelewatan (500);

colorWipeS (stripS. Color (0, g, 0), 5); // Warna biruWipeM (stripM. Color (r, 0, 0), 5); // Warna biruWipeH (stripH. Color (0, 0, b), 50); // Biru

kelewatan (1000);

DateTime theTime = rtc.now (); // mengambil kira DST byte secondval = theTime.second (); // dapatkan detik byte minit = theTime.minute (); // dapatkan minit int jam = theTime.hour (); jam = jam jam% 12; // Jam ini 12 jam, jika 13-23, tukar ke 0-11`

untuk (uint16_t i = 0; i <secondval; i ++) {stripS.setPixelColor (i, 0, 0, b); stripS.show (); kelewatan (5); }

untuk (uint16_t i = 0; i <minitval; i ++) {stripM.setPixelColor (i, 0, g, 0); stripM.show (); kelewatan (5); }

untuk (uint16_t i = 0; i <jam; i ++) {stripH.setPixelColor (i, r, 0, 0); stripH.show (); kelewatan (5); }

}

gelung kosong () {

// dapatkan masa

DateTime theTime = rtc.now (); // mengambil kira DST

byte secondval = theTime.second (); // dapatkan detik

bait minit = theTime.minute (); // dapatkan minit int jam = theTime.hour (); // dapatkan jam jam = jam% 12; // Jam ini 12 jam, jika 13-23, tukar ke 0-11`

stripS.setPixelColor (selang kedua, 0, 0, 20); stripS.show (); kelewatan (10); if (secondval == 59) {untuk (uint8_t i = stripS.numPixels (); i> 0; i--) {stripS.setPixelColor (i, 0, g, 0); stripS.show (); kelewatan (16);}}

stripM.setPixelColor (minit, 0, g, 0);

stripM.show (); kelewatan (10); if (secondval == 59 && minuteval == 59) {untuk (uint8_t i = stripM.numPixels (); i> 0; i--) {stripM.setPixelColor (i, r, 0, 0); stripM.show (); kelewatan (16);}}

stripH.setPixelColor (jam, r, 0, 0);

stripH.show (); kelewatan (10); jika (secondval == 59 && minuteval == 59 && hourval == 11) {untuk (uint8_t i = stripH.numPixels (); i> 0; i--) {stripH.setPixelColor (i, 0, 0, b); stripH.show (); kelewatan (83);}} // untuk debugging siri Serial.print (jam, DEC); Cetakan bersiri (':'); Serial.print (minit, DEC); Cetakan bersiri (':'); Serial.println (secondval, DEC); }

// Isi titik satu demi satu dengan warna

void colorWipeS (uint32_t c, uint8_t waiting) {untuk (uint16_t i = 0; i <stripS.numPixels (); i ++) {stripS.setPixelColor (i, c); stripS.show (); kelewatan (tunggu); }}

void colorWipeM (uint32_t c, uint8_t tunggu) {

untuk (uint16_t i = 0; i <stripM.numPixels (); i ++) {stripM.setPixelColor (i, c); stripM.show (); kelewatan (tunggu); }}

void colorWipeH (uint32_t c, uint8_t tunggu) {

untuk (uint16_t i = 0; i <stripH.numPixels (); i ++) {stripH.setPixelColor (i, c); stripH.show (); kelewatan (tunggu); }}

Langkah 5: Sentuhan Akhir

Image
Image
Sentuhan Akhir
Sentuhan Akhir

Yang tinggal sekarang hanyalah memperbaiki RTC dan Micro Controller ke dalam relung.

Saya telah memasang bateri RTC ke atas sehingga saya dapat menukar bateri dengan mudah jika diperlukan.

Sambungkan wayar 5v ke sisi + penyambung dan Ground ke sisi

Kuasakannya!

Saya mempunyai sambungan saya ke bank bateri USB tetapi pengecas telefon USB juga berfungsi.

Catatan:

Kecerahan LED ditetapkan dalam kod. Telah ditetapkan rendah untuk mengekalkan undian semasa. Pada kecerahan penuh dengan semua LED menyala, ia dapat menarik hampir 8 amp. Dengan persediaan semasa kurang dari 1.

Peraduan Jam
Peraduan Jam
Peraduan Jam
Peraduan Jam

Naib Johan dalam Peraduan Jam

Disyorkan: