Sıkça Sorulması Muhtemel Sorular
Bu yaptığın nedir?
Raspberry Pi ile yapılmış basit bir meteoroloji istasyonu.
Raspberry Pi ne ki?
Kabaca kredi kartı büyüklüğünde, modeline göre USB, HDMI, kulaklık, ethernet girişleri, olan, çok az enerji tüketen basit bir bilgisayar. İçine Linux tabanlı bir işletim sistemi yükleyip, klavye, fare ve monitör bağlayarak yavaş ama tamamen işlevsel bir bilgisayar olarak kullanabiliyorsunuz. En azından bendeki 2B modelinin 1080p video açabilen 900 MHz'lik bir işlemcisi ve 1 GB RAM'i var. Performansı 2013'ten bir telefon veya 2008'den bir netbook'a denk gibi de düşünülebilir.
İstasyonu nasıl kurdun?
ODTÜ Fizik'teki ofisimde sürekli açık bir Raspberry Pi 2 Model B var (bundan sonra kısaca Raspi diyeceğim). Ölçümleri Raspi'ye bağlı iki sensör yapıyor: Dış sıcaklığı ölçmek için su geçirmez bir DS18B20 sıcaklık sensörünü dışarı sarkıttım, içeride ise bir basınç sensörü olan BMP180 var.
DS18B20'nin kendi kablosu 1 metre kadar, sensörü dışarıda uygun bir konuma koyabilmek için sensörü 20 metrelik bir ethernet kablosuna lehimleyerek uzattım. Burada Ethernet kablosunun internet ile alakası yok, uzun mesafelerde sinyallerin düzgün iletilebilmesi için düzgün bir kablo gerekiyor. Öyle olunca CAT5 tipi bir ethernet kablosunun uçlarını kestim, ethernet kablosunun içinden çıkan 8 ince kablonun üçünü kullandım. Ethernet kablosunun öbür ucu ofisteki bir breadboard'a gidiyor.
BMP180 ise doğrudan breadboard'a takılı. Atmosfer basıncı hem içeride hem dışarıda aynı olduğundan sensörü dışarı koymak gerekmiyor. Sadece yükseklik arttıkça basınç azaldığı için ve sensör 1 metrelik değişikliği bile tespit edebildiğinden sensörün sabit yükseklikte durması gerekli.
BMP180'in diğer bir avantajı ise kendisinin aslında hem sıcaklık hem basınç sensörü olması, zira basıncı doğru ölçebilmesi için sensörün içinde bulunduğu sıcaklığı da bilmesi gerekiyormuş. Bu sayede ofisin iç sıcaklığını da ölçebiliyorum.
En sonunda, breadboard'daki 4 jumper kablo Raspi'deki GPIO adı verilen pinlerin birkaçına takılı. Bu kablolar sensörlere enerji ve gerekli sinyalleri gönderip ölçümleri Raspi'ye iletiyor.
İki sensör de ölçtüğü veriyi analog değil de dijital olarak iletiyor. Bu nedenle bağlantı kablolarının iç direnciyle vs. uğraşmaya gerek yok.
İstasyon ne zamandan beri çalışıyor?
23 Ocak 2022'den beri neredeyse sürekli açık.
Bu zımbırtı nasıl çalışıyor?
Raspberry Pi, sensörlerden 2 saniyede bir ölçüm alıyor. Yazdığım Python kodu bu veriyi kullanarak dakikalık ölçümleri ve 10 dakikalık ortalamaları çıkarıyor, grafikleri çizdiriyor, istasyonun web sayfasındaki veriyi güncelliyor ve ölçümleri bir metin dosyasında kaydediyor. Başka bir kod web sayfası içeriğini 5 dakikada bir güncelliyor. Bir başka kod da kodun hata verip kapanma ihtimaline karşı 30 saniyede bir kodun çalışıp çalışmadığını kontrol edip gerekirse kodu yeniden çalıştırma komutunu veriyor. Sensörlerin veri çekmek için kendi Python kodları mevcut, çalıştırıldığında ölçümleri sayı olarak veriyor. Bu hazır kodları kullanarak ölçümleri alıyorum, geri kalan her şeyi ise kendim kodladım.
Niye dakikada bir değil de 2 saniyede bir ölçüm alıyorsun?
Aslında sıcaklık sensörlerinin ölçümleri oldukça sabit, o yüzden örneğin sıcaklık sabitken daha fazla ölçüm yapmak pek bir şey değiştirmiyor. Ama sıcaklığın oynak olduğu zamanlarda daha fazla ölçümün ortalamasını almak ölçüm hassasiyetini bir nebze arttırıyor. Basınç sensörünün ölçümleri ise hayli gürültülü, o yüzden birçok ölçümün ortalamasını almak basınç ölçümünü çok daha hassas hale getiriyor. Dakikada 1 yerine 30 ölçüm almak ölçümlerdeki oynaklığı teorik olarak √30 ≈ 5,5 kat azaltıyor.
Öyleyse neden daha hızlı ölçüm almıyorsun?
Dış sıcaklığı ölçen DS18B20 sensörünün bir ölçümü alması yaklaşık 0,75 saniye sürüyor. Basınç sensörü BMP180 daha hızlı, ama iki sensörün farklı hızlarda ölçüm alması işleri biraz karmaşıklaştıracağından ölçümleri aynı anda almak bana daha makul geldi. Her saniye ölçüm almam da mümkün, ama hata alma olasılığını en azda tutmak için 2 saniyede bir ölçüm almanın makul olacağını düşündüm. Halihazırda dakikalık basınç için 30 basınç ölçümünün ortalamasını almak da gayet tatmin edici sonuçlar veriyor.
Sensörlerin hassasiyeti nasıl?
Sensörlerin çözünürlüğü şöyle:
DS18B20: 1/16 = 0,0625 °C
BMP180: sıcaklık için 0,1 °C, basınç için 0.03 mbar. Fakat üstte de bahsettiğim gibi, basınç ölçümleri hayli gürültülü.
Ayrıca sensörlerin detaylı özelliklerinin PDF'i ("data sheet") internette mevcut.
Sensörlerin ölçümü ne kadar doğru peki?
Bunu test etmek için DS18B20'yi önce bir su-buz karışımına koydum, sıcaklığı 0 ila 0,0625 °C arasında gösterdi. Bu yüzden elimdeki sensörün 0 °C'de 0,1 °C doğrulukla ölçüm yapabildiğini söyleyebilirim.
DS18B20'nin diğer sıcaklıklardaki doğruluğunu test etmek içinse su-buz karışımında (0° C) ve kaynayan suda (suyun kaynama sıcaklığı bulunduğum rakımda yaklaşık 97 °C) sıcaklığı doğru gösteren (0.5 °C'lik bir hata payıyla diyelim) bir cıvalı termometre kullandım. Oda sıcaklığında ve sıcak suda iki alet de aynı sıcaklıkları gösterdi. 1 $ civarındaki bir sensör için ölçümlerini hayli başarılı buldum.
BMP180'in basınç ölçüm doğruluğunu kendim teyit edemedim, fakat Meteoroloji Genel Müdürlüğü'nün Ankara şehir merkezindeki çeşitli noktalardan alınan anlık ölçümleriyle karşılaştırdığımda BMP180'in tutarlı sonuçlar verdiğini gördüm. Basınç ölçüm doğruluğu dikkatli bir hesapla bu şekilde dışarıdan da hesaplanabilir.
Bence sıcaklık olması gerekenden farklı gözüküyor?
İlk başta "Neye göre?" diye sormam gerek. Meteorolojik ölçümler ideal olarak zeminden 1,5 metre kadar yüksekte, etrafı açık, beton veya yoğun bitki örtüsü gibi sıcaklığı etkileyen zeminlerden uzakta, hava akımlarına açık konumda ve en önemlisi gölgede yapılır. Örneğin yazın tabelalar güneşte 50 °C'yi gösterse (ve siz de güneşte muhtemelen o sıcaklığı hissetseniz bile) esas alınan gölgedeki sıcaklıktır. ODTÜ'nün ve özellikle sensörün bulunduğu alanın yeşillikli olması da şehrin betonuna göre sıcaklığı tabii ki daha düşük göstermesinde etkili.
Kaldı ki, dış sıcaklık ölçümleri tamamen doğru bile olsa ne yazık ki bilimsel meteorolojik veri olarak kullanılabilmekten uzak, çünkü dış sıcaklık sensörünün konummu üstte bahsettiğim ideal şartlarda değil.
Birincisi, sensör üç taraftan Fizik bölümü binasının cepheleriyle çevrili. Bölge sadece doğu tarafından açık, o yüzden oldukça sensör oldukça korunaklı bir bölgede. Yazın güneşin en tepede olduğu zamanlar hariç sadece sabah güneşini alıyor. Sensör hava akımını engellemeyen bir güneşlikle korunuyor olsa da etrafındaki bina hava akımını ve öğleden sonra güneşinin ısıtmasını bir miktar engelliyor, bu nedenle öğleden sonraki sıcaklıkların idealden daha serin olduğunu tahmin ediyorum (Neyse ki bu benim ofisim için ÇOK iyi bir şey).
İkincisi, sensörün bulunduğu alan yoğun çalılık. Betonun sıcaklığı yüksettiği gibi bitki örtüsünün idealden fazla olması gündüz sıcaklığını bir tık etkiliyor olmalı.
Üçüncüsü, üç tarafı çevrili bu boş alanın yer hizasında sürekli çalışan kuvvetli bir havalandırma, o kadar kuvvetli olmasa da yine oldukça kuvvetli üfleyen birkaç tane de klima ünitesi var. Bunlar da bazen ölçümleri etkiliyor diye düşünüyorum. Havalandırmaların ölçümleri daha az etkilemesi için sensörün yerini 7 ayda 3 kere değiştirdim aslında, biraz deneme yanılma oluyor.
İstasyon bazen saçma sapan ölçümler alıyor sanki?
Biliyorum, kodumda eklenecek hala bir sürü şey var. Bazen ölçümler sapıtıyor, onları filtreleyecek bir kod yazmam lazım.
Bu sistemi yapmak ne kadar tuttu?
Raspberry Pi 2'yi 2016'da 140 ₺ civarına almıştım. 2022 itibariyle Raspberry Pi 4'ün fiyatları yurtdışında 35 $'dan başlıyor ama Türkiye fiyatlarını hiç söylemesem daha iyi. Aynı zamanlarda Raspberry Pi için aldığım 32 GB'lık Micro SD kart ise ~25 ₺ imiş.
Sensörler hayli ucuz, BMP180 ile su geçirmez DS18B20'i Aralık 2021'de kargo hariç 33 liraya almıştım.
20 metrelik ethernet kablosu 40 ₺ civarı tutmuştu, dış siperlik de yaklaşık 10 liraya mal oldu.
Kalan ıvır zıvır da zaten elimin altında olan (örn. breadboard, basit kablo) veya fazladan alıp çok azını kullandığım (jumper kablo, ısıyla büzüşen makaron) malzemeler.
Özetle, elimde olan malzemeleri saymazsak Aralık 2021'den beri bu sistemi yapmak için harcadığım para 100 liranın altında tuttu.
----
Son güncelleme: 4 Eylül 2022