Akıllı Telefon Kontrollü Sonsuz Saat: 5 Adım (Resimlerle)
Akıllı Telefon Kontrollü Sonsuz Saat: 5 Adım (Resimlerle)
Anonim
Image
Image
Akıllı Telefon Kontrollü Sonsuz Saat
Akıllı Telefon Kontrollü Sonsuz Saat
Akıllı Telefon Kontrollü Sonsuz Saat
Akıllı Telefon Kontrollü Sonsuz Saat

Instructables'ta birçok Infinity Mirrors ve Infinity Clocks projesini gördüm, bu yüzden benimkini yapmaya karar verdim. Diğerlerinden çok farklı olmayabilir… ama ben kendim yaptım, öyle oldu!

resim
resim

Henüz bilmiyorsanız:

Sonsuz saat nedir?

Bir sonsuzluk saati, yalnızca bir santimetre derinliğindeyken büyük bir derinlik yanılsaması vermek için bir ayna ile yarı yansıtıcı bir ayna arasındaki çoklu yansımaları kullanır!

Zaman, bu arayüzler arasında birçok kez yansıtan ve bu derinlik izlenimini veren LED'lerle gösterilir.

resim
resim

Çoklu yansımalar derinlik izlenimi verir

LED'ler adreslenebilir ve çok renklidir, bu nedenle ışık animasyonları yapmak için kullanımı kolaydır.

Etkileşimli ve değişken hale getirmek istedim, bu yüzden Bluetooth iletişimini kullanarak bir Akıllı Telefon kontrolü ekledim. Saat ve akıllı telefon arasında gerçek bir iki yol var. Kullanıcı, animasyonlar, renkler gibi çeşitli parametreleri değiştirmek için HMI'yi (İnsan Makine Arayüzü) kullanabilir. Ancak örneğin saati değiştirmek için doğrudan komutlar da gönderebilir ve saat, komutun kabul edilip edilmediğini söylemek için yanıt verir.

HMI, programlanabilir bir Android uygulaması kullanılarak yapıldı, bu yüzden onu tasarlamam ve Arduino tarafında iletişimi kodlamam gerekiyordu.

resim
resim

Şimdi başlayalım…

Adım 1: Neye İhtiyacınız Var?

Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?
Ne istiyorsun?

Bu sonsuz saati oluşturmak için ihtiyacınız olan şey şudur (fiyatlar gösterge niteliğindedir):

  • Bir Arduino nano (2 USD)
  • WS2812 ledler gibi adreslenebilir led şerit, metre başına 60 led (6 USD)
  • HC-05 (3 USD) gibi bir bluetooth modülü
  • Bir devre tahtası (1,5 USD)
  • 4A veya daha fazlasını sunabilen 5V besleme
  • Birkaç elektrik teli
  • KeuwlSoft'tan Android ve Bluetooth Electronics uygulamasını çalıştıran bir akıllı telefon
  • Bazı Orta yoğunluklu lif levha parçaları (MDF, biri 3 mm kalınlığında ve biri 10 mm kalınlığında)
  • Şeffaf bir pleksiglas veya perspeks plaka (yaklaşık 15 ila 20 USD)
  • Ayna ve yarı yansıtıcı ayna yapışkan filmler (4 - 15 USD arası)
  • Konektörler, dirençler ve bir adet 1000µF kapasitans
  • Biraz yapıştırıcı ve koli bandı.
resim
resim

Saat geometrisinin prensip şeması

Pleksi plaka, kullanım sırasında sağlam bir şekilde yerinde kalması için 2 ila 3 mm kalınlığında olmalıdır.

Yukarıdaki diyagram saatin geometrisini açıklamaktadır. Led şerit iki ayna arasına yerleştirilir. Tabii ki, şeritte bu ledlerden 60'a ihtiyacınız var. Metre başına 60 ledli çevrimiçi led şeritler bulabilirsiniz, bu yüzden bunlardan biri iyidir. O zaman led dairenin çevresi 1m, çapı 100/PI = 31.8 cm (yaklaşık 12.53 inç) olur.

Bileşenlerinizi hazırlayın

3 mm MDF levhada bu çapta bir daire kesin. Bunu yapmak için yerel fabrikaya gittim ve lazer kesiciyi kullanmamı istedim. Nazikçe sorarsanız ve tahtayla birlikte gelirseniz, sizin için bile yapabilirler: sadece birkaç saniye sürer. Hazır oradayken aynı diski pleksiglas plakanızda kesin.

MDF plakasından artık bir diskiniz ve dairesel delikli plakanız var. İkisini de sonraya sakla.

LED'leri yerinde tutmak için 1 cm kalınlığında MDF'de aynı çapta ince bir silindir de kesin. Çok kırılgan olmadığı sürece kalınlık önemli değildir. LED şerit bu silindirin içine yerleştirilecektir, bu nedenle iç çevrenin şeridin uzunluğuyla aynı olması önemlidir. Çok uzun veya çok kısa ve bazı ledler düzensiz aralıklı olabilir, bu yüzden burada çok doğru olun.

Böyle kalın bir levhayı kesmek, ince olanı kesmekten biraz daha uzun sürebilir. Fablab sahibine lazer kesicisinin bu kalınlığı kesebilecek kadar güçlü olup olmadığını sorun. Benim için lazerin o kısım için on defadan fazla geçmesi gerekiyordu, diğer plaka için sadece iki kez.

Ayrıca…

Burada MDF yerine şeffaf veya renkli pleksiglas levha kullanmak da mümkündür. Pleksiglas, siyahtan sarıya, yeşilden mora kadar çeşitli renklerde bulunur, bu yüzden denemekten çekinmeyin.

resim
resim

Fablab onları nasıl keseceğini bilir ve pleksiglas kesmek, lazer yolunda "yanabilen" (lazer enerjisi nedeniyle renk değiştiren) ahşaba kıyasla çok "temiz" olur. Ayna filmi satın almaktan sizi kurtarabilecek ayna pleksiglas da mevcuttur. Keserken, lazeri aynanın arka tarafına göndermeyi unutmayın…

Lazer kesim için geometri dosyaları aşağıdadır.

Adım 2: Saati Birleştirin

Saati Birleştirin
Saati Birleştirin
Saati Birleştirin
Saati Birleştirin
Saati Birleştirin
Saati Birleştirin
Saati Birleştirin
Saati Birleştirin

Saati yapmak için, şemaya göre parçaları birleştirmeniz yeterlidir.

davayı hazırla

İlk olarak, ayna filmini MDF diskine yapıştırın. Saatin dibi olacak.

İkincisi, yarı şeffaf filmi pleksiglas diske yapıştırın. Bu saatin ön camını oluşturur. Bu disk, MDF plakasına, daire deliğine yerleştirilecektir: gerekirse ahşap tutkalı kullanarak yapıştırın veya silikon kauçuk kullanın.

Son olarak, LED'leri hazırlayın. WS2812 LED'leri 3 bağlantı pedi kullanır: voltaj beslemesi, topraklama ve komut. Zaten bağlı 3 elektrik kablosu varsa, bunları kullanın. Aksi takdirde 3 kabloyu bağlantı pedlerine lehimleyin. LED'lerin polarize cihazlar olduğunu unutmayın: bu, akımın yalnızca bir yönde aktığı anlamına gelir. Bu yön şerit üzerinde bir okla belirtilmiştir. Ardından, okların geldiği (okların gösterdiği ucu değil) şeridin sonundaki telleri lehimlemelisiniz.

LED'leri kalın MDF silindirin içine yapıştırın ve 3 parçayı yapıştırıcı ve/veya bant ile birleştirin.

resim
resim

Daha sonra elektronik kısım

Arduino'yu breadboard'a koyun ve devreyi yukarıda gösterildiği gibi oluşturun. Tüm toprakların (GND) bağlı olduğundan emin olun (Arduino'dan GND, HC-05 modülü, LED şerit ve besleme).

  • HC-05 Bluetooth modülünün RX ve TX pinleri Arduino'nun D3 ve D2 pinlerine bağlanır.
  • LED şeridin veri hattı D12 pinine bağlıdır, varsa arasına 300 Ohm'luk bir direnç takabilirsiniz.

Pinleri değiştirmek istiyorsanız, koddaki tanımlarını buna göre değiştirin (ino dosyasının 7 ve 13. satırları).

HC-05 modülünün, aşağıda gösterildiği gibi RX pini için bir voltaj bölücü gerektirdiğini unutmayın. Yani bir 1000 Ohm ve bir 2000 Ohm rezistöre ihtiyacınız var.

resim
resim

Besleme hem Arduino hem de LED şerit için kullanılır. Önce 1000µF kondansatörü bir vidalı terminale (domino) bağlayın. Biraz varsa hızlı bağlayıcı kullanabilirsiniz. Daha fazla ayrıntı için buraya bakın.

resim
resim

Bu kapasitör ayrıca polarize olabilir: + ve - bacaklarının beslemenin + ve - uçlarına bağlı olduğundan emin olun. Kondansatörün görselinde de görüldüğü gibi - bacak büyük bir eksi işareti ile etiketlenmiştir.

resim
resim

Ardından konektörden LED Strip ve Arduino kartını bağlamak için elektrik kablolarını takın. Yukarıda belirtildiği gibi, tüm GND birbirine bağlanmalıdır. Beslemenin pozitif potansiyelinden, şeridin 5V kablosunu bağlayın ve Arduino'nun 5V pinine bir kablo çekin: şimdilik bağlı bırakın, sonunda bağlayacaksınız.

Her şeyi kontrol edin… iki kez

Tüm bağlantıları iki kez kontrol edin… Elektriksel sürekliliği kontrol etmek için bir multimetreniz varsa kullanın.

Her şey doğruysa, saatiniz neredeyse hazır. Şimdilik tedarik etmeyin.

3. Adım: Kodu Yükleyin

Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle
Kodu Yükle

Hadi programlayalım

Kodu Arduino nano'ya yüklemek için Arduino IDE'yi kullanın. Tüm dosyaları Arduino klasörünüzdeki "Horloge_LED3_nano_BTOK" adlı bir klasöre koyun. IDE'yi açın, uygun parametreleri seçin (kart tipi, COM bağlantı noktası, vb.) ve karşıya yükle düğmesine tıklayın.

resim
resim

Android akıllı telefonunuza Bluetooth Electronics uygulamasını yükleyin, Google Play'de kolayca bulabilirsiniz. Bu Eğitilebilir Dosyadan "BluetoothElectronicsCode.txt" dosyasını indirin ve uzantıyı zip olarak değiştirin: Bluetooth Electronics ile çalışacak akıllı telefon arayüzünün kodunu içeren bir zip arşivi alacaksınız.

Hazır olduğunuzda, kaynağı takın. LED'ler yanacak, HC-05 modülü de bağlantı aramak için yanıp sönecektir. Android uygulamasını başlatın ve Bluetooth modülünü akıllı telefonunuzla eşleştirmek için talimatları izleyin. Hazır olduğunuzda HMI'yı başlatın: oynamaya hazırsınız!

Bunu not et…

Şeridin ilk LED'i saatin üstüne yerleştirilmelidir. Eğer oraya yerleştirmediyseniz, koddaki offset parametre değerini değiştirebilirsiniz (ino dosyasının 65. satırı). Bununla ilgilenir.

LED Şeridi sığ silindirin içine yapıştırdığınızda 2 seçenek vardı: şerit saat yönünde veya saat yönünün tersine dönüyor. Yanlış şekilde yaptıysanız, saatin ibreleri yanlış yöne dönecektir! Endişelenme. Sens_horaire boole değişkeninin değerini true olarak değiştirin (ino dosyasının 77. satırı)

resim
resim

Adım 4: Keyfini çıkarın

Eğlence!
Eğlence!
Eğlence!
Eğlence!
Eğlence!
Eğlence!

Son bir ayar…

Şimdi, zamanı ayarlayın. Bu, HMI'nın sol alt kısmındaki küçük konsola yazdığınız basit komutlar kullanılarak yapılabilir.

  • Hxx: saatleri xx olarak ayarlayın (ör: H4)
  • Myy: dakikayı ayarla (ör: M15)
  • Szz: saniyeyi ayarlayın (ör: S30)

Komutlar, aralarına bir yıldız eklenerek zincirlenebilir, örneğin: H4*M15*S35

Saat ve/veya dakikanın ayarlanması saniyeleri sıfırlayacaktır.

Ardından saatin KIRMIZI LED, dakikaların YEŞİL LED ile takip edildiğini göreceksiniz:

resim
resim

Saat 9:52:00!

Saniyenin rengi HMI üzerindeki kaydırıcı kullanılarak değiştirilebilir

resim
resim

Kaydırıcıyı hareket ettirdiğinizde sağ taraftaki küçük daire mevcut rengi gösterir. Kaydırıcı durduğunda, rengi saate gönderir ve saniyelerin LED'i buna göre değişir.

ANİMASYON ve PALET kaydırıcıları, saatteki ışık animasyonlarını seçmek ve özelleştirmek için kullanılabilir. Bunları test edin ve bazı örnekler için videoya bakın. HMI üzerinde bazı ayarları değiştirdiğinizde, küçük konsol Arduino'dan gelen cevabı gösterir.

Animasyonlar…

  • 0: Sadece zamanı gösterir, kaydırıcıyı kullanarak saniyelerin rengini değiştirebilirsiniz.
  • 1: Değişken genliğe sahip renkli bir arka plan (rengini değiştirebilirsiniz).
  • 2: Dönen gökkuşağı
  • 3: Saniyede bir dönüş yapan renkli bir bant (değiştirilebilir).
  • 4: Saniye kolundan sıçrayan renkli bir şerit.
  • 5: Rastgele genlikte renkli bir arka plan (palet değiştirebilirsiniz).
  • 6: Sadece zamanı gösterir, saniye ibresi ışık genliğini değiştirir.
  • 7: Dönen bayraklar (bayrağı 4 olası seçenek arasından değiştirmek için paleti değiştirin)
resim
resim

Fransız bayrağı -- saat 7:11:51

Yakın zamanda, rastgele seçilen bir animasyon için her 15 saniyede bir değişen başka bir animasyon eklendi.

DAKİKA düğmesi, saatte her 5 dakikada bir beyaz LED'leri açar ve kapatır.

resim
resim

7:11:25

Video ve fotoğrafların bir akıllı telefonla yapıldığını ve bu nedenle düşük kalitede olduğunu unutmayın. Saatte renkler videoda göründüğünden çok daha parlak ve daha doğru…

Başka?

Umarım bu sonsuzluk saatini yapmayı seversiniz. Yapacak çok şey var: daha güzel hale getirmek için MDF ön plakasını boyayabilir, duvara da biraz hareketli ışık saçması için silindirin dış tarafına başka bir led şerit ekleyebilirsiniz, vb.

resim
resim

Adım 5: Zamanı Doğru Tutmak için Yeni Sürüm

Arduino nano'nun saati, doğru bir saate sahip olmadığı için zaman içinde kayma eğilimindedir. Zamanı doğru tutmak için Gerçek Zamanlı Saat (RTC) kullanarak başka bir sürüm yaptım.

RTC çeşitli modellerde mevcuttur, çok doğru olan bir DS3231 modülü kullanmanızı öneririm (DS1307'ye kıyasla). Programın bu yeni sürümü, burada bulunan MD-DS3231 kitaplığını kullanır. Arduino klasörünüzde Horloge_LED3_nano_BT_RTC adında yeni bir klasör oluşturun ve tüm dosyaları indirin.

DS3231'i bir I2C cihazı olarak bağlayın, yani SDA'yı A4'e ve SCL'yi (veya SCK) A5'e bağlayın

İlk olarak, RTC'nin zamanını ayarlamanız gerekir. Örneğin bu Talimatlara veya bu eğiticiye bakın.

Horloge_LED3_nano_BT_RTC.ino dosyasını Arduino nano'nuza yükleyin ve çalıştırın. Saat her 30 dakikada bir yenilenir, böylece saat her zaman doğru kalır.

Elbette pilin RTC modülü üzerinde olması gerekiyor çünkü Arduino tarafından tedarik edilmese bile RTC'yi canlı tutuyor ve doğru zamanı tutabiliyor.

Önerilen: