Open Hardware na Prtica - Construindo um Medidor de Consumo de Energia Conectado Nuvem com Arduino

Download Open Hardware na Prtica - Construindo um Medidor de Consumo de Energia Conectado  Nuvem com Arduino

Post on 01-Nov-2014

630 views

Category:

Self Improvement

2 download

DESCRIPTION

Apresentao que fiz na Campus Party Brasil 2014 falando sobre Open Hardware e mostrando como construir um medidor de consumo de energia eltrica com Arduino.

TRANSCRIPT

1. 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 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 2. 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! 3. 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 4. 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 5. 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 6. 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 era 7. 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 8. 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/ 9. 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/ 10. 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/ 11. 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? 12. Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0 13. 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! 14. 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/ 15. 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 Arduino Mega 1 x Ethernet Shield 1 x OLED Display 1 x RTC Clock 1 x Sensor de Temperatura e Humidade Relativa do Ar 2 x Botes 16. 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) 17. 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 Watts (W) Tenso Volts (V) Corrente Ampres (A) 18. 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 Watts (W) Tenso Volts (V) Corrente Ampres (A) Quantidade de energia que est sendo consumida ou produzida por unidade de tempo! (Joule/seg) Quantidade de energia necessria para alimentar uma carga de 1 watt pelo perodo de 1 hora. (Watt-hora) Como: ! 1 hora = 3600 segundos ! Temos: ! 1 watt-hora = 1 watt x 3600 segundos = 1 (joule / segundos) x 3600 segundos = 3600 joules (kWh ou Quilowatt-hora) por energia" que pagamos na conta de luz. 3600000 joules 19. 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 Potncia (W) Tempo (segundos) rea da Figura = Energia (joules) 20. 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) 21. 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) 100A 50mA 127V 100W 0.78A 0.39mA 22. 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 50mA RMS 470K 470K +5Vcc Gnd +2.5V Pico a Pico +0.17V a +4.83V Pico a Pico -2.33V a +2.33V Pico a Pico -70.7mA a +70.7mA 33R 10uF + 23. 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 50mA RMS 470K 470K +5Vcc Gnd +2.5V Pico a Pico +0.17V a +4.83V Pico a Pico -2.33V a +2.33V Pico a Pico -70.7mA a +70.7mA 33R 10uF + 24. 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 25. 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 1 x Arduino Uno 1 x Ethernet Shield 1 x Protoboard 1 x Sensor de Corrente SCT-013-100 1 x Resistor 33 2 x Resistores 470K 1 x Capacitor 10F 1 x Jack P2 Fio Comum & Jumpers 26. 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 27. 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! 28. 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. ;-) 29. 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 30. 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 } 31. 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 // Emon lib - monitores de energia #include // SPI lib - para shield ethernet #include // 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 32. 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 } 33. 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 } 34. 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."); } } 35. 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 36. 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 37. 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 Servidor Serial Monitor Arduino + Shield Ethernet Cabo de Rede Circuito Sensor de Corrente Cabo USB Para Rede Eltrica Lmpada 100W 38. 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. 39. Campus Party 2014 30/01/2014 So Paulo, Brasil By Manoel Lemos manoel@lemos.net fazedores.com manoellemos.com CC-BY-SA 3.0 40. 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 41. 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 42. 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 43. 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!