Ana içeriğe geç

        Skyforge Projesi - Featured image

Skyforge Projesi

Raspberry Pi üzerine kurulmuş kompakt, sürekli açık bir hava durumu istasyonu — gerçek zamanlı hava koşulları, 5 günlük tahmin, LED göstergeleri ve özel yazı tipi, hepsi masamda duran bir breadboard’a sığdırılmış.

Ne Yapar

Skyforge, OpenWeatherMap API‘sinden canlı veri çeken ve 2.4″ ST7789 TFT ekrana (240×320) render eden bir masa hava durumu ekranıdır. Bir bakışta şunları gösterir:

  • Orbitron yazı tipinde güncel saat ve tarih
  • Şehriniz, ülkeniz ve bir bayrak ikonu
  • Güncel hava durumu ve ikonu
  • Sıcaklık
  • Alt kısımda 5 günlük tahmin şeridi

Konum, IP coğrafi konumlandırma ile otomatik olarak belirlenir — bunun için yapılandırma dosyası gerekmez.

Yandaki iki LED bir bakışta ortam durumu sağlar: yeşil, hizmetin sağlıklı ve bağlı olduğu anlamına gelir; kırmızı, bir arıza veya ağ sorunu sinyali verir.

Donanım

Parça Notlar
Raspberry Pi 3B+ (veya daha yenisi) Python servisini çalıştırır
ST7789 TFT — 240×320 SPI, 2.4″
Yeşil + Kırmızı LED 5mm, 220Ω dirençlerle

Ekran SPI üzerinden bağlanır — yedi kablo, herhangi bir ST7789 projesiyle aynı. LED’ler akım sınırlayıcı dirençler üzerinden GPIO 17 ve GPIO 27’ye bağlıdır. Her şey yarım boy bir breadboard’a oturur; PCB yok, lehim gerekmez.

Yazılım Mimarisi

Proje üç Python modülüne ayrılmıştır:

  • weather_display.py — hava durumu verilerini çeker, Pillow kullanarak arayüzü TFT’ye render eder, yenileme döngüsünü yönetir
  • led_controller.py — yapılandırılabilir yanıp sönme desenleriyle yeşil/kırmızı LED’leri yönetir
  • system_controller.py — üst düzey gözetmen: her iki süreci başlatır, izler ve çökerse yeniden başlatır

Bir setup.sh betiği her şeyi tek seferde halleder: bağımlılıkları kurar, SPI’ı etkinleştirir, systemd servisini kurar ve API anahtarını sorar. Bundan sonra ekran her açılışta otomatik olarak gelir.

git clone https://github.com/ssnrshnn/skyforge_project.git
cd skyforge_project
chmod +x setup.sh && ./setup.sh

Zorlu Olan Birkaç Şey

Yazı tipi render’ı. Varsayılan PIL yazı tipleri ekran çözünürlüğünde berbat görünüyordu. Orbitron Bold‘a (monospace tarzı geometrik bir yazı tipi) geçmek saati odanın karşısından okunabilir hale getirdi ve tüm arayüze temiz, amaçlı bir görünüm kazandırdı.

Captive ağ algılama. Bazı ağlar, Pi açılışını tamamlamadan giden HTTP’yi yakalar, bu da ilk hava durumu çekiminin sessizce başarısız olmasına ve ekranın boş kalmasına neden oluyordu. Çözüm, ilk render’dan önce üstel geri çekilmeli bir yeniden deneme döngüsü eklemekti.

Otomatik yeniden başlatma. Süreç kurtarma için tamamen systemd’ye güvenmek yerine, system_controller.py her iki alt süreci izler ve ayrı ayrı yeniden başlatır. Bu, led_controller.py‘deki bir çökmenin ekranı öldürmediği ve tam tersinin de geçerli olduğu anlamına gelir.

Fotoğraflar

Masada Skyforge

Ekran yakın çekim

Açılı çekim

Üstten görünüm

Düşük ışıkta ekran

Gece modu parıltısı

Video


2.


3.