Ana Sayfa Raspberry Pi Netbeans ile İşlemciden ve DS18B20 den Sıcaklık Okuma

Netbeans ile İşlemciden ve DS18B20 den Sıcaklık Okuma

7 min read
0
0
521

Merhaba Arkadaşlar;

Bu yazımda sizlere C ile İşlemciden ve DS18B20 den Sıcaklık Okuma nasıl yapılır onu anlatacağım. Uygulamamızı netbeans ile yapacağım için daha önceden yazdığım netbeans ile ilgili konu başlığına göz atabilirsiniz.

NetBeans IDE Kurulumu ve wiringPi ile Raspberry Pi de Program yazmak

Uygulamada kullanacağımız DS18B20 nin ROM koduna nasıl bakılır onunla ilgini konu başlığına göz atabilirsiniz.

Apache Web Server ve DS18B20 ile Temperature Monitor

Yukarıdaki konu başlıklarını inceledikten sonra gelelim uygulamamızı hazırlamaya. İlk önce netbeans ile yeni proje oluşturup Pi mizi seçiyoruz.

Daha sonra include ve değişkenleri hazırlıyoruz. Burada DStempfile daki 28 ile başlayan kodu siz değiştirip kendi DS nizin kodunu yazacaksınız. (yukarıdaki konu başlığından bakabilirsiniz)

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>
#include <unistd.h>
#include <string.h>
char CPUtempfile[] = {“/sys/class/thermal/thermal_zone0/temp”};
char DStempfile[] = {“/sys/devices/w1_bus_master1/28-041502394cff/w1_slave”};

uint16_t CPUTemp=0;
uint16_t DSTemp=0;
char *ptr1;
uint16_t GetCPUTemp();
uint16_t GetDSTemp();

 

Yukarıda gördüğünüz gibi GetCPUTemp ve GetDSTemp olarak 2 fonksiyondan bahsediliyor. 2 ayrı sıcaklık ölçümü için ayrı fonksiyonlar yazdım. Okuma işlemlerinde dikkat ettiyseniz direkt dosya okuyup içindeki değeri pars ediyoruz. Fonksiyonları aşağıda inceleyebilirsiniz.

uint16_t GetCPUTemp()
{
   FILE *fp;
   char filebuffer[100];
   if((fp=fopen(CPUtempfile,”r”)) == NULL)
   {
      printf(“Dosya açma hatası!\n(%s) Bulunamadı …\n”,CPUtempfile);
     exit(EXIT_FAILURE);
   }
   fread(filebuffer, sizeof(filebuffer), 1, fp);
   fclose(fp); 
   return atoi(filebuffer);
}

uint16_t GetDSTemp()
{
   FILE *fp;
   char filebuffer[100];

   if((fp=fopen(DStempfile,”r”)) == NULL)
   {
      printf(“Dosya açma hatası!\n(%s) Bulunamadı …\n”,DStempfile);
      exit(EXIT_FAILURE);
   }
   fread(filebuffer, sizeof(filebuffer), 1, fp);
   fclose(fp);
   ptr1 = strstr(filebuffer, “t=”);
   ptr1 = ptr1 + 2;
   return atoi(ptr1);
}

Şimdi gelelim main kısmına, burada ise kullanıcı konsoldan programı açtığında ölçümleri değişkene atıp oradan da printf ile ekrana yazdırıp programımızı kapattıracağız. DS18B20 için okuma sırasında çevirme süresi yaklaşık ~750ms olduğu için kullanıcıya bekleyin gibi bir mesaj çıkartılabilir.

int main(int argc, char** argv)

{
   printf(“CPU ve DS18B20 Sicaklik Gostergesi\r\n”);
   printf(“———————————-\r\n”);
   printf(“Okunuyor…\r\n”);

   CPUTemp = GetCPUTemp();
   DSTemp = GetDSTemp();

   printf(“Islemci Sicaklik -> %5.3f°C\r\n”,(float) CPUTemp / 1000);
   printf(“DS18B20 Sicaklik -> %5.3f°C\r\n”,(float) DSTemp / 1000);
   printf(“———————————-\r\n”);
   return (EXIT_SUCCESS);
}

Programı derleyip netbeans üzerinden çalıştıralım.

Netbeans üzerinden çalıştığını görmek için alt bölümde çıktı sekmesinde programın derlenip çalışma işlemlerini görebilirsiniz. Program bize çıktıları verip kapanacaktır.

Görüldüğü gibi program bize 2 sıcaklık değerini verip kapanmıştır. Bu işlemi uzaktan konsol ile yapmak istiyorsanız yani netbens ile değil putty ile bağlanıp manüel çalıştırmak istiyorsanız, programın gönderildiği klasörü bilmemiz gerekiyor. Bunun için derleme sırasında programın nereye gönderildiğini çıktı ekranında görebilirsiniz.

Raspberry Pi nin içinde nereye atıldığını resimde görebilirsiniz. “.netbens/”  ile başlayan klasöre atmaktadır. Derlenmiş dosyanın bulunduğu tam yol aşağıdaki gibidir.

/home/pi/.netbeans/remote/192.168.2.225/………/temp/dist/Debug/GNU-Linux

Putty ile pi bağlantısını açıp bu klasöre giriyoruz

Şimdi proje dosyamıza verdiğimiz isim ile konsoldan çalıştırabiliriz. ./temp

Bir sonraki uygulamada görüşmek üzere,
Kolay Gelsin…

 

Buna Benzer Yazılar Göster !
Daha Fazlasını Yükle - Umut Kazanç
Daha Fazla Göster -  Raspberry Pi

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bak Bakalım ?

NodeMCU : DS18B20 ile Sıcaklık Web Server

Merhaba Arkadaşlar, Bu uygulamada sizlere ESP8266 da LUA ile DS18b20 yi okuyacağım.. Bunun…