Raspberry Pi Imager 1.8.5を使ったインストールについては、こちらのページを参照してください。 以前のバージョンよりも、Wifiの設定など便利な設定ができるようになっています。
Raspberry Pi 2/3/4 に Ubuntu Server 20.4をインストールして、MIDIのプログラムを書くまでの初期設定を記載します。Raspberry Pi 2 の場合、32bit版のみインストールできます。、Pi 3/4 は32bit版、64bit 版の両方がインストール可能です。 インストールは、Raspberry Pi Imagerをhttps://www.raspberrypi.com/software/ からダウンロードするのが便利です。 下のイメージはRaspberry Pi Imager使ってインストールする手順を示しています。 「OSを選ぶ」、「ストレージを選ぶ」、「書き込む」の順です。マウスオーバーで拡大します。
ここではUbuntu Server 20.4をインストールしています。
Raspberry Piに、Micro SDカードを差し込み、ディスプレイとUSBキーボードを接続します。電源を入れると、しばらく初期設定が始まります。Login:が表示されてログイン待ちとなります。Ubuntuは初期状態では以下のLogin IDとパスワードでログインできます。
> Login:ubuntu > Password:ubuntu
ログインすると、パスワードを変更するように促されます。Currentにはubuntuと入力します。その後、新しいパスワードを入力して下さい。
you are required to change your password immediately > Current password:ubuntu > New password: > Retype new password:
C, C++の開発環境を整えます。
> sudo apt install net-tools > sudo apt install gcc g++ make cmake > sudo apt install libi2c-dev git-core
GPIOを使いたいのでWiringPiをインストールします。
> git clone https://github.com/WiringPi/WiringPi.git > cd WiringPi > ./build
ASIOの開発環境をインストールします。
> sudo apt install libasound2 libasound-dev
これで、MIDIのプログラムをコンパイルできます。続いてaconnectとpmidiを使いたいので以下をインストールしておきます。
> sudo apt install alsa-utils pmidi
ついでにjackの環境をインストールします。
> sudo apt install jackd2 libjack-jackd2-dev
日本語キーボードの設定には、raspi-configを使える場合と使えない場合があります。何が違うのか良くわかっていません。
> sudo apt install raspi-config
raspi-configがインストールできない場合は以下のコマンドを試してみてください。
> sudo dpkg-reconfigure keyboard-configuration*
Raspberry PiにLEDを接続して点滅させるLチカ、WiringPiのライブラリを使ってC言語のプログラムを書く時、多少悩みましたので記録しておきます。 Raspberryの物理的なピンは40ピンあり、それぞれのピンに以下のような役割が配置されています。試しに、右下の3つのピン、 GPIO.16, GPIO.20, GPIO.21にLEDを接続します。物理的ばピンの番号は、36,38,40です。
3V3 power | 1 | 2 | 5V power |
GPIO2(SDA) | 3 | 4 | 5V power |
GPIO3(SLC) | 5 | 6 | Ground |
GPIO4(GPCLK0) | 7 | 8 | GPIO14(TXD) |
Ground | 9 | 10 | GPIO15(RXD) |
GPIO17 | 11 | 12 | GPIO18(PCM_CLK) |
GPIO27 | 13 | 14 | Ground |
GPIO22 | 15 | 16 | GPIO23 |
3V3 power | 17 | 18 | GPIO24 |
GPIO10(MOSI) | 19 | 20 | Ground |
GPIO9(MISO) | 21 | 22 | GPIO25 |
GPIO11(SCLK) | 23 | 24 | GPIO8(CE0) |
Ground | 25 | 26 | GPIO7(CE1) |
GPIO0(ODSD) | 27 | 28 | GPIO1(ID_SC) |
GPIO5 | 29 | 30 | Ground |
GPIO6 | 31 | 32 | GPIO12(PWM0) |
GPIO13(PWM1) | 33 | 34 | Ground |
GPIO19(PCM_FS) | 35 | 36 | GPIO16 |
GPIO26 | 37 | 38 | GPIO20(PCM_DIN) |
Ground | 39 | 40 | GPIO21(PCM_DOUT) |
WiringPiを使って、Lチカするためのピンの番号は16,20,21でも、36,38,40でもなく、 readallコマンドで操作するピン番号を調べる必要があります。 Termialでreadallを入力すると以下のように表示が出ます。wPiと書かれている欄が制御するピン番号です。 GPIO.16, GPIO.20, GPIO.21は、ピン27, 28 ,29 を制御します。
> gpio readall +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | | | 3.3v | | | 1 || 2 | | | 5v | | | | 2 | 8 | SDA.1 | IN | 1 | 3 || 4 | | | 5v | | | | 3 | 9 | SCL.1 | IN | 1 | 5 || 6 | | | 0v | | | | 4 | 7 | GPIO. 7 | IN | 1 | 7 || 8 | 1 | ALT0 | TxD | 15 | 14 | | | | 0v | | | 9 || 10 | 1 | ALT0 | RxD | 16 | 15 | | 17 | 0 | GPIO. 0 | IN | 0 | 11 || 12 | 0 | IN | GPIO. 1 | 1 | 18 | | 27 | 2 | GPIO. 2 | IN | 0 | 13 || 14 | | | 0v | | | | 22 | 3 | GPIO. 3 | IN | 0 | 15 || 16 | 0 | IN | GPIO. 4 | 4 | 23 | | | | 3.3v | | | 17 || 18 | 0 | IN | GPIO. 5 | 5 | 24 | | 10 | 12 | MOSI | IN | 0 | 19 || 20 | | | 0v | | | | 9 | 13 | MISO | IN | 0 | 21 || 22 | 0 | IN | GPIO. 6 | 6 | 25 | | 11 | 14 | SCLK | IN | 0 | 23 || 24 | 1 | IN | CE0 | 10 | 8 | | | | 0v | | | 25 || 26 | 1 | IN | CE1 | 11 | 7 | | 0 | 30 | SDA.0 | IN | 1 | 27 || 28 | 1 | IN | SCL.0 | 31 | 1 | | 5 | 21 | GPIO.21 | IN | 1 | 29 || 30 | | | 0v | | | | 6 | 22 | GPIO.22 | IN | 1 | 31 || 32 | 0 | IN | GPIO.26 | 26 | 12 | | 13 | 23 | GPIO.23 | IN | 0 | 33 || 34 | | | 0v | | | | 19 | 24 | GPIO.24 | IN | 0 | 35 || 36 | 0 | IN | GPIO.27 | 27 | 16 | | 26 | 25 | GPIO.25 | IN | 0 | 37 || 38 | 0 | IN | GPIO.28 | 28 | 20 | | | | 0v | | | 39 || 40 | 0 | IN | GPIO.29 | 29 | 21 | +-----+-----+---------+------+---+----++----+---+------+---------+-----+-----+ | BCM | wPi | Name | Mode | V | Physical | V | Mode | Name | wPi | BCM | +-----+-----+---------+------+---+---Pi 2---+---+------+---------+-----+-----+
wPiの欄が、ピン番号として必要な情報です。プログラムは以下のようになります。 blink.cとして保存します。
#include <wiringPi.h> #define GPIO16 27 #define GPIO20 28 #define GPIO21 29 int main (void) { wiringPiSetup () ; pinMode (GPIO16, OUTPUT) ; pinMode (GPIO20, OUTPUT) ; pinMode (GPIO21, OUTPUT) ; digitalWrite (GPIO16, LOW) ; //消灯 digitalWrite (GPIO20, LOW) ; //消灯 digitalWrite (GPIO21, LOW) ; //消灯 while (1) { digitalWrite (GPIO21, LOW) ; //GPIO21消灯 digitalWrite (GPIO16, HIGH) ; //GPIO16点灯 delay (1000) ; //1秒待つ digitalWrite (GPIO16, LOW) ; //GPIO16消灯 digitalWrite (GPIO20, HIGH) ; //GPIO20点灯 delay (1000) ; //1秒待つ digitalWrite (GPIO20, LOW) ; //GPIO20消灯 digitalWrite (GPIO21, HIGH) ; //GPIO21点灯 delay (1000) ; //1秒待つ } return 0 ; }
以下のコマンドでコンパイルします。コンパイルに成功すると./blinkで動作します。
>gcc -oblink blink.c -lwiringPi >./blink