Raspberry Pi 3 Model B+備忘録


## Raspberry Piとは

Raspberry Piとはイギリスのラズベリーパイ財団によって発売されているシングルボードコンピュータ。OSは専用Linux OSのRaspberry Pi OSが提供されており、数千円でWi-Fi・イーサネット・Bluetooth・USB・GPIOのインターフェースが揃ったコンピュータが買えるのが特徴。

### 用意するもの
ラズパイ本体とOSを入れるかつストレージの役目をするmicroSD、周辺機器が必要。
揃えるのが大変な人はAmazonですべて揃うかつお安いので、Amazonがおすすめ。

- Raspberry Pi 3 Model B+本体
- microSDカード
- microSDリーダー
- 専用電源アダプター
- 専用ケース
- ブレッドボード
- LEDライト
- 抵抗
- ジャンパー線

### Step1. OSのダウンロード&インストールする
以下のサイトからインストーラーをダウンロードし、起動してmicroSDへOSを書き込む。
https://www.raspberrypi.com/software/

### Step2. ラズパイでOS起動&初期設定 
ラズパイにmicroSDを差し込み、電源アダプターを接続して電源を入れ、USBポートにマウス&キーボード、HDMIでディスプレイと接続し、OSを起動して画面に従って初期設定をする。

 - 左図がラズパイ表面。左にUSBポートが4つ、イーサネットが1つある。上部にHDMIと電源端子がある。
 - 右図がラズパイ裏面。右にmicroSDポートがある。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/6aea273e-58eb-73be-a21e-b747e22c8b03.jpeg" width="50%" height=50% ><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/22ae2e2d-ceb3-426a-22bf-389a74fcbdfb.jpeg" width=50% height=50% >

 - 起動すると以下のような画面がディスプレイに映る。よくあるLinuxOS画面。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/e78473ab-e0f7-4e1d-e425-d686191ca272.png" width="70%" height=70% >

基本的なUnixコマンドももちろん使える。以下、ls,cd,pwd,ssh,wget,curl,awk.
![2021-10-10-212532_1824x984_scrot (2).png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/f27e1301-a05b-567b-5c52-9a21ac8f7dce.png)

### Rasbian OSの初期設定
 TerminalでRoot権限で設定メニューを表示する・

```terminal
sudo su
raspi-config
```
 - タイムゾーンを日本へ変更
   4.Localisation Optins → I1 Change Timezone →　Asia →　Tokyo

 - キーボードの設定
   4.Localisation Optins → I3 Change Keybouard Layout →　Generious 104 →　Other →　Japanese →　Japanese – Japanese →　The default for the keyboard Layout → No compise key -> No

 - SSHを有効にする
   5.Interfacing Options →　P2 SSH →　YES →　OK

 - microSDカードの空き領域を拡張する
   7.Advanced Options-> A1 Expand Filesystem Ensuress -> Yes(Reboot)

 - ファームウェアのアップデート
   8.Update -> OK


### Step3. Python Lチカ
Python module RPIでGPIOピンを制御して、対応Pinに接続したLEDを光らせてみた。
 
```python
import RPi.GPIO as GPIO
import time 
PNO1 = 17 # 抵抗に繋いだ側の、GPIOポート番号
PNO2 = 27
PNO3 = 22

GPIO.setmode(GPIO.BCM)
GPIO.setup(PNO1, GPIO.OUT)
GPIO.setup(PNO2, GPIO.OUT)

for i in range(100):
    GPIO.output(PNO1, GPIO.HIGH) # 点灯
    GPIO.output(PNO2, GPIO.HIGH) 
    time.sleep(0.1)
    GPIO.output(PNO1, GPIO.LOW) # 消灯
    GPIO.output(PNO2, GPIO.LOW) 
    time.sleep(0.1)

GPIO.cleanup()
```

### まとめ
Raspberry Pi 3 Model B+備忘録をまとめた。大まかな流れは購入→OS install→GPIO接続→Python codeと思っているより簡単だった。次はディスプレイを付けたり、サーバー化してSQLでデータデポジトリにしたりしてみようと思う。

### 付録1 完成写真
ケースに入れるとこんな感じの外観。このケースはGPIOが外からさせるようになっている。
大きさは7×9.3×3cmの手のひらサイズ。

<img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/4ae40d17-e3ac-0119-2adf-a7afc7c0135c.jpeg" width="40%" height=40% ><img src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/483556/db7eba6a-aeda-b9b8-ad00-04ab405f34e8.jpeg" width=40% height=40% >

### 付録2 GPIOピン位置
gpio readallコマンドで確認可能。

```
#+-----+-----+---------+------+---+---Pi 3B+-+---+------+---------+-----+-----+
# | 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  | 0 | IN   | TxD     | 15  | 14  |
# |     |     |      0v |      |   |  9 || 10 | 1 | IN   | 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 | OUT  | 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 3B+-+---+------+---------+-----+-----+
```