Node-REDでサーボモータを制御しよう【電子工作はじめますか?】

タイトル
Node-REDでサーボモータを制御します。
Node-REDでもGPIOを簡単にコントロールできます。

前回でモーターとサーボモータの制御ができるようになりました。
今回はNode-REDをを使ってハードウエアを動かしてみます。Node-REDはNode.jsの開発環境でブラウザを使ってリモートでプログラムを作れます。

Node-REDのインストール

Node-REDのインストールは簡単です。そのままインストールする方法とDockerを使う方法があります。Dockerを使う方法をオススメしますが、今回はRaspberry Pi OSに直接インストールする方法を書いておきます。

インストールはインストール用スクリプトを実行するだけです。
node-red / linux-installers  | GitHub
Linux Installers for Node-RED
DebianのインストールスクリプトをコピーしてRaspberry Piのターミナルで実行します。
bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
Raspberry Pi Zeroだと15分くらいかかります。

Node-REDを使う

Node-REDはブラウザで使います。なのでRaspberry Piがネットにつながっていれば他のコンピュータでブラウザを開けばNode-REDを使えます。Raspberry Piにモニタやキーボードをつながなくとも使えます。
ブラウザで
http://<Raspberry PiのIPアドレス>:1880
を開きます。

Node-REDはNode.jsの開発環境です。ですから言語はJavascriptです。Node.jsのモジュールを本当にノードとして扱う開発環境です。
Node-REDはNode.jsのモジュールの入力と出力をmsgオブジェクト一つだけにします。そしてmsgオブジェクトの流れを作るデーターフロー型の開発言語になっています。
msgが来たらノードが動き、結果をmsgとして次へ流します。
Node.jsではプログラムの動く順番がわかりにくくデバッグが大変ですが、Node-REDはデータの流れとして視覚的にわかりやすくなっています。非同期なネットワークプログラムをとても効率的に開発できます。

ハードウエアPWM

Node-RED標準のGPIOノードでPWM制御を行えます。しかし、PWMはソフトウエアで発生させているためサーボモータを動かすとピクピクと震えてしまいます。PWMの周波数やパルス幅が安定しないためです。ソフトウエアの時間分解能が大きいために生じます。

Raspberry PiのGPIOはハードウエア的にPWMを発生する機能があります。これを使えるようにします。
pigpio libraryを使う方法を紹介します。
pigpio is a library for the Raspberry which allows control of the General Purpose Input Outputs (GPIO).  pigpio works on all versions of the Pi.
レポジトリからインストールできますがバージョンが古いようなので自分でビルドします。
wget https://github.com/joan2937/pigpio/archive/master.zip
unzip master.zip
cd pigpio-master
make
sudo make install
インストールが終わったらpigpio Daemonを動かしておきます。
sudo pigpiod
次にNode-REDでpigpiodを使うノードを追加します。
gpiodノードの追加
Node-REDの"設定"から"パレット"を選び"ノードを追加"タブを開きます。検索欄に"gpio"と入れ”node-red-node-pi-gpiod”を探します。"ノードを追加"ボタンを押してインストールします。

ビデオ



コメント

最近のコメント

Threaded Recent Comments will be here.