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 transistores R3 e R4 = resistor 330R para os leds D1 e D2 = diodo IN4007 Led1 e Led2 = led on / off Fusível 1 e Fusível 2 = proteção T1 e T2 = transistor para acionar bobina do relê Relê 1 e Relê 2 Bornes 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=utf8"); 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