ブロックを積みながら(92) Node-RED、隠れていた Serialノード一族

Joseph Halfmoon

前回までで、手元のNode-REDパレット上のノードは一通り触ってみたつもり。しかし確認のため「パレットの管理」を開いてみたらインストールしてあるのにエラーで表に出ていなかった一族を発見。node-red-node-serialportであります。エラーを解消したところパレット上に浮上。さっそく使ってみました。

※「ブロックを積みながら」投稿順 index はこちら

※動作確認にはRaspberry Pi 3 model B+のRaspberry Pi OS(32bit)上にインストールした以下を使用しています。

    • Node-RED v2.0.5
    • node-red-dashboard 3.2.0
「パレットの管理」でエラーを発見

Node-REDエディタ画面の右肩の三本線のメニューを開くと「パレットの管理」というウインドウが開きます。このウインドウの「ノードを追加」タブを開けば、新規ノードを検索してインストールしたりすることができます。一方「現在のノード」タブを開けば、既にインストール済のノード群が列挙されてまいります。今回これを眺めていて発見いたしました。こんな感じ。

palleteError

エラーのビックリマークあり。今まで使ったことのないserialの名を関するノードが並んでいます。自分じゃインストールした記憶が無い(もしかすると老人の忘却力)ので、初回インストール時に自動で入れてくれたもの?

ともあれ使えるノードであれば使ってみるということで復活に取り組みました。といって上記に見えている「1.0.1へ更新」ボタンを押して、アップデートを行い、Node-REDを一たん止めて再スタートさせただけなのですが。なお、serial一族のインストール時、裏ではなにやらビルドが走っているみたいなので、最低限の開発ツールが使えるようになっておらないといけない気がします。

再起動後、状態を見てみると以下のようです。3つのノードにチェックが入っており、冒頭のアイキャッチ画像のように3つのノードがパレットに登場しました。

serial-port

一つ serial-port というノードがあるのですが、これはパレット上には現れない「設定」ノードみたいっす。知らんけど。

ラズパイ3とラズパイ4をUART接続

今回のノードはUARTで通信するためのノードであるので、誰か通信相手がいないと話になりません。そこで Raspberry Pi 4 model B機にご登場願い、Node-REDを運用している Raspberry Pi 3 model B+のUARTと「クロス接続」してみました。接続はこんな感じ

    1. 2台のラズパイのGNDを接続
    2. ラズパイ3のGPIO14(TXD)をラズパイ4のGPIO15(RXD)と接続
    3. ラズパイ4のGPIO14(TXD)をラズパイ3のGPIO15(RXD)と接続

ハードウエアの接続は簡単なのですが、ソフトの設定でハマって今回疲れてしまいました。ハマッたのは、

ラズパイ4上ではラズパイPicoとのUART通信で「バリバリ」UART使ってたハズなのに、動くハズのものが動かなかった。

からです。あれあれおかしい、動かないよ、とあれこれやっていたのですが、理由は単純なことでした。

「バリバリ」UART通信していたのは32ビットOSで運用していた時で、その後64ビットOSに更新(というかSDカード交換)した後は何も設定しておらず。よってUARTが何も反応しなかったという顛末。結局忘却力、トホホ。

    1. シリアルポートをイネーブル
    2. シリアルコンソールをディセーブル

すれば、/dev/ttyS0が動作するようになりました。

復活したラズパイ4上のminicomを使ってラズパイ3上のminicomへ sキーを連打してみると以下のようです。Pi3OK

ラズパイ3からラズパイ4へは aキーを連打。Pi4OK

良かった。シリアルポート同士がつながりました。

今回実験のフロー

疲れたので今回実験のフローは、serial outを使って Injectノードから送られた文字列をたれ流すだけのものです。こんな感じ。serialOutFlow

右側のserial out ノードの設定画面を開いたところ。ここでは既に /dev/ttyS0:9600-8N1などと設定が表示されてますが、これを設定するには右側のペンのアイコンを押して設定する必要があります。

serialOutSetting0

ペンアイコンで開く画面が以下に。これはパレット上で隠れている serial-portノードの設定画面ですな。

シリアルポートを /dev/ttyS0 に向け、ボーレートなどの通信条件は対向機のラズパイ4に設定したものに合わせます。 serial-in用の設定もありますが、以下はデフォルトのまま。

serialOutSetting1

上記の設定後、デプロイして Injectノードから文字列 Hello を Serial-out してみると対向機のラズパイ4上のminicom画面にはほれこのように Hello が届いておりますぞ。

HelloFromNodeRed

なんだか、泥縄(いつものことだけれども)で疲れました。次回はも少し落ち着いて serial 一族に向き合いたいと思います。

ブロックを積みながら(91) Node-RED、Dashboard、colour picker へ戻る

ブロックを積みながら(93) Node-RED、serial-inとserial-out  へ進む