-
Notifications
You must be signed in to change notification settings - Fork 0
Raspberry Pi環境構築
本プロジェクトでは,Slackに投稿するためのハードウェアとしてRaspberry Pi Zero WH 3B(にアップデート)を利用しています.
本記事では,Raspberry Pi Zero WH 3Bのセットアップについて,実際に行った手順をもとに,簡単な説明をします.
ネットワークへは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
ファイルを確認し,もし変更されていれば,また上と同じ内容に書き換えて,再起動します.
この手順で接続が完了します.
詳細はこの記事がよくまとまっていて良いでしょう.
Raspberry PiからI2C入出力,Slackへの投稿を行うために,ドキュメント/ライブラリが多くコードが短くメンテナンスがしやすいPythonをメインの開発言語として選択しました.
本セクションではDocker,Python,pip,pipenvの環境構築について説明します.
旧記事も残しますが,本セクションの内容は,Raspberry Piのアップデートによる性能向上に伴い環境をDockerに移行した為,大幅に変更しています.
Dockerは最新のものを簡単にインストールする為に,公式配布のスクリプトを利用します.
$ curl -sSL https://get.docker.com/ | sh
$ sudo usermod -aG docker [username]
Dockerをインストールしたら,リポジトリ内のスクリプトが基本的に自動でDocker buildなどを行ってくれます.これで環境構築は終わりです.
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は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
上手くいけばこれで完了です.
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環境構築は終了です.