今回が初投稿になります。拙い文章かもしれませんがよろしくお願いします。
はじめに
本記事では、複数回に分けてCHIRIMENコミュニティが提供しているnpmパッケージnode-web-gpioとnode-web-i2cを使用してNode.jsからGPIOとI2Cを制御するために私が実施した方法とそのサンプルコードを記載した備忘録になっています。
今回はCHIRIMENの紹介や後述のNode.js版の導入方法などがメインとなっています。
CHIRIMENについて
CHIRIMENとは、Web ブラウザからハードウェア制御を可能にしたプロトタイピング環境です。簡単にいえば、WebブラウザのJavaScriptからGPIOやI2Cの制御が可能ということです。CHIRIMENについて詳しく"CHIRIMEN OPEN HARDWARE"を参照してください。I2Cの対応デバイスについては"CHIRIMEN 対応デバイスリスト"を参照してください。
またCHIRIMENは、Raspberry Piやmicro:bitなどで使用可能ですが、本記事はRaspberry PiでCHIRIMENを使用した場合についての記事になります。
Webブラウザ版とNode.js版
Raspberry PiでCHIRIMENを使用する場合、Webブラウザを使用するWebブラウザ版とNode.jsを使用するNode.js版の2つの方法があります。主な違いを以下にまとめました。
-
Webブラウザ版
- Raspberry PiにCHIRIMENのOSイメージをインストールすることで使用可能。
- WebブラウザのJavaScriptからGPIOやI2Cの制御が可能。
- センサーで測定した値はWebブラウザに出力される。
- IoT初心者のプログラミング学習に向いている。
-
Node.js版
- Raspberry PiにNode.js環境を構築することで使用可能。
- Webブラウザを使用せずにJavaScriptからGPIOやI2Cの制御が可能。
- センサーの動的な処理が可能。
- IoTやWoTシステムの設計に向いている。
Webブラウザ版を使用するために必要なCHIRIMENのOSイメージのインストール方法については"CHIRIMEN for Raspberry Pi の SD カードを作成する"を参照してください。
Node.js版の使用にはRaspberry Pi内にNode.jsの環境構築が必要です。しかし、Webブラウザ版とNode.js版の動作を比較するなどの目的でCHIRIMENのOSイメージのインストールを行った場合、OS内にNode.js環境がデフォルトでインストールされているため、新たにNode.jsの環境構築を行う必要はありません。
Webブラウザ版とNode.js版の違い
Webブラウザ版との主な違いは、大きく分けて3点あります。主に動作方法やHTMLから読み込むJavaScriptとNode.jsで使用できるメソッドによる違いになります。
- 動作方法による違い
- Webブラウザ版
- WebブラウザからJavaScriptを参照するため、動的にセンサーを扱いたい場合にはHTMLそのものを動的に更新する必要がある。
- Node.js版
- 動的にセンサーを扱いたい場合にはNode.jsを直接実行できればいいのでNode-REDなどに組み込む場合でも扱いやすい。
- Webブラウザ版
- 出力方法の違い
- Webブラウザ版
- JavaScript内でDocument.getElementByIdやinnerHTMLを使用することでセンサーの値を取得し、HTML上に出力。
- Node.js版
- 上記の方法では出力できないため、console.logなどで出力する。
- Webブラウザ版
- パッケージ呼び出し方法による違い
- パッケージ呼び出し時のコードの冒頭に書く"おまじない"の書き方が異なっている。(詳しくは後述)
環境構築
Raspberry Piへのnode-web-gpioとnode-web-i2cのインストール方法について説明します。Raspberry PiへCHIRIMENのOSイメージをインストールもしくは、直接Node.jsをインストールした後、作業用のディレクトリを作成し、作業用ディレクトリ内で以下のようにコマンドを実行することでインストールできます。詳しくは"WebGPIO API や WebI2C API を Node.js から使う"を参照してください。
// npm のためのファイル package.json の作成
% npm init -y
// node-web-gpio と node-web-i2c のインストール
% npm install node-web-gpio
% npm install node-web-i2c
さいごに
今回は以上になります。次回からの記事では、CHIRIMENをRaspberry Piから使用するための対応デバイスのドライバ・回路図・サンプルコードをセットにした "Examples"に記載されているWebブラウザ版でのJavaScriptのサンプルコードのNode.js版への書き換え方法などを記載していきます。次回はnode-web-gpioでのGPIOの使用方法についての記事になる予定です。