You are on page 1of 43

Open Hardware

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!

No arrisque sua vida!


Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0
"I see no social imperative for free
hardware designs like the imperative
for free software. Freedom to copy
software is an important right because it
is easy now - any computer user can do
it. Freedom to copy hardware is not as
important, because copying hardware is
hard to do.
!
Richard Stallman @ Linux Today, 1999

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

4. Firmware 5. Software 6. Diagrama Mecnico

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

4. Firmware 5. Software 6. Diagrama Mecnico

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

Fonte: http://blog.fazedores.com/arduino-conheca-esta-plataforma-de-hardware-livre-e-suas-aplicacoes/ Fonte: http://en.wikipedia.org/wiki/RepRap_Project

Fonte: http://www.indiegogo.com/projects/the-open-hand-project-a-low-cost-robotic-hand Fonte: http://opensourceecology.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
Para saber mais
Wikipedia http://pt.wikipedia.org/wiki/Hardware_livre

Open Source Hardware Association http://oshwa.org

Lady Ada O que Open Hardware http://www.ladyada.net/


library/openhardware/whatisit.html

Arduino Team http://www.slideshare.net/arduinoteam/open-


source-hardware-summit-speech-2011

InterCon 2013 Open Hardware http://blog.fazedores.com/


open-hardware-no-intercon-2013/

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

Prottipo de uma verso simplificada

Apenas um sensor de corrente

Servidor exemplo para receber dados na


nuvem

Potncia aparente e aproximada (no estamos


medindo a tenso da rede e nem a fase)
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)

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. =

3600000 joules 3600 joules

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 Ethernet Shield 1 x Jack P2


2 x Resistores 470K

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

Nada de especial por aqui.

;-)

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

Realizao das medidas eltricas (emonLib)

Comunicao com o servidor (Ethernet Lib)

Servidor

Recebimento e armazenamento das medidas

Clculo da energia consumida

Apresentao dos resultados

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

# recebe dados de uma nova medida


# e armazena no banco de dados
get "/medida" do
# cria objeto com parmetros da requisio
@medida = Medida.new(
:irms => @params['irms'],
:potencia => @params['potencia']
)
# salva no banco
if @medida.save
return 'ok'
else
return 'nok'
end
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
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

Medio da tenso da rede

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