番外編 UPボード (2) GPIOピンでLチカ

 UPボード(UP Squared)は、GPIOが用意されています。ラズパイと同じ40ピンです。データシートによれば、割り付けられている信号は異なりますが、電源関係は同じです。

物理ピン番号 機能 物理ピン番号 機能
1 +3.3V 2 +5V
3 I2C1_SDA 4 +5V
5 I2C1_SCL 6 GND
7 ISH_GPIO0 8 UART_TX
9 GND 10 UART_RX
11 SD2_CMD 12 I2S2_CLK
13 SD2_CLK 14 GND
15 SD2_SD0 16 SD2_SD1
17 +3.3V 18 SD2_SD2
19 SPI2_MOSI 20 GND
21 SPI2_MISO 22 SD2_SD3
23 SPI2_CLK 24 ISH_SPI2_CS0
25 GND 26 ISH_SPI2_CS1
27 I2C0_SDA 28 I2C0_SCL
29 ISH_GPIO2 30 GND
31 ISH_GPIO3 32 PWM0
33 PWM1 34 GND
35 I2S2_FRM 36 GPIO27
37 GPIO13 38 I2S2_RX
39 GND 40 I2S2_TX

  • 28 GPIO-capable pins
  • 2 I2C ports:
    • mode supported Standard, Fast, Fast Plus, High Speed
  • SPI0:
    • max speed 25MHz
    • 2 Chip enable
    • supported modes 0 and 2
  • SPI1:
    • max speed 25MHz
    • 3 Chip enable
    • supported modes 0 and 2
  • UART1
    • max baudrate 3Mbaud
    • hardware flow control
  • 3 PWM output
  • 1 i2s port

RPi-GPIOライブラリでLチカ

 ラズパイにもあるRPi-GPIOライブラリを導入します。pythonライブラリを管理してくれるpipを利用します。Pythonは、執筆時点で2.xと3.xがあります。python2.xは2019年末でサポートが終わりますから、python3.xを利用します。ラズパイと同じく両方のバージョンが入っているので、ライブラリの導入は、バージョン3を意識して行います。ライブラリは、デフォルトだとバージョン2にインストールされます。

sudo apt-get install python3-pip
pip3 install RPi.GPIO

 pip3をインストールして、そのpip3を使ってRPi.GPIOライブラリをインストールします。

pip3 list

で、本マシンにインストールされたライブラリ一覧が表示されます。バージョン0.7.0が入ったようです。

 このライブラリ、ピン番号はラズパイに合わせて記述します。LEDを4につないでいます。GPIO4は物理ピンでは7番です。LEDは定電流ダイオード内蔵を使っているので、電流制限抵抗をつけていません。

import RPi.GPIO as GPIO
import time

# Pin Definitons:
ledPin = 4

# Pin Setup:
GPIO.setmode(GPIO.BCM)
GPIO.setup(ledPin, GPIO.OUT) # LED pin set as output
print("Here we go! Press CTRL+C to exit")

try:
while 1:
GPIO.output(ledPin, GPIO.HIGH)
time.sleep(0.5)
GPIO.output(ledPin, GPIO.LOW)
time.sleep(0.5)
except KeyboardInterrupt: # If CTRL+C is pressed, exit cleanly:
GPIO.cleanup() # cleanup all GPIO

 現在のラズパイでは、GPIO、I2C、SPI、UARTなどは、ユーザpiのグループに属していて、root権限なしでアクセスができます。今回インストールしたubilinuxではそのような対応はされていません。

 上記のプログラムをテキスト・エディタKateにコピーし、home/ubilinuxにled1.pyで保存します。ターミナルから、

sudo python led1.py

で実行します。

I2Cインターフェース

 i2cdetectなどのツールは、i2c-toolsという一連のインストール・ファイルに入っています。apt-getすると、すでに最新版が入っているといわれました。

sudo i2cdetect -y 1

 しかし、内部にあるデバイスは表示されますが、GPIOにつないだセンサなどは表示されませんでした。/devの下にたくさんのI2C-xがあります。0、1、2に何らかのデバイスがつながっているようです。もし、GPIOにつながったデバイスが利用できるようになったら、続きの記事を書く予定です。