Sıcaklık/Nem Kontrol ve Uyarı Sistemi – 2

Kategori: Arduino, C#, Güvenlik, Referanslar
Tarih: 13th Mart 2015

Bu yazıda artık ortamın sıcaklık ve nem değerlerini ölçüp bilgisayarımıza aktaracak olan devreyi tasarlamaya geçebiliriz. Burada devreyi bağımsız iki parça halinde ele alabiliriz. Birinci parça sıcaklık sensöründen verinin okunması. İkinci parça okunan değerin 7 segmentli göstergede gösterilmesi.

Önce sıcaklık sensörü kısmını halledelim. Biz burada DHT11 sıcaklık ve nem sensörünü kullanacağız. İsteyen buradan sensörü detaylı inceleyebilir. Sensörü devremize aşağıdaki gibi bağlıyoruz.

dht11_arduio_baglanti_semasi

 

Şimdi ikinci kısma geçelim. Bu kısım biraz daha karışık. Önce 7 segmentli göstergeden başlayalım. Aşağıda elemanın yapısı eklenmiştir.

 

ortak-katot-display-baglanti-semasi

 

İncelenince görülecektir ki 7 segmentli gösterge için 1 gönderiyim 1 yazsın 3 gönderiyim 3 yazsın gibi bir yapı yok. Birbirinden bağımsız 7 tane led var. Mesela 1 yazmak için GND bağlantılarını yaptıktan sonra, 6. ve 4. bacaktan 5V vermelisiniz. Her sayı için bu ayrı ayrı hesaplanıp yazılım tarafında bir fonksiyon ile çözülebilir. Ama bu şekilde Arduino tarafında 7 pin meşgul edecektir. İki tane digit bağlarsak 14 pin. Bu çok saçma bir kullanım olur. Ne yapalım. İlk akla gelen bir lojik devre tasarlayıp binary gelen sayıyı 7 segmentli göstergede yazdırmak. Bu şekilde 4 pin kullanarak tüm rakamları yazdırırız. (Örneğin pinlerden 0011 verildiğinde göstergede 3 yazdırmak) Bunun için bir devre tasarlamamıza gerek yok zaten bu işi yapan bir entegre var. 4511 entegresi. Bu entegre 4 pin ile binary gelen değeri 7 segmentli göstergede yazdırmak için tasarlanmış. Buradan datasheeti inceleyebilirsiniz. Bacak bağlantıları ve açıklama tablosu aşağıda.

 

4511

pin isim

bağlantıları

1 B girişi B girişi
2 girişi C C girişi
3 lamba test girişi Lojik-1
4 ripple girişi Lojik-1
5 aktif etme girişi Lojik-0
6 girişi D D girişi
7 A girişi A girişi
8 VSS 0 V güç kaynağı 0 V
9 segment e 7-segment ortak katot ekran, e
10 segment d 7-segment ortak katot ekran, d
11 segment c 7-segment ortak katot ekran, c
12 segment b 7-segment ortak katot ekran, b
13 segment a 7-segment ortak katot ekran, a
14 segmenti g 7-segment ortak katot ekran, g
15 segment f 7-segment ortak katot ekran, f
16 VDD + V güç kaynağı +9 V (aralık 5-15 V)

 

Aşağıdaki örnek bir bağlantı görülebilir.

 

4511-proteus

 

Bu şekilde sadece 4 pini kullanarak tüm rakamları gösterebiliyoruz. Hala bir sorun var. Sıcaklık değeri göstereceğimiz için iki rakama ihtiyacımız var. İki göstergeyi iki ayrı entegre ile tasarlayıp toplam 8 pin kullanarak bunu yapabiliriz. Ama bu çok hızlı olan donanımımızı çok hantalca kullanmak olur. Bunun yerine bilgisayarların mükemmel hızlı olmasını kullanarak maliyeti düşürebiliriz. Tek entegrenin çıkışılarını iki göstergeye birden versek. Sonra bu göstergelerden ilkini bir kaç mili saniye, ardından diğerini bir kaç milisaniye yakıp söndürsek. Ve yanma anlarında da entegreye ilgili rakamları göndersek aynı entegreyi kullanarak iki ayrı rakamı gösterebilmiş oluruz. Göstergeleri yakıp söndürme işlemleri içinde GND bacağını kullanırız. Bir katot göstergede GND bacağından 5V verir isek gösterge söner, toprak verirsek gönderdiğimiz rakam yanar.

 

Herşey tamam artık devreyi tasarlayıp uygulamamızı yazabiliriz. Sıcaklık sensörünü bağlamıştık. Şimdi entegreyi ve digitleri bağlayalım.

 

 

Scanned-image-0

Scanned-image-1-0

 

Devreyi resimdeki gibi oluşturalım. Karmaşık görüntüyü engellemek için 4511 entegresinden diğitlere giden kablolar çizilmemiştir; harflendirilmiştir. Artık programımızı yazıp arduino’ya yükleyebiliriz. Program kodları aşağıdaki gibidir. Bu uygulama  bir yandan, sensörden okuduğu sıcaklık değerini digitlere yazdırır. Diğer yandan da bağlı bulunduğu bilgisayarın seri portunu dinler. Eğer seri porttan “a”, “b”, yada “c” verisi gelirse yine seri porttan sırsaıyla sıcaklık, nem ve çiğ oluşturma verisini yazar. Bu konu ile ilgili ayarlamaları serialEvent() fonksiyonundan görebilirsiniz.

Bu serinin bir sonraki yazısında bir wcf servis yazacağız. Bu servis gelen isteklere göre sıcaklık nem ve çiğ oluşma noktası verisini seri port aracılığıyla arduino devremizden okuyup istemciye iletecek. Bu şekilde oda sıcaklık vs bilgilerini hem digitler ile odada gösterip hemde masaüstü uygulama, android cihaz vs. gibi farklı platformlara servis edebiliyor olacağız.

 


#include <SimpleTimer.h>
#include <dht11.h> 

dht11 SicaklikSensoru;
SimpleTimer timer;

int pinOtele = 10;
int digitEntegreIzinPin = 9;
int digitBirIzinPin = 8;
int digitSifirIzinPin = 7;
int ZamanKesmesiSuresi = 20000;

float sicaklik = 0, nem = 0, cig = 0;

void digiteYaz(int rakam)
{
 if(rakam < 0 || rakam > 9) return;

 int deger, cikis;

 for(int i = 3; i >= 0; i--)
 {
 deger = pow(2, i) + (i > 1 ? 1 : 0); 

 digitalWrite(i + pinOtele, deger > rakam ? LOW : HIGH);

 rakam -= deger > rakam ? 0 : deger;
 }

 digitalWrite(digitEntegreIzinPin, HIGH);
}

void digitSec(int d)
{
 boolean kontrol;
 if(d == 0)
 kontrol = false;
 else if(d == 1)
 kontrol = true;

 digitalWrite(digitBirIzinPin, !kontrol);
 digitalWrite(digitSifirIzinPin, kontrol);
}

void digitlereYaz(int sayi)
{
 if(sayi < 0 || sayi > 99)
 return;

 int bekleme = 5;

 digitSec(0);
 digiteYaz((sayi > 9 ? sayi % 10 : sayi));
 delay(bekleme);
 digitalWrite(digitEntegreIzinPin, LOW);
 delay(bekleme);

 digitSec(1);
 digiteYaz((sayi > 9 ? sayi/ 10 : 0));
 delay(bekleme);
 digitalWrite(digitEntegreIzinPin, LOW);
 delay(bekleme);
}

void timerInterrupt()
{
 SicaklikSensoru.read(2);

 sicaklik = (float)SicaklikSensoru.temperature;
 nem = (float)SicaklikSensoru.humidity;
 cig = (float)SicaklikSensoru.dewPoint();
}

void serialEvent()
{
 char istek = (char)Serial.read();

 if(SicaklikSensoru.read(2) != 0)
 {
 Serial.print("Hata: 1|Sensor Okunamadı");
 return;
 }

 switch(istek)
 {
 case 'a':
 sicaklik = (float)SicaklikSensoru.temperature;
 Serial.println(sicaklik, 2);
 break; 

 case 'b':
 nem = (float)SicaklikSensoru.humidity;
 Serial.println(nem, 2);
 break; 

 case 'c':
 cig = (float)SicaklikSensoru.dewPoint();
 Serial.println(cig, 2);
 break; 

 default:
 Serial.println("Hata: 2|Gecersiz Istek");
 }
}

void setup()
{
 Serial.begin(9600);

 //Pinler Aktif
 for(int i = 0; i <= 3; i++)
 pinMode(i + pinOtele, OUTPUT);

 //Digitler Aç/Kapat
 pinMode(digitEntegreIzinPin, OUTPUT);
 pinMode(digitBirIzinPin, OUTPUT);
 pinMode(digitSifirIzinPin, OUTPUT);

 timerInterrupt();
 timer.setInterval(ZamanKesmesiSuresi, timerInterrupt);
}

void loop()
{
 digitlereYaz((int)sicaklik); 

 timer.run();
}

Yorumlar: 0 »

HTTP Hatası 500.19 – Internal Server Error 0x80070032

Kategori: Windows
Tarih: 19th Aralık 2014

Win server 2008 R2 – IIS üzerinde bir WCF servis yayınlarken başlıktaki hatayı alıyordum. Aşağıda önce hatanın resmini sonra çözümü göstereceğim.

server.hata

 

Bu tamamen IIS’in ayarları ile alakalı bir problemdir. Kesinlikle kodlarınızda oynama yapmayınız. IIS yeni site ekleme sihirbazı Uygulama Havuzunu otomatik olarak DefaultAppPool seçer. Sirenizin ismine sağ tıklatın. Ardından “Web Sitesini Yönet” ve “Gelişmiş Ayarlar” diyin. Gelişmiş ayarlar penceresi açılacaktır. Uygulama havuzu başlığını bulun ve değiştirmek için satırın en sağındaki “…” butonunu tıklatın. Açılan pencereden “ASP.NET v4.0 Classic” seçeneğini seçin. Servisinizi yeniden başlattığınızda sorun çözülecektir.

Sıcaklık/Nem Kontrol ve Uyarı Sistemi – 1

Kategori: Arduino, C#, Güvenlik, Referanslar
Tarih: 15th Aralık 2014

Yazmaya uzun bi süre ara verdikten sonra ancak bugün birşeyler yazmaya fırsat bulabildim. Bu yazıda bir sıcaklık/nem kontrol devresi ve sıcaklığın farklı platformlara sunulabilmesi hakkında planlamalar yapcağız. İhtiyacımız sıcaklığı farklı sebeplerden dolayı sık sık yükselen server odasını kontrol altında tutmak. Öngörülemeyen bi sıcaklık artışı olduğunda da ilgili personele bilgi verilmesi.

 

Sıcaklık kontrol devresi için ilk başlarda 16F877A mikrodenetleyici ve uyumlu bir sıcaklık sensörü kullanmayı planlamıştım. Ama biraz araştırma yaptıktan sonra Arduino diye birşey gördüm. Bu mikrodenetleyici dünyası için bir framework diye düşünülebilir. Açık kaynak, İtalyan menşeli bir proje. Açık kaynak olduğundan dolayı piyasada çok farklı kombinasyonlarda hatta çin üretimi ürünler bile mevcut. Peki tam nedir bu Arduino. Bu, üzerinde bir mikrodenetleyicisi olan, özel tasarım bir kart. Bu kart sayesinde bir çok özel yazılmış fonksiyonu bu microdenetleyici üzerinde çalıştırabiliyor, kart üzerindeki portları kullanarak da microdenetleyici ile çok rahat bir şekilde iletişim kurabiliyor hatta bir bilgisayar ile seri port iletişimine geçebiliyorsunuz. Buda sizi hem devre kurma çabasından kurtarırken hem de projelerini daha hızlı kodlayabilme imkanı sunuyor. Dezavantajı yok mu? Var tabiki. Mikrodenetleyici üzerinde halihazırda çalışan bir framework olduğundan dolayı bu donanımı 100% verimle kullanamıyorsunuz. Biraz daha yavaş kalıyor. Bu durum C/C++ ve C# dillerinin kıyaslanması gibi düşünülebilir. Daha yavaş olduğu için -bazı özel projeler hariç- C# dan vazgeçmezsiniz herhalde.

 

Arduino’ ya uyumlu bir sensör ile (DHT11) sıcaklığı ve nemi okuyup, 7 segmentli digitler kullanarak yazdırmayı planlıyorum. Ayrıca okunan değerleri seri port üzreinden server odasındaki bir bilgisayarada ileteceğim. İş buradan sonra sizin planınıza kalmış. Ben bütün platformlardan bu bilgiye erişmek istediğim için; bu sunucu üzerinden bilgileri servis edeceğim. Devam eden yazılarımda tarasımları ve kodları paylaşarak bunu bir seri yazı halinde yazmayı planlıyorum. Yapılacak işin kaba taslak bir çizimi aşağıdadır. Herkese iyi günler.

 

Scanned-image-0

Yorumlar: 1 »

Sanal Ubuntu Disk Dolma Sorunu

Kategori: Linux, Ubuntu
Tarih: 5th Aralık 2013

Ubuntunuzdan “the system running in low graphics mode” uyarısı alıyorsanız bu, çoğunlukla grafik kartınız ve driverı ile ilgili bir sorun olmakla beraber düşük bir ihtimalle de diskinizde yer kalmasıyla alakalı bir sorunda olabilir. İşletim sistemi açılışta grafik driverını yükleyemediği için grafik driverını atlayarak bilgisayarı açmak istiyor. Bunun çözümü işletim sisteminin kurulu olduğu diskin boyutunu artırmak. “Partition Magic” gibi yazılımlar bu işi çözselerde çok stabil değil bazen sıkıntı çıkabiliyor. Virtual Box’da sanal hdd nin boyutunu artırmaya izin vermiyor. Artıramıyorsak yeni ve daha büyük bir disk oluşturup küçük diski buna klonlayabiliriz. Bunun için “hdclone” isminde küçük bir program var. Önce bununla klonlamayı denedim falan programın free sürümü farklı boyutlardaki diskleri birbirine klonlaamaya izin vermiyor. Küçük bi araştırmayla bu işi yapabilecek ücretsiz bir yazılım buldum ismi “clonezilla” çok başarılı bir program. http://clonezilla.org/ adresinden .iso indirilebilir.

Önce Sanal Makinemize yeni ve daha büyük bir disk ekliyoruz. Ardından da  clonezilla.iso dosyasını sanal makinemize yerleştirip başlatıyoruz. Sanal makinenin önceki ve sonraki hali aşağıda.

clone1

clone

Youtube de clonezilla ile disk kopyalama üzerine faydalı bir video buldum. Silinme ihtimaline karşı videyu buraya yüklüyorum. Videodaki adımları uygulayarak diskinizi genişletebilirsiniz.

videoyu indir

Windows 7 Şifre Unutma Alternatif Çözüm

Kategori: Güvenlik
Tarih: 5th Aralık 2013

Windows 7 işletim sistemi için şifre unutmakla ilgili değişik çözümler, sıfırlama diskleri vs internette bolca mevcut. Geçmişte bi blokta bu konuyla ilgili alternatif bi yazı okumuştum. Bi arkadaşımın şifresini unutmasıyla denediğim çözümü paylaşmak istiyorum. Şifreyi unuttuktan sonra eski şifrenin ne olduğunu bulmak neredeyse imkansız ama komut satırına bir satır kod yazarak eski şifreyi hatırlamadan yeni bir şifre oluşturulabilir.

net user "kullanci_adi" yeni_sifre

Sorun şifreyi unuttuktan sonra komut satırına ulaşamıyor olmak. Bunun içinde şöyle bir çözüm sunulmuş. Windowsun parola isteme ekranında sol alt köşedeki butona tıklattığımızda erişim kolaylığı penceresi açılıyor. Bu pencere aracılığıylada büyütci çalıştırabiliyorsunuz. Büyüteç /Windows/System32 dizini altındaki “magnify.exe” ismindeki bir program. Biz komut satırını başlatan “cmd.exe” programının adını “magnify.exe” diye değiştirebilirsek işletim sistemi büyüteci açtığını zannederek bize komut satırını çalıştıracaktır. Bizde oradan şifremizi değiştirebiliriz.

“cmd.exe” nin adının değiştirebilmek için herhangi bir live işletim sistemi kullanılabilir. Yada alternatif olarak Windows 7 yükleme cd’si ile bilgisayarı başlatıp “Bilgisayarınızı Onarın” seçeneğini tıklatarak açılan pencereden “Driver yükle” butonuna basarsanız bu pencereden de dosya sistemini görebilir ve isim değiştirme işlemlerini yapabilirsiniz.

Not: Her ihtimale karşı  “magnify.exe” dosyasını yedekelyiniz ve “cmd.exe” dosyasının bir kopyasını oluşturup bunun ismini değiştiriniz.

KPSS ve Yönetim hakkında

Kategori: Genel
Tarih: 18th Kasım 2013

İstanbul özel idaresi “Afet Durumunda Kamuda Veri Güvenliği” araştırma projesini tamamladı. Kurumlara gönderilen bilgi kitapçığından kpss ile ilgili tespitlerin bulunduğu bölümü virgülüne bile dokunmadan paylaşıyorum.

 

İnsan Kaynakları Yönetimi ve Personelin Eğitimi:

Toplantıda en fazla öne çıkan başlıklardan bir tanesi, insan kaynakları yönetimi sorunudur. Mühendisler gibi bilişim alanında çalışması tercih edilen kaliteli insan kaynağı, kamuda ücretler daha düşük olduğundan ve etkin bir kariyer düzenlemesi olmadığından, özel sektörde çalışmayı tercih etmektedir ve bu da çoğunlukla KPSS(Kamu Personeli Seçme Sınavı) ile eleman alan kamu kurumlarında insan kaynağı kalitesinin belli bir düzeyde kalmasına ve kurumlarda yetkin olmayan insan kaynağı sorununun çözümsüz bir hale gelmesine neden olmaktadır.

İnsan kaynakları ile ilgili bir diğer sorun da kamu kurumlarında kaliteli bir yükselme sisteminin olmamasıdır. Kamuda aylık ücretlerin standart olması, ücretlerin değişken aralıklı ve performansa dayalı olmaması personelin motivasyonunun düşmesine sebebiyet vermektedir. Kamuda çalışan elemanların büyük kısmının özel sektör tecrübesi olmadan direk kamuda çalışmaya başlaması ve saha tecrübesine sahip olmaması da mevcut sistemlerin işletilememesi sonucunu doğurmaktadır.

 

kaynaklar:

http://www.istanbulajansi.com/haber/295/Afet-Durumunda-Kamuda-Veri-Guvenligi.html#.UonfA8TeVGY

http://www.mukemmelist.org/dosya/108/veri-guvenlii-rapor_108_2841584.pdf

Zencefilli Kurabiye

Kategori: Genel
Tarih: 4th Ekim 2013

Oracle’ın müşteri ilişkilerini geliştirmek için başlattığı hizmet. İlk gördüğümde çok şaşırdım. Adamlar ta Prag’dan kurabiye göndermişler 😮

Openlayers 3D – Alpha 1

Kategori: CBS - GIS
Tarih: 30th Temmuz 2013

Ücretsiz ve mobil cihazlardada çalışabilen açık kaynak kodlu javascript harita kütüphanesi OpenLayers, yeni verisiyonu Openlayers3’ü zaten duyurmuştu. Şuan Alpha1 versiyonunu yayınlamış durumda. Buradan tanıtıma bakbilirsiniz. Alpha olduğu için doğal olarak çok stabil değil. Tamamlandığında piyasadaki bi sürü çok pahalı yazılıma alternatif olacak gibi duruyor. Openlayers2 zaten Linux, PostgreSQL, GeoServer ve Php dörtlüsü ile birlikte kurumları onbinlerce liralık lisans maliyetinden kurtarmaya yetiyordu. Google’ın 3d sunucusunun 80,000 € lisans ücreti olduğunu düşünürsek OpenLayers3 piyasayı sallar herhalde…

Kübis ar-ge çalışması tamamlandı

Kategori: Referanslar
Tarih: 23rd Temmuz 2013

İstekler:

  • Lisans ücreti olmasın
  • Linux işletim sistemi üzerinde çalışsabilsin
  • Harita sunucusu yazılımı dahil istediğimiz her noktaya müdahale edebileceğimiz yazılımlar olsun
  • Web üzerinde çalışsın
  • Bir MVC framework kullansın
  • Tema motoru, Çoklu dil desteği, Cache motoru olsun

– Yeni sisteme geçilirse mevcut lisanslar boşa alınmış olmayacak mı?

– Mevcut lisanslar ile (Oracle ve MapXtrame) Afet Acil Müdürlüğününde bir uygulaması bizim sunucumuz üzerinden çalışmaktadır. Mevcut lisansları onlar kullanmaya devam edecekler.

Çözüm:

İşletim Sistemi: Ubuntu 13.04 Server
Harita Sunucu Yazılımı: Geoserver
Veri Tabanı: PostgreSQL
Uygulama Platformu: Php
Kullanılacak Framework: Codeigniter
Tarayıcı taraflı uygulama kütüphanesi: OpenLayers, jQuery UI, jQuery Mobile, jQuery File Upload
Tema: usmanhalalit-charisma, Asif Aleem-anibor

Ücretsiz Emlak Scripti

Kategori: Php
Tarih: 23rd Temmuz 2013

Nette dolaşırken bulduğum ücretsiz ve gayet kapsamlı bi emlak scripti. Varsayılan arayüzüde güzel. Eğer istenirse yeni bir arayüz ile piyasada 3-4 bin liraya satılan sitelere taş çıkarır. Buradan indirebilirsiniz.

Yorumlar: 10 » tags: , , ,
Optimization WordPress Plugins & Solutions by W3 EDGE