GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ GÖMÜLÜ BİLGİSAYAR SİSTEMLERİ 13.HAFTA Yrd. Doç. Dr. Fecir DURAN Arş. Gör. Esra SÖĞÜT
İÇİNDEKİLER SD KART DHT11 SICAKLIK NEM ALGILAYICISI FONKSİYONLAR UYGULAMA
SD Kart SPI protokolü ile SD kartlara okuma ve yazma yapabileceğiniz bir modüldür. Modül üzerinde 3.3 V voltaj regülatörü olduğu için 5 V besleme bağlanabilmektedir. İletişim için ise SPI interface kullanılıyor. Dikkat edilmesi gereken nokta başka SPI protokolü ile çalışan modüller kullandığımızda CS pini’ni ortak seçmemeliyiz. Hafıza kartının formatı için; 2 GB a kadar fat16, 2 GB dan büyük kapasiteler için ise fat32 formatı kullanılmalıdır. Diğer formatlarda arduino SD kütüphanesi ile okuma yazma yapamazsınız. Ayrıca dosya adı en fazla 8, dosya uzantısı 3 karakter olmalıdır. Dosya isimini anlaşılır ve kısa tutmaya çalışın. Örnek: “IsiLog.txt” gibi.
SD Kart
SD Kart Pin SD Kart Pin Arduino UNO Pin CS 1 D4 MOSI 2 D11 SCK 5 D13 MISO 7 D12
DHT11 Sıcaklık Nem Algılayıcısı 0 – 50 ℃ arasında ölçüm yapabilmektedir. Sıcaklık ölçüm doğruluğu +-2 ℃ dir. %20 - % 90 RH arası nem ölçümü gerçekleştirebilmektedir. Nem ölçüm doğruluğu ise +- %5 RH dır .
DHT11 Sıcaklık Nem Algılayıcısı DHT11 içerisinde dijital sinyal çıkışı ve sıcaklık - nem sensörü birimlerini bulundurmaktadır. Özel bir dijital sinyal elde etme tekniğine sahiptir. Bu sensör içerisinde direnç tipi nem ölçüm bileşeni ve NTC Sıcaklık ölçüm bileşeni barındırmaktadır. Sensör laboratuar ortamında hassas bir biçimde kalibre edilmiştir. Tek kablo üzerinden seri iletişim sistemi ile sensörün kullanımı ve entegrasyonu kolaylaşmaktadır, 20 metreye kadar sinyal aktarımı sağlanabilmektedir.
Fonksiyonlar #include <SPI.h> #include <SD.h> #include <dht11.h> // dht11 kütüphanesini ekliyoruz. #define DHT11PIN 2 // DHT11PIN olarak Dijital 2'yi belirliyoruz pinMode(SS, OUTPUT); //SS pini çıkış olmalıdır. Aksi halde sd kart çalışmaz SD.open("test.txt", FILE_WRITE); // Dosya açılınca veri yazmaya başlanıyor. DHT11.read(DHT11PIN); // myFile.close(); // Dosya kapatılıyor SD.open("test.txt"); // Okuma için dosya açılıyor.
Uygulama DHT11 Sıcaklık Nem algılayıcısından alınan değerleri SD Karta yazdıran uygulamayı yapınız. Gerekli Donanımlar: SD Kart DHT11 Sıcaklık Nem Algılayıcısı Ardunio Board
SENSÖRÜ AKTİF HALE GETİR SD KART YAZMAYA HAZIR MI? EVET HAYIR GEREKLİ AYARLARI YAP BAŞLA SENSÖR AKTİF Mİ? SENSÖRÜ AKTİF HALE GETİR SD KART YAZMAYA HAZIR MI? SENSÖRDEN ELDE EDİLEN DEĞERLERİ YAZDIR SD KARTI YAZMAYA HAZIRLA BİTİR
Uygulama Şeması
KODLAR #include <SPI.h> #include <SD.h> #include <dht11.h> // dht11 kütüphanesini ekliyoruz. #define DHT11PIN 2 // DHT11PIN olarak Dijital 2'yi belirliyoruz dht11 DHT11; File myFile; const int chipSelect = 4;
KODLAR void setup() { // Seri iletişimin başlatılması ve port’un açılmasının beklenmesi Serial.begin(9600); Serial.print("SD Kart Hazirlaniyor..."); //SS pini çıkış olmalıdır. Aksi halde sd kart çalışmaz pinMode(SS, OUTPUT); if (!SD.begin(chipSelect)) { Serial.println("SD Kart Hatasi"); return; } Serial.println("Baslatma Tamamlandi."); }
KODLAR void loop() { //test.txt dosyası açılıyor. Bir dosya kapanmadan diğerini açmamaya özen gösterilmelidir. myFile = SD.open("test.txt", FILE_WRITE); // Dosya açılınca veri yazmaya başlanıyor. if (myFile) { Serial.print("Veri test.txt dosyasina yaziliyor..."); int chk = DHT11.read(DHT11PIN); myFile.print("Nem (%): "); myFile.println((float)DHT11.humidity, 2); myFile.print("Sicaklik (Celcius): "); myFile.println((float)DHT11.temperature, 2);
KODLAR // Dosya kapatılıyor myFile.close(); Serial.println("TAMAMLANDI."); } else { // if the file didn't open, print an error: Serial.println("Dosya acilamadi"); }
KODLAR /* OKUMA FONKSİYONUNU AÇMAK İSTERSENİZ // Okuma için dosya tekrar açılıyor. myFile = SD.open("test.txt"); if (myFile) { Serial.println("test.txt:"); while (myFile.available()) { Serial.write(myFile.read()); } // Dosya kapatılıyor myFile.close(); } else { Serial.println("test.txt Dosyasini Acilamadi"); } */ delay(1000);}