Skip to main content

Energy Monitor Shield V0.9b

note

この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues

Energy Monitor Shieldは、LCDスクリーンとワイヤレストランシーバーnRF24L01+を接続するインターフェースを備えたエネルギー監視システムを構築するために設計されたArduino互換の拡張カードです。

モデル: 830070001

特徴

  • 最大3つのACセンサー(30-100A)を接続可能。

  • LCDスクリーンNokia LCD5110をサポート。

  • ジャンパーでLCDバックライトをオフにする機能。

  • 2つのボタンで操作可能(1つのアナログピンを使用)。

  • 2.4G nRF24L01+トランシーバーを接続するためのインターフェース。

  • GROVE互換コネクタ:I2C。

  • Ethernet Shield(Wiznet 5100 + SD)と完全互換。

レイアウトと回路図

  • EM Shieldの左側には電流センサー用の3つのコネクタがあり、右側にはLCDスクリーン用のコネクタがあります。

  • ジャンパーJP1はLCDスクリーンのリアルバックライトをオン/オフするために使用されます。

  • 右上隅にはI2Cコネクタがあります。

  • 右側には2つのボタン(S1およびS2とラベル付けされています)があります。

  • ボードの中央(LCDスクリーンのすぐ右側)にはnRF24L01+用のコネクタがあります。

デバイスの回路図

基本機能

基本バージョン(Ethernet Shieldを使用しない場合)では、電流センサーを使用して3つの異なる回路のエネルギー消費を監視することができます。消費電力の現在のレベルに関する情報はLCDスクリーンに表示できます。デバイスの管理はShield上の2つのボタンを使用して行うことができます。取得したデータはトランシーバーnRF24L01+によって送信することができます。

拡張機能

さらに、EM Shieldはi2c Grove互換コネクタを使用して任意のデバイス(センサー、ディスプレイなど)を接続することができます。 EM ShieldはEthernet Shield(Wiznet 5100 + SD)と完全互換で設計されているため、これら2つのShieldを組み合わせて、さらに高度な電力監視デバイス(SDカードへのログ記録やウェブページでのデータ表示)を作成することができます。

インターフェース

  • A0, A1, A2 - ACセンサー接続用

  • A4 (SDA), A5 (SCL) - "I2C"コネクタに表示(コネクタの他の2つのピンはセンサー供給用のVCCとGND)

  • RFモジュールnRF24L01+接続用インターフェース:

    • D11 - MOSI

      • D12 - MISO
    • D13 - SCK

      • D8 - RF_CE

      • D7 - RF_CSN

      • D2 - RF_IRQ

  • LCD5110接続用インターフェース:

    • D11 - MOSI

    • D13 - SCK

      • D5 - LCD_D/C

      • D6 - LCD_RST

      • D3 - LCD_CS

  • A3 - ボタン

ライブラリ

必要なライブラリ

Energy Monitor Shield を使用するには、以下のライブラリが必要です:

  • トランシーバー nRF24L01+ を操作するためのライブラリ - RF24

  • SPI をサポートする LCD 51110 ディスプレイを使用するためのライブラリ - LCD5110_Graph_SPI

  • 電流センサーを操作するためのライブラリ - EmonLib

  • 以下のライブラリを使用する必要があります - www.mysensors.org

  • MySensors Arduino Library (v1.5)

RF24 と LCD ディスプレイを操作する際に使用されるライブラリには SPI が必要です。

ライブラリ使用時の特徴

ライブラリには、それらの動作を理解するための例が含まれています。

RF モジュールの初期化は以下のように行います:

... //RF24 radio(CE,CSN); RF24 radio(7,8); ...

LCD ディスプレイの初期化は以下のように行います:

... //LCD5110 myGLCD(DC,RST,CS); LCD5110 myGLCD(5,6,3); ...

簡単なデモ


#include <SPI.h>
#include <LCD5110_Graph_SPI.h>
#include "EmonLib.h"

#define WINDOW 15
#define DELTA 1500

EnergyMonitor emon1;

double sIrms;
float Pcur;
float Pmax;
float Pmin=100;

LCD5110 myGLCD(5,6,3);

extern unsigned char SmallFont[];

unsigned long measureTime;
boolean flag=false;
double delta=0;

#define DELTAMEASURE 30000

void setup(void)
{
myGLCD.InitLCD(70);
myGLCD.setFont(SmallFont);

myGLCD.update();

emon1.current(0, 111.1); // 電流: 入力ピン、キャリブレーション。
double Irms[WINDOW];
// キャリブレーション (オフセットを見つける)
double cIrms = 0;
flag = false;

while (!flag) {
myGLCD.print("calibrating", 0, 0);
myGLCD.update();
Irms[0] = emon1.calcIrms(1480); // 測定の最初の値は明らかに「不正確」
//Serial.println("delta を計算");
for (int i=0; i<WINDOW; i++) {
Irms[i] = emon1.calcIrms(1480);
cIrms = cIrms + Irms[i];
delay(100);
}
delta = cIrms/WINDOW;
flag = true;
}

//myGLCD.print(" ready", 0, 0);
//myGLCD.update();

}

void loop(void)
{
// 現在の値を記録
sIrms = emon1.calcIrms(1480) - delta; // Irms のみを計算
sIrms = abs(sIrms);
Pcur = sIrms*0.220;

// 取得したデータを表示
char tbuf[6];
dtostrf(Pcur,5,5,tbuf);
myGLCD.print(tbuf, 0, 0);
dtostrf(analogRead(A3),4,0,tbuf);
myGLCD.print(tbuf, 30, 15);

myGLCD.update();

delay(250);

}

ワイヤレス技術を使用した簡単なデモ

/*
このサンプルコードはパブリックドメインに属します。
*/

#include <SPI.h>
#include <MySensor.h> // MySensors.org ライブラリ V1.5 を含む
#include "EmonLib.h" // Emon ライブラリを含む
#include <LCD5110_Graph_SPI.h> // NOKIA5110 ライブラリを含む

#define CHILD_ID_POWER 0

EnergyMonitor emon;

LCD5110 myGLCD(5,6,3);
extern unsigned char SmallFont[];

MyTransportNRF24 transport(7, 8); //EMv1 用
MySensor gw(transport);

unsigned long lastSend;
unsigned long SEND_FREQUENCY = 20000; // 送信間の最小時間 (ミリ秒単位)。ゲートウェイをスパムしないようにする。

float Irms;
float lastIrms = -99;

char tbuf[8];
char sbuf[12];

MyMessage IrmsMsg(CHILD_ID_POWER, V_KWH);

void setup()
{
myGLCD.InitLCD();
myGLCD.setFont(SmallFont);
myGLCD.update();

// 第三引数はリピーターモードを有効にします。
gw.begin(NULL, AUTO, true),
gw.sendSketchInfo("Energy Monitor v1", "1.0");

// emon.current(0, 111.1); // 電流: 入力ピン、キャリブレーション。
emon.current(0, 66.5);

// すべてのセンサーをゲートウェイに登録 (子デバイスとして作成されます)

gw.present(CHILD_ID_POWER, S_POWER);
}

void loop()
{
gw.process();
unsigned long now = millis();

double Irms = emon.calcIrms(1480); // Irms のみを計算
float realIrms = emon.Irms*220; // 実効電力を変数に抽出

if (realIrms != lastIrms) {
gw.send(IrmsMsg.set(realIrms, 1)); // ゲートウェイに送信

lastIrms=realIrms;
}

dtostrf(realIrms,5,2,tbuf);
sprintf(sbuf, " %s kWt", tbuf);
myGLCD.print(sbuf, 20, 0);
myGLCD.print("Powr:", 0, 0);

dtostrf(Irms,5,2,tbuf);
sprintf(sbuf, " %s Amp", tbuf);
myGLCD.print(sbuf, 20, 10);
myGLCD.print("Irms:", 0, 10);

myGLCD.update();

Serial.print("Power: ");
Serial.println(realIrms);

gw.sleep(SEND_FREQUENCY);
}

バージョントラッカー

リビジョン 説明 リリース日
1.0 公開バージョン 2014年4月1日
0.9b 公開バージョン(未製造) 2013年10月20日
0.9 試作版 2013年9月10日

質問と回答

購入方法

この製品は以下で購入可能です:

ライセンス

このドキュメントはCreative Commons Attribution-ShareAlike License 3.0の下でライセンスされています。ソースコードおよびライブラリはGPL/LGPLの下でライセンスされており、詳細はソースコードファイルをご確認ください。

技術サポートと製品ディスカッション

弊社製品をお選びいただきありがとうございます!お客様が弊社製品をスムーズにご利用いただけるよう、さまざまなサポートを提供しております。異なるニーズや好みに対応するため、複数のコミュニケーションチャネルをご用意しています。

Loading Comments...