İçindekiler:
- Adım 1: Saati Tasarlamak
- Adım 2: Elektroniği Tasarlamak
- Adım 3: Elektroniği İnşa Etme
- Adım 4: Saati Kodlamak
- Adım 5: Lazer Kesim Dosyalarının Tasarlanması
- Adım 6: Saatin Oluşturulması
- 7. Adım: Son Düşünceler
Video: NeoClock: 7 Adım (Resimlerle)
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Bu, Adafruit'in fantastik neopiksel halkalarını kullanarak bir saat inşa etmekle ilgili. Bu saatle ilgili eğlenceli olan şey, aslında iki neopiksel halkasına sahip olması, biri saatleri, diğeri dakikaları, saniyeleri ve milisaniyeleri söylemek için. Saat, Sparkfun'un DS3234 DeadOn Gerçek Zamanlı Saat yongasını kullanarak zamanı mükemmel tutar. Oluşturması kolay ve değiştirmesi eğlenceli. Umudum, diğerlerine neopiksel halkalarını kullanarak saatler veya başka sanat eserleri inşa etme konusunda ilham vermesidir.
Tüm dosyalarımı yönetmesi basit bir formatta almak isteyenler, bu proje için https://github.com/chrisgilmerproj/neoclock adresindeki github depomdan indirmekten çekinmeyin.
Adım 1: Saati Tasarlamak
En az iki neopiksel halkası kullanmak istediğimi başından beri biliyordum. Biraz çalıştıktan sonra, en iyi tasarımın, bir saatin orijinal şeklini koruyan bir halkanın diğerinin içinde olması olduğuna karar verdim. Daha küçük halka saat olacak ve kalan süre daha büyük halkada tutulacaktı. Bazı tasarım konuları, neopiksellerin maliyetini, güç gereksinimini, lazerle kesilmiş parçaların boyutunu ve üzerine ne tür bir sanat eseri koymak istediğimi içeriyordu.
Bu adım tamamlandığında, saat gövdesini lazerle kesmek için planlar oluşturmadan önce elektroniği anlamam gerektiğine karar verdim.
Adım 2: Elektroniği Tasarlamak
Elektronikleri tasarlamak, saatte istediğim unsurları önceden bilmekle başladı:
- Neopiksel halkaları (60 sayı ve 24 sayı)
- Arduino (beyin)
- Saat Düzenleme (arduinolar iyi zaman tutmaz)
- Güç yönetimi
Neopiksellerin boyut ve güç gereksinimleri iyi belgelenmiştir. 5V DC'de çalıştıkları için 5V Arduino ile gitmeye ve işleri kendim için daha basit hale getirmeye karar verdim. Alanı göz önünde bulundurarak normal bir Arduino Uno üzerinde prototip yapmaya karar verdim, ancak son elektronik için bir Arduino Mini seçtim.
Bu projenin ilk versiyonu doğrudan Adafruit'in NeoPixel Temel Bağlantılar sayfasından geldi. İşleri kolaylaştırmak için web sitesinden diyagramı ekledim. Bundan iki şey önemlidir:
- İlk akım sarsıntısının piksellere zarar vermesini önlemek için 1000 uF'lik bir kapasitör gereklidir.
- 60 sayım halkasının ilk pikselinde 470ohm'luk bir direnç gereklidir (bu direnç 24 sayım halkasına yerleştirilmiştir)
Adafruit ayrıca tasarıma devam etmeden önce okumanız gereken bir dizi NeoPixel En İyi Uygulamasına sahiptir.
Saatte zaman tutmak başka bir sorundur. Arduino'daki yerleşik saat, uzun süreler boyunca iyi zaman geçirmek için yeterli değil. Daha kötü bir sorun, arduinodaki zamanın her seferinde sıfırlanması gerekebilmesidir. Bilgisayarlar, güç çıkışları arasındaki süreyi tutmak için saat çipinde küçük bir pil kullanarak bu sorunu çözer. Geçmişte Adafruit'ten ChronoDot gibi bir şey kullanırdım. Ancak bu durumda SparkFun'dan DS3234'ü (DeadOn RTC) kullanmak için bir bahane istedim. Bunu saate entegre etmek istiyorsanız, tarih bilgilerini DeadOn RTC'de de tutabilirsiniz.
Son olarak, güç yönetiminin biraz dikkate alınması gerekiyordu. Her şeyin 5V olması gerektiğini zaten biliyordum ama gereken akım miktarı bir gizem gibi görünüyordu. Çoğu projede yaygın olarak kullanılan bir voltaj regülatörü L7805'tir. Bu, 24V'a kadar voltaj ve 1,5A'ya kadar maksimum akım alacaktır. Etrafta 12V 1.5A duvar şırası olduğunu biliyordum, bu yüzden bunun proje için mükemmel (ve ucuz!) voltaj regülatörü olacağına karar verdim.
Kalan parçalar benim parça kutumdan veya Radio Shack'ten gelecekti. Kabloları, anahtarları ve DC güç jakını içeriyorlardı.
Adım 3: Elektroniği İnşa Etme
Bu projeyi oluşturmak için satın aldığım elektroniklerin tam listesi github depomda burada bulunabilir: Elektronik Parça Listesi. Her parça için ürün sayfasına bağlantılar içerir ve ürün SKU'su da dahil olmak üzere bazı ek bilgiler içerir. Bunu bir breadboard üzerinde hızlıca prototipledim ve herhangi bir fotoğraf çekmeden önce lazer kesim ve binaya geçtim. Ancak sökmesi kolay olacak şekilde yaptım, bu yüzden yukarıdaki fotoğraflardaki parçaları sizin için parçalara ayırdım.
Teller, takip edilmesi kolay ve elektronik aksamın tüm profilini ince tutacak şekilde kasıtlı olarak büküldüğü için görüntülere yakından bakın. Lazer kesim tasarımından önce bu ilk prototiplemeyi yapmak, saat gövdesinin son boyutlarını bulabilmem için parçaların kalınlığını kontrol etmeme izin verdi.
Birkaç özel breadboard yaptığımı fark edeceksiniz. Tekrar edesiniz diye o tahtaların arkalarının fotoğraflarını çekmeye çalıştım. Birkaç dolara bunun gibi çeşitli breadboard satın alabilir ve projenize uygun hale getirebilirsiniz.
Kablolama basittir ancak görüntülerden hatırlanması gereken önemli şeyler şunlardır:
- Mod ve Ayar anahtarlarının aşağı çekme dirençlerine ihtiyacı olacaktır. Etrafta yattığım 2.21Ohm dirençler kullandım ancak herhangi bir küçük direnç işe yarayacak (tercihen 1kOhm'dan az değil). Bu, bağlı Arduino giriş pinlerini stabilize eder, böylece yükseldiklerinde gürültüden ayırt edilebilirler.
- DS3234 üzerindeki kare dalga (SQW), kullanımda olmadığı için topraklanmıştır.
- L7805'ten gelen güç, RAW pininde Arduino Mini'ye konur. Arduino'ya gelen gücü her zaman RAW'a koyun.
- 60 neopiksel halkasının ilk pikseli, veri artışlarından ilk piksele gelebilecek herhangi bir hasarı azaltmak için 470Ohm'luk bir rezistöre sahiptir. 24 sayımlı neopiksel zaten bunun için yerleşik bir dirence sahip olduğundan, bu bir sorun olmamalıdır, ancak üzgün olmaktan daha güvenlidir.
- Mod ve Ayar anahtarları, SPST anlık basmalı düğme anahtarlarıdır
Tel renkleri şunlardır:
- Kırmızı: +5VDC
- Siyah: Zemin
- Yeşil: Veri
- Sarı, Mavi, Beyaz: DS3234 için özel teller
Neopikselleri ilk kez kullanıyorsanız, bunların uzun bir zincir olarak düşünülebileceğini unutmamalısınız. Bu yüzden bir halkadaki "ilk pikselden" bahsetmek garip gelebilir ama aslında halkalardaki her zincirin bir başlangıcı ve sonu vardır. Bu projede küçük halkanın 24 pikseli önce gelir ve daha sonra büyük halkanın 60 pikseli gelir. Bu gerçekten 84 neopiksellik bir zincirim olduğu anlamına geliyor.
Arduino Mini'de kablolama için:
- DS3234, 10 - 13 pinlerine bağlanır
- Mod ve Ayar anahtarları 2 ve 3 numaralı pinlerde
- Neopiksel verileri pin 6'dan gelir.
Ayrıca 6 başlığı Arduino Mini'nin altına koymanızı tavsiye ederim, böylece onu bir FTDI kablosuyla programlayabilirsiniz.
Akımla ilgili önemli bir not: Bu saat çok şey gerektirir. Eminim çözebilirim ama pratik deneyimim, 500mA'ya eşit veya daha düşük herhangi bir şeyin sonunda kahverengi çıkışlara neden olacağıdır. Bu, saatin çılgın renklerle yanıp sönmesi ve zamanı tutmaması olarak kendini gösterir. Son duvar wort'um 12V ve 1.5A ve onunla hiç kahverengim olmadı. Ancak 1.5A, voltaj regülatörünün (ve diğer parçaların) alacağı sınırdır. Bu yüzden bu miktarı aşmayın.
Adım 4: Saati Kodlamak
Saatin tam kodu GitHub'daki NeoClock Kodunda bulunabilir. Dosyayı buraya ekledim, ancak depoda herhangi bir değişiklik olacak.
Her şeyi aynı anda yapmaya çalışırsanız, kod yazmanın göz korkutucu olabileceğini düşünüyorum. Bunun için gitmek yerine, çalışan bir örnekten başlamaya ve ihtiyaç duyduğum gibi özellikler oluşturmaya çalışıyorum. Buna girmeden önce, kodumun aşağıdaki depolardan ve Arduino CC forumundan birçok örneği birleştirmekten geldiğini belirtmek istiyorum. Her zaman gerektiği yerde kredi verin!
- https://github.com/adafruit/Adafruit_NeoPixel
- https://github.com/zeroeth/time_loop
- https://github.com/sparkfun/DeadOn_RTC
Bu depolardan bazı örnek kodlar, Kod Örnekleri Dizinimde bulunabilir.
Kodu oluşturmak için kullandığım işlem sırası şöyle oldu:
- Strand Test Örneği ile neopiksellerin çalıştığını onaylayın
- Zaman Döngüsü Koduyla bir saat çalıştırmayı deneyin
- Saati, yalnızca bir yerine iki zil üzerinde çalışacak şekilde değiştirin
- DeadOn RTC Örneği aracılığıyla zamanı korumak için DS3234'ü ekleyin
- Modu Ekleyin ve Anahtarları Ayarlayın
- Arduion Geri Dönme Eğiticisinin yardımıyla Geri Dönme kodu ekleyin
- Saat LED'leri için bazı renk temaları ekleyin
- 0, 15, 30 ve 45 dakikalık işaretler için bazı animasyonlar ekleyin
- 0, 15, 30 ve 45 dakikalık işaretleri yönlendirmek için saate pusula noktaları ekleyin
Bu kodu nasıl oluşturduğumu görmek istiyorsanız, her kod taahhüdüne bakmak için GitHub'ı kullanabilirsiniz. Saatin geçmişi Taahhüt Tarihindedir.
Renk şemaları eklemek eğlenceliydi ama sonunda menüye sadece dördünü dahil ettim. Her tema saat, dakika, saniye ve milisaniye "elleri" için belirli bir renk belirler. Gerçekten seçenekler burada sonsuzdur ama temaları dahil ettim (listelenen yöntem adları):
- setRenkMavi
- setRenkKırmızı
- setRenkCyan
- setRenkTuruncu
Ancak, bu ek yöntemleri kodda bulabilirsiniz:
- setColorBirincil
- setRenkRoyal
- setRenkTekila
Animasyonlar eklendi çünkü saatin dört on beş dakikalık noktasında çınlayan eski saatler fikrini sevdim. Bu saat için aşağıdaki animasyonları yaptım:
- 15 dakika: Halkaları Kırmızıya boyayın
- 30 dakika: Halkaları Yeşil renklendirin
- 45 dakika: Yüzükleri Mavi renklendirin
- Saatin Başı: İki halka boyunca bir gökkuşağı yapın
Kullanılabilirlik, saatle ilgili bir sorun haline geldi çünkü kimse saati yönlendiremedi. Sonuçta sadece iki LED halkası. Bu yüzden sorunu çözmek için saate pusula noktalarını ekledim. Bu, zamanı söyleme yeteneğini çok geliştirdi. Lazer kesim parçaları göndermeden önce bunu bilseydim, bunun yerine sanata bir şeyler katabilirdim. Ama karanlıkta sanatı o kadar iyi göremediğiniz ortaya çıktı, bu yüzden pusula noktalarına sahip olmak gerçekten yardımcı oluyor. Bununla ilgili bir nokta, bir pikseli renklendirmeye karar verdiğinizde, önce mevcut rengi yakalamanız ve yeni bir karıştırılmış renk oluşturmanız gerektiğidir. Bu ona daha doğal bir his verir.
Son bir bilgi, milisaniyelerle ilgilidir. Arduino'daki milisaniye, DS3234'ten değil, dahili Arduino kristalinden gelir. Milisaniyeyi gösterip göstermemek size kalmış ama ben öyle yaptım ki saat her zaman bir şeyler yapıyor gibi görünüyordu. Milisaniye ve saniyelerin her zaman aynı hizada olmaması sizi rahatsız edebilir, ancak pratikte saate bakarken kimse bana bundan bahsetmedi ve bence hoş görünüyor.
Adım 5: Lazer Kesim Dosyalarının Tasarlanması
Lazer kesim dosyalarını tasarlarken yapmam gereken iki husus var. Birincisi, onu inşa etmek istediğim malzemeydi ve ikincisi, nasıl inşa edileceğiydi. Neopikselleri dağıtan akrilik ile ahşap bir yüzey istediğimi biliyordum. Malzemeyi anlamak için önce Ponoko'dan bazı örnekler sipariş ettim:
- 1x Kaplama MDF - Ceviz
- 1x Kaplama MDF - Kiraz
- 1x Akrilik - Açık Gri
- 1x Akrilik - Opal
Ahşap seçimleri, rasterleştirmenin nasıl görüneceğini ve yanığın saatin yanında nasıl görüneceğini görmeme izin verdi. Akrilik, neopiksellerin difüzyonunu test etmeme ve ahşaba karşı nasıl görüneceğini karşılaştırmama izin verecekti. Sonunda Opal akrilik ile kiraz ağacına karar verdim.
Saatin boyutları esas olarak neopiksel halkalarının boyutuna göre belirlendi. Bilmediğim şey, elektroniğe sığdırmak için ne kadar kalın olması gerektiğiydi. Elektroniği yaptıktan ve ahşabın yaklaşık 5.5 mm kalınlığında olduğunu bilerek saatin içinde yaklaşık 15 mm boşluğa ihtiyacım olduğunu belirledim. Bu, üç kat ahşap anlamına geliyordu. Ancak ön ve arka kısım tasarımımdaki alanın çoğunu kapladığı için bu halkaları daha sonra yapıştırabileceğim "kaburgalara" ayırmam gerekiyordu.
Ponoko tarafından sağlanan şablonu çizmek için InkScape kullandım. Saat gövdesini çizdikten sonra ağacı elle çizmeye başladım. Bana ilham veren orijinal görüntüyü içe aktaramadım ama benzer bir şeyi kendim nasıl yapacağımı bulmak korkunç değildi.
Malzemelerin maliyeti sadece 20 dolardı, ancak kesme maliyetinin yaklaşık 100 dolar daha fazla olduğu ortaya çıktı. Buna iki şey katkıda bulundu:
- Eğriler ve Daireler, makine iki eksende hareket ettiğinden ve bu tasarımın çok sayıda eğriye sahip olması nedeniyle daha maliyetlidir.
- Rasterleştirme, parça boyunca ileri geri çok sayıda geçiş gerektirir. Bunu bırakmak en çok parayı kurtaracaktı ama hoşuma gitti.
Tasarımı tamamladıktan sonra EPS dosyalarını Ponoko'ya gönderdim ve yaklaşık bir hafta sonra işlerim bitti.
Tasarıma Mod ve Ayar anahtarlarını veya DC Güç Girişini dahil etmediğimi unutmayın. Bunu gönderdiğimde hala o kısımlara karar vermemiştim. Kendime daha fazla esneklik sağlamak için onları bıraktım ve daha sonra elle delmeye karar verdim.
Adım 6: Saatin Oluşturulması
Bütün parçalar geldiğinde saati kurdum. İlk adım, kaburgaları delmemi ve arkaya ve öne yapıştırmamı gerektiren saat gövdesiydi. Arkaya iki kat, ön tarafa bir kat kaburga koyup ahşap tutkalı ile sabitledim. Ön taraf için akrilik halkaları ve ahşap halkaları bir araya getirmek için ahşap tutkalı kullandım. İnşaat sırasında kullanışlı olan boş olarak keseceğim yedek bir merkezi parçam vardı. Bunu ağaç parçasının arkasına yapıştırdım ve bu bana daha sonra neopikselleri yapıştırabileceğim bir yer verdi.
Gövde inşa edildiğinde, anahtarlar ve güç girişi için delikler açmaya karar verdim. Biraz geometri (resimde görüldüğü gibi) her şeyi hizalamama yardımcı oldu. Dışında ayrı bir tahta parçası kullanarak (çok dikkatli bir şekilde!) Delikleri açıp düğmelere ve krikoya yapıştırdım.
Elektronikler daha sonra girdi. Önce neopikselleri, ardından kapasitörleri yapıştırdım. Bunları neopiksel güç devre kartına bağladım. Sonra arka kısım için kabloları anahtarlara ve güç girişine yerleştirdim. Ayrıca L7805 voltaj regülatörünü de dahil ettim.
Halkaları yönlendirmeyle ilgili kısa bir not. 60 piksellik büyük halka için saati, piksellerden biri sıfır dakikayı işaretlemek için tam olarak en üstte olacak şekilde yönlendirmeniz gerekir. Hangi pikselin önemi yok ve nedenine birazdan geleceğim. 24 piksellik küçük halka için saati, üst kısım aslında iki piksel arasında olacak şekilde yönlendirmeniz gerekir. Bunun nedeni, 12 saati işaretlemek istiyorsanız, bir yerine iki pikseli aydınlatmanızdır. Ofseti alarak ve plastiğin difüzyonuyla, gerçekten 12 geniş piksele sahipmişsiniz gibi görünecektir.
Kodun her halka için hangi pikseli "üst" olarak belirlediğine gelince, kodu biraz düzenlemeniz gerekir. Kodumda "inner_top_led" ve "outer_top_led" adlı iki değerim var. Saatlerimde "inner_top_led", küçük halkanın başlangıcından itibaren 11 piksel ve "outer_top_led", büyük halkanın başlangıcından itibaren 36 piksel idi. Halkaları farklı şekilde yönlendirirseniz, bu değerleri oryantasyonunuzdan olanlar olarak değiştirirsiniz. Biraz deneme ve doğru değeri oldukça hızlı bir şekilde bulacaksınız.
Bu noktada her şeyin beklendiği gibi çalıştığını test ettim.
Ancak tüm projelerde olduğu gibi, nasıl bir arada tutacağını anlayamadığımı fark ettiğimde bir sorunla karşılaştım. Neopikseller ve kaburgalar arasında yaklaşık 3/8 inç boşluk olduğunu fark ettim, bu yüzden Home Depot'a gittim ve 3/8 inçlik bir dübel ve bir dizi neodimyum mıknatıs aldım. Üç yere küçük ahşap standlar yaptım ve onları zımparaladım, böylece her standa iki mıknatıs koyabildim (süper yapıştırıcı kullanarak). Her biri 3 çift 2 stant ile bitirdim. Sonra bunları çerçeveye yapıştırdım ve bir kıskaçla hepsini yerinde tuttum. Bunu, stantlardaki yapıştırıcı ıslakken yaptım, böylece her şey hizalanacak ve ardından doğru yerde kuruyacak. Bu mükemmel çalıştı ve sürümün tamamen gizli olmasını seviyorum.
Sonunda duvara asmam gerektiğini anladım ve duvara asmak için arka tarafa küçük bir hangar açtım.
7. Adım: Son Düşünceler
Bu projeyi oluşturmak çok eğlenceliydi ve neopikseller ve DS3234 hakkında bilgi edinmekten keyif aldım. Sonunda baştan sona güzel görünen bir proje inşa etmekten özellikle keyif aldım. Bunu tekrar yapsaydım güncelleyeceğim birkaç şey var, ancak bunlar önemsiz:
- Basit olması için üç yerine iki düğme seçtim. Ama hem aşağı hem yukarı gitmeme izin verecek bir düğmeye sahip olmak saati ayarlamak için iyi olurdu.
- Mod düğmesi ve ayar düğmesi ayırt edilemez. Bunları sık sık karıştırırım. Belki gelecekte onları zıt taraflara koyardım.
- Ahşap cepheyi hiç bitirmedim. İlk başta ham görünümü beğendim ve daha sonra, bitişi berbat edersem düzeltmenin çok pahalıya mal olacağından endişelendim.
- Ağacı rasterleştirmek iyi bir görünümdü ama ileride ağaç için daha fazla ayrıntı çizebilirdim.
- Karanlıkta oldukça parlak olduğu için saatin karartılması da güzel bir özellik olacaktır. Ancak, karartma renge bağlı ve bu parçanın çok uzun sürdüğünü anladım, bu yüzden düşürdüm. Muhtemelen gelecekte bu özelliğe yeniden yatırım yapardım.
Bu talimatı okuduğunuz için teşekkür ederiz. Umarım kendi saatinizi veya neopixel projenizi yapıp benimle paylaşırsınız. Mutlu bina!
Önerilen:
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: 7 Adım (Resimlerle)
Nasıl Yapılır: Raspberry PI 4 Headless (VNC) Kurulumu Rpi-imager ve Resimlerle: Bu Rapsberry PI'yi blogumda bir sürü eğlenceli projede kullanmayı planlıyorum. Kontrol etmekten çekinmeyin. Raspberry PI'mi kullanmaya geri dönmek istedim ama yeni konumumda Klavye veya Farem yoktu. Ahududu kurduğumdan beri bir süre geçti
Adım Sayacı Nasıl Yapılır?: 3 Adım (Resimlerle)
Adım Sayacı Nasıl Yapılır?: Yürümek, koşmak, bisiklete binmek, badminton oynamak gibi birçok sporda iyi performans gösterirdim. Binmeyi çok uzun zaman önce dolaşmak için seviyorum. Pekala, iri göbeğime bakın……Her neyse, egzersize yeniden başlamaya karar verdim. Hangi ekipmanı hazırlamalıyım?
Adım Adım Arduino Uno ile Akustik Kaldırma (8 adım): 8 Adım
Arduino Uno ile Akustik Kaldırma Adım Adım (8 adım): ultrasonik ses dönüştürücüler L298N erkek dc pinli Dc dişi adaptör güç kaynağı Arduino UNOBreadboardBu nasıl çalışır: İlk olarak, Arduino Uno'ya kod yüklersiniz (dijital ile donatılmış bir mikrodenetleyicidir) ve kodu dönüştürmek için analog bağlantı noktaları (C++)
Kolay Adımlar ve Resimlerle Bilgisayar Nasıl Sökülür: 13 Adım (Resimlerle)
Kolay Adımlar ve Resimlerle Bir Bilgisayar Nasıl Sökülür: Bu, bir PC'nin nasıl söküleceği hakkında bir talimattır. Temel bileşenlerin çoğu modülerdir ve kolayca çıkarılabilir. Ancak bu konuda organize olmanız önemlidir. Bu, parçaları kaybetmenize ve aynı zamanda yeniden birleştirmeyi kolaylaştırmaya yardımcı olacaktır
Adım Adım Ciclop 3d Tarayıcı My Way: 16 Adım (Resimlerle)
Adım Adım Ciclop 3d Tarayıcı Adım Adım: Merhabalar, ünlü Ciclop 3D tarayıcıyı gerçekleştireceğim. Orijinal projede iyi açıklanan tüm adımlar mevcut değil. Öncelikle işlemi basitleştirmek için bazı düzeltmeler yaptım. Tabanı yazdırıyorum ve PCB'yi yeniden sterilize ediyorum, ama devam et