LoginSignup
4
1

More than 5 years have passed since last update.

Raspberry Pi Zero Wのセットアップ

Posted at

はじめに

Raspberry Pi Zero Wを入手したので、前回記事
https://qiita.com/Satoshi_Takahama/items/797171045a1c92a891f4
のPC(windows10)を置き換えたのですが、かなり途中でつまずいたので、
参考までに書いておきます。

作業した時期は2018年8月で、使用したツールとバージョン一覧を以下に記載します。

ツール バージョン
LITE版RASPBIAN 2018-06-27
Etcher 1.4.4
SDメモリカードフォーマッター 5.0.0
git 2.11.0
nvm 0.33.11
Node.js v8.11.3
npm 5.6.0
google-home-notifier 1.2.0
firebase 5.3.1

つまずいたところ

OSイメージの書き込み

最初からつまずきました。
LITE版RASPBIANのOSイメージをダウンロードした後、Etcherを使用して書き込みしようとしたのですが、Startingが表示されたまま先に進みません。

これは、SDカードのフォーマットが必要でした。
以下からSDメモリカードフォーマッターをダウンロードしてフォーマットしたところ、書き込みが最後までできました。
https://www.sdcard.org/jp/downloads/formatter_4/

USB経由でのアクセス

Raspberry Pi Zero WをUSBでPCに接続し、

ssh pi@raspberrypi.local

を実行したのですが、アクセスできませんでした。

これは、インターネット共有の設定が先に必要でした。
以下記事を参考に設定したところ、アクセスできるようになりました。
https://qiita.com/Liesegang/items/dcdc669f80d1bf721c21#141-%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%81%AE%E5%85%B1%E6%9C%89

WIFI経由でのアクセス

WIFI設定を行い、PCと接続していたUSBを外して電源を入れなおした後、

ssh pi@raspberrypi.local

を実行したのですが、アクセスできませんでした。

これは、5GHzの設定(接続先SSIDを5GHzにしていた)をしていたことが原因でした。Raspberry Pi Zero Wの内蔵WIFIは2.4GHzのみしか対応しておらず、接続先SSIDを2.4GHzの設定に直したところ、問題なくアクセスできました。

Node.jsのインストール

まずはgitをインストール

sudo apt-get install -y git

その後は以下記事を参考にnvmからNode.jsをインストールしました。
https://qiita.com/ktetsuo/items/8c9cd5714e231aa6ae09

ここでは特に問題は発生しませんでした。

google-home-notifierのインストール

以下の手順でgoogle-home-notifierをインストールします。

mkdir GoogleHome
cd GoogleHome
npm init
npm install google-home-notifier

この後サンプルコードを実行すると、以下のようなエラーが発生しました。

Error: getaddrinfo -3008
    at errnoException (/home/pi/GoogleHome/node_modules/mdns/lib/resolver_sequence_tasks.js:199:11)
    at getaddrinfo_complete (/home/pi/GoogleHome/node_modules/mdns/lib/resolver_sequence_tasks.js:112:10)
    at GetAddrInfoReqWrap.oncomplete (/home/pi/GoogleHome/node_modules/mdns/lib/resolver_sequence_tasks.js:120:9)
p

これは、以下の記事にある対処(browser.jsの修正)により解消しました。
https://qiita.com/udon242/items/fef44cec7b243f93151b

しかし、この時点で、サンプルコードで英語の文章を喋らせることはできたのですが、日本語の文章ではしゃべってくれませんでした。

さらに、以下2点の対処が必要でした。
・ロケール設定、タイムゾーン
sudo raspi-config から、ロケール設定として"en_US.UTF-8 UTF-8"、"ja_JP.EUC-JP EUC-JP"と"ja_JP.UTF-8 UTF-8"を設定、タイムゾーンとしてAsia -> Tokyoを設定しました。
・サンプルコードの文字コードをShift-JISからUTF-8に変更
これで、サンプルコードから日本語の文章を喋らせることができました。

firebaseクライアントのインストール

以下の手順でfirebaseクライアントをインストールします。

mkdir firebase-listener
cd firebase-listener
npm init
npm install firebase --save

このあと、Firebaseの更新内容を受け取るスクリプトを実行したところ、

Illegal instruction

が表示されました。

これについては、以下を参考にリビルドすることで解消しました。
https://github.com/googleapis/nodejs-logging/issues/69

npm rebuild --build-from-source grpc

しかし、この時点でまだ通知側スクリプトとの連携がうまくいっておらず、更新内容を受け取ったあと、シェルスクリプト(index.sh)を実行したところで処理が終わっていました。

これについては、シェルスクリプトの文字コードをShift-JISからUTF-8に変更し、実行権限の付加(+x)することで解消し、ようやくすべての処理を移行することができました。

おわりに

Raspberry Pi Zero Wは消費電力が小さく常時電源投入した状態で運用できるので、通知されるタイミングがずれることもなく良い感じです。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1