Raspberry Pi3のインストール方法
必要なもの
- Raspberry Pi3
- 32 GB SDCARD
- HDMIモニタ
- USBキーボード
はじめに
Stretch特有の問題回避などがあるので、他のOS(Jessie 2017等)ではOS周りの設定方法が異なります。
古いStretchにはI2Cに問題があります。2018-04-18や2018-06-27ではカーネル修正が必要になります。問題がある場合はトラブルシューティングを参照してください。
Dockerで用意しているRobotCarの環境には影響ないので、別のOSの場合はDocker部分だけ参考にしてください。
目次
- Stretch Liteインストール
- raspi-config
- SSH有効化
- SPI有効化
- I2C有効化
- WiFi設定
- ホスト名変更
- キーボードレイアウト変更
- TimeZone変更
- SSH有効化
- RobotCar ソースコードダウンロード
- OS環境設定
- RobotCar Docker環境ダウンロード
- Dockerコンテナ作成
- 自動起動設定
- トラブルシューティング
- [I2C Kernel/smbus修正]
- [ホスト名変更]
- [I2C Kernel/smbus修正]
Stretch Liteインストール
Raspberry Pi3の2019年3月時点での最新OSはRaspbian Stretchなので、Stretch Lite 2018-11-13をベースとしたインストール方法を記載します。
RaspbianのリリースノートでOS更新情報を確認してください。
多くの変更があるバージョンはWiFi、I2C、SPI等の設定方法が変わっている可能性があります。最新のOSをベースに使う時はそれに合わせて設定してください。
ベースOSのI2C、SPI有効化が正常に行えれば、Dockerで用意しているRobotCar環境は動作するかと思います。
デスクトップ機能は不要なので、容量の少ないRASPBIAN STRETCH LITEをダウンロードします。
ダウンロードURL:https://www.raspberrypi.org/downloads/raspbian/
ダウンロードしたイメージファイルをSDCARDに書き込みます。Windows PCならWin32DiskImagerで書き込む事が出来ます。
RobotCarの環境に必要な容量が多いのでSDCARDは32GB以上を使うようにしてください。
Raspberry Piのデフォルトログインユーザは、
user: pi
password: raspberry
になります。
raspi-config
ここではSSH/SPI/I2C/WiFiを有効にします。
rootユーザでraspi-configを実行し、各設定を行います。
1 |
|
SSH有効化
Raspberry Pi3にネットワーク経由でログインするために必須となるSSHデーモンを有効化します。
Interfacing Options
項目にあるSSHを有効化します。
SPI有効化
RobotCarのボタン動作のためにSPIを有効化します。
Interfacing Options
項目にあるSPIを有効化します。
I2C有効化
RobotCarの距離センサー動作のためにI2Cを有効化します。
Interfacing Options
項目にあるI2Cを有効化します。
WiFi設定
Raspberry Pi3をWiFiに接続します。
Network Options
項目から、WiFiの国別コードとしてJPを設定します。
次に、WiFiのSSID、パスワードを入力してください。
この設定は、
/etc/wpa_supplicant/wpa_supplicant.conf
ここに保存されます。
パスワードを暗号化する場合は、以下のコマンド実行で表示されるpsk=xxxxxxxxの部分でpskを書き換えてください。
1 |
|
- 2019/03/07 追記
wpasupplicantはシステムのデフォルトセキュリティ設定を見ていません。
システムの現在の設定はTLS1.2とsecurity level 2です。
TLS1.2未満のネットワークに接続しないことを確信出来る場合は以下の設定を追加してください。
ルータ機器が古い場合は接続出来なくなる恐れがあるため、ここは設定しないでおいてください。
1 2 3 |
|
ホスト名変更
Raspberry Pi3をたくさん使っていると、どれを使っているのかわからなくなることがあるので、ホスト名を変更します。
これは動作には必須ではありません。
キーボードレイアウト変更
OSのデフォルトでは英語キーボードになっているため、日本語キーボードを使う場合はレイアウトをOADG 109Aに変更した方が使いやすくなります。
TimeZone変更
OSのデフォルトではUTCになっているため、タイムゾーンをAsia/Tokyoに変更した方が時間がわかりやすくなります。
RobotCar ソースコードダウンロード
1 2 3 4 5 6 7 |
|
OS環境設定
OSのアップデート、bashの設定、vim設定等を行います。動作には必須ではありませんが、ログインしなおすと少し見やすくなります。
1 2 3 4 5 6 7 8 9 10 11 12 |
|
dockerをインストールすると再起動が必要になります。
dockerインストール直後は以下のようなエラーが表示されますが、スルーして再起動してください。
1 2 3 |
|
再起動後、dockerが利用可能かどうかを確認します。
1 |
|
まだdockerコンテナを作成していないため、dockerが利用可能であれば以下のような出力になります。
1 |
|
RobotCar Docker環境ダウンロード
1 |
|
Dockerコンテナ作成
docker-ceの場合
--network=hostの指定が可能になり、利用するポート番号指定を簡略化できます。
- Jupyterのみ起動
1 2 3 4 5 6 7 |
|
- level1_car走行用(start_button.pyを実行するコンテナを作成)
1 2 3 4 5 6 7 |
|
docker.ioの場合(古いDockerバージョン)
--networkオプションが使えないため、利用するポート番号を指定する必要があります。
- Jupyterのみ起動
1 2 3 4 5 6 7 |
|
- level1_car走行用(start_button.pyを実行するコンテナを作成)
1 2 3 4 5 6 7 |
|
jupyterのプロセスをkillするとdockerコンテナは終了してしまいますが、start_button.pyのプロセスをkillしても、dockerコンテナは終了しません。
このため、自動起動のコンテナにログインしてコードを実行する場合は、start_button.pyのプロセスをkillするとJupyterのみ起動したコンテナと同じように利用出来ます。
docker runで指定したコンテナの設定が変わる訳では無いため、コンテナを再起動するとstart_button.pyとjupyterのプロセスが起動した状態になります。
自動起動設定
Raspberry Pi3が起動したら、RobotCarを自動起動するように設定します。
/etc/rc.localを編集し、docker start container_idを追加します。
Dockerコンテナのうち、start_button.pyを実行しているコンテナを指定することでRobotCarが自動起動になります。
1 |
|
...
docker start 16f3bd352ebdexit 0
トラブルシューティング
I2C Kernel/smbus修正
- 2019/03/07 追記
2018-11-13-raspbian-stretch-liteでは問題が解決しているのでここは不要です。
Raspbian Stretch Liteの古いOSではraspi-configでI2Cを有効にしてもsmbusコード実行時にエラーが発生します。原因はKernelにあるようなので修正します。
1 2 3 4 5 6 7 8 9 |
|
参考:
* https://github.com/raspberrypi/firmware/issues/867
* https://www.raspberrypi.org/forums/viewtopic.php?t=192958
* https://github.com/raspberrypi/firmware/issues/828
hostname変更
raspi-config
コマンドを使わずに設定ファイルを直接修正してホスト名を変更する場合、
/etc/hostnameを書き換えます。
1 |
|
RobotCar
/etc/hostsを書き換えます。
1 |
|
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters127.0.1.1 RobotCar
再起動します。
1 |
|
再ログイン後、ホスト名を確認します。
1 |
|
Static hostname: RobotCar
Icon name: computer
Machine ID: 86e73d2e6bbb41bf89537d5bcf63f676
Boot ID: 598d925b7ba3449dbc0c614cfb761b37
Operating System: Raspbian GNU/Linux 9 (stretch)
Kernel: Linux 4.14.30-v7+
Architecture: arm