ラズパイとAWS IoTを使った見守りシステム自作で学んだこと（３）ラズパイ物理構成とパッケージ導入

[「ラズパイとAWS IoTを使った見守りシステム自作で学んだこと（２）見守りProjectの設計（名前の設定）」](https://qiita.com/nsaito9628/items/da402829316549853d0f)からの続きです。ラズパイの環境構築手順について書きます。

## 物理仕様

#### Raspberry Pi
* Model: Raspberry Pi 4 Model B Rev 1.2
* microSD card: 32GB

#### スイッチング電源

* 5V/3.1A

#### センサー
二種類の赤外線センサーを使い分けしています
* 広範囲で３０cm以上の検知：NC型[焦電型人感センサー(HC-SR501)](https://www.amazon.co.jp/Ren-He-HC-SR501%E4%BA%BA%E4%BD%93%E8%B5%A4%E5%A4%96%E7%B7%9A%E6%84%9F%E5%BF%9C%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB-%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB%E7%84%A6%E9%9B%BB%E5%9E%8B%E8%B5%A4%E5%A4%96%E7%B7%9A%E6%A4%9C%E5%87%BA%E5%99%A8PIR%E3%83%A2%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3-%E3%83%9C%E3%83%87%E3%82%A3%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC%E3%83%A2%E3%82%B8%E3%83%A5%E3%83%BC%E3%83%AB/dp/B07DCKZS5S/ref=sr_1_9?keywords=%E4%BA%BA%E6%84%9F%E3%82%BB%E3%83%B3%E3%82%B5%E3%83%BC&qid=1661042432&sprefix=%2Caps%2C196&sr=8-9)
* ピンポイントで３０cmくらいまでの検知：NO型[拡散反射式障害センサー(E18-D80NK)](https://www.amazon.co.jp/gp/product/B07MRKXV9G/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)

当然ながらピンポイントで反射を見るE18-D80NKのほうがレスポンスが早いです。

NCタイプとNOタイプで後ほど設定するパラメーターの0/1が反転するので注意です。実際に購入して、同じ型番でも回路が変わってNOとNCが逆転していることがありましたのでご参考まで。

#### USBカメラ
ナイトビジョンの要否で二種類のカメラを使い分けしています
* [ロジクール Webカメラ C270n](https://www.amazon.co.jp/gp/product/B07QMKND9M/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&psc=1)
* [ELP ウェブカメラ 赤外線ナイトビジョン](https://www.amazon.co.jp/gp/product/B017ST5E8I/ref=ppx_yo_dt_b_search_asin_title?ie=UTF8&th=1)

## 配線
HC-SR501とE18-D80NKの両方とも３本のケーブルが出ています。それぞれ以下の[GPIOポート](https://www.raspberrypi.com/documentation/computers/os.html#gpio-and-the-40-pin-header)に接続します。

* VCC：GPIOの5V（Pin No.2 4の何れか）
* GNP：GPIOのGND（Pin No.6 9 14 20 25 30 34 39の何れか）
* 信号線：GPIO21（Pin No.40）

ケーブルとソケットはペンチで圧着しました。断線しないように一部はんだ付けで補強もしました。

## 起動用microSDカード
現時点（2022.08.20）ではRaspberry Pi Imagerの利用を推奨します。
詳説は他のサイトに譲ります「Raspberry Pi OS　インストール」等で検索すると沢山出てきます。

#### image作成
OSディストリビューションは
　Raspberry Pi OS (other) > Raspberry Pi OS Lite (64-bit) recommended)
を選択します

参考１：[公式サイト](https://www.raspberrypi.com/software/)
参考２：[Raspberry Pi OSのインストール – 公式Imager対応](https://www.indoorcorgielec.com/resources/raspberry-pi/raspberry-pi-os%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB/)

#### hostname/username
mustではないですが、imagerの詳細な設定のホスト名は(2)で決めたモノの名前にします。

ユーザー名もpiではなく任意のユーザー名にすることを強く推奨します。

#### ssh設定
imagerの詳細な設定でSSHを有効にするにチェックを入れます。（ここで公開鍵設定することを推奨しますがmustではありません）

#### wifi設定
wifi設定する場合はimagerの詳細な設定でSSIDとpskを入力する必要があります。「ラズパイ　wpa_supplicant.conf」等で検索すると解説にたどり着けます。wifi countryとlocaleも日本にします。
参考：[Wi-Fiパスワードを暗号化して設定する方法](https://raspida.com/wpa_passphrase)

#### ラズパイ起動
準備が出来たmicroSDカードをラズパイのスロットに差し込み電源ONの後、数分後に設定したホスト名でSSH接続が可能になります。なぜか名前解決できない場合がありましたが、割り振られたipアドレスを確認してSSHログインした後に再起動したらホスト名でログインできました。

## パッケージ導入

最初にPython3-dev、pip3とgitを導入します。(Desktop版OSを使う場合は不要)
```sh
sudo apt install -y python3-dev python3-pip git
python3 -m pip install --upgrade pip
```  

アップデートをかけます。
```sh
sudo apt update  
sudo apt -y upgrade  
```

cronの自動起動に必要なメーラーエージェント、awscli、dockerを導入します。
```sh
sudo apt install -y postfix docker awscli
```

openCVの利用に必要なライブラリーを導入します。
```sh
sudo apt install libatlas-base-dev libjasper-dev -y
sudo apt install ffmpeg  libcanberra-gtk3-module v4l-utils qv4l2 -y
```



mqtt通信用ライブラリーとaws-python-sdkを導入します。
```sh
pip3 install paho-mqtt boto3 --upgrade
```

awscliとsam cliを導入します。
```sh
sudo pip3 install awscli aws-sam-cli --upgrade
```

openCVとnumpyを導入します。
openCVは関連パッケージの依存解消を確認した上で導入時点の安定板を指定するのが良いでしょう。
```sh
pip3 install opencv-python==4.5.4.60
pip3 install numpy --upgrade
```

最後にコマンドからpythonで実行できるようにリンクをつくります。
```sh
cd /usr/bin
sudo rm python
sudo ln -s python3 python
cd
```

一番最初のdev、pip、git以外は束ねて[（１０）で.environment](https://qiita.com/nsaito9628/items/0339662ed04ba56bbb44)として実行します。
```sh:environment.sh
sudo apt update  
sudo apt -y upgrade  
sudo apt install -y postfix docker awscli
sudo apt install libatlas-base-dev libjasper-dev -y
sudo apt install ffmpeg  libcanberra-gtk3-module v4l-utils qv4l2 -y
pip3 install paho-mqtt boto3 --upgrade
sudo pip3 install awscli aws-sam-cli --upgrade
pip3 install opencv-python==4.5.4.60
pip3 install numpy --upgrade

cd /usr/bin
sudo rm python
sudo ln -s python3 python
cd
```

## 次回

[（４）cliでAWS IoTに新しいモノを登録し証明書を発行](https://qiita.com/nsaito9628/items/2ff6ab6d471537270e68)に続きます。