IoT何をいまさら(112) SAMD21版 Xiao からNode-REDへJSON

Joseph Halfmoon

ESP32C3搭載のXiaoばかり使っているので、SAMD21マイコン搭載のXiaoが「遊休化」。これにカツを入れるべく、今回はSAMD21版XiaoからUART経由でラズパイ上のNodeREDにJSONを送り付けてみます。WiFiは無いけど、ちゃんとJSONでやりとりができるようにしたいです。今回は送るだけですけど。

※「IoT何をいまさら」投稿順Indexはこちら

※今回実験に使用の Seeeduino Xiaoは、Microchip社のSAMD21G18A(Arm Cortex M0+)を搭載した切手サイズのマイコンボードです。前回使用のRISC-VコアESP32C3搭載のXiaoとは異なるマイコンですが、同じXiaoシリーズなので端子配列とその機能はよく似ています。ただしESP32系とことなり無線の搭載はない機種です。

SAMD21版の実験用ソフトの作成

ESP32C3版のXiao同様、プログラム作成にはバージョン2.0.3のArduino IDEを使わせていただいております。ただし、同じXiaoシリーズといっても、搭載マイコンが異なるため、まずIDEに追加のボードマネージャのURLを設定。boardMgr

その後で、ボードマネージャを開いて Seed SAMD Boardsを検索してインストールを行う必要があります。

seeedSAMD

以降、プルダウンメニューから Seeeduino XIAO を選択すれば普通に開発できます。xiaoJSON_EC

実験に使用したソース全文

前回使用したWiFi使ってMQTTブローカ経由でNodeREDにJSONオブジェクトをパブリッシュしたソースの大幅縮小版です。WiFiもなにもないので、Serial1(UART)から直接ラズパイのUART /dev/ttyS0 にシリアライズしたJSONオブジェクトを送り付けています。USBシリアルは「生きて動いているよ~」とホストのパソコンにお知らせするだけのもの。

// Seeeduino Xiao Json test
#include <ArduinoJson.h>

#define JSONBUFSIZE (400)
const int jsonCapacity = JSON_OBJECT_SIZE(3);
StaticJsonDocument<jsonCapacity> doc;
char serializedDoc[JSONBUFSIZE];

int loopCount = 0;

void setup() {
  SerialUSB.begin(115200);
  while (!SerialUSB) continue;
  Serial1.begin(9600);
  while (!Serial1) continue;
}

void loop() {
  SerialUSB.println(loopCount++);
  doc["field1"] = "abc";
  doc["field2"] = 123;
  serializeJson(doc, Serial1);
  Serial1.println();
  delay(5000);
}
ハードウエアの接続

以下は手元のSAMD21版のXiaoです(2号機。)3本の線の先がNodeREDを走らせているラズパイです。Rpi_Xiao_DUTphotoS

回路はこんだけ。Rpi_Xiao_DUT

Node-RED側の実験フローとその動作

Node-RED側で直接シリアルデバイスとインタフェースするのは、別シリーズで何度かやってきています。今回は以下の回で作成したフローをこれまた「チョイ直し」して使ってみてます。

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

serial-inで /dev/ttyS0 から入力されるのはシリアライズされたJSON文字列であるので、その後の JSONパーサ(str2jsonとお名前書いてあるノード)でJSONオブジェクト化してます。今回はただデバッグウインドウにオブジェクトをたれ流すだけ。SerialJSONflow

serial inノードの設定が以下に。シリアルポートの細かい設定は、鉛筆アイコンの先に。SerialINnodeSetting

JSONパーサの設定が以下に。jsonParserSetting

そしてデバッグウインドウで観察したオブジェクトが以下に。SerialJSONresult

ちゃんと、SAMD21版Xiaoから送られてきたJSONオブジェクト届いてますな。後はいかようにでもNode-REDで処理できるっと。ホントか?

IoT何をいまさら(111) Xiao ESP32C3、JSONオブジェクトをパブリッシュ へ戻る

IoT何をいまさら(113) SAMD21版XiaoにmicroSDカード接続 へ進む