Kategori arşivi: Raspberry Pi

Raspberry Pi hakkında her şey.

Android Things Raspberry Pi 3 Pin Dizilimi ve Desteklediği Arayüzler

Merhaba arkadaşlar,

Android Things OS ile Raspberry Pi 3’ü kullanırken pin adlandırması Raspbian OS’e göre farklı. GPIOx isimlendirmesi yerine BCMx isimlendirmesi kullanılıyor.
Android Things ile kullanılması gereken pin dizilimi:

GPIO arayüzünü kullanırken seçtiğimiz pine erişmek için “BCMx” şeklinde kullanmalıyız.

PeripheralManagerService manager = new PeripheralManagerService();
// Use bcm notation.For example BCM21 
Gpio mGpio = manager.openGpio("BCMx");

Raspberry Pi 3’te bir adet I2C arayüzü mevcut. 3 numaralı pin SDA, 5 numaralı pin ise SCL olarak kullanılıyor. Aynı arayüzü kullanarak I2C destekli 127 cihaz bağlayabilirsiniz. Peripheral Manager Apisini kullarak I2C arayüzüne erişmek için “I2C1” isimlendirmesini kullanacağız. Örneğin;

PeripheralManagerService mngr = new PeripheralManagerService();
// sample adress 0x77
mngr.openI2cDevice("I2C1",0x77);

Raspberry Pi 3’te 2 adet donanımsal PWM arayüzü mevcut. PWM0 arayüzü 12. pin olan BCM18 ile ortak olarak kullanılıyor. PWM1 araüyüzü ise BCM13 ile ortak olarak kullanılıyor. Bu arayüzlere erişmek içinse “PWM0” ve “PWM1” adlandırmasını kullanabiliriz. Örnek erişim :

PeripheralManagerService mngr = new PeripheralManagerService();
mngr.openPwm("PWM0");
mngr.openPwm("PWM1");

Eğer servo motor kontrol ediyorsanız doğrudan servo sürücüsü üzerinden de erişebilirsiniz. Örneğin;

            mServo = new Servo("PWM1");
            mServo.setPulseDurationRange(1, 2); // according to your servo's specifications
            mServo.setAngleRange(-90, 90);       // according to your servo's specifications
            mServo.setEnabled(true);

            mServo2 = new Servo("PWM0");
            mServo2.setPulseDurationRange(1, 2); // according to your servo's specifications
            mServo2.setAngleRange(-90, 90);       // according to your servo's specifications
            mServo2.setEnabled(true);

UART arayüzünü sağlayan pinler ise 8. pin (TX) 10. pin (RX). UART arayüzüne erişmek için kullanacağımız isimlendirme ise “UART0”. Örneğin;

PeripheralManagerService mngr = new PeripheralManagerService();
                  
mngr.openUartDevice("UART0");

SPI için ise 2 adet arayüz mevcut bunlar SPI0.0 ve SPI0.1. Bu arayüzlere aşağıdaki şekilde ulaşabiliriz:

MOSI – 19. Pin
MISO – 21. Pin
SCLK – 23. Pin
SS0 – 24. Pin
SS1 – 26. Pin

PeripheralManagerService mngr = new PeripheralManagerService();
mngr.openSpiDevice("SPI0.0");
mngr.openSpiDevice("SPI0.1");

Tüm arayüzler ise aşağıdaki gibi :

Kaynak: https://developer.android.com/things/sdk/pio/index.html

İyi çalışmalar,

Loading

Facebooktwitterredditpinterestlinkedinmail

Raspberry Pi 3 Android Things Wifi Ayarı Yapma

Merhaba arkadaşlar,

AndroidThings’te Wifi ayarı nasıl yapılır ondan bahsedeceğim. Öncelikle cihazı ethernetten bağlayın. Cihaz ip’si ekranda görünecektir.

Windows için powershell’i, linux için terminali açalım.

1-) IP adresimizi girerek Raspberry Pi’a bağlanalım.
$ adb connect <ip_address>
connected to <ip_address>:5555

2-) Cihaza bağlandıktan sonra adb shell komutu ile cihazın içine girelim.
$ adb shell

 

3-) Aşağıdaki scripti kopyalarak gerekli yerleri düzenleyelim. <Network_SSID> yerine ağ adınızı, <Network_Passcode> yerine şifremizi yazalım.
$ am startservice -n com.google.wifisetup/.WifiSetupService -a WifiSetupService.Connect -e ssid -e passphrase

Kaynak : Android Things Raspberry Pi

İyi çalışmalar,

Loading

Facebooktwitterredditpinterestlinkedinmail

Raspberry Pi 3 – Service Discovery (ZeroConfig)

Merhaba,

Raspberry Pi projelerinde kullanabileceğiniz  oldukça kullanışlı mDNS/DNS-SD servisinden bahsedeceğim.

mDNS/DNS-SD : Yerel ağda servis bulmak veya servis yayınlamak için kullanılır. Zeroconf veya bonjour olarakta geçer. Linux’ta avahi paketi altında implement edilmiştir.

Avahi kurulumu :

  • $ sudo apt-get install avahi-daemon avahi-utils

paketlerini kuralım.

avahi-daemon, protokolün temel işlerine bakan ana süreçtir. Komut satırından programlanabilir veya başka bir uygulama içindende erişilebilir. Program içinde kullanmak için buraya bakabilirsiniz. Ben bu yazımda komut satırından nasıl servis yayınlanacağını anlatacağım.

Servis Yayınlama :

Servis yayınlamak için avahi-publish-service komutunu kullanacağız. Komutun syntax’ı aşağıdaki gibidir :

avahi-publish-service SERVİS-ADI  _UYGULAMA-PROTOKOLÜ._TAŞIMA-PROTOKOLÜ PORT “AÇIKLAMA” –sub ALTPROTOKOL

Örnek kullanım :

  • avahi-publish-service LetheRC _socket._tcp 1903 “/Lethe RC Survelliance Robot” –sub _letherc._sub._socket._tcp

Bu servisi başka bir cihazda taradığımızda sonuç aşağıdaki gibi olacaktır :

Linuxta tüm servisleri taramak için :

  • $ avahi-browse -ar

yazalım. Bu komut yerel ağdaki tüm servisleri çözer ve listeler. Bizim az önce başlattığımız servisi burada görebilirsiniz. RaspberryPi’dan başlattığım servisi dizüstü bilgisayarımdan taradığımdaki sonuç :

discovery-result

Peki servisi başlattık bu ne işimize yarayacak diye soruyorsanız? Artık Raspberry Pi 3’e bağlanmak için statik ip kullanmak zorunda değiliz. Raspberry Pi başka bir ip alsa bile bu servisi çözerek o ip’yi alabilir ve dinamik bağlantı kurabiliriz. Son bir adım olarak Raspberry Pi her başladığında bu servisin başlaması için küçük bir script yazalım.

Yeni bir dosya açalım :

  • nano start-letherc-nsd.sh

Dosya içeriğine başlatmak istediğiniz servisi yazınız. Ben örnekteki servisi yazıyorum. Dosyanın başına #!/bin/sh yazmayı unutmayın. Örnek içerik :

#!/bin/sh

#Start publishing service.

avahi-publish-service LetheRC _socket._tcp 1903 “/Lethe RC Survelliance Robot” –sub _letherc._sub._socket._tcp

 

Dosyayı kaydedip çıkalım. Ve scripti çalıştırılabilir yapalım.

  • $ chmod +x start-letherc-nsd.sh

Scriptimiz hazır son olarak scripti crontab’e ekliyoruz.

  • $ crontab -e

Açılan dosyanın en altına :

@reboot /home/pi/MyScripts/start-letherc-nsd.sh” (tırnaksız) ekleyin. Eklerken kendi scriptinizin bulunduğu yolu eklemeyi unutmayın.Kaydedip çıkın. Artık raspberry pi her başladığında crontab servisimizi çalıştıracak ve böylece dinamik olarak ip/port bilgisi alacağız.

Bir sonraki yazımda android cihazdan bu servisi kullanarak raspberry pi’a bağlanacağım.

İyi çalışmalar.

 

Loading

Facebooktwitterredditpinterestlinkedinmail