Documente Academic
Documente Profesional
Documente Cultură
na prtica:
Construindo um medidor de
consumo de energia eltrica
conectado nuvem com
Arduino
Manoel Lemos
manoel@lemos.net
@mlemos
http://fazedores.com
http://manoellemos.com
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Muito cuidado ao trabalhar
com a rede eltrica!
Fonte: http://en.wikipedia.org/wiki/File:NicoBZH_-_Richard_Stallman_(by-sa)_(10).jpg
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Hardware
Phodda!
Fonte: http://en.wikipedia.org/wiki/File:NicoBZH_-_Richard_Stallman_(by-sa)_(10).jpg
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Hardware Phodda..
1. Diagrama Eltrico 2. Peas 3. Layout da Placa
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
era
Hardware Phodda..
1. Diagrama Eltrico 2. Peas 3. Layout da Placa
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Tudo Isto
+
Licenas Decentes &
Adequadas
=
Open Source Hardware
http://www.inmojo.com/licenses/
http://www.shareable.net/blog/how-to-choose-an-open-source-hardware-license
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Open Source Hardware
Open source hardware is hardware whose
design is made publicly available so that anyone
can study, modify, distribute, make, and sell the
design or hardware based on that design. The
hardwares source, the design from which it is
made, is available in the preferred format for
making modifications to it.
http://www.oshwa.org/faq/
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Alguns Projetos
Open Source Hardware
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Para saber mais
Wikipedia http://pt.wikipedia.org/wiki/Hardware_livre
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Mas por que
um medidor de
consumo de
energia?
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Porque
Possvel
e
Divertido!
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
OpenEnergyMonitor
http://openenergymonitor.org/
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
1 x Ethernet Shield
1 x Arduino Mega
1 x OLED Display
1 x RTC Clock
2 x Botes
1 x Sensor de Temperatura
e Humidade Relativa do Ar
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Vamos ao nosso
projeto!
Baseado no OpenEnergyMonitor
P = U x I
Potncia Tenso Corrente
Watts Volts Ampres
(W) (V) (A)
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Um Pouco de Teoria
P = U x I
Potncia Tenso Corrente
Watts Volts Ampres
(W) (V) (A)
(Joule/seg)
(Watt-hora)
Como:
!
1 hora = 3600 segundos
Quantidade de energia Quantidade de energia !
que est sendo consumida necessria para alimentar Temos:
ou produzida por unidade uma carga de 1 watt pelo !
de tempo! perodo de 1 hora. 1 watt-hora
=
1 watt x 3600 segundos
=
1 (joule / segundos) x
(kWh ou Quilowatt-hora) 3600 segundos
por energia" que pagamos na conta de luz. =
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Calculando a Energia a partir
de medidas da Potncia
rea da Figura
Potncia
(W) =
Energia
(joules)
Tempo
(segundos)
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Um Sensor para
Corrente Eltrica (AC)
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Um Sensor para
Corrente Eltrica (AC)
127V
100A
100W
0.39mA
0.78A
50mA
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Interfaceando com o
Arduino
100A RMS Pico a Pico Pico a Pico
-70.7mA a +70.7mA +0.17V a +4.83V
+5Vcc
Pico a Pico
50mA RMS -2.33V a +2.33V
33R
470K
+2.5V
+
10uF 470K
Gnd
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Interfaceando com o
Arduino
100A RMS Pico a Pico Pico a Pico
-70.7mA a +70.7mA +0.17V a +4.83V
+5Vcc
Pico a Pico
50mA RMS -2.33V a +2.33V
33R
470K
+2.5V
+
10uF 470K
Gnd
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
1. Diagrama Eltrico
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
2. Peas
Fio Comum & Jumpers
1 x Arduino Uno
1 x Protoboard
1 x Sensor de
Corrente
SCT-013-100
1 x Resistor 33
1 x Capacitor 10F
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
3. Layout
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Quase l!
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
4. Firmware
;-)
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
5. Software
Arduino
Servidor
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Arduino : Anatomia de um
Sketch
// bibliotecas & dependncias
// variveis globais
// configuraes
// funoes
!
void setup()
{
// inicializao
// executado antes de tudo e apenas uma vez
}
!
void loop()
{
// lao principal
// executado indefinidamente
}
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Arduino : Bibliotecas &
Configuraes
// bibliotecas necessrias
#include <EmonLib.h> // Emon lib - monitores de energia
#include <SPI.h> // SPI lib - para shield ethernet
#include <Ethernet.h> // Ethernet lib - para comunicao
!
// variveis globais
EnergyMonitor emon1; // instncia de um monitor de energia
const int CT_PIN = 1; // pino conectado ao CT (sensor)
!
byte mac[] ={0xAA,0xBB,0xCC,0xDD,0xEE,0xFF}; // endereo MAC
EthernetClient client; // instncia de um cliente TCP
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Arduino : setup()
void setup()
{
// inicializa porta serial para usarmos em depurao
Serial.begin(9600);
// inicializa o monitor de corrente
emon1.current(CT_PIN, 64);
// inicializa o shield ethernet
if (Ethernet.begin(mac) == 0) {
Serial.println(Shield ethernet no inicializado.);
while(1); // abortar (no temos rede)
} else {
Serial.println(Shield ethernet inicializado com
sucesso!");
}
delay(1000);
Serial.print("Endereo IP: ");
Serial.println(Ethernet.localIP()); // imprime endereo IP
}
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Arduino : loop()
void loop()
{
double Irms = emon1.calcIrms(1480); // mede a corrente
double Potencia = Irms * 127.0; // calcula a potncia
!
Serial.print("Irms: ");
Serial.print(Irms); // imprime a corrente na serial
Serial.print(" A \t");
Serial.print("Potencia: ");
Serial.print(Potencia); // imprime a potncia na serial
Serial.print(" W");
Serial.println();
!
sendData(Irms, Potencia); // envia dados pro servidor
!
delay(15000); // aguarde 15 segundos
}
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Arduino : sendData()
void sendData(double Irms, double Potencia) {
client.connect(10.0.1.108",4000);// conecta ao servidor
delay(500);
if (client.connected()) {
// realiza o GET enviando dados como parmetros
client.print("GET /medida?irms=); client.print(Irms);
client.print(&potencia="); client.print(Potencia);
client.println(" HTTP/1.1");
client.println("Host: 10.0.1.108");
client.println();
delay(500);
// l a resposta (e a ignora)
while (client.available()) { char c = client.read(); }
delay(500);
client.stop(); // fecha a conexao
Serial.println("Dados enviados!");
} else {
Serial.println("Falha na conexo.");
}
}
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Servidor : GET /medida
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Servidor : GET /dashboard
# calcula energia total consumida no dia
get "/dashboard" do
# pega todas as medidas de hoje (no faa isto em prod!)
@medidas = Medida.where("DATE(created_at) = DATE(?),
Time.now)
@consumo = 0 # acumulador da energia total
anterior =nil # medida anterior
@medidas.each do |atual|
if anterior
# calcula a energia consumida entre duas medidas
tempo = atual.created_at - anterior.created_at
energia = (atual.potencia + anterior.potencia) *
tempo / 2
@consumo = @consumo + energia # acumula
end
anterior = atual # atualiza medida anterior
end
@consumo = @consumo / 3600000 # joules -> kWh
end
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Juntando Tudo
Para Rede
Eltrica
Servidor
Arduino
+
Shield Ethernet Lmpada
100W
Cabo de Rede
Circuito
Serial Monitor
Cabo USB
Sensor de
Corrente
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Juntando Tudo
Macete
!
A corrente
multiplicada pelo
nmero de voltas.
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Incrementando
Medio em 2 ou 3 fases
Displays
Sensores de temperature
Voc manda
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Crie, Construa e
Compartilhe
https://github.com/mlemos/energy-monitor-cpbr7
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
.com
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
Valeu!
Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0