読者です 読者をやめる 読者になる 読者になる

Matthewの備忘録

忘れたときはここを見ろ。何か書いてある。

昆布乾燥室温湿度モニタリングシステム その1

IoT

 久々に新しい記事を書くのにこのダイアリー(ブログ)を使った。下書き保存のUIが優れていないせいで、冒頭の文章を失った。「下書き保存」を押下したらとりあえず保存して欲しい。この文章は二度目に書いたものであり、最初に書いたものとは文章の流れ以外は大きく異なっているかもしれない(最初に書いた文章の方が自分が好きな雰囲気であった)。

購入したもの

 昆布乾燥室の温度と湿度をモニタリングシステムを作ろうと思い立った。これはその記録であり、後に備忘録として機能することを期待したものである。
 既に必要な機材の購入と設置場所の調査は終えた。システムの中枢にはRaspberry Pi 3 Model Bを採用した。スタンドアローン、家庭内LAN、クラウド越し、どれでも対応可能であるからだ。付属品も便利なものを採用し、余分になる部品もあるが、次の3点をセットで購入した:

 USBキーボードとUSBはマウスは使っていないPCのを流用した。開発用のディスプレイとHDMIケーブルはテレビとDVD観賞用のを流用した。これで初回のブート用のハードウェアは用意できた。

OS

 初回のブートからLinux OSを使いたいので、DebianベースのRASPBIAN JESSIEをダウンロードした。debパッケージには慣れているし、私は物心ついたときから「渦巻き」が好きなのだ。また、態々GUI版を利用するのは、ディスプレイなどをつなげてスタンドアローンで利用することも考えててのことだ。
Download Raspbian for Raspberry Pi
 ダウンロードしたイメージファイルのSHA-1ハッシュ値が一致するかはしておいたほうがよい。Windows7(まだ10にしていなかった)ではcertutilコマンドを使ってSHA-1ハッシュ値を得ることができる:

C:\Users\user\Downloads>certutil -hashfile 2016-05-27-raspbian-jessie.zip SHA1
SHA1 ハッシュ (ファイル 2016-05-27-raspbian-jessie.zip):
64 c7 ed 61 19 29 ea 51 78 fb b6 9b 5a 5f 29 cc 9c c7 c1 57
CertUtil: -hashfile コマンドは正常に完了しました。

C:\Users\user\Downloads>

 このイメージをmicroSDに書き込むのだが、今回はSilicon Linuxの"DD for Windows"をダウンロードして使用した。
DD for Windows - Tech Info
 ダウンロードしたファイルをダブルクリックするとデスクトップ上にフォルダが出来、その中の実行ファイルをコンテキストメニューなどから「管理者権限で実行」すればよい。また、書き込むOSイメージファイルもダブルクリックすればデスクトップにフォルダ付で伸張される。書き込む前に予め伸張しておけばよい。伸張されたフォルダの中の拡張子がimgのファイルが書き込むイメージである。操作は簡単だから、DD for Windowsの操作解説書をあたるべし。ロックは外しておくように。ベリファイはした。
 OSイメージが書き込めたmicroSDをRaspberry Piに挿入し、最初のブートを行った。ラズベリーが四房、数々のログが表示され、最終的に中央にラズベリーが描かれたデスクトップ画面が表示されればよい。
 raspi-configコマンドを実行して、パーティションの拡張やパスワードの変更をしておく。ダウンロードしたイメージではmicroSDカード容量全てをrootパーティションに利用しないので、全て利用するようにraspi-config最初もメニュー1番目のEpand Filesystemを実行した。そして、デフォルトで用意されているユーザーはpiで、そのパスワードはraspberryだが、任意のものに変更しておく。raspi-config最初のメニューの2番目にChange User Passwordとあるので、それを実行し、パスワードを変更した。変更してFinishしたら自動的にリブートされる。同様にして、localesをja_JP.UTF-8 UTF-8に、TimezoneをTokyoに、Kyeboard LayoutをGeneric 105-key (Intl) PCのJapanese (OADG 109A)、その他はデフォルトのままにした。Ctrl+Alt+BSでX serverを終了させることができる設定にした。尚、リブート後に文字化けを見つけることができるはずだ。

ネットワーク設定

 wifiを利用可能にする。最初から有線ならこのセットアップの順番は異なっていただろうが、最初からwifiの設定を行った。先ず、wifiルーターの設定を確認しておいた。登録しているMACアドレスを持つ機器しかルーターに接続できない設定をしているので、Raspberry Pi 3のMAC情報を調べた。

$ ifconfig | grep 'wlan0'
wlan0 ほげほげ... b8:27:eb:XX:XX:XX

b8:27:ebはベンダーIDでXX部分はCPUシリアル番号の下6桁らしい(調べてない)。問題がおきにくいように固定IPアドレスを与える設定にした。Raspberry Piで利用できることにしたのは2.4GHz帯で暗号化手段はWPA2-AES。
 次にRaspberry Piwifi設定を行った。先ず、WPAのSSIDパスフレーズの設定をした。

$sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'

追加書きできなかったら、chmodで誰でも書き込めるモードにしてから行えばよい。戻しておくこと、コメントアウトされているパスフレーズの行を削除しておくことを忘れずに。次に、/etc/network/interfacesに固定IPアドレスの設定を書いておく。

iface wlan0 inet static
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
address 192.168.XXX.YYY
netmask 255.255.255.0
gateway 192.168.XXX.ZZZ

これで利用可能になることが偶然あるかもしれないが、DHCPに対して任意のリクエストを設定するための/etc/dhcpcd.confを書き換えておく。

interface wlan0
static ip_address=192.168.xxx.yyy/24
static routers=192.168.xxx.zzz
static domain_name_servers=192.168.xxx.www
<||
リブートしてネットワークにつながれば成功。リブートしなくてもifdown/ifupでいけるかもしれない。
** 日本語環境
 とりあえず文字化けを直すために、日本語表示環境とフォントを導入する。次のコマンドを実行し、暫く待ち、コマンド実行が終了後にリブートすれば、とりあえず文字化けはなくなり、日本語フォントが読めるようになっている。
>||
$ sudo apt-get install jfbterm

このままでは日本語フォント表示が雑なので、日本語フォントを導入する。

$ sudo apt-get install ttf-kochi-gothic xfonts-intl-japanese xfonts-intl-japanese-big xfonts-kaname

 OS、ソフトウェア、ファームウェアなどを最新にしておく。失敗したり、時間がかかったりするので、根気強く、update/upgradeするべし。

$ sudo apt-get update
$ sudo apt-get upgrade
$ sudo rpi-upgrade

 日本語が入力したいときもあるだろうと想像して、日本語入力ソフトiBus-anthyをインストールしておいた。

$ sudo apt-get install ibus-anthy

インストール後、Menu > 設定 > iBusの設定をクリックし、入力メソッドタブの追加をクリック、日本語を選択、入力メソッドの選択でAnthyを追加すればよい。
Pythonなどの開発環境も既に入っているので、これで凡そこのことはできるはずだ。
 遠隔からsshクライアントで操作したいときもあるだろうから、raspi-configコマンドを実行して、最初のメニューの9番目、Advanced OptionsのSSHを実行して、sshサーバーをenableにしておいた。とりあえず、Raspberry Pi側のユーザー名とそのパスワードでsshクライアントから接続可能になる(再起動の必要はないようだ)。秘密鍵などを作成してより強固なssh接続は次の機会に設定する。クライアントはPoderosaを利用している。

今日はここまでにしておく。