ラズパイ3を最初からセットアップしたので、そのメモを兼ねて。
セットアップ自体は2回目だけど、改めてきちんとドキュメントに残しておきたいと思ったので。
何か思いついたら随時追記する予定。
必要なもの
今回はWindows一本でやってみたものです。
面倒くさがりなのでUbuntu PCを用意したくない。
あとラズパイにUIなんて不要なのでRasbianはLite版を使います。
ハード
- PC(Windows 10 / 1809)
-
Raspberry Pi 3 MODEL B
- その後、Model B+でも本手順と同じで出来ました
- Micro SDカード
- 16GBくらいあれば余裕
- SDカードライター
- LANケーブル
- Micro USBケーブル(電源供給)
- 2.0A以上供給できるUSB電源(モバイルバッテリーでも可)
ソフト
- Zip解凍ソフト(なんでも)
- DD for Windows
- sshするためのソフト(ここではTeraTermを使用。PuTTYやCygwinでもOK)
インストール~起動
ここの記事が本当に最強だったので、ここの通りにやればOK。多謝。
以前インストールしたときにブクマしておいて助かった。
流れを凄くざっくりと書くと以下。
- OS(Rasbian)のzipをDLする。
- ここでは raspbian_lite-2019-04-09 を使用。
- 日本ミラーサーバー:http://ftp.jaist.ac.jp/pub/raspberrypi/raspbian_lite/images/
- zipを解凍してimageを取り出す。
- DD for Windowsを管理者権限で起動して、Micro SDカードにimageを焼き込む。
- 書き込んだSDカードがWindowsで
boot
ドライブとして認識される。 - boot直下に
ssh
という空ファイルを作る。- Windowsでは右クリックで新規作成→テキストドキュメントとやって、ファイル名を
ssh.
とすると、拡張子なしの空ファイルを作れる。
- Windowsでは右クリックで新規作成→テキストドキュメントとやって、ファイル名を
- bootのドライブを右クリックで「取り出す」する。
- Micro SDカードをライターから抜いて、ラズパイに挿す。
- ラズパイにLANケーブルを繋ぐ。
- ラズパイにUSBケーブル挿す。これで起動する。
初回起動後にやること
IPアドレスを調べる
USBケーブルは電源供給専用であってシリアルコンソールにはならない。
なので何はともあれIPアドレスを調べないと、基板にアクセスもへったくれもない。
ラズパイのMACアドレスのメーカーコードの先頭部分が b8-27
だそうなので、Windowsのコマンドプロンプトで arp -a
してネットワーク上の機器の一覧を出してMACアドレスから探せばOK!
……のはずが、Windowsではarpテーブルが常に最新になっているわけではないようで、以下のコマンドを叩いて更新してやらないと見えなさそう。末尾のIPアドレス部分は適宜合わせる。
全装置にだだだっとping投げる感じでアナログではあるものの確かに確実な方法。
for /l %i in (0,1,255) do ping -w 1 -n 1 192.168.1.%i
バッチファイル化するとこう。せっかくなのでgistにも置いた。
for /l %%i in (0,1,255) do ping -w 1 -n 1 10.130.1.%%i
arp -a | findstr b8-27
pause
sshで繋いだらIPアドレスの固定化をすれば良い。
もし何らかの権力によりIPアドレスの固定化をさせてもらえないなどの場合は、仕方ないので時々このバッチファイルを叩く。
sshで接続しにいく
基板のIPアドレスがわかったら、TeraTermとかで当該IPアドレスにssh接続。
認証ウィンドウが出れば勝利。
初期の認証はUserは pi
、Passwordは raspberry
になっている。
ラズベリーのスペルはpを忘れることが多い。らすぷべりー。
接続後にやるおまじない
何はともあれupdateしとく。
sudo apt-get update
あとvimを入れとく。個人の好みです。
sudo apt-get install vim
vi / vimの設定
ラズパイ上でviやvim使ってると以下の現象に遭遇する。
- 十字キーが文字になってしまう
- バックスペースが効かない
この場合は以下のファイルを新規作成して、
vi ~/.vimrc
以下を書いておくと幸せになれる。
set nocompatible
set backspace=indent,eol,start
テンキーが文字化けする場合は、TeraTerm側の設定を変える。PuTTYも同様。
[設定] → [キーボード] → 無効化するモードの、「アプリケーションキーパッド」にチェックを入れる
本体のLEDの点灯トリガーを変える
2つのLEDがあるが、デフォルトの点灯トリガーが気に食わない。
赤LEDは電源投入時、緑LEDはSDカードアクセス時にチカチカするように見える。
(ラズパイの型によってもタイミングは違うらしい。)
何もアクセスしてないで放置してるとどっちも消灯状態になって生存状態が一目で分からない。
以下を追記して、常時点滅するようにしておいた。再起動後から有効。
# power LED is heartbeat
dtparam=pwr_led_trigger=heartbeat
Locale設定
日本語LOVEな人は以下を設定しておくと、コンソールのメッセージが割と日本語になって幸せになれるかもしれない。
sudo raspi-config
で、以下。
4 Localisation Options
-> I1 Change Locale
-> ja_JP.UTF-8 UTF-8 を探してスペースキー、OK
-> I2 Change Timezone
-> Asia / Tokyo を探してOK
利用可能な領域をSDカード全域にする
sudo raspi-config
して、Advanced Options -> Expand Filesystem を選べばOK。
swapサイズ増やす
デフォルトだと100MBっぽいので、SDカードに余裕があるなら増やしてしまう。
現状の確認コマンドは以下。
free -h
書き換えるのは以下。
CONF_SWAPSIZE=1024
そのあと以下をすると設定反映される。
sudo systemctl stop dphys-swapfile
sudo systemctl start dphys-swapfile
共有フォルダを設定する
この先、例えばソースコードをガリガリ書くことになったら、さすがに使い慣れたエディタを使いたいので(VS Code派)、Windowsから直接見れるようにしておきたい。
ここの記事を何も考えずにやればOK。多謝。
無線LANアクセスポイント化する
せっかく無線LANのチップ積んでるんだから、今後のためにも、LANケーブルなしでスマホから直でラズパイのセンサーにアクセスできるようにしておきたい。
セットアップ
以下の記事を、何も考えずに上から順にやっていけばいける。多謝。
ところで、hostapdのversionが2.6だったからなのか分からないが、初めて sudo service hostapd start
したときに以下のエラーが出た。
Failed to start hostapd.service: Unit hostapd.service is masked.
この時は以下のコマンドを叩いてからもう一度やると解決した。
sudo systemctl unmask hostapd
sudo systemctl enable hostapd
sudo systemctl start hostapd
iPhoneからsshでスクリプトを実行する
無線LANルーター化したラズパイにiPhoneで接続した状態で、iPhoneから「ショートカット」アプリを使うと、簡単にスクリプト実行できた。
試しに echo hoge > hoge.txt
とか書いて実行してみたら、確かに基板上に ~/hoge.txt
が作られていた。
一度繋いでおいて、ショートカットをぽーんと叩くとなんでも実行できるということみたい。これは便利。
BluetoothでiPhoneとペアリング
基板上で以下を叩く。
sudo bluetoothctl
[bluetooth]# power on
[bluetooth]# discoverable on
[bluetooth]# agent on
[bluetooth]# default-agent
この状態で以下をすると、自分のiPhoneが出てくるので、ペアリングしてみる。
[bluetooth]# scan on
-> だばだばとデバイスが出てくる
[bluetooth]# pair xx:xx:xx:xx:xx
iPhone側でペアリングを受け入れる。これで繋がる。
……が、即切れてしまう。
以下の記事を読むと gnome-bluetooth
を入れると解消するという記述があった。
Raspberry pi3 をiPhoneとbluetooth接続しようとしてかなりハマった話 - Qiita
試してみようと思ったけど、apt-get
叩いたら800MBくらいインストールしようとしだしたのでやめた。
関連してインストールしようとしたライブラリたちを眺めてみると、libbluetooth3
という文字が目についたので、これだけ入れてみた。
sudo apt-get install libbluetooth3
これだけで切れなくなりました。
なお一度受け入れたペアリングを信頼しておくのは以下。
[bluetooth]# trust xx:xx:xx:xx:xx