初心者向けRaspberryPi講座「RaspberryPiでディープラーニング」

# はじめてのRaspberryPi
## RaspberryPiとは
学校のコンピュータ教育用に開発されたSBC（シングルボードコンピュータ）です。昨年時点、全世界で累計1700万台出荷されその多くは企業が購入しています。GoogleやAmazonなどクラウド系の企業では評価ボードとして採用するなど、IoTのエッジデバイスとしてのデファクトスタンダードとなっています。また、AIの分野でもTensorFlowの最新版が利用できるようになりました。
[先日の報道はこちら](https://japan.zdnet.com/article/35123653/)
[TensorFlowのinstall方法はこちら](https://www.tensorflow.org/install/install_raspbian)

 #エッジデバイス：LinuxなどのOSを搭載したインテリジェントデバイス
## RaspberryPiの特徴
- 安価であること

　　　日本円で4,500円で購入できる
　　　SDカード、USBキーボード・マウス
　　　HDMIディスプレイとUSB電源でコンピュータが完成する

- Linuxを搭載していること

　　　常に最新の状態にアップデートすることができる
　　　常に最新のアプリケーションが利用できる

- ARMアーキテクチャであること

　　　低消費電力であり、IoT時代のプロセッサ

- 豊富なインターフェイス

　　　GPIOと呼ばれる汎用入出力、USB、HDMI
## RaspberryPiの開発・実行環境
専用のRaspbian(debian 9[stretch])が用意されている
カーネルバージョンは4.14
AI開発で良く利用されるPC版のUbuntuもdebian系であり親和性は良い

[ラズバイのドキュメントはこちら](https://www.raspberrypi.org/documentation/)

###まずSWAP領域を設定します

```
sudo nano /etc/dphys-swapfile 
CONF_SWAPSIZE=1024 # SDが３２Gであれば2048でもよい
sudo service dphys-swapfile stop
sudo service dphys-swapfile start
free -h
``` 
### RaspbianのLinuxコマンド
|コマンド|説明|
|----------|--------------------------------------|
| apt| APTパッケージ管理 (update, upgrade, install)|
| cd|カレントディレクトリの変更 (.. , .  , -l , -a)|
| ls|ディレクトリーの表示 (-l) |
| mkdir|ディレクトリーの作成|
| cp|ファイルのコピー|
| mv|ファイルの移動|
| cat|ファイルの連結、表示|
| chmod|ファイルのアクセス権を変更|
| chown|ファイルのオーナーを変更|
| tail|ファイルの最後の数行を表示|
| less|テキストファイルの閲覧、moreの拡張版|
| grep|パターンマッチ|
| diff|差分表示|
| dd|ファイル変換とコピー|
| rm|ファイルの削除|
| find|ファイル検索|
| du|ディスク情報|
| df|ディスク空き容量|
| printenv|環境変数の表示|
| ps|プロセス状態|
| kill|プロセス停止|
| uname|カーネル情報|
| shutdown|システム停止|
| poweroff|電源オフ|
| reboot|システム再起動|
| su|スーパーユーザーに変更|
| sudo|スーパーユーザー権限で実行|
| man|マニュアル|
| top|システム監視ツール|
| raspi-config|ラズパイ設定|
| dmesg|カーネルログ|
| free|メモリー使用量|
| history|コマンドの履歴|
| nano|スクリーンエディタ|

### Kernelをダウンロードしよう
gitでカーネルソースをダウンロードします

```
sudo apt install git bc
git clone --depth=1 https://github.com/raspberrypi/linux
```
[ラズパイドキュメントはこちら](https://www.raspberrypi.org/documentation/linux/kernel/building.md)
### Kernelをコンパイルしよう
カーネルの定義メニューを表示するためのライブラリーをインストールします
次にソースプログラムのディレクトリへ移動します。2500万行あります。Makefileの先頭にはVersionが表示されています。現バージョンのリビジョンアップ版です。

```
sudo apt install libncurses5-dev
cd linux
nano Makefile
```
```
VERSION = 4
PATCHLEVEL = 14
SUBLEVEL = 59
EXTRAVERSION =
NAME = Petit Gorille
```

ラズパイ用のコンフィグファイルを指定します
bcm2709の設定が.configにコピーされます

```
KERNEL=kernel7
make bcm2709_defconfig
```
メニューを起動します
Linuxカーネルを構成します

```
make menuconfig
```
カーネルイメージを作成します
-j4は４コア全てを使ってコンパイルします。約３０分で終わります。

```
make -j4 zImage
sudo mv /boot/kernel7.img /boot/kernel7.img.org #退避
sudo cp /home/pi/linux/arch/arm/boot/zImage /boot/kernel7.img
```
[ラズパイカーネルのドキュメントはこちら](https://www.raspberrypi.org/documentation/linux/kernel/configuring.md)

###開発環境と便利なツール
１．マークダウンエディタ（ビューアー）

```
sudo apt install retext
```
２．Jupyter notebook

```
sudo pip3 install jupyter
```
jupyterの設定ファイルを作成するスクリプトを以下の参考サイトから取り込んで実行する
jupyterを自動実行する設定を以下の参考サイトから取り込んで実行する
[設定（参考サイト）はこちら](https://qiita.com/nbhr/items/68fd9c3f6a31a797a7a8)
お使いのwebブラウザから http://raspberrypi.local:8888/ にアクセスするとログイン画面が表示されます

３．SORACOM Airを使った３G通信

USBモデムを使ってインターネットに接続する

```
sudo apt install -y wvdial
sudo wvdial
```
[設定（参考サイト）はこちら](https://qiita.com/tomo-chan/items/a4f7ad511a90ab91d06a)

４．Movidius (NEURAL COMPUTE STICK)

USBスティックが推論エンジンとなり高速演算が可能となる

```
git clone http://github.com/Movidius/ncsdk #一時的に停止中
```
[インテルのDocumentサイトはこちら](https://movidius.github.io/ncsdk/)

５．日本語入力ソフトとフォントのインストール

日本語キーボードで半角/全角キーを押すことで漢字モードに切り替わります

```
sudo apt install ibus-mozc fonts-noto-cjk
```

６．Node-REDのインストール

以下のbashコマンドを実行してください

```
bash <(curl -sL https://raw.githubusercontent.com/node-red/raspbian-deb-package/master/resources/update-nodejs-and-nodered)
```
[Node-RED日本ユーザ会はこちら](https://nodered.jp/docs/getting-started/)