Sıfırdan Kod Satırına

Sıfırdan Bir Sensör Okumasına: Raspberry Pi ile Dijital Dünyaya Giriş

Selamlar teknoloji tutkunları ve circuit board meraklıları!

Ankara’nın bu soğuk günlerinde, benim için en sıcak yer bilgisayar kasası ya da geliştirme kartı oluyor. Bu blogun amacı da tam olarak bu; donanımdan yazılıma kadar olan o görünmez ama en kritik yolculuğu sizlerle paylaşmak. Son birkaç haftadır üzerinde çalıştığım bir proje vardı: Raspberry Pi kullanarak basit bir ortam sıcaklığını sürekli okuyup bunu dijital olarak loglama. Bu, benim için her zaman heyecan verici bir döngü oluyor çünkü burası teorinin pratiğe dönüştüğü yer.

Yeni başlayan biri için (ki ben de uzun yıllar sonra bu derinliğe gelmiş bir meraklıyım) Raspberry Pi'yi sadece bir bilgisayar gibi kullanmak yetmiyor. Onu bir veri toplama ünitesine dönüştürmek gerekiyor. Bu dönüşümün ilk aşaması her zaman donanım seçimi ve arayüz oluşturma oluyor.

Donanım Seçimi ve Devreye Alma

Bu projede karar verdiğim kısım, sıcaklık sensörü olarak altyapıyı kurmak oldu. DHT11/DHT22 gibi sıcaklık ve nem sensörleri bu tür başlangıç projeleri için ideal çünkü çok az GPIO bacağını kullanıyorlar ve kurulumları nispeten basitleştirilebilir. Pi’nin GPIO pinlerine bu sensörü bağlarken en çok dikkat ettiğim nokta, doğru voltaj seviyesi ve veri iletişim protokolünün (genellikle tek kablo üzerinden dijital veri aktarımı) doğru kurulmuş olmasıdır.

Eğer yanlış bir bağlantı olursa, yazılım ne kadar mükemmel olursa olsun sensörden hiçbir şey alamazsınız. Bu da bizi doğrudan yazılıma getiriyor.

Yazılımın Rolü: Sensörden Veriye

Raspberry Pi’nin işletim sistemi (Raspbian/Raspberry Pi OS) temel olarak çalışmaya hazır olsa da, sensör verisini okuma görevi işletim sisteminden bağımsız, düşük seviyeli bir sürücü katmanını gerektiriyor.

Python benim bu tür projeler için favorim. Neden mi? Çünkü kütüphane desteği inanılmaz geniş. Birçok sensör için hazır sürücüler bulabiliyor veya en kötü ihtimalle, sensörün datasheet'ine bakarak okuma komutunu kendimiz entegre edebiliyoruz.

Bizim kurulumumuzda, Pi’yi sadece bir okuyucu olarak konumlandırdık. Python kodu bu görevi üstlendi:

  1. Kütüphaneyi İçe Aktar (Import): Sensör iletişimi için gerekli fonksiyonları çağır.
  2. İletişim Kurulumu: Sensöre doğru komutu göndererek "Bana verini gönder" komutunu ver.
  3. Okuma Döngüsü: Sensörden gelen ham veriyi parse et (bu kısım sensöre göre değişir; CRC kontrolü, okuma zamanlayıcısı vb. olabilir).
  4. Depolama: Elde edilen temiz ve anlamlı sıcaklık (°C) ve nem (%) değerlerini bir CSV dosyasına veya bir veritabanına kaydet.

Bu basit döngü, bir süre sonra görselleştirmeye hazır, sürekli güncellenen bir zaman serisine dönüşüyor.

Bu tür projeler bana her zaman şu gerçeği hatırlatıyor: Donanım, yazılımın içinde yaşadığı fiziksel bedendir. Bir hatanız varsa, ya donanımda ya da onu okuyan mantıksal akışta vardır. Sabır bazen bir saatlik ince ayar, bazen de doğru protokolü bulup o ilk 'ping' cevabını almaktır.

Siz bu süreçte hangi zorluklarla karşılaştınız? Yoksa siz de bir devre kartının başında saatlerce "Acaba doğru bağlanmış mı?" diye mi geçiriyorsunuz? Yorumlarda buluşalım.