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önetirled_controller.py— yapılandırılabilir yanıp sönme desenleriyle yeşil/kırmızı LED’leri yönetirsystem_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.shZorlu 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





