Üye GİRİŞİ

Son eklenen makale ve haberler

  Programlama » PHP

PHP ile web üzerinden COM port kontrolü

Ceviz.Net Pdf Çıktısı Al
 
Ceviz.Net Doc Çıktısı Al
 

PHP ile web üzerinden COM port kontrolü. ( Led Uygulaması. )

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. Bir sonraki sayfadan devam edelim.


fatihhood 16.04.2003
Sayfalar: 1 2


co.mments  del.icio.us  digg  Furl  NewsVine  Reddit  Spurl  TailRank  Wists   



Rating : 10 üzerinden 8.37
 



Tümünü Göster / Sadece Başlıklar Yorumlar

Ertuğrul Yıldırım Evinizi webten yönetin :)
Belki günün birinde PHP ıle web arayuzune sahıp bır ev yonetımı uygulaması yazarım :) Ogun Fatih Hood'a duacı olucam.
 
Bu konuda internet uzerinde kullandiginiz yada bizim kullanabilecegimiz kaynaklar var ise onlari gonderebilir misiniz ?

Mail adresim : gumush@hitstar.org
 
Onur Arican Resimler
Resimler gözükmüyor, acaba düzeltilebilir mi ?
 
Samet Poyraz Resimler Ve Teşekkür
Gerçekten çok teşekkürler bu olayı hemen deneyeceğim düşünsenize cep telefonunuzdan wapa girip eve girmeden evdeki tüm ışıkları yakmak vay be :)
 
doğan Uyarı
Resimler açılmıyor.Yazı için çok teşekkürler.
 
bekir candan php port
ilk önce yaptığınız çalışmalardan dolayi size teşekkür edirim. Sizden bir ricam olacak; elinizde port kullanarak dijital bir karta bilgi aktaqrımı ile bir bilgi veya kaynak kodu varsa benimle paylaşırsanız çok memnun olurum Şimdiden ilginizden dolayı teşekkur edrim cevabınızı bekliyorum.
 
CÜNEYT kontrol
bende bu konuda çalışma yapmak istiyorum elinizde kaynak varsa paylaşabilirz. iyi çalışmlar
 
MURAT Bilgi Almak
MErhaba ben bilgisayar bölümü lise son öğrencisiyim yapmam gereken bi ödevim var doğrusunu söylemek gerekirse pekte bilgim yok bu konuda.benden LPT portu kullanarak bir evin ışık kontrolünü yapan (led otomatik belirlenen bi saatte yanıp geri otomatik olarak sönecek)bu programı visual basic de yapmam gerekiyor bana yardımcı olabilirmisiniz...?
 
barış 12345
acaba kontrolü klavye üzerinden kısayol tuşları olarak atayabilmek mümkün müdür?
 
Zafer BAHADIR port kontrolu
Merak edenler için;
VisualBasic 32bit ile kolayca pararlel port kontrolu yapılabiliyor.

out komutunun desteklewnmediği yerlerde c++ builder gibi c++ builder dosyasına yerleştirilen asm {} kodlarıyla bu mümkün.

Delphi kullananlar için doğrudan portlar kullanılabiliyor ama son sürümlerinde denemedim.


 
tuncay haakkında
merhaba arkadaşlar ben denedim fakat direk yanmaya başladı yanlış nerde anlamadım direk enerjiyi alıyor
 
f aydın sorular...
Merhaba arkadaşlar,
Yazı çok güzel ancak bikaç sorum var. seri porttan veri okumak mümkün mü? Bunu biraz araştırdım ama net bir bilgi bulamadım. Bazı class ların mevcut olması gerektiğini söyleyenler var ve Linux te bunun mümkün olduğunu ancak Windowsta olmadığını söyleyenler de var. Bu yöntemle windowsta veri okumak mümkün müdür? Bir de normalde C++ ve MATLAB ten bildiğim kadarıyla seri port açıldıktan sonra ayarlarını yapmak gerekiyor, bit rate, parity gibi... PHP de bu gerekmiyor mu? gerekmiyorsa mevcut ayarları nedir. Sorularımı cevaplarsanız çok sevinirim. Şimdiden teşekkür ederim.
 




yorum Yorum ekle
İsminiz:
Mailiniz:
Yorum Konu:
Soru: Türkiye'nin başkenti?
Cevap :
Bütün alanları doldurmanız gerekmektedir.

 
XHTML 1.0 CSS 2.1
Ceviz Reklam