Skip to content

Raspberry Pi環境構築

Kaoru Tisen edited this page Dec 5, 2018 · 10 revisions

本プロジェクトでは,Slackに投稿するためのハードウェアとしてRaspberry Pi Zero WH 3B(にアップデート)を利用しています.
本記事では,Raspberry Pi Zero WH 3Bのセットアップについて,実際に行った手順をもとに,簡単な説明をします.

ハードウェア/接続セットアップ

ネットワーク接続

WiFi接続

ネットワークへはWiFiで接続します.通常,WPA2-PSKでは簡単な手順でこのセクションは終了しますが,大学ネットワークに接続して利用する都合上,ここではWPA2-PEAPを利用する必要が有ります.このための手順が複雑で,明確で決定的なドキュメントを見つけられなかったため,ここで詳しく説明します.
先ずは以下のファイルを次のように編集しましょう:
/etc/wpa_supplicant/wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=JP

network={
        ssid="eduroam"
        scan_ssid=1
        key_mgmt=WPA-EAP
        eap=PEAP
        identity="[学籍番号]@shibaura-it.ac.jp"
        password=hash:xxxxxxxx
        phase1="peaplabel=0"
        phase2="auth=MSCHAPV2"
}

ハッシュ化されたパスワードはecho -n "[パスワード]" | iconv -t utf16le | openssl md4で求まります.
上の設定を自動で生成するプログラムを用意したので,必要に応じてご利用ください.
編集が終わったら,次のコマンドを実行します.wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf -B
/etc/wpa_supplicant/wpa_supplicant.confファイルを確認し,もし変更されていれば,また上と同じ内容に書き換えて,再起動します.
この手順で接続が完了します.
詳細はこの記事がよくまとまっていて良いでしょう.

ソフトウェアセットアップ

Docker環境構築

Raspberry PiからI2C入出力,Slackへの投稿を行うために,ドキュメント/ライブラリが多くコードが短くメンテナンスがしやすいPythonをメインの開発言語として選択しました.
本セクションではDocker,Python,pip,pipenvの環境構築について説明します.
旧記事も残しますが,本セクションの内容は,Raspberry Piのアップデートによる性能向上に伴い環境をDockerに移行した為,大幅に変更しています.

Dockerインストール

Dockerは最新のものを簡単にインストールする為に,公式配布のスクリプトを利用します.

$ curl -sSL https://get.docker.com/ | sh
$ sudo usermod -aG docker [username]

Dockerをインストールしたら,リポジトリ内のスクリプトが基本的に自動でDocker buildなどを行ってくれます.これで環境構築は終わりです.

Python環境構築(旧環境構築記事)

Pythonインストール

Raspberry Pi上でapt install python3でインストールできるのは記事記載現在でPython3.5になっています.
手元の開発環境ではPython3.7を使っており,pipenvもこれに合わせて作成しているので,Raspberry Pi上のPythonバージョンもこれに合わせるため,Python3.7をコンパイル,インストールします.

$ sudo apt update
$ sudo apt install build-essential tk-dev libncurses5-dev libncursesw5-dev libreadline6-dev libdb5.3-dev libgdbm-dev libsqlite3-dev libssl-dev libbz2-dev libexpat1-dev liblzma-dev zlib1g-dev libffi-dev
$ curl -O https://www.python.org/ftp/python/3.7.0/Python-3.7.0.tar.xz
$ tar xf Python-3.7.0.tar.xz
$ cd Python-3.7.0
$ ./configure
$ make
$ sudo make altinstall

これは現時点での環境の都合上,こういった手順やコマンドになっていますが,実際の環境構築時にはaptでインストールできるバージョンや手元の開発環境で,インストール手段/バージョンを選択してください.
ここまででPythonのインストールが終わりました.ここからは,pipのインストールに移ります.

pipインストール

pipはPythonパッケージを容易に管理できるようにするためのツールです.インストールに関して詳しくはpipの公式記事を参照してください.

$ curl -O https://bootstrap.pypa.io/get-pip.py
$ python3 get-pip.py

これで完了です.ただし,後述しますが,pipenvとの都合上,記事記載現在,最新のpip==18.1は使えなかったため,1つバージョンを落とした18.0をインストールしました.

$ pip install pip==18.0

上手くいけばこれで完了です.

pipenvインストール

Pythonでのプロジェクトで利用するパッケージ依存の問題を簡単に解消するため,ここではpipenvを利用しています.
pipenv自体のインストールから,仮想環境のインストールまでが以下のコマンドで完了します.事前にcdでリポジトリのディレクトリに移動しておいてください.

$ pip install --user pipenv
$ pipenv install

pipenvは,記事記載現在,pip==18.1との問題を抱えています.no module...等のエラーが発生した場合,pip==18.0をインストールしてください.
もしpipenv installがPipfile.lockとのhashチェックで失敗する場合,Raspberry Piが独自のパッケージリポジトリを利用しているなどの問題が考えられます(参考).その場合は,pipenv install --skip-lockで問題を回避することができます.

ここまでで基本的なPython環境構築は終了です.