Pinler

3v3 Güç

The 3v3, 3.3 volt pini, azami olarak 50 mA (miliamper) akım sağlamakta. Bu akım birkaç ledi aynı anda yakabilir, ama daha fazlası için yeterli olmayacaktır.

Eğer daha çok akıma ihtiyacınız varsa 5v0 (5V) akım veren pinleri kullanabilir, ve de isteğe göre 3v3'e çevirici bir regülatör bağlayabilirsiniz.

GPIO 0 (SDA)

Rev 1 board'larda (Model B 256MB) BCM pin 0, ve Rev 2 board'larda ise pin 2'ye tekabül eder. WiringPi için pin 8'dir. Ladder Board'da Küçük Yeşil LED'e tekabül eder.

GPIO pinleri ile dijital HIGH ve LOW değerlerini okumak ve hazırlamak oldukça kolay, yalnız bazı hususlara dikkat etmeniz gerekmekte:

  • Kodu çalıştıracak script'inizi root (süper yönetici) hakları ile çalıştırmalısınız.
  • Pin'in modunu OUTPUT (1) olarak tanımlamalısınız

Eğer WiringPi2-Pytgon kütüphanesini kurduysanız ( pip install wiringpi2 ) o zaman aşağıdaki kodu bir .py dosyası olarak kaydedip çalıştırabilirsiniz:

import wiringpi2 as wiringpi
HIGH = 1
LOW = 0
OUTPUT = 1
INPUT = 0
wiringpi.wiringPiSetup()
wiringpi.pinMode(8,OUTPUT)
wiringpi.digitalWrite(8,HIGH)

Ardından şu komutla çalıştırabilirsiniz:

sudo python scriptadi.py

GPIO 0 (SCL)

Rev 1 board'larda BCM pin 1'e, Rev 2 board'larda ise pin 3'e tekabül eder. WiringPi için pin 9'dur. Ladder Board'da Küçük Kırmızı Led'e tekabül eder.

require 'wiringpi2'
HIGH = 1
LOW = 0
OUTPUT = 1
INPUT = 0
io = WiringPi::GPIO.new
io.pin_mode(9,OUTPUT)
io.digital_write(9,HIGH)

GPIO 4 (GPCLK0)

4 No'lu BCM pinidir. WiringPi için pin 7'dir. Quick2Wire'da I2C Interrupt pinidir. Ladder Board'da Mavi LED 2'ye tekabül eder.

GND (0V)

GPIO 17

17 No'lu BCM pinidir. WiringPi için pin 0'dır. Quick2Wire'da Push Düğmesidir. Ladder Board'da Kırmızı LED 1'e tekabül eder.

GPIO 21 (PCM_D)

Rev 1 board'larda BCM pin 21'e, Rev 2 board'larda ise pin 27'ye tekabül eder. WiringPi için pin 2'dir. Ladder Board'da Sarı LED 1'e tekabül eder.

GPIO 22

22 no'lu BCM pinidir. WiringPi için pin 3'tür. Ladder Board'da Sarı LED 2'ye tekabül eder.

3v3 Güç

GPIO 10 (MOSI)

10 no'lu BCM pinidir. WiringPi için pin 12'dir. Ladder Board'da Buton 3'e tekabül eder.

AVRDude ile programlama yapabilmek için bu pini ATmega328'in MOSI pinine, Arduino Pin 11'e bağlamalısınız. ATmega328'inizin 3.3v güç ile beslendiğinden mutlaka emin olun. Eğer 5v kullanıyorsanız bir logic-level converter ile voltajı değiştirebilirsiniz.

GPIO 9 (MISO)

9 no'lu BCM pinidir. WiringPi için pin 13'tür. Ladder Board'da Buton 4'e tekabül eder.

Gordon's modified AVRDude ile programlama yapabilmek için bu pini ATmega328'in MISO pinine, Arduino Pin 12'ye bağlamalısınız. ATmega328'inizin 3.3v güç ile beslendiğinden mutlaka emin olun. Eğer 5v kullanıyorsanız bir logic-level converter ile voltajı değiştirebilirsiniz.

GPIO 11 (SCLK)

11 no'lu BCM pinidir. WiringPi için pin 14'tür.

Gordon's modified AVRDude ile programlama yapabilmek için bu pini ATmega328'in SCK pinine, Arduino Pin 13'e bağlamalısınız. ATmega328'inizin 3.3v güç ile beslendiğinden mutlaka emin olun. Eğer 5v kullanıyorsanız bir logic-level converter ile voltajı değiştirebilirsiniz.

Ground

EEPROM ID DATA

Sadece Model B+'larda!

EEPROM ID pinleri yeni eklenti board'ları için ayrılmış i2c bus'larıdır. Bu pinler EEPROM ile iletişime geçerek ID and pin durum konfigürasyonunu aktarırlar. Bu pinlerin başka bir işlevi yoktur. Bu pinler ayrıca özellikle bu hizada yerleştirilmişir, böylece eğer 26 pinlik eski bir genişletme kartınız varsa zaten bu pinlere ihtiyacınız olmayacak, ve de kartı kullanırken sadece bu pinler board'ın pinlerinin kenarlıkların dandolayı kapanacağından, B+'da gelen diğer pinleri de bu karta ek olarak kullanabileceksiniz.

GPIO 5

Sadece Model B+'larda!

GPIO 6

Sadece Model B+'larda!

GPIO 13

Sadece Model B+'larda!

ALT0 / PWM
PWM 1

GPIO 19

Sadece Model B+'larda!

ALT0 / PCM ALT4 / SPI1 ALT5 / PWM
PCM Frame Sync MISO PWM1

GPIO 26

Sadece Model B+'larda!

Ground

Sadece Model B+'larda!

5v Güç

5v0 akım pinleri doğrudan Raspberry Pi'nin güç girişine bağlıdır, ve de adaptörünüzden sağlanan akımın değerinin (amper) tamamını aktarmaktadır.

Buradan beslenen elektrik akımını küçümsemeyin. Eğer sağlam bir adaptörünüz varsa bu akım ile pek çok şey yapabilirsiniz. Bu akım ile Arduino besleyebilir, hatta küçük bir elektrolüminesan kablo inverter'ı bile çalıştırabilirsiniz.

5v Güç

Bu pin, bir önceki 5v güç pini ile tamamen aynı. Projenizin yoğunluğuna göre bir tane 5v akım pini yetmezse bu pini de kullanabilirsiniz.

Ground

Revizyon 2 Raspberry Pi'de tüm "bağlayamayın" (do-not-connect) pinleri ek ground (0v) pinleri olarak değişti. Buralara pin bağlarken dikkatli olun, çünkü doğrudan bir çıkışı bu pinlere bağlamak cihazınıza zarar verebilir.

GPIO 14 (TXD)

14 no'lu BCM pinidir. WiringPi için pin 15'tir.

Bu pin, UART transmit (gönderici) pin'i, TXD olarak çalışır.

UART, eğer Piduino gibi (Arduino, Raspberry Pi kombinasyonu) durumlarda oldukça işe yarayan bir pindir. RXD pini bir 3.3v <-> 5v dönütürücü kullanarak Arduino'nun TXD pinine bağlayabilir, ve de bu TXD pinini Arduino'nun RXD pinine bağlayabilirsiniz. Bir voltaj dönüştürücü kullanmak zorunda değilsiniz, Arduino'yu 3.3v

ile de besleyebilirsiniz.

GPIO 15 (RXD)

15 no'lu BCM pinidir. WiringPi için pin 16'tir

Bu pin, UART receiver (alıcı) pin'i, RXD olarak çalışır.

GPIO 18 (PCM_CLK)

18 no'lu BCM pinidir. WiringPi için pin 1'dir. Quick2Wire LED'idir. Ladder Board'da Kırmızı LED 2'ye tekabül eder.

ALT5 / PWM
PWM 0

Ground

GPIO 23

23 no'lu BCM pinidir. WiringPi için pin 4'tür. Ladder Board'da Yeşil LED 1'e tekabül eder.

GPIO 24

24 no'lu BCM pinidir. WiringPi için pin 5'tir. Ladder Board'da Kırmızı LED 2'ye tekabül eder.

Ground

GPIO 25

25 no'lu BCM pinidir. WiringPi için pin 6'dır. Quick2Wire için SPI Interrupt'tır. Ladder Board'da Mavi LED 1'e tekabül eder.

GPIO 8 (CE0)

8 no'lu BCM pinidir. WiringPi için pin 10'dur. Ladder Board'da Button 2'ye tekabül eder.

Gordon's modified AVRDude ile programlama yapmak için bu pini

doğrudan ATmega 328'in Reset (RST) pin'ine bağlamalısınız. ATmega328'in 3.3v beslemesi ile beslendiğinden emin olun. Eğer 5v kullanıyorsanız, bir logic-level converter kullanmalısınız.

GPIO 7 (CE1)

7 No'lu BCM pinidir. WiringPi için pin 11'dir. Ladder Board'da Button 1'e tekabül eder.

EEPROM ID CLOCK

Sadece Model B+'larda!

EEPROM ID pinleri yeni eklenti board'ları için ayrılmış i2c bus'larıdır. Bu pinler EEPROM ile iletişime geçerek ID and pin durum konfigürasyonunu aktarırlar. Bu pinlerin başka bir işlevi yoktur. Bu pinler ayrıca özellikle bu hizada yerleştirilmişir, böylece eğer 26 pinlik eski bir genişletme kartınız varsa zaten bu pinlere ihtiyacınız olmayacak, ve de kartı kullanırken sadece bu pinler board'ın pinlerinin kenarlıkların dandolayı kapanacağından, B+'da gelen diğer pinleri de bu karta ek olarak kullanabileceksiniz.

Ground

Sadece Model B+'larda!

GPIO 12

Sadece Model B+'larda!

ALT0 / PWM
PWM 0

Ground

Sadece Model B+'larda!

GPIO 16

Sadece Model B+'larda!

GPIO 20

Sadece Model B+'larda!

ALT0 / PCM ALT4 / SPI1
PCM Data In MOSI

GPIO 21

Sadece Model B+'larda!

ALT0 / PCM ALT4 / SPI1
PCM Data Out SCLK

Pinler (Pinout)!

Pinout, Raspberry Pi Rev 2.0 ve Model B+ Pinlerini daha iyi tanıyabilmeniz için hazırlanmış interaktif bir mikro sitedir

Pinout print edilmek için tasarlanmadı, ama Raspberry Pi GPIO pinlerinin neye yaradığını öğrenebilmeniz amacıyla hazırlandı.

Model B+

Bu mikro site Raspberry Pi Model B+ pinlerini de anlatmakta. 26 standart pinin altındaki 14 ekstra pin Model B+ ile gelen yeni pinlerdir

Not: Sol menüde 26 pin ile Model B+ ın yeni pinleri arasındaki boşluk sadece karıştırmamak amacıyladır, Model B+'da pinler arasında öyle bir boşluk yoktur.

5v Güç

The 5v güç pinleri pins projelerinizde kullanabileceğiniz elektriği sağlamak amacıyla eklenmiştir. Raspberry Pi'nin kendisi de aynı kaynaktan beslenmektedir.

5v Akımı kolaylıkla 3.3 volta da regüle edilebilir.

Eğer 5v'dan daha fazla akıma ihtiyacınız varsa o cihazınızı başka bir güç kaynağıdnan beslemek zorundasınız.

3.3v Güç

Azami olarak 50mA akım verebilen 3.3v pinleri ile kolaylıkla birkaç LED lamba yakabilir, ufak devre bileşenlerinize güç verebilirsiniz.

0v Ground

Raspberry Pi ile bir devre bileşenine güç verdiğiniz zaman Ground pini ile devreyi tamamlamalısınız.

Bu pinleri daha kolay hatırlamanız için 5V akımlarının altındaki pini ve de 25 no'lu pini ezberlemeyi deneyebilirsiniz. Bu size kolaylık sağlayacaktır.

UART - Universal Asenkron Verici/Alcı

WiringPi'deki 2 UART pini Pin 15 ve 16'dır

UART Ardıino, veya bootload edilmiş bir ATmega ile kolayca iletişim kurkanızı sağlayacak bir arayüzdür. Yalnız bu iletişimi kurarken dikkat etmeniz gereken bazı hususlar var. Raspberry Pi 3.3v iken Arduino 5v'tur. Bunları akımları eşitlemeden bağlarsanız cihazlarınızdan dumanlar tütmeye başlayabilir

Örneğin Arduino bootload edilmiş ATmega 328 devresini breadboard'a kurup bir akım regülatörü ile Raspberry Pi'nin 5v yolunu 3.3 v'a dönüştürebilirsiniz. Bu sayede 3.3v logic'ine sahip bir Arduino klonunuz olacvak.

Aşağıdaki Python örneği Raspberry Pi'nin UART'ını 9600baud'da açar ve 'merhaba dunya' yazar

import wiringpi2 as wiringpi
wiringpi.wiringPiSetup()
serial = wiringpi.serialOpen('/dev/ttyAMA0',9600)
wiringpi.serialPuts(serial,'merhaba dunya')

GPIO - Genel amaçlı giriş çıkışlar

WiringPi için 8 adet GPIO pini vardır. Bunlar: 0, 1, 2, 3, 4, 5, 6 ve 7'dir.

SPI - Serial Peripheral Interface

four-wire serial bus olarak da bilinen SPI, bir pin setinden birden fazla adresteki birden fazla uygun cihazı papatya zinciri yapıp yönetmenizi sağlar.

Buna örnek olarak MCP23S17 digital IO expander çipini verebiliriz. 0 yerine S'in bulunduğu versiyon I2C versiyonudur. WiringPi2 ile çok kolay bir şekilde kullanlabilir:

import wiringpi2 as wiringpi
HIGH = 1
OUTPUT = 1
PIN_BASE = 65
SPI_ADDR = 0x20
wiringpi.wiringPiSetup()
wiringpi.mcp23S17Setup(PIN_BASE,SPI_ADDR)
# başlangıç pini ile birlikte 16 pin
mcp23S17pins = range(PIN_BASE,PIN_BASE+15)
for pin in mcp23S17pins:
	wiringpi.pinMode(pin,OUTPUT)
	wiringpi.digitalWrite(pin,HIGH)

SPI portunuz ayrıca Gordon'un modifiye AVRDude'una Arduino skeçleri yükleyerek ATmega 328'ye "bit banging" de yapabilirsiniz.

Raspberry Pi'nizin SPI port'unu ATmega'nıza bağlayın ve ATmega'yı Raspberry Pi'nin 3.3v gücüyle besleyip açın. SPI sürücüleri çalıştırmadığınızdan emin olduktan sonra "avrdude -p m328p -c gpio" komutu ile bağlantıyı kontrol edin.

ATmeganız varsa her bir pin için ayrı ayrı tıklayarak nasıl bağlayabileceğinizi öğrenebilirsiniz.

I2C - Inter Integrated Circuit

Raspberry Pi'nin I2C pinleri eğer pek çok harici bileşen ile çalışıyorsanız oldukça işinize yarayacaktır.

Bağlı olan I2C bileşenini tek satırlık bir kodla kontrol edebilirsiniz:

sudo apt-get install i2c-tools
sudo i2cdetect -y 1

I2c'ye Python'un smbus kütüphanesi ile erişebilirsiniz:

import smbus
DEVICE_BUS = 1
DEVICE_ADDR = 0x15
bus = smbus.SMBus(DEVICE_BUS)
bus.write_byte_data(DEVICE_ADDR, 0x00, 0x01)

Raspberry Pi Ladder Board

Bu ucuz ve kit, Raspberry Pi'nin GPIO portlarını kurcalamak için oldukça güzel bir alternatif araç.

Bu kit, 12 tane LED'i ve de 4 tane butonu doğrudan GPIO pinlerine bağlıyor, ve de böylece programlamaya başlamayı oldukça hızlandırıyor. Soldaki pinleri kullanarak, basitçe 0, 1, 2, 3, 4, 5, 6, 7, 8 ve 9 pinlerini, the LEDleri OUTPUT (1) için, ve de butonları, yani 10,11,12,14 pinlerini de INPUT (0) için ayarlamış ve de okuma ve yazmaya hazır oluyorsunuz.

Aslında pratikte durum bundan biraz daha karışık. Butonların hepsinde aslında kendilerine ait pull up/down PUD_UP/UP (2) ile değişmeli, çünkü aslında bu board'da bir butona basmak pini ground'a çekiyor.

Eğer bu board'ı aldıysanız aşağıdaki kod WiringPi de kullanıyorsanız güzel bir başlangıç olacaktır:

import wiringpi2 as wiringpi
INPUT = 0
OUTPUT = 1
LOW = 0
HIGH = 1
BUTTONS = [13,12,10,11]
LEDS = [0,1,2,3,4,5,6,7,8,9]
PUD_UP = 2

wiringpi.wiringPiSetup()

for button in BUTTONS:
    wiringpi.pinMode(button,INPUT)
    wiringpi.pullUpDnControl(button,PUD_UP)

for led in LEDS:
    wiringpi.pinMode(led,OUTPUT)

while 1:
    for index,button in enumerate(BUTTONS):
        button_state = wiringpi.digitalRead(button)
        first_led = LEDS[index*2]
        second_led = LEDS[(index*2)+1]
        #print str(button) + ' ' + str(button_state)
        wiringpi.digitalWrite(first_led,1-button_state)
        wiringpi.digitalWrite(second_led,1-button_state)
    wiringpi.delay(20)

Örnekte pinleri ve de butonları bu board'daki dizilimdeki gibi tanıttık, yoksa pinler düzgün çalışmayacaktı. Ayrıca wiringpi.wiringPiSetup() kodunu da çalıştırmayı unutmayın, yoksa hiçbir şey olmayacak!

Raspberry Pi WiringPi

WiringPi, Arduino kullanmış olanların hiç yabancılık çekmeyeceği, Arduino benzeri bir pinleme/klablolama sistemini Raspberry Pi'ye getirmeyi amaçlamış üçüncü parti bir kütüphanedir. Bu kütüphanenin amacı benzer ve ortak bir platform oluşturmak, ve de Raspberry Pi GPIO pinlerini farklı diller ile yönetebilmektir. WiringPi özünde C dili ile yazılmıştır, fakat hem Ruby hem de Python türevleri mevcuttur. Bunları sıra ile Ruby için "gem install wiringpi" veya Python için "pip install wiringpi2" diyerek kurabilirsiniz.

Python kullanıcıları kütüphanenin adının sonundaki 2'ye dikkat etmiş olabilirler. Bu aslında WiringPi2-Python kütüphanesidir. Bu kütüphane sonunda mevcut WiringPi kütüğhanesindeki özellikleri ve esnekliği Raspberry Pi'ye Python dilinde getirmeyi başarmış bir kütüphanedir.

Daha fazla bilgi için WiringPi resmi web sitesini ziyaret edebilirsiniz.

WiringPi'ye başlangıç

WiringPi kendi pin numaralama şematiğini kullanıyor. Bu linkten WiringPi'nin GPIO pinlerinizi nasıl numaralandırdığını görebilir, pinlerin ne yaptığını inceleyebilir, ve de C, Python veya Ruby dilleri ile GPIO programlamaya başlayabilir, devre elemanlarınızı yönetebilirsiniz.

Arduino benzeri GPIO kütüphanesi WiringPi, C dili için doğrudan Gordon'un git reposunda mevcuttur. Ayrıca Python, Ruby hatta Perl ve PHP için de daha kısıtlı da olsa desteği mevcuttur.

Python'a kurmak saniyelerinizi alacak:

sudo pip install wiringpi2

Sonundaki 2'yi fark ettiniz mi? İşte bu yeni, ve de daha modern WiringPi kütphanesi (WiringPi2)!

PiBorg LedBorg RGB LED Board

PiBorg LedBorg, Raspberry Pi için oldukça hafif bir RGB LED board'udur. Bu board kendisine ait bir sürücü barındırır, bu yüzden ayrıca bir sürücü kurmanıza gerek yok.

Eğer daha fazla aralıkta renk istiyorsanız bunu WiringPi ile softPwm ile de yapabilirsiniz. Pin atamaları şu şekilde:

WiringPi pin 0: Kırmızı LED
WiringPi pin 2: Yeşil LED
WiringPi pin 3: Mavi LED

Python ile bunu yapmak neredeyse çocuk oyuncağı:

import wiringpi2 as wiringpi
wiringpi.wiringPiSetup()
wiringpi.softPwmCreate(0,0,100)
wiringpi.softPwmCreate(2,0,100)
wiringpi.softPwmCreate(3,0,100)
wiringpi.softPwmWrite(3,100)
wiringpi.softPwmWrite(0,100)
					

Geekroo Clockatoo Clock Board ve buzzer

Bu board, WiringPi pin 7, GPIO pin 4 ile yönetilebilir.

GeekRoo Clockatoo ufak ve de işlevli bir pil destekli gerçek saati, 4 karakterli, 7 segmentli bir ekranı ve de bir zili (buzzer) bir araya getiren bir board.

GeekRoo'nun kendi kurulum makalesi sizin saati ayarlamanız için yeterli bilgiye sahip, fakat buzzer'ı nasıl kullanacağınızdan bahsetmiyor.

WiringPi'nin softTone'u buzzer'ı farklı hızlarda (uyarıcı veya rahatsız edici) çalıştırmanızı sağlıyor. Aşağıdaki kodla örnek bir alaram sesi yakalayabilirsiniz:

import wiringpi2 as wiringpi
wiringpi.wiringPiSetup()
wiringpi.softToneCreate(7)
wiringpi.softToneWrite(7,1)
					

softToneWrite için tanımlanmış ikinci parametre frekansa tekabül eder. Bu değer (1) yükseltildikçe zil daha çok sinir bozucu bir hal alır, bu da alaramlı Raspberry Pi saatinizle kesin kez uyanmanızı sağlar!

SPI üzerinden ATmega 328p / Arduino

Raspberry pi'nizin doğrudan ATmega 328p/Arduino'yu besleyip onunla programlama yapmanıza olanak sağladığını biliyor muydunuz? Bunu sadece birkaç kablo, bir breadboard, bir 16MHZ kristal with nothing but a few wires, a breadboard, a 16Mhz crystal osilatör ve de birkaç 22pF kondansatör ile yapabilirsiniz!

Öncelikle Pico PiDuino makalesini takip edin / etmenizi öneririz, bunu sıfırdan uygulamak sadece £5 gibi bir masraf çıkaracak.

Bunun ardından Gordon's modifiye AVRDude'unu kurmalısınız.

8/CEO'yu ATmega'nuzun Reset/RST pin'ine bağlayın, 9/MISO'yu da ATmega'nın MISO pin'ine (D12) bağlayın, 10'u da onun MOSI pin'ine (D11) bağlayın. Son olarak 11/SCLK'yı da onun SCLK pin'ine (D13) bağlayın.

ATmega'nızı Raspberry Pi'den aldığınız 3.3v ile besleyin, GND Pinini de Pi'ye bağlayarak düzeneği tamamlayın ve de cihazı açın.

Askıda kalmış bir SPI cihazı kalmadığına emin olun, ve de cihazın bağlandığını kontrol edin. Bunu aşağıdaki komutlar ile yapabilirsiniz:

avrdude -p m328p -c gpio

Arduino skeçlerini (sketch) derlemeye aşağıdaki komut ile başlayabilirsiniz:

sudo apt-get install arduino arduino-mk

Bu basit makefile dosyası (alternatif link) başlamanız için yeterli olacaktır.Yeni bir sketch oluşturup adına mysketch.ino diyin ve de çalıştırın:

export BOARD=atmega328
make
avrdude -p m328p -c gpio -e -U flash:w:build-cli/Arduino.hex

PWM - Sinyal Genişlik Modülasyonu