この文章では,小型センサロガーのピンアサインとともに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 | - | 無線通信モジュール(リセット) |