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

システム開発エンジニアの西田五郎が運営しております。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でセンサネットワーク稼働試験(基本編)構成・課題等

Raspberry Piでセンサネットワークを構築して実際に稼働してみます。基本編としてRaspberry Piにセンサを直接接続する構成です。その構成で安定して稼働させるにはどういった課題があるか書 …

Raspberry PiのPL2303内蔵コンソールケーブルのWindows8.1の対応について

Raspberry PiのコンソールケーブルでProlific社のUSBシリアル変換チップのPL-2303を内蔵している製品について、Windowsのバージョンの対応状況についてです。 まず、Rasp …

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

Raspberry Piをモニターとキーボードなしで導入する方法についてです。 (※2021/05/02追記 現時点で最新版のRaspberry PI OSでモニターとキーボードなしで導入する手順を書 …

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

ASP.NET Web APIでデータ蓄積の7回目です。前回までで少なくとも温度データが登録出来るASP.NET Web APIが出来ました。今回はRaspbery Piに実際に温度センサを接続して温 …

Raspberry PiでIoT(MQTTで遠隔操作編 その3)Raspberry PiのGPIOとHeroku連動Sub編

Raspberry PiでIoT MQTTで遠隔操作編の3回目です。2台のRaspberry Piでインターネット経由でGPIOを操作するというテーマで書いています。前回はHerokuでMQTT Br …