Ardunio Uno ile saat Projesi

AtiAti

Yeni Üye
Katılım
24 Haziran 2024
Mesajlar
6
Herkese merhabalar. Önce kendimi tanıtayım müsaadenizle. Ben elektronik dışında bir işle meşgulüm ve elektronikten hiç anlamıyorum. Bu işle hobi çerçevesinde ilgileniyorum. Bir saat tasarımı yapmak istiyorum, yıllardır bu konu aklımda ve en sonunda üzerine düşüp çözmeye karar verdim.

Tasarımı Arduino kart ile yapmak istedim, sebebini tam bilmiyorum ama zamanında araştırmıştım ve Arduino Uno ile yapabileceğimi düşünerek bir Uno kartı satın almıştım.
İnternette birçok saat projesi var ama benim proje biraz farklı olacak ve benzerini de bulamadım. O yüzden tasarımını ve kodlamasını kendim yapmalıyım sanırım.

Saat şöyle olacak; 12 adet led olacak, o anki saat hangi saatse onu temsil eden led yanacak, 2 adet de 7 segment display olacak, dakika da bu displaylerde gösterilecek. Örneğin saat 7:42 ise 7'yi gösteren led yanacak ve displaylerde 42 görünecek.

Muhtemel sorulara cevaplar; 2'li 7 segment olmayacak iki ayrı tekli gösterge olacak çünkü 2'li göstergelerin boyutu istediğim boyda değil. İstediğim boyut gösterge sadece teklilerde var ( büyük gösterge istiyorum. 8-9 cm civarı )

Arduino uno kartı aldım, büyük boy breadboard aldım, deneme için 1 adet 7 segment display aldım, Jumper kabloları aldım falan filan.

Bu işlerin simülasyonunun yapıldığı wokwi sitesini biliyorum, orada bazı denemeler yaptım ama pek bi ilerleme kaydedemedim ( sıfır elektronik bilgisi yüzünden )

Bana yardımcı olabilecek birileri var mıdır acaba?

Şimdiden teşekkür ederim.
 
Bu tasarımdaki en büyük zorluk, Arduino UNO da yeterince pin olmaması. O yüzden saat ledlerini kontrol etmek için "GPIO expander" denen entegreleri kullanman gerekecek. Aynı şekilde iki tane 7 segment displayi ayrı ayrı sürmek için de yeterince pin yok, o yüzden iki displayi de "taramalı" bir şekilde kontrol etmen gerekecek.

Yazılım bilgin ne seviyede belirtmemişsin, ama bu projede belli bir yazılım geliştirme bilgisi de gerekli olacak. GPIO expander entegreleri genelde I2C bus ile çalışıyor, I2C hakkında bilgi sahibi olman gerekecek. Taramalı 7 segment çalıştırmak için de kesme kullanman gerekecek, bu konuda da bilgi sahibi olman gerekiyor. Eğer yazılım bilgin de yoksa, bunların hiç birisi, birkaç sayfa forum mesajı ile anlatılabilecek, kolayca anlaşılabilecek konular değil. Elektronik bilgin de olmadığı için bir sorun çıktığı zaman sorun araştırması ve gidermesi de mümkün olmayacak.

Eğer elektroniği ve yazılım geliştirmeyi bir hobi olarak ele almak istiyorsan, öğrenmek istiyorsan, bunu da bu amaçla bir öğretici proje olarak yapacaksan, o zaman multimetre, osiloskop, havya gibi temel ekipmanları satın alabilirsin ve aşama aşama burada beraber ilerletiriz. Ama sadece bu projeyi yapmak için ne gerekiyorsa öğreneceksen ondan sonra da kurtulmak istiyorsan, o bakış açısı ile yapılabilecek bir proje değil bu, birisine yaptırmak çok daha ucuza malolur ve çok daha çabuk sonuç alınır.
 
Aşağıdaki konu, saniyeyi yazdırmak için 7 segment noktasında fikir verebilir.

Aynı şekilde saat kısmı için LED süreceğin için aslında bu beklentin için de çözüm olabilir.

 
Bizim sektörde pek sevilmeyen ama yavaş yavaş kullanılan chatgpt bu konuda bayağı yardımcı olacaktır. Özellikle Arduino gibi hazır kütüphanelerin kolay bulunabildiği bir ekosistemde sizi, doğru sorular sorarsınız, iyi bir şekilde yönlendirir.

Bunu yapmanın en pratik yollarından birisi i2c bağlantılı bir 7DS bulmak. Bu tip bağlantılı 4lü 7SDler mevcut ama istediğiniz gibi ikili pek yok ama sadece ikisini kullanacaksınız Burada bir örnek ürün var. Mevcut elektronik bilginizi biraz geliştirmeniz gerekecek bu proje için.
 
Büyük displayi arduino ile süremezsin daha fazla akım için çıkışını güçlendirmen lazım.
10 CM boyundaki bi display de segment başına en az 5 led kullanılır. Display başına 40 led eder.
O yüzden programdan önce displayleri nasıl süreceğini tespit etmeni öneririm.
MUX yöntemle transistör kullanabilirsin.
Ledleri de 12 çıkışı meşgul etmemek için iki adet 4017 yi seri (Kaskad) bağlayıp kullanabilirsin.
Arduino tarafı en son ilgilenmen gereken alan olacak.
 
İki adet HC595 saat ledlerini sürer. İki adet TPIC6B595 ile de displaylar sürülür. Bunlar için toplam üç kontrol pini yeterli olur.
İstenirse hepsi TPIC olabilir.
 
Son düzenleme:
1719416693388.png

Ek:
* Gösterim kodları tamam gibi.
* Sadece, saat artımı ve kontrolü kaldı. Onları da isteyen, kendine göre düzenleyebilir.
* Direnç değerleri izafi. Kullanacağınız gerilime ve lede göre yeniden hesaplayınız.
 
Son düzenleme:
@AtiAti;
Öncelikle, özelden cevap vermek hoşuma gitmiyor. Sadece kişisel bilgilerin paylaşımı için kullanıyorum, bunu belirteyim dedim.
Ayrıca bu forumda kural olarak göremedim; ancak, burada paylaştıklarım CC BY lisansındadır. Dolayısıyla şemalarımı ve kodlarımı bu lisans içerisinde kullanabilirsiniz.

#8 ve öncesindeki şemalarımın taslak olduğunu unutmayınız.
Arduino ve/veya benzeri bir modül ile istediğiniz her büyüklükteki yedi parçalı göstergeyi sürebilirsiniz. Sadece çıkışına uygun bir sürücü ekleyeceksiniz. Bunları yukarıda belirttim, HC595 TTL olduğu için 5V gerilim problemi var. Elinizdeki göstergelerin çalışma gerilimini bilmiyorum. Bunun için üzerinde yazan koddan araştırma yapabilirsiniz.
Göstergeler için benim tavsiyem TPIC6B595. Dolayısıyla yedi parçalı göstergelerin ortak anot olması gerekmekte.
Kullanacağınız ledlerin de nasıl bir tip olduğunu bilmiyorum. Eğer 3/5mm led ise; bunlar için de HC595 kullanabilirsiniz. Böylece sadece 3 bilgi pini ile tüm göstergeler ve ledler çalışacaktır.

NTP bir internet servisidir, bazı devlet kurumları bunu sağlamaktadırlar. Ücretsiz bir hizmettir.

RPi Pico, ESP32/8266 benzeri modüller ile internete bağlı olarak çalışabilirler. Böylece ntp hizmeti ile istenilen sıklıkta modülün, saat birimini ve/veya harici saat birimini güncelleyebilir. Böylece saat ayarlama ve kayma problemleri ortadan kalkar.
İnternete bağlı olmayan modüllerin ilk ayarını ve güncellemelerini elinizle yapmak zorundasınız.

RTC birimleri her ne kadar kararlı oldukları söylense de, arada bir saat üzerinde düzenleme yapılması gerekebilir.

Bu noktadan sonra; HC595 ve TPIC6B595 kullanımlarını tecrübe ederseniz, uygun olacaktır.

Kolaylıklar.
 
Bu wokwi.com eğitim anlamında inanılmaz faydalı bir site. Öğrenciye gerçek hardware ödev vermeden bu sitede yapmasını istemek lazım.

Bu arada youtube'da da bolca Türkçe kaynak video var wokwi ile ilgili.
 
Bu wokwi.com eğitim anlamında inanılmaz faydalı bir site. Öğrenciye gerçek hardware ödev vermeden bu sitede yapmasını istemek lazım.

Bu arada youtube'da da bolca Türkçe kaynak video var wokwi ile ilgili.
Ayrıca, "kendi" entegreni de tasarlamana izin veriyor.
 
Basit bir kaç değişiklik ile çalışan gerçek uygulama. ESP-07 ile test ediliyor...

1721037911136.png
 
Değişiklik gerekli miydi? Simulatörde çalışan gerçek hayatta tam istenen sonucu vermedi mi?
 
Birkaç değişiklik söyle:
* TPIC çıkışları pcbde düzün olsun diye displaydaki en uygun yakın pine bağlanmış. Dizideki segment sıralaması değişti.
* Saat kısmında hane eklendi.
* TPIC open kolektor yapısına sahip olduğu için, diziye aktarılan hesaplamada komplementer işlemi iptal edildi.
 

Biraz çalıştım ve şöyle bir proje hazırladım. Bunun üzerine konuşabilir miyiz?
Mesela, hatalarım varsa ki kesin vardır, bunlar konusunda beni aydınlatabilir misiniz?
 
LED segmentlerini 220 kΩ direnç ile sürüyorsun. Bunları şimdilik 1 kΩ ile değiştir. Tarama algoritmasını gerçekleştirince LED parlaklığı çok az olacaktır, ama algoritma çalışana kadar böyle tutmanda fayda far. Ondan sonra dirençleri 22 Ω ile değiştirebilirsin.

Aşağıda da tamamen boşta 220 kΩ direnç ve RGB LED ler var.
 

Biraz çalıştım ve şöyle bir proje hazırladım. Bunun üzerine konuşabilir miyiz?
Mesela, hatalarım varsa ki kesin vardır, bunlar konusunda beni aydınlatabilir misiniz?
* HC595 Q0 - Q7 çıkışlarını sıra ile A - DP arasında sırayla bağlayın ya da bu bağlantıdaki tabloyu çıkarınız.
* Buradaki ledler; özel data ile sürülür, adresli led diye de bilinir. Bunları kullanmayı planlıyorsanız direnç kullanılmaz. Yok, sadece sıradan led kullanacaksanız; iki adet daha HC595 ilave edin ve çıkışlarını sıra ile bu on iki lede bağlayın. Dört çıkışı kullanılmayacak, sorun değil.
* Arduino'nun SPI pinlerini bulun ve sadece HC595 için kullanın.
* RTC modülü SCL ve SDA yolunu pull-up yapınız. Bazı modüllerde pull-up belki olabilir, ama unutmamak için ekleyin.
* Şahsi düşüncem; üç buton daha verimli olur.
 
* HC595 Q0 - Q7 çıkışlarını sıra ile A - DP arasında sırayla bağlayın ya da bu bağlantıdaki tabloyu çıkarınız.
* Buradaki ledler; özel data ile sürülür, adresli led diye de bilinir. Bunları kullanmayı planlıyorsanız direnç kullanılmaz. Yok, sadece sıradan led kullanacaksanız; iki adet daha HC595 ilave edin ve çıkışlarını sıra ile bu on iki lede bağlayın. Dört çıkışı kullanılmayacak, sorun değil.
* Arduino'nun SPI pinlerini bulun ve sadece HC595 için kullanın.
* RTC modülü SCL ve SDA yolunu pull-up yapınız. Bazı modüllerde pull-up belki olabilir, ama unutmamak için ekleyin.
* Şahsi düşüncem; üç buton daha verimli olur.
Hocam söylediklerinizi yapmaya çalıştım;
*595'lerin Q0 ile Q7 arasını 7 segmentlerde A ile DP aralarına sırayla bağladım.
*Ledleri normal olanlarla değiştirdim.
*Arduinonun SPI pinleri 10(SS), 11(MOSI), 12(MISO), 13(SCK) imiş. Bu bilgiye göre bağlamaya çalıştım.
*RTC modülünün SCL ve SDA yolunu pull-up yapma konusunu anlamadım. Bu neden gerekli. RTC ile ilgili birçok doküman okudum hiçbirisinde pull-up yapmaktan bahsetmiyorlar.
*3. Buton ne için? Reset için mi?

Yaptığım düzeltmeler olmuş mu?
Teşekkür ederim

 

Bu proje ile size kalanlar;
* RTC okuma, yazma ve ilk ayarlama.
* Saat ve dakika kısmının led ve 7 parçalı gösterge üzerinde düzgün şekilde gösterilmesi.
* Butonlar.

Bu arada, öğrenmeniz için yukarıdakileri bir süre unutun.
Önce; 0-1199 arası sayaç yapın. Bu sayacın başlangıç değerini siz belirleyin.
Bu temrini yaparsanız, diğer kısımlar kolaca yapılabilir.

Hatta bir sonraki aşamada donanımsal SPI ile devam edilebilir. SPI pinlerini onun için söyledim.
 
Araştırmalarım sonucu şöyle bir fikre kapıldım; bu projedeki ledler için shift register değil de 12 ya da 16 kanal multiplexer kullanmak daha doğru değil mi? Çünkü bu projede ledleri kaydırmalı ya da sırasıyla peşpeşe yakma yapmayacağız, o anki geçerli saat neyse sadece onu simgeleyen led yanacak diğerleri sönük kalacak. Bu sebeple kaydırmalı data aktarma işi yapan shift register yerine sadece pin çoğaltması yapmak için multiplexer kullanmak daha mantıklı değil mi? Ustalar cevap verirse sevinirim. Teşekkürler.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,951
Mesajlar
118,752
Üyeler
2,824
Son üye
selocan32

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top