search
LoginSignup
1

More than 1 year has passed since last update.

posted at

updated at

Organization

GrovePi用Private Nodeを作ってみた

今年も始まりましたアドベントカレンダー!
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モジュールなどの要望があれば手軽に対応したいと思っています。

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
What you can do with signing up
1