2018年4月13日金曜日

Raspberry Pi Zero W をヘッドレスでWiFi対応セットアップする

Alexaでルンバを動かすことを目指していますが、今回はちょっと脱線します。
単にRaspberry Piのセットアップを簡単にする方法を紹介するだけなので必須ではありません。
  1. 材料を揃える。
  2. 母艦のRaspberry PiにNode-REDをセットアップしてAmazon Echo Dotに認識させる
  3. (おまけ)Raspberry Pi Zero WをヘッドレスでWiFi対応セットアップする(今回)
  4. Raspberry Piで赤外線リモコンのコードをコピーする
  5. Node-REDから赤外線機能を呼び出してテレビを操作する
  6. FlashAirのGPIOモードでArduinoをHTTP API経由で制御する/li>
  7. (おまけ)ArduinoからROI経由でルンバを動かす
  8. Node-REDからFlashAir/Arduino経由でルンバを動かす
Alexa で色々な家電の操作ができる仕組みを作成していく中でRaspberry Pi Zero Wは良い選択肢だと思います。
赤外線で家電を操作することを考えると、どうしても家電の近くにRaspberry PiかArduinoを置くことになりがちです。
その際の条件を考えていくと、次のような感じになります。
  1. 安い → 家電の数だけ設置する必要がある。
  2. 目立たない → あちこちに無骨な基板が転がっていると気になるので。。。
  3. 配線が少ない → 少なくとも無線化は必須。ACアダプタなしでUSBケーブル程度。
Raspberry Pi Model Bだと価格がネック。
Arduinoだと無線が貧弱なのでちょっと厳しい。
そんなこんなでRaspberry Pi Zero Wに行き着きます。

ただ、Raspberry Pi Zero WはHDMIやUSBがマイクロタイプなので、セットアップの際に配線がごちゃごちゃしがち。
そんな訳で、キーボードもモニタも無しでRaspberry Pi Zero Wをセットアップします。



micro SDカードに書き込む

まずはここからOSイメージをダウンロードします。
「LITE」の方です。DESKTOP なんか選んじゃダメです。
GUIを使いたいならヘッドレスでセットアップする意味ないので。

MacやLinuxの場合は次のコマンドでmicro SDカードにイメージを書き込めます。
Windowsの場合は適当にツール使って書き込めば良いのではないでしょうか。ググればすぐ見つかります。
$ df
$ unmountDisk /Volumes/NO\ NAME
$ dd bs=1m if=~/Downloads/2018-03-13-raspbian-stretch-lite.img of=/dev/disk2
dfコマンドでSDカードが認識されているデバイス名を確認するのを忘れずに。
確認したらそのデバイス名を dd コマンドの of オプションに指定します。
デバイス名を間違うと残念なことになるので要注意。

Macの場合、正常に書き込みができたら自動的に「/Volumes/boot」にbootパーティションがマウントされます。
Windowsの場合はFドライブなどにマウントされるのではないでしょうか。
以下、「/Volumes/boot」を適宜読み替えてください。

WiFiの設定を入れる

bootパーティションにWiFiの設定ファイルを置きます。
$ echo '
country=JP
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
network={
        ssid="{SSIDを書く}"
        #psk="{WiFiパスワード}"
        psk=暗号化したWiFiパスワード
}
' > /Volumes/boot/wpa_supplicant.conf
「country」は国コードです。これを指定しておかないとOS起動時のWiFi設定に失敗します。
「network」の設定値は Raspbianのwpa_passphrase コマンドで作れます。
ただし、既にセットアップ済みのRaspberry Piを持っている場合だけですが。。。
$ wpa_passphrase: {SSID} {PASSWORD} >> wpa_supplicant.conf

SSHの設定を入れる

最近のRaspbianはデフォルトではSSHが起動しないようです。
OS起動時にSSHが立ち上がるようにします。
$ touch /Volumes/boot/ssh
以上、設定終わり。
ここまでできたら、一旦micro SDを取り出してRaspberry Pi Zero Wに入れます。

起動する

Raspberry Pi Zero Wのmicro USBポートから給電すると起動します。
この時、LEDが点灯しないことがあります。
点灯しないのは故障ではなく、起動可能なOSがmicro SDに書き込まれていない場合です。
つまり、Rspbianの書き込みに失敗しています。

LEDが点灯するが赤くなる場合、OSは書き込まれているものの起動に失敗しています。
黄緑色が点滅して、しばらくしたら点灯状態になるようであれば成功。

ここで、micro SDを再度PCにマウントして見てみると、bootパーティションに作ったwpa_supplicant.confファイルとsshファイルが消えていると思います。
これらのファイルは正常に起動すると/etcに移動されて削除されるので、消えているのが正常です。
消えていなければブート中に何か問題が起きています。

SSH接続する

起動したらPCからSSHで接続してみます。
接続先IPアドレスについては、Raspberry Pi Zero WはDHCPでアドレスを取得するのでルータの状態を見るのが手っ取り早いと思います。
ちなみに、Raspberry Pi Zero WのMACアドレスは現在出荷されているものは「B8:27」で始まるようです。
「B8:27」のMACで最近割り振られたIPアドレスを探すと見つけやすいです。
IPアドレスが変わると面倒なので、ルータ側で固定IPを振り直しておきます。

SSH接続できればセットアップ成功。
あとは自由にいじり倒せます。

0 件のコメント:

コメントを投稿