はじめに
Elixir で Raspberry Pi のピン配置を確認します。
pinout パッケージとは
pinout パッケージ は、Raspberry Pi やBeagleBone を含む一般的な組み込みデバイスを検出し、ピン配置図を出力します。
pinout パッケージ が提供する便利な関数いくつか試してみます。
pinout パッケージをインストール
お手元にElixirの使える組み込みデバイスがない方もいらっしゃると思いますので、ここでは PC 上のIExでpinout パッケージを試してみることにします。
PC のターミナルでIExを起動します。
iex
以下のコードを実行してpinout パッケージをインストールします。
Mix.install([{:pinout, "~> 0.1.3"}])
現在のボードのピン配置を印字
使い方は簡単です。Pinout.print/0
で現在のボードのピン配置図を印字します。
デバイスが検知できなかった場合は、Unknown Board
が印字されます。
Pinout.print()
おそらく PC はサポート対象外なのでデバイスの検知ができないことと思いますが、Raspberry Pi Zero W 上で実行した場合は以下のとおり出力されます。
╭------------------------╮
| oooooooooooooooooooo |
| 1ooooooooooooooooooo |
| Raspberry Pi Zero W |
| ╭---╮ ╭--╮ ╭--╮ |
╰--╰---╯-----╰--╯--╰--╯--╯
3v3 Power [1] [2] 5v Power
GPIO 2/I2C1 SDA [3] [4] 5v Power
GPIO 3/I2C1 SCL [5] [6] Ground
GPIO 4/GPCLK0 [7] [8] GPIO 14/UART TX
Ground [9] [10] GPIO 15/UART RX
GPIO 17 [11] [12] GPIO 18/PCM CLK
GPIO 27 [13] [14] Ground
GPIO 22 [15] [16] GPIO 23
3v3 Power [17] [18] GPIO 24
GPIO 10/SPI0 MOSI [19] [20] Ground
GPIO 9/SPI0 MISO [21] [22] GPIO 25
GPIO 11/SPI0 SCLK [23] [24] GPIO 8/SPI0 CE0
Ground [25] [26] GPIO 7/SPI0 CE1
GPIO 0/EEPROM SDA [27] [28] GPIO 1/EEPROM SCL
GPIO 5 [29] [30] Ground
GPIO 6 [31] [32] GPIO 12/PWM0
GPIO 13/PWN1 [33] [34] Ground
GPIO 19/PCM FS [35] [36] GPIO 16
GPIO 26 [37] [38] GPIO 20/PCM DIN
Ground [39] [40] GPIO 21/PCM DOUT
他のボードを確認してみたい場合
実は、現在のボード以外のボードのピン配置図を確認することもできます。
まず、pinout パッケージ がサポートしているボードの名称を列挙します。
Pinout.known_boards()
["BeagleBone Black", "BeagleBone Black Wireless", "BeagleBone Blue",
"BeagleBone Green Wireless", "GRiSP2", "MangoPi MQ-Pro", "NPi i.MX6 ULL",
"PocketBeagle", "Raspberry Pi 2B", "Raspberry Pi 3B", "Raspberry Pi 3B+",
"Raspberry Pi 400", "Raspberry Pi 4B", "Raspberry Pi T-Cobbler",
"Raspberry Pi Zero 2 W", "Raspberry Pi Zero W"]
これらのボード名を識別子としてPinout.print/1
に渡すと、現在のボードに関係なくピン配列を印刷できます。
Pinout.print("Raspberry Pi 4B")
╭----------------------------------╮
| oooooooooooooooooooo ╭-----╮
| 1ooooooooooooooooooo | |
| ╰-----╯
| ╭-----╮
| Raspberry Pi 4B | |
| ╰-----╯
| ╭-------╮
| ╭------╮ | |
| ╭--╮ | | ╰-------╯
╰--╰--╯----╰------╯-----------------╯
3v3 Power [1] [2] 5v Power
GPIO 2/I2C1 SDA [3] [4] 5v Power
GPIO 3/I2C1 SCL [5] [6] Ground
GPIO 4/GPCLK0 [7] [8] GPIO 14/UART TX
Ground [9] [10] GPIO 15/UART RX
GPIO 17 [11] [12] GPIO 18/PCM CLK
GPIO 27 [13] [14] Ground
GPIO 22 [15] [16] GPIO 23
3v3 Power [17] [18] GPIO 24
GPIO 10/SPI0 MOSI [19] [20] Ground
GPIO 9/SPI0 MISO [21] [22] GPIO 25
GPIO 11/SPI0 SCLK [23] [24] GPIO 8/SPI0 CE0
Ground [25] [26] GPIO 7/SPI0 CE1
GPIO 0/EEPROM SDA [27] [28] GPIO 1/EEPROM SCL
GPIO 5 [29] [30] Ground
GPIO 6 [31] [32] GPIO 12/PWM0
GPIO 13/PWN1 [33] [34] Ground
GPIO 19/PCM FS [35] [36] GPIO 16
GPIO 26 [37] [38] GPIO 20/PCM DIN
Ground [39] [40] GPIO 21/PCM DOUT
Nerves + Livebook
まだ、実際の組み込みハードウェア(Raspberry Pi 等)を使ったことがない方、組み込みの経験があるけど Elixir や Nerves を使ったことがない方にはNerves Livebookをオススメします。
Nerves Livebookを使用すると、何も構築せずに実際のハードウェアで Nerves プロジェクトを試すことができます。 数分以内に、Raspberry Pi や Beaglebone で Nerves を実行できるようになります。 Livebook でコードを実行し、ブラウザーで快適に Nerves チュートリアルを進めることができます。
有志の方々が Nerves Livebook のセットアップ方法ついてのビデオを制作してくださっています。ありがとうございます。
Livebook のノートブック上でコードを実際に実行しながら進められるので、楽しく効率的に学べます。例えばブラウザ上で Wi-Fi の設定もできます。
pinout パッケージ にもノートブックがあります。
インターネットで Raspberry Pi のピン配置確認
https://pinout.xyz も便利です。
最後に一言
本記事は 闘魂 Elixir #65 の成果です。ありがとうございます。