スイッチサイエンスさんでRaspberry Pi Zero Wを手に入れたので、Raspberry Pi 3 Model Bとどの程度同じように使えるかを検証してみたいと思います。
検証方法
僕はRaspberry Piで動く何かを作るとき、RaspbianにプリインストールされているPython 2系ではなくNode.jsを使うので、Node.jsを用いて検証したいと思います。
今回は、IoTに関連しそうなnpmパッケージを4つほど試してみたいと思います。
-
request
- HTTP/HTTPS通信を行うためのクライアント
-
node-cec
- HDMI接続でテレビを制御したりテレビの状態を取得
-
node-nfcpy-id
- SONY PaSoRiを利用しタッチされたICカードのIDを取得
-
onoff
- GPIO上にあるLEDを制御
検証環境
- Raspberry Pi 3 Model B, Raspberry Pi Zero W
- Raspbian Jessie Lite 2017-07-05
- Raspberry Pi 3 Model Bと同じイメージファイルを使います
- イメージをMicroSDに書き込んだ後、MicroSDのルートディレクトリに
ssh
という名前で空のファイルを作成
- Raspbian Jessie Lite 2017-07-05
SSH接続、無線LAN接続をする
Raspberry Pi Zero WはUSBハブを利用しない限り、USB機器をひとつしか接続できないので、無線LAN経由でSSH接続をすることにします。
Raspberry Piの無線LANをmicroSDで設定するなどを参考に、設定してください。
Node.jsのインストール
Node.jsとnpmの最新版をRaspberry PiにNode.jsとnpmの最新版をインストールするを参照してインストールします。
今回の検証に用いたNode.jsのバージョンは、 v8.2.0
です。
IoTなnpmパッケージを試す
request
HTTP/HTTPS通信を行うためのクライアントです。
LINE NotifyなどのAPIを叩くために利用したり、cheerio-httpcliといったスクレイピングモジュールで利用されていたりします。
テストしたコード
以前にGitHubに公開した、async/awaitを使い順番を守ってLINE Notify経由で通知を送るテスト(mascii/async-await-line-notify)を使用してみました
結果
動きました!このリポジトリはmacOS Sierraでしか試していませんでしたが、Raspbian on Raspberry Pi Zero Wでも何も変更なく利用することができました。
node-cec
以前に書いたRaspberry PiとテレビをHDMI接続してテレビのON/OFFを確認するという記事で紹介したnpmパッケージです。
HDMI接続でテレビを制御したりテレビの状態を取得することができます。
HDMI-CECに対応したモニターやテレビを持っていない(以前に記事を書いた際は実家のテレビを使用していました)ので、Nintendo SwitchとRaspberry PiをHDMI接続し、Nintendo Switchをドックにセットした際に発信される
REPORT_PHYSICAL_ADDRESS
という信号が捉えられるかで判断したいと思います。
テストしたコード
以前にGitHubに公開した、Raspberry PiとテレビをHDMI接続してテレビのON/OFFを確認(mascii/raspberrypi-hdmi-cec) にある hdmi.js
を REPORT_PHYSICAL_ADDRESS
に対応させて使用します
結果
`REPORT_PHYSICAL_ADDRESS` を捉えることができました!node-nfcpy-id
以前に僕が公開したnpmパッケージです。
Raspberry PiとPaSoRiでICカードのIDを取得するnpmパッケージを作ってみた
Python 2系で動作する nfcpy
というライブラリを利用してICカードのIDを取得し、標準入出力を用いてNode.jsに渡しています。つまり node-nfcpy-id
が動けば、 nfcpy
も問題なく使えることを意味します。
テストしたコード
Raspberry PiとPaSoRiでICカードのIDを取得するnpmパッケージを作ってみたの記事の中にある、 loop
モードの例を使用します
結果
若干起動するのが遅かったですが、動きました!
onoff
GPIO上にあるLEDを制御したりするのに利用します。
テストしたコード
const Gpio = require('onoff').Gpio;
const blue = new Gpio(22, 'out') // 22の部分は接続したピンによる
blue.writeSync(1);
結果
動きました!GPIOピンの穴の位置はRaspberry Pi 3と同じなので、2×20 ピンヘッダを半田付けすればRaspberry Pi 3と同じように利用できそうです(Raspberry Pi Zero Wには、まだ勿体なくて半田付けしてません)
まとめ
記事投稿時(2017/07/23)、Raspberry Pi Zero WではRaspberry PiにNode.jsとnpmの最新版をインストールするの記事の通りに sudo n stable
でNode.jsをインストールしようとすると、CPUがARMv6系であることに起因すると思われるエラーが発生し、 sudo n 8.2.0
に変更する必要がありましたが、このことと動作速度以外はほぼRaspberry Pi 3 Model Bと同じように使えそうなことがわかりました。
Raspberry Pi Zero Wには無線LANが搭載されているので、USBはPaSoRiだけ接続、GPIOにLEDを取り付けることで、ICカードによる簡易的な入室通知がコンパクトに実現できそうです。
Raspberry Pi Zero Wでなく、Raspberry Pi Zeroでも良いことになってしまいますが、docomo回線に対応している4GモデムのL-03D1や3GモデムのL-05A2をRaspberry Pi Zero接続して利用することが可能だそうなので、Raspberry PiとテレビをHDMI接続してテレビのON/OFFを確認するで紹介した、テレビを用いた「高齢者見守りデバイス」はRaspberry Pi Zero, Zero Wで十分実現できそうです。