Energy Monitor Shield V0.9b


Energy Monitor Shield é uma placa de expansão compatível com Arduino projetada para construir um sistema de monitoramento de energia com tela LCD e uma interface para conectar o transceptor sem fio nRF24L01 +.
Modelo: 830070001
Recursos
-
Conecte até três sensores AC (30-100A).
-
Suporte para tela LCD Nokia LCD5110
-
Desligue a luz de fundo do LCD com um jumper
-
Dois botões para controle (operam um pino analógico)
-
Interface para conectar o transceptor a 2.4G nRF24L01 +
-
Conector compatível com GROVE: I2C
-
Totalmente compatível com Ethernet Shield (Wiznet 5100 + SD)
Layout e esquemáticos

-
No lado esquerdo do EM Shield há três conectores para sensores de corrente, à direita - conector para a tela LCD.
-
O jumper JP1 é usado para ativar / desativar a luz de fundo real da tela LCD.
-
No canto superior direito - conector I2C.
-
À direita estão dois botões (rotulados S1 e S2).
-
No centro da placa (logo à direita da tela LCD) - conector para nRF24L01 +.
Esquemático do dispositivo
Funcionalidade básica
Na versão básica (sem usar o Ethernet Shield) pode-se organizar o monitoramento do consumo de energia em três circuitos diferentes usando sensores de corrente. As informações sobre o nível atual de consumo podem ser exibidas na tela LCD. O gerenciamento do dispositivo pode ser organizado usando dois botões no Shield. Os dados obtidos podem ser transmitidos pelo transceptor nRF24L01 +.
Capacidades de expansão
Adicionalmente, o EM Shield pode conectar qualquer dispositivo usando o conector Grove compatível com i2c (sensores, telas, etc.). O EM Shield foi projetado para ser totalmente compatível com o Ethernet Shield (Wiznet 5100 + SD) - assim você pode usar esses dois Shields juntos para criar um dispositivo de monitoramento de eletricidade ainda mais avançado (registro em cartão SD e apresentação de dados em uma página web).
Interfaces
-
A0, A1, A2 - usados para conectar sensores AC
-
A4 (SDA), A5 (SCL) - expostos no conector "I2C" (os outros dois pinos do conector - VCC e GND para alimentação do sensor)
-
Interface para conectar módulo RF nRF24L01+:
-
D11 - MOSI
- D12 - MISO
-
D13 - SCK
-
D8 - RF_CE
-
D7 - RF_CSN
-
D2 - RF_IRQ
-
-
-
Interface para conectar LCD5110:
-
D11 - MOSI
-
D13 - SCK
-
D5 - LCD_D/C
-
D6 - LCD_RST
-
D3 - LCD_CS
-
-
-
A3 - Botões
Bibliotecas
Bibliotecas necessárias
Para usar o Energy Monitor Shield são necessárias as seguintes bibliotecas:
-
Trabalho com o transceptor nRF24L01+ - RF24
-
Uso da tela LCD 51110 (com suporte a SPI) - LCD5110_Graph_SPI
-
Trabalho com sensores de corrente - EmonLib
-
Você deve usar a biblioteca de - www.mysensors.org
-
MySensors Arduino Library (v1.5)
São necessárias as bibliotecas que são usadas ao trabalhar com RF24 e tela LCD: SPI
Recursos ao usar as bibliotecas
A biblioteca usou exemplos delas apenas para entender como funcionam.
A inicialização do módulo RF é a seguinte:
... //RF24 radio(CE,CSN); RF24 radio(7,8); ...
A inicialização da tela LCD é a seguinte:
... //LCD5110 myGLCD(DC,RST,CS); LCD5110 myGLCD(5,6,3); ...
Demonstração simples
#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); // Current: input pin, calibration.
double Irms[WINDOW];
// Calibrate (find offset)
double cIrms = 0;
flag = false;
while (!flag) {
myGLCD.print("calibrating", 0, 0);
myGLCD.update();
Irms[0] = emon1.calcIrms(1480); // the first value in the measurement obviously "crooked"
//Serial.println("calculate 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)
{
// write the current value
sIrms = emon1.calcIrms(1480) - delta; // Calculate Irms only
sIrms = abs(sIrms);
Pcur = sIrms*0.220;
// the received data is printed
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);
}
Demonstração simples com tecnologia sem fio
/*
This example code is in the public domain.
*/
#include <SPI.h>
#include <MySensor.h> // Include MySensors.org Library V1.5
#include "EmonLib.h" // Include Emon Library
#include <LCD5110_Graph_SPI.h> // Include NOKIA5110 Library
#define CHILD_ID_POWER 0
EnergyMonitor emon;
LCD5110 myGLCD(5,6,3);
extern unsigned char SmallFont[];
MyTransportNRF24 transport(7, 8); //for EMv1
MySensor gw(transport);
unsigned long lastSend;
unsigned long SEND_FREQUENCY = 20000; // Minimum time between send (in milliseconds). We don't wnat to spam the gateway.
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();
// The third argument enables repeater mode.
gw.begin(NULL, AUTO, true),
gw.sendSketchInfo("Energy Monitor v1", "1.0");
// emon.current(0, 111.1); // Current: input pin, calibration.
emon.current(0, 66.5);
// Register all sensors to gw (they will be created as child devices)
gw.present(CHILD_ID_POWER, S_POWER);
}
void loop()
{
gw.process();
unsigned long now = millis();
double Irms = emon.calcIrms(1480); // Calculate Irms only
float realIrms = emon.Irms*220; //extract Real Power into variable
if (realIrms != lastIrms) {
gw.send(IrmsMsg.set(realIrms, 1)); //send to gateway
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);
}
Rastreador de Versões
| Revisão | Descrição | Lançamento |
| 1.0 | Versão pública | 01.04.2014 |
| 0.9b | Versão pública (Não produzida) | 20.10.2013 |
| 0.9 | Protótipo | 10.09.2013 |
Perguntas e Respostas
-
Faça uma pergunta por e-mail para [email protected]
Como comprar
Este produto pode ser adquirido em:
-
China (envio mundial)
-
Rússia
Licenciamento
Esta documentação é licenciada sob a Licença Creative Commons Atribuição-CompartilhaIgual 3.0 O código-fonte e as bibliotecas são
licenciados sob GPL/LGPL, veja os arquivos de código-fonte para detalhes.
Suporte Técnico & Discussão sobre o Produto
Obrigado por escolher nossos produtos! Estamos aqui para lhe fornecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja o mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.
