この文章では,小型センサロガーのピンアサインとともにRaspberry Pi(RPi) zeroのピンアサインも示します.RPiの各ピンには,一部を除き汎用端子として利用できるようになっており,それらはGPIO_**という名前が割り振られています.Pi4JではこのGPIO_**を使ってピンを制御をします.例えば,ピン番号38の端子を汎用出力ピンにするのであれば,次に示すようになります.
final GpioController gpio = GpioFactory.getInstance(); final GpioPinDigitalOutput pin = gpio.provisionDigitalOutputPin(RaspiPin.GPIO_28, "MyLED", PinState.HIGH);
ここで,インスタンスgpioはPi4Jにおいて汎用入出力ピンを管理するもの(ファクトリという)であり,そのgpioのメソッドであるprovisionDigitalOutputPinにより,ピン番号38すなわちGPIO_28のピンをディジタル出力端子にしてインスタンスpinとして生成します.なお,ピン番号とPi4Jでの名称の対応については,この文章の一番下に表にして示します.
Raspberry PiにはPWM(Pulse Width Modulation)を出力できるピン(ピン番号12,GPIO_01)が1個だけあります.この端子からPWM出力するには,上記gpioのインスタンスprivisionPwmOutputPinを用います.下にその例を示します.
final GpioPinPwmOutput motorSpeed = gpio.provisionPwmOutputPin(RaspiPin.GPIO_01);
特定のピンにはI2CやSPI,UART通信を行えるようになっており,GPIO名とは別の名前が割り振られています.例えばピン番号03,GPIO_08はI2CのSDA,ピン番号05,GPIO_09はI2CのSCLとして動作させることができます.これらの端子をI2Cとして利用するには,これまでのようにGPIO_**を使うのではなく,下に示すような方法となります.
I2CBus i2cbus = I2CFactory.getInstance(I2CBus.BUS_1);
この例では,I2Cのチャネル1のインスタンスを生成し,i2cbusとしています.そして,I2C通信するにはインスタンスi2cbusのインスタンスを用います.
下の表はRaspberry Pi zeroのピン番号,Pi4Jでのピンの名称,一般的なピンの名称,汎用端子以外の役割とともに,小型センサロガーに備わる電子デバイスとの接続についても記しておきます.なお,各デバイスの接続状況を回路図でもお確かめください.
| ピン番号 | Pi4Jでの名称 | ピン名称 | 汎用端子以外の役割 | 接続されているデバイス | 
|---|---|---|---|---|
| 01 | - | 3.3[V] | 3.3[V]電源 | - | 
| 02 | - | 5[V] | 5[V]電源 | - | 
| 03 | GPIO_08 | GPIO08 / SDA1 | I2C通信のデータ線 | 温湿度センサ(SDA) | 
| 04 | - | 5[V] | 5[V]電源 | - | 
| 05 | GPIO_09 | GPIO09 / SCL1 | I2C通信のクロック線 | 温湿度センサ(SCL) | 
| 06 | - | GND | グランド | - | 
| 07 | GPIO_07 | GPIO07 / GCLK | グローバルクロック | 温湿度センサ(観測完了) | 
| 08 | GPIO_15 | GPIO15 / TXD0 | UART送信 | 無線通信モジュール(TX) | 
| 09 | - | GND | グランド | - | 
| 10 | GPIO_16 | GPIO16 / RXD0 | UART受信 | 無線通信モジュール(RX) | 
| 11 | GPIO_00 | GPIO00 | - | 7セグメントLED(セグメントF) | 
| 12 | GPIO_01 | 
 GPIO01 / PCM_CLK / PWM0  | 
 PCM音源用クロック / PWM出力用端子  | 
ファンドライバ(速度) | 
| 13 | GPIO_02 | GPIO02 | - | 7セグメントLED(セグメントG) | 
| 14 | - | GND | グランド | - | 
| 15 | GPIO_03 | GPIO03 | - | 7セグメントLED(セグメントE) | 
| 16 | GPIO_04 | GPIO04 | - | 7セグメントLED(セグメントD) | 
| 17 | - | 3.3[V] | 3.3[V]電源 | - | 
| 18 | GPIO_05 | GPIO05 | - | 7セグメントLED(セグメントA) | 
| 19 | GPIO_12 | MOSI | SPI通信のMOSI | ファンドライバ(停止・逆転) | 
| 20 | - | GND | グランド | - | 
| 21 | GPIO_13 | MISO | SPI通信のMISO | 7セグメントLED(セグメントB) | 
| 22 | GPIO_06 | GPIO06 | - | 7セグメントLED(セグメントC) | 
| 23 | GPIO_14 | CLK | SPI通信のクロック | 7セグメントLED(セグメントDP) | 
| 24 | GPIO_10 | CE0 | SPI通信のチップイネーブル0 | 7セグメントLED(DP4のカソードコモン) | 
| 25 | - | GND | グランド | - | 
| 26 | GPIO_11 | CE1 | SPI通信のチップイネーブル1 | 7セグメントLED(DP3のカソードコモン) | 
| 27 | - | EEPROM ID | EEPROMのID(GPIO不可) | - | 
| 28 | - | EEPROM ID | EEPROMのID(GPIO不可) | - | 
| 29 | GPIO_21 | GPIO21 | - | 7セグメントLED(DP2のカソードコモン) | 
| 30 | - | GND | グランド | - | 
| 31 | GPIO_22 | GPIO22 | - | 7セグメントLED(DP1のカソードコモン) | 
| 32 | GPIO_26 | GPIO26 | - | タクトスイッチ(SW5) | 
| 33 | GPIO_23 | GPIO23 | - | トグルスイッチ(SW4) | 
| 34 | - | GND | グランド | - | 
| 35 | GPIO_24 | GPIO24 | - | トグルスイッチ(SW3) | 
| 36 | GPIO_27 | GPIO27 | - | トグルスイッチ(SW2) | 
| 37 | GPIO_25 | GPIO25 | - | トグルスイッチ(SW1) | 
| 38 | GPIO_28 | GPIO28 | - | LED | 
| 39 | - | GND | グランド | - | 
| 40 | GPIO_29 | GPIO29 | - | 無線通信モジュール(リセット) |