Raspberry Pi Apache Web Server ve DS18B20 ile Temperature Monitor By Umut Kazanç Posted on 8 Mayıs 2017 7 min read 2 3 4,002 Paylaş ! Facebook Paylaş ! Twitter Paylaş ! Google+ Paylaş ! Reddit Paylaş ! Pinterest Paylaş ! Linkedin Paylaş ! Tumblr Merhaba Arkadaşlar , Bu yazımda sizlere DS18B20 digital sıcaklık sensörü kullanarak sıcaklığı web server üzerinden yayınlamayı anlatacağım. Bunun için ilk önce web server sunucumuzu kuralım. sudo apt-get install apache2 php5 libapache2-mod-php5 sudo service apache2 restart sudo chown -R pi /var/www ln -s /var/www/ ~/www Kurulum işlemi tamamlandığında son yaptığınız komutla birlikte pi klasörüne www kısayolu eklenecektir. İçerisinde demo web sayfası bulunmaktadır index.html. Ben bu sayfayı değiştirmeyeceğim başka bir html hazırlayacağım. Şimdi ise raspi-config den 1-wire donanımını açalım sudo raspi-config DS18B20 sıcaklık sensörümüzü aşağıdaki gibi GPIO4 e bağlantısını yapıp Raspberry e bağlayınız. Bağlantıyı yaptıktan sonra klasörden DS18B20 nin bağlı olup olmadığına bakalım ls /sys/devices/w1_bus_master1 çıkan listede 28-…. bir kod var ise DS nin rom kodudur ve bağlanmıştır. Manuel olarak okuma yaptıralım. cat /sys/devices/w1_bus_master1/28-xxxxxxxxx/w1_slave Web server ve DS18B20 hazır, gelelim PHP ile yapacağımız sayfaya. İlk önce PHP ile yukarıda açtığımız dosyayı okuyup içerisinden sıcaklık değerini pars edip 1000 e böldük mü istediğimiz ondalıklı değeri yazdıracağız. Sudo nano ile ds_temp.php dosyamızı hazırlayalım. sudo nano /home/pi/www/html/ds_temp.php içerisine aşağıdaki kodu yazalım. <?php $dosya_yol = ‘/sys/devices/w1_bus_master1/28-xxxxxxxxx/w1_slave’; $dosya = fopen($dosya_yol, ‘r’); $icerik = fread($dosya, filesize($dosya_yol)); $temp = explode(‘=’, $icerik); $temp = number_format($temp[2]/ 1000, 3, ‘,’, ”); echo $temp . ” °C”; fclose($dosya); ?> Tarayıcımızdan bu sayfayı açtığımızda sıcaklık değerini ekranda görmüş olacağız. Tabi bu hali çok basit ve sade oldu. Biz bunu bir html sayfası içinde çağırsak ve bu işlem sürekli olursa birazda görsellik katsak dahada güzel olacak. Bunun için ajax kullanacağız. html sayfasında bir ID tanımlayıp oraya php sayfasını her saniye yazdırdık mı istediğimiz özellik olacak. Aşağıda HTML kodunu veriyorum. Sudo nano ile temp.html olarak kaydedelim. <!DOCTYPE html PUBLIC “-//W3C//DTD XHTML 1.0 Transitional//EN” “http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”> <html xmlns=”http://www.w3.org/1999/xhtml”> <head> <meta content=”tr” http-equiv=”Content-Language” /> <meta content=”text/html; charset=utf-8″ http-equiv=”Content-Type” /> <title>RaspberryPi ve DS18B20 ile Termometre</title> <script src=”https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js”> </script> <script> $(document).ready(function(){ setInterval(function(){ $(“#screen”).load(‘ds_temp.php’) }, 1000); }); </script> <style type=”text/css”> .auto-style2 { background-image: url(‘http://roboturka.com/wp-content/uploads/bulut.png’); } .auto-style3 { text-align: center; font-family: Tahoma; font-size: x-large; color: #F1DFDF; } .auto-style4 { text-align: center; font-family: Tahoma; font-size: xx-large; color: #F1DFDF; } </style> </head> <body> <table class=”auto-style2″ style=”width: 388px; height: 324px”> <tr> <td class=”auto-style3″ style=”height: 31px” valign=”top”><strong> RaspberryPi ve<br /> DS18B20 ile Termometre</strong></td> </tr> <tr> <td class=”auto-style4″ style=”height: 31px” valign=”bottom”><strong> <div id = “screen”></strong></div></td> </tr> </table> </body> </html> Şimdi temp.html sayfasını açtığımızda her 1 saniyede bir sensör okunup ekran güncellenecektir. İsterseniz modeminizden port yönlendirmesi yapıp sıcaklık değerini dışarıdan da takip edebilirsiniz. Bir sonraki yazımda görüşmek üzere; Kolay gelsin.