LoginSignup
5
1

More than 1 year has passed since last update.

今年も始まりましたアドベントカレンダー!
enebularウフル社員版の初日のネタということで、最近ウフルが運営したハッカソンに向けて開発・提供したPrivate Nodeについて紹介します。
Private Nodeは、自作のノードを簡単に無料/有料で共有できるenebularの機能です。最近、無料のPrivate Nodeであれば、無料プランのプロジェクトでも使用できるようになっています。

GrovePi用Private Node開発の経緯

11/27~28に福井で開催された地方創生ハッカソン in 福井に技術メンターとして参加してきました!コロナも落ち着いてきたということで、ひさびさのオフラインのイベントです。

image.png

今回のハッカソンでは、アイディアからすぐに動くものが作れるように、ウフルからRaspberryPiとセンサーやスイッチ、ブザーなどのGroveモジュールとアプリケーションの開発用にenebular editor(Node-RED)を提供しています。

が・・。

準備している段階で、用意しているGroveモジュールを扱うためのノードがなかったことに気付きました。あると思っていたものは古くなっていてアップデートも行われておらず使用できないという状況に・・。

Groveモジュールと共に用意しているGrovePi+は、単純にRasperryPiのI/OがGroveコネクタになっているわけではなく、マイコンが介してI2Cでやり取りしているので、RaspberryPiのI/Oノードでは対応できません。

このままでは、すぐに動くものが作れる!というわけにはいきませんので、専用のノードを作りました。

対応すべきGroveモジュール

ハッカソンで用意したのは、RaspberryPiとGrovePi+ starter kit for Raspberry Pi、その他いくつかのGroveモジュールです。
Groveモジュールは以下のラインナップです。

GrovePi+について

GrovePi+にはArduinoなどにも使われているマイコンATmega328が搭載されていて、RaspberryPiには無いアナログ入力を補っています。デジタル入出力とアナログ入力の信号はATmega328を介してI2Cでやりとりする様になっています。
詳しくはGrovePi+のブロック図が参考なると思います。
このGrovePi用のノードとして、接続されるGroveモジュールごとに扱えるノードを開発しました。

開発したGrovePi用ノード

GrovePi用ノードはenebularのPrivate Nodeとして作りました。Private Nodeであれば、enebularのプロジェクトに入れていれば自動的にenebular editorのノードパレットに追加されます。

作ったノードは、enebularのDiscoverに登録しましたので、インポートすれば誰でもRasperryPi上のenebular editorもしくはenebular-agentのフローで使用できますので、ぜひ使ってみて下さい。

enebular Discover grovepi-nodes

使用方法

ノードごとに使い方を説明します。

GrovePi デジタル入力ノード

スイッチなどの単純なON/OFFのGroveモジュールで使用できるノードです。
入力が変化するとmsg.payloadに0または1が出力されます。
image.png
image.png
プロパティではGrovePiボードをconfigノードとして指定します。configノードとしては名前を設定するぐらいで、フロー内で使用するノードですべて同じconfigノードを使用していればOKです。あとはGroveモジュールが繋がっているコネクタ番号を指定するだけです。
image.png

GrovePi LEDノード

Grove-LED用のノードです。単純にデジタル出力に対して、ON/OFFをコントロールできるので、Grove-リレーやGrove-ブザーでも使用できます。
入力のmsg.payloadが"off"、false、0、"reset"、"stop"のときはデジタル出力として0を出力、それ以外のときは1を出力します。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGroveモジュールが繋がっているコネクタ番号を指定するだけです。
image.png

GrovePi ブザーノード

Grove-ブザー用のノードです。ノードが呼ばれると設定した時間のあいだONになります。(msgの内容はなんでもOKです)こちらもGrove-ブザー以外でも使用できます。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とONにする時間とGroveモジュールが繋がっているコネクタ番号を指定します。
image.png

GrovePi アナログノード

アナログ出力のGroveモジュール用のノードです。0~1023の間で読み取った値がmsg.payloadに出力されます。Grove-音センサやGrove-回転角センサ、Grove-光センサで使用できます。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGroveモジュールが繋がっているコネクタ番号と読み込む周期を設定します。
image.png

GrovePi 温湿度センサノード

GROVE-デジタル温度・湿度センサ用のノードです。温度、湿度、熱係数をmsg.payloadに出力します。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGroveモジュールが繋がっているコネクタ番号と周期を設定します。
image.png

GrovePi 超音波距離センサーノード

Grove-超音波距離センサー用のノードです。msg.payloadにcm単位の検出力を出力します。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGroveモジュールが繋がっているコネクタ番号と周期を設定します。
image.png

GrovePi 3軸デジタル加速度センサー(±16g)ノード

Grove-3軸デジタル加速度センサー(±16g)用のノードです。msg.payloadにX,Y,Z軸の加速度を出力します。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGroveモジュールが繋がっているコネクタ番号と周期を設定します。
image.png

GrovePi RGBバックライト液晶モジュールノード

Grove-RGBバックライト液晶モジュール用のノードです。msg.payloadの内容を表示します。msg.colとmsg.rowで表示位置、msg.colorでバックライトの色を指定できます。
image.png
image.png
プロパティではGrovePiボードconfigノードの指定とGrovePiのボードをconfigノードとして登録するのみです。
image.png

最後に

開発したGrovePi用PPrivate Nodeはウフルオフィシャルとして公開しているものではありません。それなりにテストは行っていますが、あくまでプロトタイピングを簡単にする手段としてご使用下さい。
逆にバグの修正や対応を追加してほしいGroveモジュールなどの要望があれば手軽に対応したいと思っています。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1