- Ucuz bir analog kuvars saat, ESP8266 modülü ve Arduino sketch ile kontrol edilerek internet saatiyle senkronize edilen bir proje
- Doğruluğu korumak için her 15 dakikada bir NTP sunucusundan zamanı alır ve yaz saati otomatik ayarlama özelliğini içerir
- Saatin Lavet step motor bobini ayrılarak ESP8266’nın kontrol edebileceği şekilde modifiye edilir ve EERAM çipi kullanılarak güç kesildiğinde bile saat, dakika ve saniye ibrelerinin konumları saklanır
- İlk kurulumda ESP8266’nın sunduğu web sayfası arayüzü üzerinden ibre konumları belirlenir; sonrasında durum sayfasında saat durumu SVG veya HTML Canvas ile görselleştirilir
- Ucuz donanımla doğru ağ senkronizasyonlu bir saat gerçekleştirilebileceğini gösteren açık kaynaklı bir örnek olarak, gömülü IoT kontrol teknolojisinin pratik bir uygulamasını sergiler
Proje genel bakışı
- ESP8266 WiFi Analog Clock, WEMOS D1 Mini ESP8266 modülü ve Arduino sketch kullanarak NTP(Network Time Protocol) sunucusundan yerel saati otomatik alıp gösteren bir sistemdir
- Saatin doğruluğunu korumak için her 15 dakikada bir NTP sunucusuna yeniden bağlanır
- Yaz saati uygulaması (Daylight Saving Time) için otomatik ayarlama özelliği içerir
- Proje, ucuz bir analog kuvars saat temel alınarak donanım modifikasyonu ile yazılım kontrolünü birleştirir
Donanım yapısı
- Kullanılan saat, Walmart’tan 3,88 dolara satın alınmış bir analog kuvars saattir
- Saatin kuvars mekanizması açılarak içindeki Lavet step motor bobini kuvars osilatörden ayrılır ve her bir uca ESP8266 bağlantısı için kablo lehimlenir
- Mekanizmaların çoğu vida yerine geçmeli şekilde monte edilmiştir
- Bobin telleri saç telinden daha ince olduğu için kullanım sırasında çok dikkat edilmesi gerekir
- Tamamlanan devre, EERAM IC ve diğer bileşenlerle birlikte perfboard üzerine kurulmuştur
Yazılımın çalışma şekli
- AnalogClock.ino sketch’i, ESP8266’nın gerçek zaman ile saatin gösterdiği zamanı saniyede 10 kez karşılaştırmasını sağlar
- Saat geri kalıyorsa saniye ibresi hızlı hareket ettirilerek senkronize edilir
- Saat ileri gidiyorsa gerçek zaman yetişene kadar beklenir
- Saniye ibresinin hareketi, Lavet motor bobinine iki kutuplu darbe (bipolar pulse) uygulanarak sağlanır
- Motorun özelliklerine göre PULSETIME sabitinin ayarlanması gerekir; deneysel olarak 30ms uygun bulunmuştur
- Ucuz saatlerde ibre konumu geri bildirimi olmadığından güç kesildiğinde konum bilgisi kaybolur
- Bunu çözmek için Microchip 47L04 Serial EERAM(4Kbit SRAM + EEPROM backup) kullanılır
- Saat, dakika ve saniye ibrelerinin konumları her saniye kaydedilir ve yeniden enerji verildiğinde geri yüklenir
İlk kurulum ve web arayüzü
- Sketch ilk çalıştırıldığında ESP8266, kullanıcının saat ibrelerinin başlangıç konumunu belirleyebilmesi için basit bir web sayfası sunar
- Sonrasında ESP8266, EERAM’e kaydedilmiş verileri kullanarak ibre konumlarını hatırlar
- Çalışma sırasında bir durum sayfası (status page) sunar ve aşağıdaki üç görüntüleme modunu destekler
- SVG tabanlı saat kadranı grafiği
- HTML Canvas tabanlı saat kadranı gösterimi
- Yalnızca metin durum gösterimi
Lisans ve teknik bilgiler
- Proje MIT lisansı ile yayımlanmıştır
- Başlıca dil dağılımı C++ 64.1% ve C 35.9% şeklindedir
- GitHub deposu 252 yıldız (star) ve 2 fork barındırmaktadır
- İlgili konu etiketleri: arduino, esp8266, clock, analog-clock, ntp, hardware-construction
Önemi
- Ucuz bir saati Wi-Fi senkronizasyonlu akıllı saate dönüştüren pratik bir örnek
- ESP8266 ve Arduino ortamı kullanılarak hassas zaman kontrolü ve web tabanlı arayüz uygulaması geliştirilmesine dair bir örnek
- IoT donanım modifikasyonu ve firmware senkronizasyon tekniklerini öğrenmek için açık kaynaklı bir başvuru materyali
1 yorum
Hacker News yorumları
Özellikle ilginç bulduğum kısım “SRAM with EEPROM backup” çipiydi
Bu çip, saat ibrelerinin konumu her değiştiğinde bunu kalıcı olarak kaydetmeyi sağlıyor, ama normal EEPROM gibi yazma ömrünü tüketmiyor
Birim fiyatı da 1 doların altında, bu yüzden hobi ya da küçük ölçekli projeler için faydalı bir parça
SRAM ve EEPROM, denetleyiciyle birlikte tek bir paket içinde bulunuyor ve yakınında küçük bir kondansatör (4.7µF) yer alıyor
SRAM, güç verildiği sürece veriyi koruyor; EEPROM ise güç kesilse de veriyi kalıcı saklıyor ama yazma sayısı sınırlı
Denetleyici, voltajın düştüğünü algıladığında SRAM içeriğini anında EEPROM’a döküyor
Kondansatör de bu anda EEPROM’a veri yazılabilmesi için güç sağlıyor
Güç geri geldiğinde ise EEPROM’daki veri yeniden SRAM’e kopyalanıyor
Dezavantajı kapasitenin 4 kilobit gibi küçük olması, ama bu sorunu 1 dolara çözebiliyorsanız bence fazlasıyla değer
Özellikle debug loglarını ring buffer şeklinde saklarsanız, geliştirme PC’sine bağlı olmasa bile gömülü sistemin çökme loglarını tutmak mümkün oluyor
ürün bağlantısı
Ama şu an yaşadığım yerde sinyal çok zayıf, bu yüzden elle ayarlamak çok zahmetli
Ben de ESP32 ve NTP sunucusu kullanarak dünyanın farklı atom saati sinyallerini emüle eden Arduino kodunu kendim yazdım
Farklı ülkelerdeki atom saati yayın sinyallerinin tarihini ve farklarını incelemek de oldukça ilginç
Kırmızı projeksiyon parlaklığı gece için tam kıvamında ama Wi-Fi senkronizasyonu olmadığı için zamanı NTP ya da GPS ile ayarlayamıyor
Projektör kısmı ana gövdeye ribbon kabloyla bağlı, bu yüzden tersine mühendislikle uğraşmak eğlenceli olabilir
İdeal olarak tavanda, saat dışında başka bilgileri de gösteren bir LED matris olsa güzel olurdu
Böyle ürünler var ama buyfrixos.com örneğinde olduğu gibi çok pahalılar
yapım notlarımın bağlantısı
Ben de bu tür ucuz duvar saatlerinden birkaç tane kullanıyorum ve zaman sapmaları neredeyse yok
Hatta NTP’den daha az jitter’a sahip olabileceğini düşünüyorum
Hiç saat ayarlamak gerekmiyor ve NTP saatleriyle de 1 saniye içinde aynı oluyorlar
Yalnız fırın ya da mikrodalga saatlerini kapatmak istiyorum
Bir ayda yaklaşık 1 dakika öne geçiyorlar; keşke Wi-Fi senkronizasyonu olsaydı
Ürünler giderek daha kapalı hale gelirken, basit ve hacklenebilir şeyleri kendin yapma duygusunu özledim
Bir gün geçim derdinden kurtulursam, basit, güvenilir ve hacker dostu ev aletlerini kendim yapmak isterim
Böyle projeleri görünce gerçekten hayran kalıyorum
Kızım için almıştım ama düzensiz tik tak sesi ders çalışırken dikkat dağıttığı için şu anda kullanılmıyor
Yine de oldukça keyifli bir deneyimdi
Ama evde birden fazla saat varsa etkili olması için sadece birini esas almak gerekiyor
Gents Turret Movement tanıtımı
Ben bunu kullanarak tuning fork tabanlı elektromekanik bir saat yaptım
Hassas bir zaman kaynağı yerine tuning fork ve 74xx mantığı ile çalışıyor
Accutron neden hâlâ böyle saatler yapmıyor diye merak ediyorum
Rezonans frekansı kullanmaları, kuvars saatlere benziyor ama görsel olarak daha çekici
Aksi halde ani gerilim sıçramaları hatalı çalışmaya yol açabilir ya da mikrodenetleyiciye zarar verebilir
Opto transistör ile gate voltajını izole etmek ve motor beslemesini ayrı vermek ideal olur
GitHub projesi de var
Eski deck’ler ya da LANC denetleyiciler hâlâ ortalıkta bolca bulunduğu için değerlendirmeye çok uygunlar
Saat doğru zamanı biliyor olsa bile, gerçek çalışma hızı biraz saparsa biriken hata büyüyebilir
Özellikle PULSETIME sabiti 1 ms bile yanlış ayarlanmışsa bir gün içinde fark oluşabilir
Elbette Lavet step motor teoride sabit bir frekans tabanlı adım düzeni korur, ama aşınma ya da gürültü kaynaklı sapma olabilir
Yine de bir duvar saati düzeyinde bu hata ihmal edilebilir olabilir
Wikipedia açıklamasına bakarsanız anlamak daha kolay olur
Adım kaçırılmadığı sürece birikimli hata oluşmaz
Yani adım sayısını doğru tutmak yeterlidir