Raspberry Pi Zero WはPi 3と同じように使える?IoTなnpmパッケージを試してみた!

スイッチサイエンスさんでRaspberry Pi Zero Wを手に入れたので、Raspberry Pi 3 Model Bとどの程度同じように使えるかを検証してみたいと思います。

Small happiness, for you.

検証方法

僕は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を制御

検証環境

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)を使用してみました

結果

mark_maru.png
動きました!

line_notify.png

このリポジトリは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.jsREPORT_PHYSICAL_ADDRESS に対応させて使用します

結果

mark_maru.png
REPORT_PHYSICAL_ADDRESS を捉えることができました!

node-nfcpy-id

以前に僕が公開したnpmパッケージです。
Raspberry PiとPaSoRiでICカードのIDを取得するnpmパッケージを作ってみた

Python 2系で動作する nfcpyというライブラリを利用してICカードのIDを取得し、標準入出力を用いてNode.jsに渡しています。つまり node-nfcpy-id が動けば、 nfcpy も問題なく使えることを意味します。

P7230615.jpg

テストしたコード

Raspberry PiとPaSoRiでICカードのIDを取得するnpmパッケージを作ってみたの記事の中にある、 loopモードの例を使用します

結果

mark_maru.png

若干起動するのが遅かったですが、動きました!

onoff

GPIO上にあるLEDを制御したりするのに利用します。

テストしたコード

const Gpio = require('onoff').Gpio;
const blue = new Gpio(22, 'out') // 22の部分は接続したピンによる
blue.writeSync(1);

結果

mark_maru.png
動きました!

P7230621.JPG

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で十分実現できそうです。
mimamori2.png

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.