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

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

*

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サーバ的なプログラムを作ってみます。


 - Node.js, Raspberry Pi

AdSense

AdSense

  関連記事

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

Raspberry Piをモニターとキーボードなしで導入するの2回目です。前回は …

catch
Raspberry Piでタッチスクリーン付3.5インチTFTを使ってみた

Raspberry Piでタッチスクリーン付モニタを使ってみました。PiScre …

adt7410catch
温度センサADT7410(その1)i2C通信とは

温度センサのADT7410を使ってみます。ADT7410はアナログ・デバイセズ社 …

rasgpio
Raspberry PiでC言語版Lチカを試す(その1)デバイスドライバ利用

Raspberry PiでC言語を使ったLEDの点灯、消灯(いわいるLチカ)を試 …

IMG_0942
Raspberry Piをモニターとキーボードなしで導入する(その3)コンソールを使う

Raspberry Piをモニターとキーボードなしで導入するの3回目です。今回は …

0001
Node.jsでRaspberryPiのGPIOを使う(その2)ブラウザからの操作

Node.jsでRaspberryPiのGPIOを使うの2回目です。前回はGPI …

0012
Raspberry PiでのNode.jsの導入(その1)インストールと動作確認

Node.jsとは、Node.js 日本ユーザグループのサイトから引用させて頂き …

eyPi
温度センサADT7410(その3)Raspbery Piでの利用

温度センサADT7410の3回目です。前回までの内容は以下です。 温度センサAD …

wlan
Raspberry Piでwifiに接続する

Raspberry Pi(Raspbian)でwifiを使って無線LANに接続し …

IMG_0923
Raspberry Piをモニターとキーボードなしで導入する(その1)SSHでのログインまで

Raspberry Piをモニターとキーボードなしで導入する方法についてです。R …