Bu proje, ortam sıcaklıklarını ve nemi anlık olarak takip etmek gerekirse UART terminal birimi ile bilgisayada bu verilerin saklanarak tutulmasını sağlamak amacıyla geliştirilmiştir. Sistemin kalbinde STM32G474 mikrodenetleyicisi yer almaktadır.
Geliştirme sürecinde DHT-11 Isı nem sensörü kulllanılmıştır. DHT11, basit, ultra düşük maliyetli dijital sıcaklık ve nem sensörüdür. Ortamdaki havayı ölçmek için bir kapasitif nem sensörü ve bir termistör kullanır ve veri pini üzerinde dijital bir sinyal çıkarır (gerekli herhangi bir analog giriş pimi gerekmez). Kullanımı oldukça basit, ancak verileri yakalamak için dikkatli bir zamanlama gerektirir. Bu sensörün tek gerçek dezavantajı, her 2 saniyede bir yeni veri alabilmenizdir, bu yüzden kütüphanemizi kullanırken, sensör okumaları 2 saniyeye kadar çıkabilir. Sensörlerden gelen analog veriler, mikrodenetleyicinin ADC birimi üzerinden okunarak anlamlı verilere dönüştürülmektedir.
Sistem, STM32G474 mikrodenetleyicisinin 170 MHz Boost modundaki işlem gücü kullanılarak kurgulanmıştır. Donanım seviyesindeki bağlantılar ve protokoller şu şekildedir:
• DHT11 Sensör Bağlantısı (PB0): Sensörle haberleşme Single-Bus protokolü üzerinden sağlanır. Yazılım içerisinde PB0 pini, sensörü tetiklemek için önce çıkış (Output), veriyi okumak için ise giriş (Input) modu arasında dinamik olarak anahtarlanmaktadır.
• ILI9341 TFT LCD (SPI2): Ekran verileri seri haberleşme üzerinden iletilir. Bağlantı uçları; PB13 (SCK/Saat), PB15 (MOSI/Veri), PB12 (CS/Seçme), PB14 (RESET) ve PB1 (DC/Komut-Veri Seçimi) olarak atanmıştır.
• USART Debug Hattı (115200 Baud): Veriler bilgisayar terminaline UART protokolü üzerinden 8-bit veri ve No-Parity formatında aktarılmaktadır.
• DWT Gecikme Birimi: DHT11 haberleşmesindeki mikrosaniye hassasiyetindeki zamanlamalar için işlemcinin DWT->CYCCNT (Cycle Count Register) birimi kullanılmıştır. 170 MHz hızında her bir döngü yaklaşık 5.88 nanosaniye hassasiyetle hesaplanmaktadır.
• Hareketli Ortalama Filtresi (Moving Average): Nem verilerindeki anlık gürültüleri engellemek amacıyla 20 birimlik (FILTER_SIZE 20) bir dizi üzerinden sürekli ortalama alan yazılımsal bir filtre uygulanmıştır.
• Checksum Doğrulama: Okunan her 40 bitlik veri paketi, 8 bitlik hata kontrol koduna (data[4]) tabi tutularak verinin doğruluğu teyit edilmeden ekrana yansıtılmamaktadır.
Projenin en kritik aşaması olan veri doğruluğunu sağlamak adına, sistem referans bir harici datalogger ile saha testlerine tabi tutulmuştur. Elde edilen karşılaştırmalı veriler ışığında şu offset ayarları uygulanmıştır:
• Nem Kalibrasyonu: Okunan değerlere yazılımsal olarak +14 birim düzeltme eklenmiştir.
• Sıcaklık Kalibrasyonu: Sensör karakteristik sapmalarını gidermek adına sıcaklık değerinden -2 derece çıkarılarak stabilizasyon sağlanmıştır.
Elde edilen veriler ILI9341 TFT LCD ekran üzerinde anlık olarak grafiksel ve sayısal formatta görüntülenmektedir. Ayrıca sistem, UART protokolü üzerinden bilgisayar terminaline veri aktarımı yaparak log tutma imkanı sunar.