株式会社インデペンデンスシステムズ横浜

システム開発エンジニアの西田五郎が運営しております。Raspberry Pi や Arduino その他新規開発案件のご依頼をお待ちしております。

Node.js Raspberry Pi

Node.jsでRaspberryPiのGPIOを使う(その1)デバイスドライバでLED

投稿日:

Node.jsでRaspberryPiのGPIOを使ってみます。今回はデバイスドライバを使ってLEDのONとOFFを操作します。以下のような簡単な回路でLEDを操作します。
IMG_0286

準備、前提は以下です。

以下の記事でブレッドボードでのLEDの接続とコマンドラインとC言語のプログラムでデバイスドライバを使ってLEDを操作しています。
Raspberry PiでC言語版Lチカを試す(その1)デバイスドライバ利用

以下の記事でNode.jsをインストールして動作確認をしています。
Raspberry PiでのNode.jsの導入(その1)インストールと動作確認

つまり、デバイスドライバにNode.jsからファイル操作で書き込んでブレッドボード上のLEDを操作するということです。今回はまずは単純なLEDのONとOFFを別々のファイルに書いてみました。以下です。

ONにするプログラム

var fs = require('fs');

fs.writeFileSync('/sys/class/gpio/export', 21);
fs.writeFileSync('/sys/class/gpio/gpio21/direction', 'out');
fs.writeFileSync('/sys/class/gpio/gpio21/value', 1);

var value = fs.readFileSync('/sys/class/gpio/gpio21/value','ascii');
console.log(value);

fs.writeFileSync('/sys/class/gpio/unexport', 21);

Offにするプログラム

var fs = require('fs');

fs.writeFileSync('/sys/class/gpio/export', 21);
fs.writeFileSync('/sys/class/gpio/gpio21/direction', 'out');
fs.writeFileSync('/sys/class/gpio/gpio21/value', 0);
fs.writeFileSync('/sys/class/gpio/unexport', 21);

LEDをONにするプログラムがon.jsで、OFFにするプログラムがoff.jsとすると以下のように操作します。

$ sudo node on
$ sudo node off

ルート権限が必要なのでsudo で実行しています。この時にパスが通っていないと、command not foundになるのでパスの通っているユーザで、which node等でNode.jsの場所を確認してフルパスで実行してみて下さい。

あと、中途半端にGPIOが使用中になった場合は以下で解除して下さい。21は例です。お使いのGPIOのピン番号を指定して下さい。
$ echo 21 > /sys/class/gpio/unexport

処理としては、Raspberry PiでC言語版Lチカを試す(その1)デバイスドライバ利用 でコマンドラインやC言語で操作したことをNode.jsで操作しているということです。ここでは簡単に同期メソッドを使っています。ONの場合のみ値を読み込んで表示しています。

実際に操作してみるとONの場合に値を読み込んでいるということもあるかもしれないですが、反応が遅いかなという気もしました。処理速度が必要な場合はC言語で直接レジスタを操作する方法もあるのでここでは処理速度は気にしないこととします。

今回はここまでです。次回はブラウザからこの操作が出来るようなWebサーバ的なプログラムを作ってみます。


AdSense

AdSense

-Node.js, Raspberry Pi

執筆者:

関連記事

Raspberry PiでIoT(温度・湿度・気圧データ編 その4)アラートメール送信

Raspberry PiでIoT 温度・湿度・気圧データ編の4回目です。前回までで、Raspberry Piから温度、湿度、気圧データをWebサーバへ送信してそのデータを蓄積、表示出来るようになりまし …

Raspberry Pi 3でのコンソールケーブル利用と初期設定

Raspberry Pi 3 でコンソールケーブルを利用する方法と初期設定についてです。 以下のページ等で今までこのテーマについて書きました。 Raspberry Piをモニターとキーボードなしで導入 …

Raspberry PiでAC100V(ソリッド・ステート・リレー)制御

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そのために以下のソリッド・ステート・リレーキットを利用しました。この製品を選んだ理由としては「扱いが簡単」かなと思ったから …

Raspberry PiでIoT(MQTTで遠隔操作編 その1)MQTTでの通信

Raspberry PiでIoTのMQTTで遠隔操作編のシリーズを始めます。実際に動作させてみるということを重点として進めます。ここでの遠隔操作は2台のRaspberry Pi間でインターネット経由の …

Raspberry Piをモニターとキーボードなしで導入する(その2)初期設定とリモートデスクトップ

(※2017/02/19 最新のRaspbian Jessie OSでは、初期状態ではSSHは無効になっています。そのため、初期設定(raspi-config)でSSHを有効にする必要があります。Ra …