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

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

*

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

  関連記事

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

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

Raspberry Piでタッチアプリ開発(その2)Kivyの導入と動作確認

Raspberry Piでタッチアプリ開発の2回目です。前回はハードウェア構成や …

Raspberry Piでセンサネットワーク稼働試験(TWELITE-トワイライト編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。今回 …

無線マイコン ToCoStick(トコスティック)をRaspberry Piで使ってみた

無線マイコンの ToCoStick(トコスティック)をRaspberry Piで …

ASP.NET Web APIでデータ蓄積(その7)Raspbery Piからの温度データ蓄積

ASP.NET Web APIでデータ蓄積の7回目です。前回までで少なくとも温度 …

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

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

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

Raspberry PiでAC100VのON/OFF制御を試してみました。今回そ …

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

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

Raspberry Piでも温度センサADT7310をつかってみる

以下の記事でArduino Unoで温度センサのADT7310を使ってみました。 …

Raspberry Piでwifiに接続する

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