Node-REDでサーボモータを制御しよう【電子工作はじめますか?】
Node-REDでもGPIOを簡単にコントロールできます。
前回でモーターとサーボモータの制御ができるようになりました。
今回はNode-REDをを使ってハードウエアを動かしてみます。Node-REDはNode.jsの開発環境でブラウザを使ってリモートでプログラムを作れます。
Node-REDのインストール
Node-REDのインストールは簡単です。そのままインストールする方法とDockerを使う方法があります。Dockerを使う方法をオススメしますが、今回はRaspberry Pi OSに直接インストールする方法を書いておきます。
インストールはインストール用スクリプトを実行するだけです。
node-red / linux-installers | GitHubLinux 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を使うノードを追加します。
Node-REDの"設定"から"パレット"を選び"ノードを追加"タブを開きます。検索欄に"gpio"と入れ”node-red-node-pi-gpiod”を探します。"ノードを追加"ボタンを押してインストールします。
コメント
コメントを投稿