Aradığınız içerik sitemizde mevcut durumdadır buradan sitemize dönebilirsiniz !

Forum Başlıklarına gitmek için tıklayınız



PHP ile web üzerinden COM port kontrolü

Bilgisayara fazlaca meraki olan bir çok kisinin istegi, bilgisayar yardimi ile dis çevre birimlerini kontrol etmektir. Benimde her zaman istedigim seylerden biri, evdeki daha dogrusu odamdaki belirli seyleri bilgisayar yardimi ile yönetebilmektir.

Ney yazikki bu konuda türkçe olarak az kaynak bulunmasi yada daha çok elektronige yakin bir anlatim oldugu için sikintilar yasanir. Bu dökümanda sizlere; bu konuda baslangiç düzeyinde bilgiler verip ufak bir uygulama ile yardimci olmaya çalisacam.

Fakat bu dökümanda bu isi web üzerinden yapmayi ögreneceksiniz. Üstelik ek bir programa ihtiyaciniz olmayacak. Ben sistemi Windows2000 üzerinde, Apache web serveri ve Php modulu kurulu bir vaziyette denedim ve basarili oldum.

Windows 2000 ( NT teknolojisi ) üzerinde port uygulamalari gelistirmek diger isletim sistemlerine göre daha zor bir istir. Zira NT teknolojisi üzerine kurulu sistemler donanim aygitlarina direk erisiminizi kisitlamaktadirlar. Ama yinede bu olmiyacagi anlamina gelmez. Eger bu sistem Windows2000 üzerinde rahatlikla çalistiysa tüm windows ve *nix türü isletim sistemlerinde ( daha dogrusu apache ve php ikilisinin kurulu oldugu sistemlerde ) çalisacaktir.

Web üzerinde yaptigim kisa bir arastirmadan sonra, elde ettigim bilgiler dogrultusunda bu isi C-C++ kodlari ile LPT Portu ( Kabaca : printer ve benzeri aygit kablosunun girdigi soket ) üzerinden rahatlikla yapabildigimi gördüm. Ancak web uygulamalarinda bu isin çok daha zor oldugunu anladim. Öyleki LPT Portunu kullanarak yaptigim php scriptlerinde isletim sisteminin apache web serverina yanit vermedigini gördüm.

Sonra ayni islemi COM Portlarini ( Kabaca : modem, eski mouse vs. gibi aygitlarin girdigi soket ) kullanarak yaptigimda bunun mümkün oldugunu gördüm. Bir isin yapilmasindan öte neden yapilmadigi konusuyla ilgilendigim için LPT ile COM portlar arasindaki farklari arastirdim. Anladigim kadari ile LPT Portundan çikan veri bitlerini ( Kabaca : elektronik sinyaller ) ayirmak için tek tek kablo kullanilmis. COM portlarda ise ayni kablo üzerinden farkli frekanslarda ( TTL olarak geçiyor, aslinda bu bilgisayarin temeli ; saat frekansi ) bit iletildigini anladim.

Sonuç olarak elimde benim bulabildigim iki tane seçenek kalmisti.

- 1. si LPT portu üzerinden : Ek bir program yardimi ile Php kodu sayesinde bu programa bir sinyal gönderebilirim, böylece sinyal gittigi anda led lamba yanacak, baska bir sinyal gönderdigimde ise lamba kapanacaktir. ( Aslinda bu en iyi yöntem. Ama dedigim gibi LPT portu belkide windows2000 oldugu için web server programina yanit döndürmüyor ve php scripti kisir döngüye giriyor )

- 2.si COM portu üzerinden : Bunda sadece php kodlari ile ( yani ek bir programa gerek kalmadan her sistemde çalisabilecek durumda ) COM portuna bilgi göndericem ve gönderdigim bilgi süresince led yanik kalacak. Aktarim bittiginde led sönecektir.

Aslinda LPT portu daha çok isime geliyordu çünkü ledi devamli yanik tutmak daha kolaydi. Bense hem COM portundaki kolayliktan hemde COM portun LPT ye oranla daha fazla üstün özellikleri oldugundan COM portu seçtim.

Burada hemen bir sorun karsima çikmisti, istedigim süre kadar bir isigi nasil yakacaktim, yada kahve makinasinin zamanlanmasi gibi olaylari nasil halledecektim. Bunun üzerine hemen disari çikip yakinda bulunan bir elektrikçiye gidip bu konuda biraz yardim istedim. Elektrikçi bana led lambanin büyüklügünde bir röle verdi. Bu röle özelligi geregi her elektrik alisinda farkli bir konuma geçiyor. Yani ben bir kez COM port ile ufak bir elektrik sinyali yolladigimda röle harakete geçip ledi yakiyor. Ikinci kez COM porttan sinyal yolladigimda bu sefer röle elektrigi kesip ledi söndürüyordu.

Simdi kisa ve önemli bir açiklama yapip kodlarimiza basliyalim.

Bu dökümanda ben size sadece Php ile COM porta ufak bir elektrik sinyali göndermeyi ve bu sayede porta bagli led lambayi yakmayi gösterecem. Öncelikle web kaynaklarindan edindigim bilgi ile sizlere; bilgisayar portlarinin anakart ile tümlesim olarak imal edildigini söylemek istiyorum. Yani herhangi bir elektrik kaçaginda anakartinizin yanabilecegi ihtimalini unutmayin. O yüzden bu dökümani dikkatlice takip etmenizi öneriyorum.

Biz COM port araciligi ile led ' e direk elektrik sinayli yolladigimizda dogal olarak bu led üzerinde isik çikartacak derecede bir gerilim olusturacak sonra bu gerilim tekrar led in - kutubundan bilgisayara bagli porta gönderilecektir. Iste bu noktada led üzerinde olusabilecek bir sorun porta asiri yük binmesine neden olabilecek ve bilgisayarimizin zarar görmesine neden olabilecektir. Biz bu sorundan %99 oraninda kurtulmak için led in - kutubuna ( ledin kisa bacagi -, uzun bacagi + kutuptur ) bir direnç direncide porta baglayacagiz. ( Ben direnç olmadan denedim aslinda hiç bir sorun olmadi ama yinede tedbiri elden birakmamak gerekiyor )

Simdi eger asagidaki malzemeler elinizde varsa ise basliyabiliriz.

- Led lamba ( Rengi farketmez Ama 1 yada 5 volt arasi olmasi en ideali. )
- Direnç ( Klasik 470 ohm luklardan. )
- Bunlari bir birine tutturabileceginiz bir sey. ( Lehim makinasi, band vs. Ben board kullaniyorum )
- Com port ile bu düzenegi birlestirmek için kablo. ( iki tane 1 er metrelik ince tel, harici modem kablosu vs. gibi seyler olabilir. )
- Son olarakta gerekli yazilimlar ( PHP kodlarini çalistirabileceginiz, herhangi bir web server uygulamasi. )

1 - Gerekli düzenek...

Elinizdeki kablolari bilgisayarinizin arkasindaki bos bir com portun 3. ve 9. pinlerine baglayin.

Com portu üzerinde pin numaralarini görebilirsiniz, eger göremiyorsaniz asagidaki resimden faydalanabilirsiniz.

Öncelikle bilgisayariniza bagli COM port tan bize gerekli olan iki adet kabloyu size yakin ve görebileceginiz bir yere tasimak. Aslinda bu isin en zor yani desem gülersiniz. Ama bilgisayariniz arkasinda bosta duran bir com porta bu iki kabloyu tutturmak gerçekten zor. ( Kabaca : Bilgisayara bagli COM portlari genelde erkek bir soket oluyor. ) Ben harici modemimin kablosunu kullandim. Modem kablosunun bir ucunu com porta bagladim diger ucundaki deliklerede elimdeki iki kablonun uçlarini soktum.

Eger elinizde bu sekilde bir kablo yoksa size asagida bazi seçenekler sunayim.

- Biraz kalin bir kablonun disindaki plastigi telin disina dogru itebilir ve COM port üzerinde bulunan pini bu plastigin içine girecek sekilde ayarliyabilirsiniz. Asagidaki sekilde bir baglanti saglarsaniz ; böylece tellerin istedigimiz pin disindaki diger pinlere degmesini engellemis olursunuz.



- Ikinci seçenek olarak herhangi bir elektronik magazasindan bilgisayariniz üzerindeki com porta uygun bir soket alip kablo çekebilirsiniz. Böle bir düzenegi her türlü uygulamadada kullanabileceginizden oldukça faydali bir araçtir.

Ben bu noktadan sonra ; yani bilgisayarimdaki Com portun 3. ve 9. pinlerden iki kablo çektikten sonra board yardimi ile gerekli düzenegi bitirdim. Elinizde minumum araç oldugunu düsünerek asagida en basit sekilde bir grafik hazirladim.


Bir band yada lehim makinasi ile yukardaki düzenegi sagladiysaniz, artik isin %80' i bitmiş demektir. Bir sonraki sayfadan devam edelim.

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çilamiyor. Portun kurulu oldugundan yada kullanilmadigindan 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.


Hosting Sponsorumuz - Noktahost internet hizmetleri
Görüntülü Dersler Görüntülü Html Dersleri Görüntülü Asp Dersleri Görüntülü Php Dersleri Görüntülü Css Dersleri Görüntülü Java Script Dersleri Görüntülü Visual Basic Dersleri Görüntülü Flash Dersleri Görüntülü Photoshop Dersleri Görüntülü Front Page Dersleri Html Dersleri Asp Dersleri Php Dersleri Css Dersleri Java Script Dersleri Visual Basic Dersleri Flash Dersleri Photoshop Dersleri Front Page Dersleri Webhocam Forum Programlar Dökümanlar Asp & Asp.Net