İçindekiler:

Konum Bazlı Çok Fonksiyonlu Küp Saat: 5 Adım (Resimli)
Konum Bazlı Çok Fonksiyonlu Küp Saat: 5 Adım (Resimli)

Video: Konum Bazlı Çok Fonksiyonlu Küp Saat: 5 Adım (Resimli)

Video: Konum Bazlı Çok Fonksiyonlu Küp Saat: 5 Adım (Resimli)
Video: Elimi kestim. Demir kanaması deneyi #kimya #shorts 2024, Temmuz
Anonim
Image
Image
Konum Bazlı Çok İşlevli Küp Saat
Konum Bazlı Çok İşlevli Küp Saat
Konum Bazlı Çok İşlevli Küp Saat
Konum Bazlı Çok İşlevli Küp Saat

Fusion 360 Projeleri »

Bu, tarih içeren bir saat, şekerleme zamanlayıcısı ve gece lambası olarak işlev gören OLED ekrana sahip Arduino tabanlı bir saattir. Farklı "fonksiyonlar" bir ivmeölçer tarafından kontrol edilir ve küp saat döndürülerek seçilir.

Yeni bir komidin saati istedim ama kullanmayacağım tonlarca işlevi olan süslü bir saate para harcamak istemedim. Ek olarak, ortalıkta duran bileşenleri ve sensörleri topluyordum, bu yüzden onları kendi saatimi yapmak için kullanmaya karar verdim!

Bu proje için birkaç hedefim vardı:

  1. Kapatılacak bir seçenekle o zamanı görüntüleyin
  2. Bir gece lambası işlevi ekleyin
  3. Alarmlı 15 dakikalık bir şekerleme zamanlayıcısı ekleyin
  4. Tarihi gösterebilmek

Gereçler

  • Arduino Pro Mini 5V
  • ADXL335 3 Eksenli İvmeölçer
  • DS3231 AT24C32 IIC hassas Gerçek zamanlı saat
  • Küçük hoparlör
  • OLED Ekran SSD1306 IIC 0,96 inç
  • 5V DC güç kaynağı
  • LED x 2
  • Dirençler 220ohm x 2
  • DC varil jakı
  • Tel
  • Aletler

    • Tel kesiciler/sıyırıcılar
    • Havya/lehim
    • 3D yazıcı (isteğe bağlı)
    • Pro mini ve Arduino IDE arasında arayüz oluşturmak için FTDI programcısı

Adım 1: Prototip ve Devreyi Test Edin

Prototip ve Devreyi Test Edin
Prototip ve Devreyi Test Edin
Prototip ve Devreyi Test Edin
Prototip ve Devreyi Test Edin
Prototip ve Devreyi Test Edin
Prototip ve Devreyi Test Edin

Bileşenleri Arduino'ya bağlayın. Breadboard düzeni veya şeması yukarıda gösterilmiştir. RTC ve OLED, Arduino ile arayüz oluşturmak ve A4 ve A5 pinlerini kullanmak için I2C protokolünü kullanır. İvmeölçer 3 analog pin kullanır. A0, A1, A2 kullandım. LED'ler ve Piezo dijital pinlerden herhangi birini kullanabilir, sırasıyla 4 ve 8 kullandım.

Her bileşenle arayüz. Her bileşenle arayüz oluşturmak için bazı Arduino kitaplıkları kurmam gerekiyordu. Yukarıdaki resimde gösterilmektedirler.

Arduino IDE kullanarak kodlayın. Yapmalarını istediklerime dayalı olarak her bileşen için uygun sözdizimini bulmak için her kitaplık tarafından sağlanan bazı örnek eskizleri inceledim. Her bileşen için ayrı ayrı test etmek için bir taslak oluşturdum. Aşağıda verilmiştir. Piezo hoparlörle başladım çünkü en kolayı buydu. Aslında özel bir kütüphaneye ihtiyacı yoktu, sadece frekansı ve sesi ayarlayan belirli bir fonksiyona ihtiyacı vardı. LED'lerin çalışması için dijital pinlerden birini yukarı ve aşağı çekmek yeterliydi. Ardından, OLED'e geçtim ve bunun kurulumu da oldukça basitti. Aşağıdaki çizim, görüntülenebilecek tüm animasyonları/metinleri içeren bir Adafruit demosudur. Sonra RTC'yi çalıştırmaya çalıştım. Sağladığım çizim, kütüphanedeki geçerli saati alan ve seri monitöre yazdıran bir örneğin parçasıydı. Son olarak, ivmeölçeri test etmek için verilen örneği kullandım. Her eksenin çıktıları seri monitörde yazdırılır.

Şimdi her şeyi bir araya getirme zamanı!

Adım 2: Ana Program

Ana program
Ana program
Ana program
Ana program

Artık her şeyin ayrı ayrı çalıştığını bildiğime göre, her şeyi bir araya getiren bir program geliştirmeye başlayabilirim. Aşağıda programı yazma sürecimi tartışacağım, ancak kendi projeniz için kullanmak üzere aşağıdaki kodun tamamını indirmekten çekinmeyin. Kodu kendiniz gözden geçirebilmeniz için belirli yorumlar bırakmaya çalıştım.

Oldukça basit olan OLED'de saat ve tarihi görüntülemem gerekiyordu. Seri monitör yerine ekrana şimdiki zamanı yazdırmam gerekiyordu. 24 yerine 12 saatlik bir format göstermesini sağlamak ve uygun olan yerlere 0'ları eklemek/kaldırmak için hesaba katmam gereken birkaç biçimlendirme meselesi vardı. Tarih, ekranda çizilen dikdörtgenler içinde ay ve gün gösterilmesinin eklenmesiyle benzerdi. Zamanlayıcıyı oluşturmak için iç içe bir FOR döngüsü kullandım ve döngünün bitiminden sonra piezoyu başlattım. Adafruit demosundan alınan temel bir animasyon olan zil çalarken ekranı flaş yapmaya karar verdim. Zil sesini kapatmanın tek yolunun küpü saat konumuna geri döndürmesini sağladım. Sonunda, sadece ekranı temizleyerek gerçekleştirilen ekranı kapatmanın bir yolunu istedim. Şimdi, tüm bu fonksiyonların ivmeölçer çıktılarına dayalı olarak çalışmasına ihtiyacım vardı. Her fonksiyonun çalışmasını istediğim her pozisyonun eksen koordinatlarını belirlemek için Accel_Test betiğini kullandım. İvmeölçer çipini elle hareket ettirdim ve okumaları seri monitöre kaydettim. Yukarıdaki diyagram, her konumun çıktı koordinatlarını GRİ renkte verir. KIRMIZI koordinatlar, her konum arasındaki sınırlardır ve bu sayıları programım için kullandım. 4 görüntüleme konumunda yalnızca X ve Y ekseni koordinatlarına ihtiyaç vardır. Gece lambasının beşinci konumu Z eksenini kullanır. Her fonksiyon bloğundan önce ivmeölçer konumları için basit IF ifadeleri kullandım. Farklı bir ivmeölçer kullanırsanız, bu koordinatlar değişebilir ve programda ayarlanması gerekecektir.

Adım 3: Küpü 3B Yazdırma

Küpü 3B Yazdırma
Küpü 3B Yazdırma
Küpü 3B Yazdırma
Küpü 3B Yazdırma
Küpü 3B Yazdırma
Küpü 3B Yazdırma

Saatin nasıl çalışmasını istediğime uyum sağlamak için bir küpün en iyi tasarım olacağını düşündüm. Modeli yapmak için fusion360 kullandım. OLED ve namlu jakı için bir oyuğa ihtiyacım vardı. Ayrıca, her şey kablolandıktan sonra RTC'deki pili değiştirmek için kolay erişim istedim. Arduino'yu gerektiğinde yeniden programlaması kolay olacak bir yönde tutmak için bir yuvaya ihtiyacım vardı. Ek olarak, Arduino'ya erişebilmem için muhafazanın kolayca çıkarılabilir olması gerekiyordu. CAD modelini yukarıda görebilirsiniz ve STL dosyaları aşağıdadır.

Gövdeyi siyah PLA ile %20 dolgulu, 0.2mm çözünürlükte yazdırdım.

Muhafaza veya kılıf, %100 dolgulu, 0,3 mm çözünürlüklü Solutech esnek filamentte basılmıştır. Bu malzemeyi kullandım çünkü vücudun üzerinde esnemeyi kolaylaştıran bir miktar esnekliğe sahip. Ayrıca saati döndürürken daha yumuşak bir his veriyor. Son olarak, gece lambalarının LED'lerinin parlaması için şeffaf bir filaman seçtim.

Adım 4: Montaj

toplantı
toplantı
toplantı
toplantı
toplantı
toplantı

Adım 1'deki şemayı kullanarak her şeyi birbirine bağladım. Arduino'daki bir pime birden fazla kablo lehimlemek zorunda kalmamak için tüm ortak kabloları bağlamak için küçük bir perfboard parçası kullandım. Arduino dışında her şeyi kendi yerine sabitlemek için sıcak tutkal kullanıldı. Sadece belirlenmiş yuvasına itildi. İvmeölçer kartının gövdenin altında dik ve düz olduğundan emin oldum, böylece koddaki koordinatların değiştirilmesine gerek kalmazdı.

Adım 5: Yükleyin ve İşiniz Bitti

Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!
Yükleyin ve İşiniz Bitti!

Artık doğru zamanı ayarlamak için son program saate yüklenebilir. Hücre pili, güç takılı olmadığında bile zamanı tutmalıdır. Tüm bileşenleri gizlemek için 3D baskılı kılıfı gövdenin üzerine kaydırın ve eksiksiz bir küp saatiniz olsun!

Umarım bu projeyi yapmaktan zevk alırsınız ve benim kadar faydalı bulursunuz. Bu projenin güzel yanı, çok özelleştirilebilir olmasıdır. Alarm işlevi gibi kendi farklı işlevlerinizi eklemekten çekinmeyin, daha büyük bir OLED, FM radyo alıcısı vb. gibi farklı bileşenleri kullanın. İyi seyirler!

Önerilen: