İçindekiler:

Oled Çalar Saat: 8 Adım (Resimli)
Oled Çalar Saat: 8 Adım (Resimli)

Video: Oled Çalar Saat: 8 Adım (Resimli)

Video: Oled Çalar Saat: 8 Adım (Resimli)
Video: Aileme kırık ekran şakası yapayım derken, gerçek oldu!😞 2024, Temmuz
Anonim
Oled Çalar Saat
Oled Çalar Saat

Etrafta dolaşan çok sayıda arduino/ESP32 saati var, ancak bu güzel ve net OLED'leri kullanıyorlar mı?

Bir süredir arduinolar ve ESP32'lerle denemeler yapıyorum, ancak bunu asla bitmiş bir ürün haline getirmedim. 4 adet 1.3 inç monokrom OLED'li bir çalar saat yaptım. Saat ayrıca kısılabilir bir başucu lambasına ve bir USB şarj bağlantı noktasına sahiptir (kimsenin yatağının yanında yedek priz yoktur). OLED'ler de kısılabilir, bu son dakika projem kız arkadaşım tarafından tehdit edildikten sonra eklendi. Dim -kız arkadaşların sesi- yeterince kısık değilse, kodun belirli saatler arasında 3 ekranın çalıştığı bir versiyonunu da sağlayabilirim. Amaç, "prototip"in ötesinde bir görünüme sahip, bakımı kolay bir saat yapmaktı. Saatimi yaparken çözmem gereken bazı zorluklarla karşılaştım, bu yüzden bu öğreticinin paylaşmaya değer olduğunu düşünüyorum. Saat küçük aletlerle yapılabilir, "ve bir sonraki adım için 10.000€/$ CNC değirmenimi kullandım" öğreticilerini sevmiyorum.

Bu talimatta açıklanacak bazı şeyler (in-structable-ception):

- arduino/ESP32 ile bir I2C OLED ekranı nasıl kullanılır/kablolanır

- Bir arduino/ESP32 ile birden çok I2C nesnesi nasıl kullanılır

- Döner kodlayıcı kullanarak "kaydırılabilir" menü nasıl yapılır (+ ESP32/arduino ile kodlayıcı nasıl kullanılır)

- Fritzing kullanarak özel bir PCB nasıl tasarlanır ve sipariş edilir.

- Saat ayrıca bir RTC (gerçek zaman saati), led sürücü, voltaj düşürme modülü kullanır… Bunlara gerçekten girmeyeceğim çünkü bu modüller için gerçekten çok fazla bilgi mevcut.

Profesyonel bir programcı olmadığımı belirtmek isterim. Eğitilebilirliğimin amacı yukarıda bahsettiğim noktaları açıklamaktır. Nihai ürünüm için hepsini nasıl bir araya getirdiğim, en temiz yol olmayabilir. Her şeyi takip etmemi sağlayan yol buydu.

Gereçler

Sarf malzemeleri için alışveriş yaparken her zaman kalitenin/dokümantasyonun fiyata karşı önemini tartmaya çalışırım. Sarf malzemelerim A markaları ve daha ucuz Çin parçalarının bir karışımı. Kalite önemliyse, Mouser harika bir tedarikçidir, daha ucuz parçalar için Banggood/Aliexpress'ten sipariş veriyorum.

- Bir ESP32 kartı, adafruit'ten Huzzah32'yi kullandım, ancak daha birçok (daha ucuz) seçenek var. Huzzah32'yi seçtim çünkü çok iyi belgelenmiş.

- 4 1.3 inç I2C OLED ekran (128x64, SH1106 sürücüsü ile), 0.96" olanlar daha yaygın ama bu proje için 1.3" olanları tercih ediyorum

- LED'i sürmek için Sparkfun femtobuck sürücüsü

- RTC saati, lityum hücreli bir tane kullandım

- Arduino nano

- Dişi USB 2.0 bağlantı noktası (Stewart Connector'dan SS-52200-002 kullandım)

- Dişi DC jakı (Kullandım: Switchcraft'tan L722A)

- 12V 3A DC adaptör (Mean Well'den GST36E12-P1J)

- İsteğe bağlı özel PCB, ancak bu, projeyi çok daha kompakt ve bir parça ölürse kolayca servis verilebilir hale getirir + daha az kablo nedeniyle daha fazla güvenilirlik (jlcpcb.com)

- M3 vidalar ve cıvatalar

- M3 pirinç ekler

- Pololu'dan (DF24V22F5) 12V - 5V düşürme modülü

- Soğutucu ile güçlendirilmiş 3 watt

- Atlama telleri

- Zil

- I2C çoklayıcı (adafruit'ten TCA9548A)

- 2 Döner kodlayıcı (Bazılarını denedim, hepsi benim kodumla çalışmıyor. "DFrobot"taki kod çalışıyor ve "DIYmore"daki yuvarlak PCB'li olan da çalışıyor. Kodum buton için çalışmıyor gibi görünüyor. KY-040 tipi. Çalar saatim DIYmore'dan olanı kullanıyor çünkü panel montajı çok kolay (ilave vida/delik gerekmez).

- Kadın başlık çeşitleri (isteğe bağlı)

- Çerçeve için ahşap: 18mmx18mmx2400mm

- Kopya kâğıdı

Bazı aletler de kullandım (havya, 3. el, testere…) ama gerçekten egzotik bir şey değil.

Adım 1: Oled Kullanmak

Oled kullanma
Oled kullanma
Oled kullanma
Oled kullanma
Oled kullanma
Oled kullanma

OLED'leri kullanmak için bir kitaplık kurmanız gerekir. Oli Kraus'un U8G2lib'ini kullanıyorum, çok anlaşılır ve net örnekler içeren bir referans kılavuzu var.

Kartınızı (ESP veya arduino) bağlamak için SDA ve SCL pinlerini bulmanız gerekir. Bu pinler I2C iletişim pinleridir. Bulamazsanız, belirli panonuzun "pin çıkışı" için Google.

Bazı örnek kodlar ekledim. Kod hem arduino hem de ESP32 için çalışır, ancak ESP32'nin belleğinin tükenmesi daha az olasıdır. Şimdiye kadar denediğim tüm oled'ler hem 3.3v (ESP32) hem de 5V ile çalışıyor.

2. Adım: Birden Çok OLED

Çoklu OLED'ler
Çoklu OLED'ler

Projemin diğer birçok çalar saatten farklı olmaya başladığı yer burasıdır. Çoğu arduino/ESP'de yalnızca bir veya iki I2C pini bulunur. Bu tür I2C parçalarının kullanımını sınırlar. 4 I2C sensörüm varsa ve okumalarını bir I2C ekranında görüntülemek istersem ne olur? Çoklayıcıyı girin. Çoklayıcı, 7 farklı I2C parçasını adreslemenizi sağlar. Bu, ESP32'min bir I2C gerçek zamanlı saat kullanmasına ve 4 ekran üzerinden tekrar I2C kullanarak zamanı görüntülemesine izin verir (veya daha fazla, sizi durdurmama izin vermeyin).

ESP32 için bazı örnek kodlar ekledim, bundan sonra arduino'nun buna ayak uydurabileceğinden emin değilim. Örnek yalnızca ekranları kullanır, I2C sensörleri vb. gibi başka şeyler de olabilir. Prensip her zaman aynıdır, "tcaselect(#);" ile doğru kanalı ararsınız. işlevi, ardından I2C nesnesi için gerekli olan kodu yürütürsünüz.

Adım 3: Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma

Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma
Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma
Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma
Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma
Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma
Döner Kodlayıcı ile Kaydırılabilir Menü Oluşturma

İlk önce, kodlayıcılarınızı test edin. Kodlayıcı modüllerinizi test etmek için bazı kodlar ekledim. Sarf malzemelerinde belirtildiği gibi: Kodumu yalnızca DF robotun döner kodlayıcı modülleri ve DIYmore'dan yuvarlak PCB içeren modül ile başarıyla test ettim. Doğru kodlayıcılar için yukarıdaki resimlere bakın.

Kullandığım kitaplık şudur:

Eklediğim PDF, umarım saatim için kullandığım menü yapısına yardımcı olur.

Enkoderi çalıştırmak bu projede benim için en zor kısımdı. Çok sayıda farklı kodlayıcı ve her zaman ESP32 ile uyumlu olmayan birçok farklı kitaplık vardır. Ama bir şey girmek istiyorsanız (çalışan) bir döner kodlayıcının zarif bir çözüm olduğunu düşünüyorum. Sadece düğmeleri kullansaydım, 1'den fazlasına ihtiyacım olurdu ve zamanı ayarlamak çok fazla basış gerektirecekti.

Adım 4: Önceki Kodu Bir Araya Getirmek

Önceki Kodu Bir Araya Getirmek
Önceki Kodu Bir Araya Getirmek

Başlık ne yaptığımı özetliyor. Parça parça denedim ve sonra her şeyi bir araya getirdim. Ama hiçbir şey kolay olmadığı için bazı şeyleri değiştirmek zorunda kaldım. Seri iletişim yavaş bir süreçtir. Bu, kodlayıcıyı doğru şekilde okumanın önüne geçer. Bunun üstesinden gelmek için kodlayıcının pinlerine kesintiler ekledim. Kodlayıcıyı okuyacak kod, kodlayıcıya basarsanız veya çevirirseniz hemen çağrılır.

Menünün nasıl oluşturulduğunu anladıktan sonra, beğeninize göre özellikler eklemenin veya çıkarmanın çok kolay olduğunu göreceksiniz. Belki de internetten güncel hava durumunu veya saati almak ve görüntülemek istersiniz?

Böyle birçok fikri dışarıda bıraktım çünkü her şeyden önce güvenilir bir zaman-barışı istiyordum. Otomatik olarak hiçbir şey yapmayan biri. Gün ışığından yararlanma bölgesinde çok garip saatler çalışıyorum. Her saat değiştiğinde, fazla uyumak için gerginim. Telefonum saati otomatik olarak değiştirecek mi? Saatim olur mu? Ben kendim değiştirmedikçe saatim çalışmayacak. Ama belki de saatinizi mutfağa koymak istersiniz? Farklı senaryo, hafıza bitene kadar özellikler ekleyin!

Adım 5: Fritzing + Şematikli Özel PCB

Fritzing + Şematik ile Özel PCB
Fritzing + Şematik ile Özel PCB
Fritzing + Şematik ile Özel PCB
Fritzing + Şematik ile Özel PCB
Fritzing + Şematik ile Özel PCB
Fritzing + Şematik ile Özel PCB

Dikkat edilmesi gereken nokta: Adafruit, huzzah32'ye USB pini üzerinden güç verebiliyorsanız, aynı anda mikro USB güç girişini kullanmamaya dikkat etmeniz gerektiğine dikkat çekiyor. PCB'm, daha sonra USB pimi aracılığıyla huzzah'a güç veren aşağı yönlü kova ile çalıştırılır. Bu nedenle, yükleme yaparken her zaman harici gücü fişten çekin/huzzah'ı karttan çıkarın.

Bir parçayı değiştirmeyi veya örneğin fazladan bir I2C sensörü eklemeyi kolaylaştırdığı için dişi başlıkları PCB'ye lehimlemeye karar verdim. Bu ayrıca programları yüklemek için nano'yu veya ESP32'yi kolayca çıkarmamı sağlıyor.

Frizting dosyasını ekledim, buraya roman yazabilirim ama sanırım en güzeli örnek anlatıyor. Tüm kurulumun şemasıyla başladım. Fritzing'in kutularında birçok parça varken, her şey orada değil. Fritzing kısmını internette bazen bulabilir, bazen bulamayabilirsiniz. Bulamadığım kısımları sadece dişi başlık parçası ile değiştirdim. Sağ tıklarsanız, başlığı istediğiniz sayıda pin olarak düzenleyebilir ve ona bir pinout atayabilirsiniz. Bunu bulamadığım her parçada yaptım. Hemen hemen tüm modüller aynı 0,1 inç (2,54 mm) adımını kullandığından, bu size parça için doğru aralığı verecektir.

Ardından, fritzing uygulamasının PCB görünümüne geçersiniz. Bir PCB yerleştirilecektir, tıklarsanız boyutunu ayarlayabilir ve tek veya çift katmanlı bir PCB seçebilirsiniz. Benimki 2 katman kullanıyor. Fritzing, şematik görünümde yaptığınız bağlantıları önerecektir. Programın otomatik yönlendirme seçeneği var ama ben hiç kullanmadım. Bağlantılarımı manuel olarak düzenlemeyi seviyorum. PCB görünümünde sarı bağlantılar üst katmanda, turuncu bağlantılar alt katmandadır. Yine bağlantıya tıklarsanız özelliklerini seçebilirsiniz.

Gerçek PCB'yi yapmak için onu bir gerber dosyası olarak dışa aktarmanız gerekir. Bunu yapmadan önce, "routing" sekmesi altında tasarım kurallarını kontrol edebilirsiniz. Her şey kontrol edilirse "PCB için dışa aktar" a tıklayabilirsiniz. Çoğu üretici gerber dosyası isteyecektir, bu nedenle gerber'e dışa aktarmayı seçin.

PCB'mi JLCPCB'den sipariş ettim, size hemen bir fiyat teklif etmelerini seviyorum. Elbette başka birçok seçenek var.

Şematik hakkında: kullanılan 2 voltaj var. LED ve femtobuck, doğrudan 12V beslemeden güç alır. Gerisi, 5 voltluk kademeli düşüş ile çalıştırılır.

Adım 6: Tasarım + Lazer Kesici

Tasarım + Lazer Kesici
Tasarım + Lazer Kesici
Tasarım + Lazer Kesici
Tasarım + Lazer Kesici

İlk tasarımım için masif meşe kullanmayı denedim (ahşap işleme derslerini takip ediyorum), ancak bunun ideal olmadığı kısa sürede anlaşıldı. Ahşabın çok kalın olması parçalarınızı takmayı zorlaştırıyor. 3 mm huş ağacı multipleks, kodlayıcıları ve ekranları sabitlemenin daha kolay yollarını sağlar.

Rotterdam'da bulunan hobiler için snijlab.nl adlı çevrimiçi bir lazer kesim hizmeti buldum (Belçika, Hollanda ve Almanya'ya gönderiyorlar). Web sitelerine çizimlerinizi yükleyebilirsiniz ve hemen fiyat teklifinizi verirler. İşyerimde bulunan Autocad'i kullandım, ancak yazılım gerçekten önemli değil. Sadece bir vektör çizimi olmalı (Vectr, Illustrator, Inkscape…). Çoğu mağaza, kesmek veya kazımak isteyip istemediğinizi belirlemek için renkleri kullanır.

Akılda tutulması gereken bazı şeyler:

- Maks. lazer kesicinin boyutları (parçalarımın etrafına bir çerçeve çizdim)

- Min. kesimler arasındaki mesafe

- Çift çizgi çizmediğinizden emin olun, lazer fazladan bir geçiş yapar ve size daha pahalıya mal olur.

- PDF'ye çizerken 1:1 çizdiğinizden emin olun. Küçültmek veya kağıda sığdırmak istemezsiniz.

Adım 7: Montaj

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

Saati ahşap bir çerçevenin etrafına kurdum, paneller çerçevedeki M3 vidalar ve eklerle yerinde tutuluyor. Bir sürüm 2 inşa edersem, panelleri takmak için alüminyum "L" profilleri kullanırdım. Pirinç uçlar için delikleri tam olarak delmek çok zordu. Sadece kabul edilebilir bir sonuç için çok uzun sürdü. Bu elbette lazer kesim çiziminin revize edilmesi gerektiği anlamına gelir. Alüminyum profiller ve sadece somun ve cıvatalarla daha iyi bir sonuç alacağınızı düşünüyorum.

Işığı daha iyi dağıtmak için deliklerin içine aydınger kağıdı yapıştırdım. Bu, ışığa güzel bir parlaklık verir.

8. Adım: Burada Durmayın

Burada Durma
Burada Durma
Burada Durma
Burada Durma
Burada Durma
Burada Durma

Proje bir ESP32'ye odaklanıyor, zar zor kullandım. Yatak odamın ışıkları şu anda blynk kullanılarak uzaktan kontrol edilebilir. Onları saatle kontrol etmek sadece küçük bir adımdır. Belki de size evinizin etrafındaki sıcaklığı gösteren bazı ekstra ekranlar istersiniz? Veya bazı yerel sensörler (bu çoklayıcıda hala yedek I2C bağlantıları var!). Belki bir uygulama ve bluetooth aracılığıyla saati/alarmı ayarlayın?

Bana neyi değiştirdiğini, neyi değiştireceğini, neyi değiştirmem gerektiğini söyle…

Önerilen: