hacking class - controlando tomadas da sua casa via internet · servidor java recebe request http...

23
Hacking Class - Controlando tomadas da sua casa via Internet 

Upload: lytuyen

Post on 31-Mar-2018

214 views

Category:

Documents


1 download

TRANSCRIPT

Hacking Class ­ Controlando tomadas da sua casa via 

Internet 

 O que precisamos para controlar uma tomada via Web

• Microcontrolador

• Relê, transistor, diodo e resistor

• PC ou um shield Ethernet ou wifi para seu microcontrolador

Aqui vamos usar...

• Arduino

• Placa Tomad@

• PC e shield wifi para Arduino

Porque é necessário utilizar relés ?

• As portas de saída do microcontrolador (ATmega), utilizado nas placas Arduino, tem uma capacidade máxima de corrente de 40mA por porta. Essa corrente é suficiente apenas para alimentar uns 4 Leds comuns, portanto para acionar dispositivos que consomem correntes acima de 40mA em 5Volts, dispositivos de voltagens maiores e dispositivos alimentados com tensão AC, é necessário colocar um transistor e um relé entre o micro­controlador e a carga .

O que é um relé ?

Os relés são basicamente interruptores acionados elétricamente.

Os relés podem possuir um ou mais contatos (“interruptores”) sendo que esses contatos podem ser:

• NA (normalmente aberto) / NO (normal open) ou

• NF (normalmente fechados) / NC (normal closed) .

Como funciona um Relé• O acionamento dos contatos de um relé ocorre quando a sua bobina é energizada. 

Nesse momento é criado um campo magnético que atrai uma alavanca responsável pelo acionamento dos contatos

• Para acionar um relé precisamos de transistor e diodo de proteção

relé simples relé duplo

Hacking Class Relê simples de contato duplo NA / NF

Porque é necessário utilizar o transistor ?

• Existem relés bem pequenos que poderiam ser acionados diretamente por um microcontrolador, porém na maioria dos casos utilizamos um transistor entre a porta do micro­controlador e o relé devido a corrente necessária para ativar a bobina do relé ser maior que 40mA.

Tensão reversa nos relés• Ao desenergizar a bobina de um relé, ocorre um fenômeno que faz com 

que seja gerada uma tensão reversa pela bobina. Devemos proteger o circuito responsável pelo acionamento, instalando um diodo em paralelo com a bobina.

Placa Tomad@

Hacking Class Componentes da placa

R1 e R2 = resistor 1k – para os transistoresR3 e R4 = resistor 330R – para os ledsD1 e D2 = diodo IN4007Led1 e Led2 = led on / offFusível 1 e Fusível 2 = proteção T1 e T2 = transistor para acionar bobina do relêRelê 1 e Relê 2Bornes para encaixe dos fios de acionamento da saída do contato do relê

Conectando seu Program­Me na placa Tomad@

Hacking Class Ligando a placa no Arduino

Hacking Class Ligando a placa na tomada

Devemos romper o fio de uma das fases;Cortamos o fio e vamos ligar cada uma das pontas em um dos bornes da placa

Hacking Class Código para ligar e desligar relê

void setup() {  pinMode(2, OUTPUT);  pinMode(3, OUTPUT);}

void loop() {  digitalWrite(3, LOW);  digitalWrite(2, HIGH);  delay(1000);  digitalWrite(2, LOW);  digitalWrite(3, HIGH);  delay(1000);}

Hacking Class Tomada com servidor Web no PC

1. Computador conectado na Web com servidor Java recebe request HTTP com solicitação para acionar a tomada

2. Este servidor web terá uma placa Arduino ligada permanentemente. O servlet (ou equiv) vai acionar a placa via comunicação serial RS­232.

3. Para controlar as tomadas, vamos ligar a placa Tomad@ no Arduino. Essa placa possui um par de relês que podem ser ligados  em uma tomada e acionados on / off através de sinal digital 0 ou 1

4.  Vamos ligar uma tomada no relê da nossa placa ou então um aparelho qualquer.

Hacking Class Código Arduino 

void setup() {  Serial.begin(9600);  pinMode(2, OUTPUT);  pinMode(3, OUTPUT);}

void loop() {  if(Serial.available() >0) {    int incoming=Serial.read();    Serial.println("Recebendo dados");    Serial.println(incoming, DEC);    acionarRele(incoming);// seu protocolo  }}

Hacking Class Código Arduino 

void acionarRele(int codigo) {    if(codigo=65) {      Serial.println("HIGH no rele 1");      digitalWrite(3, HIGH);    }    else if(codigo=66) {      Serial.println("LOW no rele 1");      digitalWrite(3, LOW);    }    else if(codigo=67) {      Serial.println("HIGH no rele 2");      digitalWrite(2, HIGH);    }    else if(codigo=68) {      Serial.println("LOW no rele 2");      digitalWrite(2, LOW);    }}

Hacking Class Código Servlet 

response.setContentType("text/html;charset=UTF-8"); PrintWriter out = response.getWriter(); try { byte[] dados = new byte[1]; dados[0] = Byte.parseByte(request.getParameter("rele")); try { Arduino.enviar(dados);

...

Hacking Class Código Arduino.enviar(bytes) lib RXTX

outputStream = serialPort.getOutputStream(); serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

serialPort.notifyOnOutputEmpty(true);

outputStream.write(bytes); serialPort.close();

Controlando tomadas via Web utilizando shield wifi

• Nesta demonstração, controlaremos 4 lâmpadas via WEB utilizando o Program­me conectado em 2 placas Tomad@ que farão a interface com as lâmpadas e um shield WIFI  que fonecerá a conectividade IP ao Program­Me.

Circuito para controle de 4 lâmpadas

Funcionamento

• Temos rodando no Arduino um mini servidor WEB que apresenta uma página bem simples onde podemos selecionar qual é o relé que desejamos ativar. Uma vez que selecionamos um dos relés, a aplicação detecta qual foi e inverte o nível aplicado na porta associada aquele relé.

Vamos praticar?

• Laboratório de uso de Arduino e placa tomad@

• Informaremos a Url para download dos slides em sala de aula