OLED表示モジュールに文字を表示する

PDHとBluetoothでペアリングされたセンサモジュールのデバイスを、PDHのNode-REDフローで動かします。
ディスプレイデバイスとして使用するOLEDモジュールはドライバICにSSD1306を使用したI2Cバスに接続する小型の0.91 inchのものです。このモジュールに半角英数記号の16文字x3行の表示をおこなえるようにしています。
センサモジュールのコネクタに接続するケーブルはこちらで紹介しています。


0.91″ I2C シリアルOLED液晶ディスプレイモジュール (推奨品はこちら)

*注意点
OLEDモジュールには寿命があり、同じ表示内容を長時間点灯していると発光しているドットの輝度が次第に低下してきます。
常に同じ場所に同じ内容を表示することを避けるか、輝度低下したモジュールは交換するなどの対応をご検討ください。

1)OLED出力ポートの利用:OLEDモジュールを接続する

OLEDモジュールはセンサモジュールのI2Cポートに接続します。通常はセンサモジュール上面にあるOLED接続用のI2Cポートに接続しますが、拡張センサ用の外部I2Cポートに接続することもできます。(外部I2Cポートを使用する場合はハードウェアのJP設定で外部にセンサモジュールの3.3Vを給電する設定になっていることを確認してください。詳しくはこちら(EXT I2C ポートの設定)を参照ください)

2)Node-REDのフローを作成する

PDHにインストールしたNode-REDのフローエディタを開きます。簡単な例としてinjectノードを使用してPDHからセンサモジュールにコマンドを送信するフローを作成します。

・固定の文字列を表示する

Serial Outノードの設定は以下の通りに設定します。
ボーレート:1,000,000bps  ,  DTR :高 , 出力に分割文字を追加(¥n)
・特に、出力に分割文字を指定するのが漏れていると、表示がおかしくなることがあります。

インジェクトノードには、文字列で「display_line1=Hello R-MSM」をセットします。
Serial Outノードは、ペアリングしたセンサモジュールのポートを指定してください。


デプロイしてインジェクトノードのボタンを押すと、センサモジュールに取り付けたOLEDモジュールの1行目が設定した「Hello R-MSM」に変わりました。

もうひとつインジェクトノードを追加して、こちらは文字列に「display_line2=abcdefghijklmnop」を設定します。

デプロイしてインジェクトノードのボタンを押すと、今度はOLEDモジュールの2行目が「abcdefghijklmnop」に変わりました。

このように、16文字x3行の表示をPDHのNode-REDから変更することができます。
表示コマンドは、行ごとに文字列を送信します。
表示を全消去するには、コマンド「display_clear」を送信します。

・センサデータなど処理の内容に応じた可変のデータの表示をする

OLEDモジュールには、Node-REDフローの組み合わせで処理に応じた内容を表示することもできます。例えば、温度、湿度、気圧などのデータを取得して文字列を整形して送信することで、データが更新される表示装置にもなります。

「sensor-module_data」のタブから、BME688環境センサの温度補正後のデータを引っ張ってきます。
下記のオレンジのノード・ワイヤのように、Changeノードを介してセンサモジュールの通信ポートに接続してください。
送信するコマンドを確認するためのデバッグノードを設けると良いでしょう。

上の図で「表示コマンド作成」と書かれたチェンジノードの設定内容は以下の通りです。
 ・プルダウンメニューから「JSONata式」を選択し、フィールドに下記を入力します。
  「”display_line2=Temp : ” & $string(msg.payload.temp.val) & ” deg”」

これでデプロイし、デバッグノードの表示を確認してみましょう。
センサモジュールに送信するための、温度情報を含むコマンド文字列が生成されています。

 

OLEDモジュールに温度表示をした状態。計測ごとに値が更新されます。