İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa] İsmail Kırbaş ile Tasarım Yolculuğu [AnaSayfa]
 Site Haritası 
 
Site Map
Ana SayfaYeriniz | Ana Sayfa | Makaleler | Programcılık | PHP | Php ile COM Port Kontrolü

Diğer Yazılar
Yapı Taşları
PHP de Dosya İşlemleri
PHP de Metin Düzenleme İşlemleri
Operatörler
Fonksiyonlar
Veri Aktarımı
Sekmeli Menü 1
Sekmeli Menü 2
Hızlı RSS Hazırlama
Web Formları İçin Güvenlik Kodu Oluşturma
PHP ye Giriş
PHP ye Giriş 2
Kaya Sağlamlığında Kodlama


E-posta Gönderin Yorum Yazın
Güvenlik Kodu:6141Güvenlik Kodu:6141Güvenlik Kodu:6141Güvenlik Kodu:6141




En Son Okunan 10 Makale
  1. Taze Balık
  2. Stresin Üstesinden Gelmek
  3. WEB'de Marka Olmak İçin Gerekenler
  4. Renklerin Dili - Beyaz
  5. Sekmeli Menü 1
  6. İmaj Faktörü
  7. Sınav
  8. Teknolojik Hastalik: Reklam Korlugu
  9. Motivasyon İpucları
  10. Renklerin Dili - Pembe
 
Php ile COM Port Kontrolü>
Yazı Tipi KüçültYazı Tipi BüyütAna SayfaYazıcıdan ÇıkarPDF Belgesi Olarak GörüntüleFavorilerime EkleArkadaşıma Tavsiye EdeceğimRTF (Word Dokümanı) olarak görüntüle

 

Giriş - Uyarı - Notlar vs. vs.

Merhaba, bilgisayara fazlaca merakı olan bir çok kişinin isteği bilgisayar yardımı ile dış çevre birimlerini kontrol etmektir. Benimde her zaman istediğim şeylerden biri, evdeki daha doğrusu odamdaki belirli şeyleri bilgisayar yardımı ile yönetebilmektir.

Ney yazıkki bu konuda türkçe olarak az kaynak bulunması yada daha çok elektroniğe yakın bir anlatım olduğu için sıkıntılar yaşanır. Bu dökümanda sizlere; bu konuda başlangıç düzeyinde bilgiler verip ufak bir uygulama ile yardımcı olmaya çalışacam.

Fakat bu dökümanda bu işi web üzerinden yapmayı öğreneceksiniz. Üstelik ek bir programa ihtiyacınız olmayacak. Ben sistemi Windows2000 üzerinde, Apache web serverı ve Php modulu kurulu bir vaziyette denedim ve başarılı oldum.

Windows 2000 ( NT teknolojisi ) üzerinde port uygulamaları geliştirmek diğer işletim sistemlerine göre daha zor bir iştir. Zira NT teknolojisi üzerine kurulu sistemler donanım aygıtlarına direk erişiminizi kısıtlamaktadırlar. Ama yinede bu olmıyacağı anlamına gelmez. Eğer bu sistem Windows2000 üzerinde rahatlıkla çalıştıysa tüm windows ve *nix türü işletim sistemlerinde ( daha doğrusu apache ve php ikilisinin kurulu olduğu sistemlerde ) çalışacaktır.

Web üzerinde yaptığım kısa bir araştırmadan sonra, elde ettiğim bilgiler doğrultusunda bu işi C-C++ kodları ile LPT Portu ( Kabaca : printer ve benzeri aygıt kablosunun girdiği soket ) üzerinden rahatlıkla yapabildiğimi gördüm. Ancak web uygulamalarında bu işin çok daha zor olduğunu anladım. Öyleki LPT Portunu kullanarak yaptığım php scriptlerinde işletim sisteminin apache web serverına yanıt vermediğini gördüm.

Sonra aynı işlemi COM Portlarını ( Kabaca : modem, eski mouse vs. gibi aygıtların girdiği soket ) kullanarak yaptığımda bunun mümkün olduğunu gördüm. Bir işin yapılmasından öte neden yapılmadığı konusuyla ilgilendiğim için LPT ile COM portlar arasındaki farkları araştırdım. Anladığım kadarı ile LPT Portundan çıkan veri bitlerini ( Kabaca : elektronik sinyaller ) ayırmak için tek tek kablo kullanılmış. COM portlarda ise aynı kablo üzerinden farklı frekanslarda ( TTL olarak geçiyor, aslında bu bilgisayarın temeli ; saat frekansı ) bit iletildiğini anladım.

Sonuç olarak elimde benim bulabildiğim iki tane seçenek kalmıştı.

- 1. si LPT portu üzerinden : Ek bir program yardımı ile Php kodu sayesinde bu programa bir sinyal gönderebilirim, böylece sinyal gittiği anda led lamba yanacak, başka bir sinyal gönderdiğimde ise lamba kapanacaktır. ( Aslında bu en iyi yöntem. Ama dediğim gibi LPT portu belkide windows2000 olduğu için web server programına yanıt döndürmüyor ve php scripti kısır döngüye giriyor )

- 2.si COM portu üzerinden : Bunda sadece php kodları ile ( yani ek bir programa gerek kalmadan her sistemde çalışabilecek durumda ) COM portuna bilgi göndericem ve gönderdiğim bilgi süresince led yanık kalacak. Aktarım bittiğinde led sönecektir.

Aslında LPT portu daha çok işime geliyordu çünkü ledi devamlı yanık tutmak daha kolaydı. Bense hem COM portundaki kolaylıktan hemde COM portun LPT ye oranla daha fazla üstün özellikleri olduğundan COM portu seçtim.

Burada hemen bir sorun karşıma çıkmıştı, istediğim süre kadar bir ışığı nasıl yakacaktım, yada kahve makinasının zamanlanması gibi olayları nasıl halledecektim. Bunun üzerine hemen dışarı çıkıp yakında bulunan bir elektrikçiye gidip bu konuda biraz yardım istedim. Elektrikçi bana led lambanın büyüklüğünde bir röle verdi. Bu röle özelliği gereği her elektrik alışında farklı bir konuma geçiyor. Yani ben bir kez COM port ile ufak bir elektrik sinyali yolladığımda röle harakete geçip ledi yakıyor. İkinci kez COM porttan sinyal yolladığımda bu sefer röle elektriği kesip ledi söndürüyordu.

Şimdi kısa ve önemli bir açıklama yapıp kodlarımıza başlıyalım.

Bu dökümanda ben size sadece Php ile COM porta ufak bir elektrik sinyali göndermeyi ve bu sayede porta bağlı led lambayı yakmayı gösterecem. Öncelikle web kaynaklarından edindiğim bilgi ile sizlere; bilgisayar portlarının anakart ile tümleşim olarak imal edildiğini söylemek istiyorum. Yani herhangi bir elektrik kaçağında anakartınızın yanabileceği ihtimalini unutmayın. O yüzden bu dökümanı dikkatlice takip etmenizi öneriyorum.

Biz COM port aracılığı ile led e direk elektrik sinayli yolladığımızda doğal olarak bu led üzerinde ışık çıkartacak derecede bir gerilim oluşturacak sonra bu gerilim tekrar led in - kutubundan bilgisayara bağlı porta gönderilecektir. İşte bu noktada led üzerinde oluşabilecek bir sorun porta aşırı yük binmesine neden olabilecek ve bilgisayarımızın zarar görmesine neden olabilecektir. Biz bu sorundan %99 oranında kurtulmak için led in - kutubuna ( ledin kısa bacağı -, uzun bacağı + kutuptur ) bir direnç direncide porta bağlayacağız. ( Ben direnç olmadan denedim aslında hiç bir sorun olmadı ama yinede tedbiri elden bırakmamak gerekiyor :) )

Şimdi eğer aşağıdaki malzemeler elinizde varsa işe başlıyabiliriz.

- Led lamba ( Rengi farketmez :) Ama 1 yada 5 volt arası olması en ideali. )
- Direnç ( Klasik 470 ohm luklardan. )
- Bunları bir birine tutturabileceğiniz bir şey. ( Lehim makinası, band vs. Ben board kullanıyorum )
- Com port ile bu düzeneği birleştirmek için kablo. ( iki tane 1 er metrelik ince tel, harici modem kablosu vs. gibi şeyler olabilir. )
- Son olarakta gerekli yazılımlar ( PHP kodlarını çalıştırabileceğiniz, herhangi bir web server uygulaması. )

1 - Gerekli düzenek...

Elinizdeki kabloları bilgisayarınızın arkasındaki boş bir com portun 3. ve 9. pinlerine bağlayın.

Com portu üzerinde pin numaralarını görebilirsiniz, eğer göremiyorsanız aşağıdaki resimden faydalanabilirsiniz.

Öncelikle bilgisayarınıza bağlı COM port tan bize gerekli olan iki adet kabloyu size yakın ve görebileceğiniz bir yere taşımak. Aslında bu işin en zor yanı desem gülersiniz. Ama bilgisayarınız arkasında boşta duran bir com porta bu iki kabloyu tutturmak gerçekten zor. ( Kabaca : Bilgisayara bağlı COM portları genelde erkek bir soket oluyor. ) Ben harici modemimin kablosunu kullandım. Modem kablosunun bir ucunu com porta bağladım diğer ucundaki deliklerede elimdeki iki kablonun uçlarını soktum.

Eğer elinizde bu şekilde bir kablo yoksa size aşağıda bazı seçenekler sunayım.

- Biraz kalın bir kablonun dışındaki plastiği telin dışına doğru itebilir ve COM port üzerinde bulunan pini bu plastiğin içine girecek şekilde ayarlıyabilirsiniz. Aşağıdaki şekilde bir bağlantı sağlarsanız ; böylece tellerin istediğimiz pin dışındaki diğer pinlere değmesini engellemiş olursunuz.



- İkinci seçenek olarak herhangi bir elektronik mağazasından bilgisayarınız üzerindeki com porta uygun bir soket alıp kablo çekebilirsiniz. Böle bir düzeneği her türlü uygulamadada kullanabileceğinizden oldukça faydalı bir araçtır.

Ben bu noktadan sonra ; yani bilgisayarımdaki Com portun 3. ve 9. pinlerden iki kablo çektikten sonra board yardımı ile gerekli düzeneği bitirdim. Elinizde minumum araç olduğunu düşünerek aşağıda en basit şekilde bir grafik hazırladım.

Bir band yada lehim makinası ile yukardaki düzeneği sağladıysanız, artık işin %80 ini bitmiş demektir.

2 - Php kodlarının yazılması ve uygulamayı çalıştırma.

Aşağıdaki kodları comport.php adıyla kaydedin. Yalnız burada çok önemli bir ayar yapmanız gerekmektedir. Kabloları bağladığınız Com port. Normalde bir çok sistemde iki tane com port soketi vardır. Bilgisayarın arka tarafındaki düzenekten üstte yada en başta olan port Com1 bir sonraki ise Com2 dir. Ben genellikle işlemlerimde Com2 iyi kullanırım. Fakat siz yukarıdaki düzeneği hangi port a bağladıysanız aşağıdaki kodlarda ilk satırdaki "COM2" ayarını ona göre ayarlayın.

Eğer işletim sistemi olarak Linux kullanıyorsanız o kısıma , modeminizin tam yolunu belirtin. ( Zaten linux kullananlar bu işin üstesinden gelirler :) - /dev/ttyS0 vs.vs. :) )

<?
$fp = fopen ("COM2:", "w+");
if (!$fp) {
echo "Port açılamıyor. Portun kurulu olduğundan yada kullanılmadığından emin olun";
}
else {
$sinyal = "Sinyal Gönderildi...";
echo $sinyal;
fputs ($fp, $sinyal);
fclose ($fp);
}
?>

Düzeneği doğru yaptıysanız ve kodları kaydedip çalıştırdıysanız. Dosyayı her çalıştırdığınızda yada sayfayı yenilediğinizde led lambanın kısa bir süre yanıp söndüğünü gördüyseniz ; tebrikler!!!

Şimdi kodları tek tek inceleyelim sonrada bazı önemli notları belirttikten sonra dökümanı bitirelim.

$fp = fopen ("COM2:", "w+");
if (!$fp) {
echo "Port açılamıyor. Portun kurulu olduğundan yada kullanılmadığından emin olun";
}

Kodun bu bölümünde ilk satırda ( $fp = fopen ("COM2:", "w+"); ) Php nin dosya açma,yazma ve okuma gibi işlemlerini yapmanıza yarıyan fopen() fonksiyonu ile COM2 ( Siz burada bağlantı yaptığınız com portun ayarına göre değiştirin. ) portuna w+ parametresi ile ek bir bilgi göndereceğimizi belirttik.

Daha sonraki satırda ( if (!$fp) { ) dosyanın ( yani burada dosya COM2 portu oluyor. ) açılıp açılamadığını kontrol ettik. Eğer COM2 portu bu sırada başka bir aygıt tarafından kullanılıyor yada kurulmamış ise echo komutu ile bu hatayı ekrana ( echo "Port açılamıyor. Portun kurulu olduğundan yada kullanılmadığından emin olun"; ) bastırdık.

else { Eğer sistem COM2 portunu açabilirse,

$sinyal = "Sinyal Gönderildi..."; Sinyal adında ve değeri " Sinyal Gönderildi... " olan bir değişken yarattık.

Not : sinyal değişkenin değeri ( Sinyal Gönderildi... ) ne kadar uzun olursa led in ışık yayma süreside okadar uzun olacaktır.

echo $sinyal; Ardından bu değişkeni ekrana yazdırdık. ( Aslında bu gereksiz ama boş bir ekran biraz kötü duruyordu :) )

fputs ($fp, $sinyal);
Sonra php de dosyalara bilgi göndermeye yarayan fputs() fonksiyonu ile portumuza ufak bir elektrik sinyali gönderdik :)

fclose ($fp); : son olarakta dosyamızı ( yani COM2 portumuzu ) kapatıp php kodunu bitirdik.

3 - Notlar, Öneriler , Fikirler vs.

Aşağıda bu konu hakkında size verebileceğim diğer önemli bilgileri sıraladım lütfen dikkatlice okumaya çalışın.

Notlar

- Com porta olan düzenekte çok dikkatli olun. İki kablonun sadece 3. ve 9. pinlerle birbirine temas ettiğine, diğer pinlere değimediğine ve basit sarsıntılarda kopmayacağından emin olun.
- Sinyal değişkenin değerini uzattıkça ledin yanma süreside okadar artacaktır.
- Sonradan oluşabilecek bir sorun yüzünden; anakartınızın güvenliği için lütfen direnç kullanmadan devreyi çalıştırmayın.
- Com, LPT gibi portlar güç kaynaklarını anakart üzerinden sağladıkları için ortalama olarak 5V luk bir enerji verebilirler. Bu yüzden röle olmadan yüksek voltaj isteyen şeyler kullanmayın.
- Sabırlı olun ve dökümanı dikkatlice takip edin Her adımda yaptıklarınızı iki kez kontrol edin.
- Eğer portla ilgili bir sorun yaşarsanız, port ayarlarından kesme istekleri, dur bitleri gibi ayarlarda değişiklikler yapın.

Öneriler

- Odanızdaki çeşitli araçları kontrol edebilmek için, elektronik bilgisi olan biri ile görüşün. Düşük voltajla çalışan bir röleyi kontrol ederek, 220 voltla çalışan aletleri nasıl kumanda edebileceğiniz konusunda fikir edinin.
- İnternet üzerinde yada bilgisayar ile ilgili kitapları araştırarak Com port üzerinden gönderilen sinyalleri işlemeyi ve bunun yardımı ile nasıl elektronik düzenekler hazırlayabileceğinizi araştırın.

Fikirler

- Sağlam ve geniş bir bilgi ile Com port üzerinden gelen sinyallere göre etki yapan bir devre yapabilirseniz, evinizdeki bir çok şeyi internet üzerinden gerçekleştirebilirsiniz.

Örneğin kahve makinanızı belirli periyotlarda çalıştırarak, elektronik ayarlı şohbeninizi iş yerinden ayrılırken eve vardığınız anda sicak su yapabilecek şekilde ayarlıyabilirsiniz.

Yada oturduğunuz yerden odanızın ışığını açıp kapatabilir, hatta ev içerisinde çeşitli sensorler yardımı ile bir alarm sistemi kurup bilgisayar yardımı ile bunu denetleyebilirsiniz.

Sonuç olarak yapabilecekleriniz hayal gücünüz ile sınırlı. Benim tavsiyem web üzerinden motor kontrolleri gibi şeyler üzerinde yoğunlaşmanız böylece ilerde işsiz kalma gibi bir sorununuz olmaz. Hemen hemen her türlü sanayi faaliyetlerinde rahatlıkla çalışabilirsiniz. Özellikle otomasyon sistemleri üzerinde çalışın.



Not: Yazılar konusundaki yorumlarınız için lütfen Yorum Yazın bölümümüzü kullanın.

Yazar : fatihhood
Son Güncelleme : 20 Eylül 2006, Çarşamba
Sayfa Sürümü : 4
Okunma Adedi : 7,771
Son Okunma : 2017-05-28 08:52:56
Kaynaklar : http://www.zeb.biz/get.php?id=15

PHP ye Giriş 2Php ile COM Port KontrolüKaya Sağlamlığında Kodlama
© [Site Haritası]
| Makaleler | Seyir Defteri | Kaynaklar | İndirin | İletişim |

RSS dosyasını görmek için tıklayınız. RSS dosyasını görmek için tıklayınız.XML versiyonu için tıklayınız WAP versiyonu için tıklayınız Bu site DyNA İçerik Yönetim Sistemi üzerinde çalışmaktadır.
İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa İsmail KIRBAŞ ile Tasarım Yolculuğu Anasayfa
ismail kırbaş ile web sitesi tasarimi sitemap ismail kırbaş ile web sitesi tasarimi sitemap
  Sitemizde 8 kişi çevirimiçi | Bugün =127 | Dün =230 | Bu Ay=6,458 | Günlük En Fazla=1,109 tekil ziyaretçi