İçindekiler:
- Adım 1: Sarf Malzemeleri ve Araçları Toplama
- Adım 2: İşaretleme, Delme ve Yönlendirme
- Adım 3: Çok Askerlik, Kesme ve Soyma
- 4. Adım: Yükleme
- Adım 5: Son Dokunuşlar
Video: 132 Piksel Saat: 5 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Hatırlayabildiğim kadarıyla LED'lere ve zamana takıntılıydım. Bu projede, bir ladin tahtasına monte edilmiş ve parlayan 132 neopiksel LED'leri kullanarak şimdiki zamanı gösteren büyük bir duvar saati oluşturdum. Her saat, dakika ve saniye için ayrı bir piksele sahip hibrit bir analog dijital.
Bu şimdiye kadar üstlendiğim en büyük projeydi, 6 ay önce düşünmeye başladım ve fikir yavaş yavaş oluştu. Sonuçtan gerçekten çok memnunum ve sizinle paylaşmak için sabırsızlanıyorum.
Adım 1: Sarf Malzemeleri ve Araçları Toplama
Bileşenler
Bu proje, yerel DIY mağazamdan bir cıvıl cıvıl hobi tahtası üzerine inşa edilmiştir. Tahta, 850 mm genişliğinde, 500 mm yüksekliğinde ve 18 mm derinliğindedir.
Bu projede kullanılan LED'ler, arkada lehim pedleri bulunan yaklaşık 9 mm çapında dairesel PCB'ler üzerine monte edilmiş 5050 WS2812b'dir.
Arduino Pro Mini uyumlu bir mikro denetleyici kullanıyorum. 5V 16 MHZ versiyonu. Süper ince tasarımı, küçük ayak izi ve tüm gerekli bağlantı noktalarının yanı sıra gelecekteki yükseltmeler için bazı yedekleri olduğu için bunu seçtim. Ayrıca 5 volt olduğundan LED'ler, Mikro denetleyici ve RTC için tek bir güç kaynağı kullanabilirim
Zaman tutma, DS3231 yongasını içeren bir RTC (Gerçek Zamanlı Saat) modülü tarafından halledilir. Bu çip çok hassastır, bu nedenle zaman çok fazla kaymamalıdır.
Ayrıca kullanılır:
Tel. Lehim ve sıcak tutkal.
Aletler:
Elektrikli matkap ve ahşap matkap uçları (10 mm ve 5 mm)
Havya
Sıcak yapıştırıcı tabancası
tel parçaları
Dremel ve daldırma freze aksesuarları
Adım 2: İşaretleme, Delme ve Yönlendirme
Sondaj
- Düz bir kenar kullanarak, zıt köşelerden bir çizgi çizerek tahtanın merkezini bulun.
- Bir parça ip ve kalem kullanarak 3 daire çizin. En dıştaki daire, diğer 2 çizgi son çizgiden 15 mm içeride hareket ederken, tahtanın kenarından yaklaşık 20 mm olmalıdır.
- Dış 2 satırda dakika ve saniyelerin her birinin konumlarını ve iç satırda saatlerin konumlarını işaretlememe yardımcı olması için basılı bir saat yüzü kullandım.
- Her saat, dakika ve saniye için yaklaşık 5 mm derinliğinde 10 mm'lik delikler açın.
- Saat, dakika ve saniye boyunca tahtada delikler açmak için 5 mm'lik matkabı kullanın.
yönlendirme
Bu adım gerekli olmasa da, saatin duvara aynı hizada takılmasına izin verecektir.
- Panoda bir yönlendirici ve daire kılavuzu rota tel kanalları kullanma
- RTC ve Mikro Denetleyicinin içinde yaşaması için bir girinti işaretleyin ve yönlendirin.
- Kablolar için girintiye dış hatlardan bir kanal yönlendirin
Adım 3: Çok Askerlik, Kesme ve Soyma
Bu sonraki kısım, söylemesi yapmaktan çok daha kolay. Tavsiyem acele etmeniz yönünde olacaktır. deneyin ve bir sistem bulun ve bir ritme girin.
LED'lerin her biri 5 volt giriş, 5 volt çıkış, Veri girişi, Veri çıkışı, Toprak girişi ve Toprak çıkışına ihtiyaç duyar. mikro denetleyici ve RTC için güç dahil, her iki uçta da soyulmuş ve lehimlenmiş 400'den fazla tel.
Bu adım için yapışkan mavi bir madde çok faydalıdır.
- Birbirine bağlanmak için gereken kablo uzunluğunu hesaplamak için yan yana deliklerine 2 LED yerleştirerek başladım.
- 1. tel parçasını kılavuz olarak kullanarak her bir renk telinden 60 adet kestim.
- Her bir telin uçlarından 2 mm'lik manşonu soyun ve lehimle kalaylayın.
- LED pedlerinin her birine küçük bir lehim bloğu lehimleyin.
- Dakikalar ve saniyeler için 60'lık iki zincir ve saatler için 12'lik bir zincir oluşturmak için kabloları LED'lere lehimleyin. 5V için kırmızı kablo, veri için sarı ve toprak için mavi kullandım.
- Her bir Veri Çıkışını (DOUT) bir sonraki LED'in Veri Girişine (DIN) bağlamaya dikkat edin.
- Her zincir dozundaki son led, bir veri çıkışı kablosuna ihtiyaç duymaz.
Tüm zincirler tamamlandıktan sonra, takmadan önce test etmek iyi bir fikirdir. Her bir LED'in çalıştığını doğrulamak için Arduino UNO'mu ve Adafruit NeoPixel Strand Test'i kullandım.
5V, Topraklama ve Veri girişi için zincirlerin her birine daha uzun teller lehimleyin.
Bu noktada beş adet 5v kablosu, Arduino Pro Mini'ye bağlı üç adet Veri kablosu ve 5 adet Topraklama kablosu olmalıdır.
5v kabloların uçlarından 5 mm sıyırın ve hepsini birlikte lehimleyin ve Topraklama kabloları için tekrarlayın.
Üç zinciri tamamladıktan sonra Arduino Pro Mini'nin RAW pinine ve ayrıca RTC için VCC pinine 5V'luk bir tel lehimleyin. Arduino Pro Mini ve RTC'de GND'ye bir Topraklama kablosu ve ardından 2 kablo daha:
Pro Mini'de RTC'den A5'e SCL
Pro Mini'de RTC'den A4'e SDA
LED'lerden gelen veri hatları şunlara bağlanmalıdır:
- Saniye - Dijital Pin 3.
- Dakika - DigitalPin 4
- Saatler - DigitalPin 5
4. Adım: Yükleme
Lehimlendikten sonra LED'leri deliklerine takmak düz olmalıdır. LED'lerin takılması gerekir, böylece kod ön tarafa bakacak şekilde ayarlandığından veriler arkadan bakıldığında saat yönünün tersine döner.
Gelecekte arızalanırsa tek bir LED'i değiştirebilmek istediğim için onları tutmak için az miktarda sıcak tutkal kullandım.
Ayrıca tüm kabloları temiz ve düzenli tutmak ve namlu konektörünü panoya sabitlemek için sıcak tutkal kullandım.
Bir dizi arduino pro mini programlama kılavuzu mevcuttur. Bu kodu Arduino'ya yüklemek için harici USB'den seri dönüştürücüye yöntemi kullanıyorum:
Bu kod ayrıca RTC'deki zamanı derlendiği zamana ayarlayacaktır. bu nedenle, yükleme düğmesini kapatmanız önemlidir, böylece uygun olur ve mümkün olduğunca hızlı yüklenir.
Bu kodun çoğu, Andy Doro tarafından NeoPixel Ring Clock'tan ödünç alındı. Bazıları Adafruit NeoPixel Strand Testinden ve bazılarını bir araya getirdim.
Birkaç kütüphane kurmuş olmanız gerekecek. Arduino yazılımındaki Kütüphaneler Yöneticisinden temin edilebilirler.
ws2812b LED'leri için Adafruit NeoPixel
I2C üzerinden RTC ile konuşmak için kablo (bu standart olarak yerleşiktir)
ve RTClib, RTC'ye ne sorulacağını bilmek için
/******************************************************** ************************* * * Andy Doro'dan NeoPixel Yüzük Saati ([email protected]) https://andydoro.com/ringclock/ * ******************************************************** *******************************
Revizyon Geçmişi
Neye Göre Tarih
20140320 AFD İlk taslak 20160105 AFD Soluk yaylar 20160916 AFD Biblo uyumlu 20170727 AFD, 3D muhafaza için STARTPIXEL ekledi, değişken başlangıç noktası, otomatik DST desteği eklendi 20180424 DST kitaplığını kullanan AFD https://github.com/andydoro/DST_RTC *
/ kütüphane kodunu ekleyin:
#include #include
#Dahil etmek
// pinleri tanımla
#define SECPIN 3 #define MINPIN 4 #define HOUPIN 5
#define BRIGHTNESS 20 // maksimum parlaklığı ayarla
#define r 10
#define g 10 #define b 10 RTC_DS3231 rtc; // saat nesnesi oluştur
Adafruit_NeoPixel stripS = Adafruit_NeoPixel(60, SECPIN, NEO_GRB + NEO_KHZ800); // nesneyi şeritle
Adafruit_NeoPixel stripM = Adafruit_NeoPixel(60, MINPIN, NEO_GRB + NEO_KHZ800); // nesneyi çıkar Adafruit_NeoPixel stripH = Adafruit_NeoPixel(24, HOUPIN, NEO_GRB + NEO_KHZ800); // nesne baytını soyun pixelColorRed, pixelColorGreen, pixelColorBlue; // renk değerlerini tutar
geçersiz kurulum () {
Wire.begin(); // I2C'yi Başlat rtc.begin(); // saati başlat
Seri.başla(9600);
// pin modlarını ayarla pinMode(SECPIN, OUTPUT); pinMode(MINPIN, ÇIKIŞ); pinMode(HOUPIN, ÇIKIŞ);
if (rtc.lostPower()) {
Serial.println("RTC güç kaybetti, zamanı ayarlayalım!"); // aşağıdaki satır RTC'yi bu çizimin derlendiği tarih ve saate ayarlar rtc.adjust(DateTime(F(_DATE_), F(_TIME_))); // Bu satır, RTC'yi açık bir tarih ve saatle ayarlar, örneğin // 21 Ocak 2014, saat 3'e ayarlamak için: // rtc.adjust(DateTime(2014, 1, 21, 3, 0, 0)); }
stripS.begin();
stripM.begin(); stripH.begin(); //şerit.göster(); // Tüm pikselleri 'kapalı' olarak başlat
// başlatma sırası
gecikme(500);
colorWipeS(şeritS. Color(0, g, 0), 5); // Blue colorWipeM(şeritM. Color(r, 0, 0), 5); // Mavi renkWipeH(şeritH. Color(0, 0, b), 50); // Mavi
gecikme(1000);
DateTime theTime = rtc.now(); // DST baytını hesaba katar secondval = theTime.second(); // saniye al byte minuteval = theTime.dakika(); // dakikayı al int saat değeri = theTime.hour(); saatdeğeri = saatdeğeri %12; // Bu saat 12 saat, 13-23 ise 0-11`e çevir
for (uint16_t i = 0; i < secondval; i++) { stripS.setPixelColor(i, 0, 0, b); stripS.show(); gecikme(5); }
for (uint16_t i = 0; i < dakika değeri; i++) { stripM.setPixelColor(i, 0, g, 0); stripM.show(); gecikme(5); }
for (uint16_t i = 0; i < hourval; i++) { stripH.setPixelColor(i, r, 0, 0); stripH.show(); gecikme(5); }
}
boşluk döngüsü () {
// zaman al
DateTime theTime = rtc.now(); // DST'yi hesaba katar
bayt saniye değeri = theTime.second(); // saniye al
bayt dakika değeri = theTime.dakika(); // dakikayı al int saat değeri = theTime.hour(); // saat saatini al = saat saatini % 12; // Bu saat 12 saat, 13-23 ise 0-11`e çevir
stripS.setPixelColor(ikinci değer, 0, 0, 20); stripS.show(); gecikme(10); if (ikinci değer ==59) { for (uint8_t i = stripS.numPixels(); i > 0; i--) { stripS.setPixelColor(i, 0, g, 0); stripS.show(); gecikme(16);} }
stripM.setPixelColor(dakikaval, 0, g, 0);
stripM.show(); gecikme(10); if (ikinci değer ==59 && dakika değeri == 59) { for (uint8_t i = stripM.numPixels(); i > 0; i--) { stripM.setPixelColor(i, r, 0, 0); stripM.show(); gecikme(16);} }
stripH.setPixelColor(saatval, r, 0, 0);
stripH.show(); gecikme(10); if (secondval == 59 && minuteval == 59 && hourval == 11) { for (uint8_t i = stripH.numPixels(); i > 0; i--) { stripH.setPixelColor(i, 0, 0, b); stripH.show(); delay(83);} } // seri hata ayıklama için Serial.print(hourval, DEC); Seri.print(':'); Serial.print(dakikaval, Aralık); Seri.print(':'); Serial.println(ikinci değer, Aralık); }
// Noktaları arka arkaya bir renkle doldurun
void colorWipeS(uint32_t c, uint8_t wait) { for (uint16_t i = 0; i < stripS.numPixels(); i++) { stripS.setPixelColor(i, c); stripS.show(); gecikme(bekle); } }
geçersiz colorWipeM(uint32_t c, uint8_t bekleyin) {
for (uint16_t i = 0; i < stripM.numPixels(); i++) { stripM.setPixelColor(i, c); stripM.show(); gecikme(bekle); } }
void colorWipeH(uint32_t c, uint8_t bekleyin) {
for (uint16_t i = 0; i < stripH.numPixels(); i++) { stripH.setPixelColor(i, c); stripH.show(); gecikme(bekle); } }
Adım 5: Son Dokunuşlar
Şimdi yapılması gereken tek şey RTC'yi ve Mikro Denetleyiciyi girintiye sabitlemek.
Gerekirse pili kolayca değiştirebilmek için RTC pilini yukarı bakacak şekilde yerleştirdim.
5v kablolarını konektörün + tarafına ve Topraklamayı - tarafına bağlayın
Güç verin!
Bir USB pil bankasına bağlı benimki var ama bir USB telefon şarj cihazı da aynı şekilde işe yarayabilir.
Not:
LED'lerin parlaklığı kodda ayarlanır. Mevcut çekişi düşük tutmak için düşük olarak ayarlanmıştır. Tüm LED'ler yandığında tam parlaklıkta, yaklaşık 8 amper çekebilir. Mevcut kurulum ile 1'den az.
Saatler Yarışmasında İkincilik
Önerilen:
FLEXBALL - WiFi'li Yüz Piksel Esnek PCB Topu: 6 Adım (Resimlerle)
FLEXBALL - WiFi'li Yüz Piksel Esnek PCB Topu: Merhaba yapımcılar, moekoe yapımcısı! Flexball, 100 WS2812 2020 adreslenebilir LED ile donatılmış esnek bir PCB'ye dayanmaktadır. Espressif'in en küçük ESP tabanlı modülü olan bir ESP8285-01f tarafından kontrol edilir. Ayrıca bir ADXL345 ivmeölçeri vardır
Akıllı Çalar Saat: Raspberry Pi İle Yapılmış Akıllı Çalar Saat: 10 Adımda (Resimlerle)
Akıllı Çalar Saat: Raspberry Pi ile Yapılan Akıllı Çalar Saat: Hiç akıllı saat istediniz mi? Eğer öyleyse tam size göre bir çözüm! Akıllı Çalar Saat yaptım, siteye göre alarm saatini değiştirebileceğiniz bir saat bu. Alarm çaldığında bir ses (buzzer) duyulacak ve 2 ışık yanacaktır
RGB LED Piksel Tonları: 17 Adım (Resimlerle)
RGB LED Piksel Gölgeleri: Herkese merhaba, bu Eğitilebilir Kitapta size bir çift LED piksel gölgesinin nasıl yapıldığını göstereceğim. Başlangıçta bunları Noel / Yeni Yıl'da evin etrafında giymek için, bir tür mobil süs olarak yarattım, ama sonunda biraz daha siberpunk oldular
Retro Piksel Sanatı için Devasa 4096 LED Ekran Yapın: 5 Adım (Resimlerle)
Retro Piksel Sanatı için Devasa 4096 LED Ekran Yapın: ***** Mart 2019'da Güncellendi ****** Bu projeye devam etmenin, her şeyi sıfırdan oluşturmanın veya bir kit versiyonundan yararlanmanın birkaç yolu var. Bu Eğitilebilir Dosyada her iki yöntemi de ele alacağım. Bu Eğitilebilirlik, 64x64 veya 4.096 RGB LED kurulumunu kapsar
Bilgisayarınız için Gerçek Çan Çarpan Saat ve Yangın Söndürücü Çarpan Saat Yapın.: 3 Adım (Resimlerle)
PC'niz için Gerçek Bir Çan Çarpan Saat ve Bir Yangın Söndürücü Çarpan Saat İnşa Edin: Pirinç bir zil, küçük bir röle birkaç şey daha ve gerçek bir zil masaüstünüzde saatleri çalabilir. Bu proje Windows ve Mac'te çalışsa da Ayrıca OS X, çöpte bulduğum bir PC'ye Ubuntu Linux kurmaya karar verdim ve bunun üzerinde çalıştım: Hiç