Raspberry Pi ile DHT11 Sensörünü Kullanarak Sıcaklık ve Nem ölçmek – 2

Daha önce burada DHT11’in C kodları ile nasıl okunacağını anlatmıştım. Şimdi de bu kodları biraz daha geliştirip, okunan sıcaklık ve nem değerlerini bir MySQL tablosuna kaydedeceğiz.

Tablomuzun yapısı şöyle:

Veritabanı tablosunu oluşturduktan sonra aşağıdaki paketlerin sistemde yüklü olduğu teyit edin. Yüklemek için apt-get komutunu kullanabilirsiniz:

  • mysql: MySQL client programs and shared library
  • mysqlclient: Backlevel MySQL shared libraries (old libs)
  • mysql-devel: Files for development of MySQL applications (a must have)
  • mysql-server: Mysql server itself
  • gcc, make and other development libs: GNU C compiler

algilayici.h  kütüphanesinden bahsetmek gerekirse; DHT11’i okuyan kodu dht11.h isimli ayrı bir dosyaya kaydettim. Böylece diğer sensörleri de gerektiğinde include ile ana programa dahil edebileceğiz. dht11.h kodunda, DHT11 sensörünü bağladığınız wiringPi numarasını doğru tanımlamaya dikkat edin, varsayılan olarak önceki yazımda da kullandığım 7 numaralı wiringPi pinini kullanmaya devam ettim.

dht11.h: DHT11 sıcaklık ve nem sensörünü okuyan C kodları

[/crayon]

algilayici.c ana programımızın yer aldığı dosyamız. Dosyanın tanım kısmında yer alan veritabanı adı ve ve kullanıcı bilgilerini kendinize göre düzenlemeyi unutmayın. Kodları incelerseniz her saniye okunan sıcaklık ve nem verisi sadece bir önceki okumadan farklı ise veritabanına kaydediliyor. Böylece veritabanının gereksiz yere veri ile dolmasının önüne geçmiş oluyoruz.

algilayici.c Ana programımızın C kaynak dosyası

[/crayon]

Kodu derleyip çalıştırmak için derle.sh adında bir betik oluşturdum. Betiğin içeriği şöyle:

[/crayon]

Betiği ./derle.sh komutu vererek çalıştırdığınızda aşağıdaki gibi bir ekran görüntüsü ile karşılaşacaksınız.

dht11_mysql_derleme

Kodu bir süre çalıştırdığınızda aşağıdaki gibi bir veri listesine sahip olacaksınız.

dht11_mysql

Kodu sürekli olarak arka planda çalıştırmak için ./algilayici & komutunu vererek arka plana atın (& ampersant işareti programı interaktif konsoldan ayırıp geri planda çalıştırır)

Burada anlattığım konuya ait tüm dosyaları indirmek için aşağıdaki indirme bağlantısını kullanabilirsiniz.

 Hata Ayıklama (Şubat 2015)

Algilayici’nin bu sürümü hatalara karşı pek dayanıklı değil. Daha da geliştirilmesi gerektiğini belirtmem gerekiyor. Özellikle programı arka planda çalıştırıyorsanız muhtemel program çökmelerinden ve nedenlerinden haberiniz olamayacaktır.

fprintf ile stderr çıktısına yazılan hata mesajlarını kayıt altına alabilirsiniz. Böylece konsola geri döndüğünüzde olası çökmenin nedeni hakkında elinizde bir veri olacaktır. Algılayıcı programı tarafından stderr çıktısına yönlendirilen mesajları almak için programı aşağıdaki şekilde çalıştırarak kullanabilirsiniz.

[/crayon]

sensor.txt dosyasında ekrana yazılan SQL satırları, sensor_err.txt dosyasında ise hata mesajları kayıt alına alınacaktır. Tahmin edebileceğiniz gibi 2> belirteci, stderr hata çıktısını belirtilen dosyaya yönlendirmektedir. Hem standart çıktıları hem de hata çıktılarını aynı dosyaya yönlendirmek isterseniz aşağıdaki komut satırı numarasını kullanabilirsiniz.

[/crayon]

Kaynaklar:

http://www.cyberciti.biz/tips/linux-unix-connect-mysql-c-api-program.html
http://www.cyberciti.biz/faq/linux-redirect-error-output-to-file/

Yazar: Özgür Koca

Yazar - Tankado.com

“Raspberry Pi ile DHT11 Sensörünü Kullanarak Sıcaklık ve Nem ölçmek – 2” için 2 yorum

tugay için bir yanıt yazın Yanıtı iptal et

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.