PHP ile GPIO Pinlerini Kontrol Etmek – I

Daha önce “WiringPi.GPIO ile Komut Satırından Port Kontrolü” başlıklı yazımda, WiringPi’nin gpio komut satırı aracı ile GPIO pinlerinin nasıl kontrol edileceğini anlatmıştım. Ayrıca WebIOPi‘den de bahsetmiştim. Şimdi de aynı aracı kullanarak bu işlemi web sayfası üzerinden PHP ile nasıl gerçekleştireceğimize bakalım.

Aşağıdaki kodu incelerseniz aynı komutları kullandık. gpio komutu çalıştırabilmek için isen PHP’nin system komutundan faydalandık. System komutu PHP içinden harici bir program çalıştırıp çıktısını geri döndüren bir komut. Örneğimizde 2. pin’e bağlı led yakıp ardından hemen söndürdük. Tabi öncesinde 2. pinin modunu çıkış olarak ayarlamayı unutmuyoruz.

Biraz daha ilgi çekici bir örnek verelim. Aşağıdaki program P1 soketinin tüm pinlerini (17 pin) çıkış olarak ayarlıyor ve 10 tur tekrarlayan bir yürüyen ışık etkisi yaratıyor.

Pinlerden değer okumaya da örnek verip sonlandırmak istiyorum.

Bu örnekte pinden değer okumak için PHP’nin exec komutundan faydalandık. exec’in ikinci parametresi dizi türünden bir değişken ve programın ekran çıktısına ait satırların her biri ayrı bir elemanında saklanıyor. İlk satır olan $pin2[0] ekrana yazdırdığımız da şu çıktıyı verir:

Merhaba 2. pinin degeri 1

Performansı denemek için aşağıdaki deneme kodunu bir osilaskop’a bağlayarak çıkış sinyali gözledim. PHP içerisinden GPIO kullanımı 54KHz civarı bir kare dala verdi. Oldukça düşük.

54khz raspberry pi gpio benchmark
54khz raspberry pi gpio benchmark

 

Umarım faydalı olmuştur.

Yazar: Özgür Koca

Yazar - Tankado.com

“PHP ile GPIO Pinlerini Kontrol Etmek – I” için 4 yorum

  1. Hocam merhaba,
    Öncelikle ellerinize sağlık çok güzel açıklamışsınız. Adım adım bütün işlemleri yapıyorum.
    Fakat php’de bir sorunla karşılaştım. PHP dosyasını (test.php) usr/share/webiopi/htdocs (8000 portu) içine direk atamadım. rootla girdim dosyayı oluşturdum. Fakat browserda açınca olan kodu koduna çeviriyor. Dolayısıyla php kodunu çalıştıramıyorum.

    Bunun için ikinci yazınızda anlatılan webiopi-php yi mi kurmalıyım? yoksa başka bir yerde hata mı yapıyorum?

    Teşekkürler

  2. Merhaba, yorumunuz için teşekkür ederim.

    php içinde gpio kullanmak için öncelikle wiringpi’yi yüklemek için şurdakileri yapın:

    http://raspberry-pi.tankado.com/raspberry-pi-board/wiringpi-gpio-ile-komut-satirindan-port-kontrolu.html

    webiopi hazır bir kısıtlı bir uygulama portları monitör etmek veya on/off etmek için sadece. Kendi uygualamanızı geliştiriyorsanız buna ihtiyaç duyacağınızı sanmıyorum.

    Yukarıdaki örnekte yer alan php kodlarını denemek için öncelikle şuradan apache/php çiftinin kurulumunu yapın. Bundan sonra web tarayıcısına sadece pi’nin ip adresini yazarak bağlanın. Yani 80. portu kullanmalısınız.

    http://raspberry-pi.tankado.com/raspbian-linux/raspberry-piye-lamp-apache-mysql-php-kurmak.html?doing_wp_cron=1412562024.9624850749969482421875

    Kolay gelsin.

Bir yanıt yazın

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.