Etec JORGE STREET TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM ELETRÔNICA. Casa Automatizada

Tamanho: px
Começar a partir da página:

Download "Etec JORGE STREET TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM ELETRÔNICA. Casa Automatizada"

Transcrição

1 Centro Estadual de Educação Tecnológica Paula Souza GOVERNO DO ESTADO DE SÃO PAULO Etec JORGE STREET TRABALHO DE CONCLUSÃO DO CURSO TÉCNICO EM ELETRÔNICA Casa Automatizada Bruna Souza dos Santos Gabriel de Souza Rodrigo Vitor Limas Professor (es) Orientador(es): Larry Aparecido Aniceto São Caetano do Sul / SP 2013

2 Casa Automatizada Trabalho de Conclusão de Curso apresentado como pré-requisito para obtenção do Diploma de Técnico em Eletrônica. São Caetano do Sul / SP 2013

3 Dedicamos este projeto a todas as pessoas que estiveram conosco desde o inicio do curso. Dedicamos a Etec Jorge Street por todo apoio e recursos que disponibilizaram para nosso aprendizado, aos nossos familiares que sempre incentivaram nossa busca por novos conhecimentos.

4 AGRADECIMENTOS Agradecemos primeiramente a Deus pela a oportunidade de fazer esse curso técnico, também aos nossos país pelo suporte na realização do trabalho, em qualquer grau de envolvimento, agradecemos aos nossos professores pelo conhecimento passado a nós, aos colegas de sala e ao Centro Paula Souza por essa oportunidade de expressar nossos conhecimentos adquiridos durante o curso.

5 RESUMO O projeto tem como função objetivo principal, automatizar uma residência, de tal forma que seja possível ligar ou desligar uma lâmpada, abrir o portão da garagem, acionar o ar condicionado e qualquer equipamento elétrico existente em uma residência, através de um comando enviado por qualquer dispositivo móvel com acesso a internet. Automação residencial tende a dispor mais segurança e conforto para seus usuários, além de prover acessibilidade para portadores de necessidades especiais que, muitas vezes, dependem de ajuda para executar algumas tarefas. Este projeto apresenta um protótipo de automação residencial de baixo custo, composto por hardware de controle, software para gerenciar todo o processo, com acesso à internet e suporte a dispositivos móveis, além de uma maquete para demonstração. Palavras-chave: Automação residencial, Acessibilidade, Internet.

6 ABSTRACT The project has as primary objective, automate a house, in the way of making possible turn a lamp on or off, open the garage gate, turn on the air conditioner and any other electric equipment that can be in a house, through a command send by any mobile dispositive with internet access. Residential automation tends to offer make theirs users more secure and comfortable, furthermore provides accessibility to those that have special needs that, often, depends of help to execute some tasks. This project presents a low cost prototype of residential automation, software to manage all the process, with internet access and support to mobile dispositive, further a model to demonstration. Keywords: Home automation, accessibility, internet.

7 LISTA DE FIGURAS Figura 1 - Arduino Mega Figura 2 - Modulo Ethernet Shield Figura 3 - Motor de Passo 28BYJ Figura 4 - Placa Interface de potência com relé Figura 5 - Placa de relé sendo confeccionado por CNC Figura 6 - Esquema elétrico da interface de potência de relé Figura 7 - Página de login Figura 8 - Site de controle Figura 9 Maquete... 21

8 APÊNDICES APÊNDICE 1: CÓDIGO FONTE DA PÁGINA DE LOGIN APÊNDICE 2: CÓDIGO DE CONEXÃO COM O BANCO DE DADOS APÊNDICE 3: CÓDIGO DE INTERFACE COM O USUÁRIO APÊNDICE 4: CÓDIGO DE CONTROLE (ARDUINO)... 34

9 Sumário 1 INTRODUÇÃO OBJETIVOS Objetivos Gerais Objetivos Específicos JUSTIFICATIVA METODOLOGIA FUNDAMENTAÇÃO TEÓRICA Automação Residencial Linguagens de Programação Utilizadas HTML PHP C/C Servidores e Banco de Dados WampServer Apache MySQL PLANEJAMENTO DO PROJETO Previsão de Custo DESENVOLVIMENTO DO PROJETO Hardware Arduino Mega Arduino Ethernet Shield Motor de Passo Interface de Potência com Relés Software Ferramentas Utilizadas Código Fonte Site (PHP + HTML) Código de controle (C/C++) RESULTADOS OBTIDOS CONCLUSÃO REFERÊNCIAS BIBLIOGRÁFICAS... 23

10 8 1 INTRODUÇÃO Automação é a aplicação de técnicas através da computação, eletrônica ou mecânica, para diminuir o uso de mão-de-obra em qualquer processo. Uma tarefa realizada por máquinas tende a serem mais precisas, rápidas, confiáveis do que fossem realizadas por um humano. Nos últimos anos as pessoas estão cada vez mais dependentes da tecnologia, e a cada dia buscam um maior conforto em suas vidas com a utilização da tecnologia. Automação já é realidade há muitos anos no mundo todo, principalmente nas indústrias, aonde sua inclusão veio principalmente para diminuir os custos, além de diminuir as tarefas de alto risco dos funcionários, de forma geral a automação surgiu da necessidade de maximizar a produção com menor consumo de energia, menor emissão de resíduos e melhores condições de segurança, sendo ela humana ou material. Podemos definir a automação como um conjunto de técnicas computadorizadas ou mecânicas que podem ser aplicadas em um processo objetivando torna-lo mais eficiente. Automação pode ser dividida em dois pontos principais: Automação industrial e Automação Comercial. O ponto que abordaremos nesse projeto é a automação residencial, que é uma vertente da automação comercial. Automação residencial vem ganhando um espaço maior no mercado tecnológico, pois tentar garantir um conforto, segurança e economia maior para seus adeptos. Hoje a automação residencial tem uma gama extensa de alternativa, possibilitando interagir vários ambientes em uma única central, incluindo o controle de temperatura, segurança, luminosidade, som, jardinagem, entre outros. 2 OBJETIVOS Neste capitulo, vamos explanar todos os objetivos do projeto.

11 9 2.1 Objetivos Gerais Este projeto tem como objetivo principal desenvolver um sistema de automação residencial de baixo custo, utilizando a internet para realizar a interação do usuário com sua residência, podendo controlar a iluminação, abertura de portão e controle de equipamentos motorizados. Este projeto tende a mostra que é possível automatizar residências, com baixos investimentos, permitindo um número maior de beneficiários com essa tecnologia, além de facilitar a vida de pessoas portadoras de necessidades especiais. 2.2 Objetivos Específicos Projetar e implementar software de gerenciamento; Desenvolver o esquema elétrico do hardware de acionamento; Construir circuito impresso para o controle de acionamento dos dispositivos e Construir uma maquete para demonstração. 3 Justificativa Automação residencial, por ser uma tecnologia relativamente nova no Brasil, e com isso seu custo de implantação torna-se elevada, restringindo o sua abrangência para a população de maior poder aquisitivo. Entretanto, buscamos montar um protótipo de baixo custo, visando atingir todas as camadas da sociedade, além disso, nosso projeto busca facilitar a vida de portadores de necessidades especiais, dando um maior conforto, segurança e agilidade em suas tarefas domesticas. Analisando o mercado de automação e a condição socioeconômica brasileira, este trabalho busca apresentar uma solução simples, barata e de fácil acesso para a população, tendo demostrar que a automação já é uma realidade e que é plausível e viável automatizar uma residência.

12 10 4 Metodologia Este projeto foi desenvolvido por pesquisas bibliográficas baseadas em consultas a sites da internet e artigos. Com base nessas pesquisas, o projeto foi desenvolvendo a parte teórica, além de sua aplicação prática. Na primeira etapa do projeto, foi discutido entre os membros do grupo, como seria realizado todo o processo de automação de uma residência. A partir desse momento foi decidido que a residência seria controlada por qualquer dispositivo ethernet. Na segundo etapa foi desenvolvido um software de controle, utilizando à plataforma de desenvolvimento Arduino, que pode alterar o comportamento de todos os periféricos da residência, através de um aparelho com acesso a internet. Na terceira etapa foi desenvolvido um software de interação com usuário, no qual pode enviar comandos para o software controlador. Na terceira e ultima etapa foi desenvolvido placas de circuito impresso, utilizadas para interligar o circuito elétrico da residência com o circuito controlador. 4 FUNDAMENTAÇÃO TEÓRICA Nesse capitulo serão abordados os conceitos que foram fundamentais para o desenvolvimento do projeto Casa Automatizada. 4.1 Automação Residencial Automação residencial é uma tecnologia relativamente nova, podemos caracteriza-la como a junção de uma casa com a robótica, com isso cria-se uma tecnologia capaz de controlar uma residência de forma geral através de um único equipamento. Com a diminuição dos custos de equipamentos eletrônicos, como computadores, componentes eletrônicos e a difusão da internet, tornou-se cada vez mais viável a utilização da automação no ambiente industrial e com isso foi apenas questão de tempo para a automação invadir as vidas das pessoas. Hoje é possível

13 11 ver a utilização da automação em equipamentos essenciais para uma residência, como: máquina de lavar, geladeira, fogão, entre outros. A automação residencial deu um grande passo para sua evolução, a partir do momento em que o desenvolvimento de software tornou-se comum, a evolução de microprocessadores, sensores, relés, abriram novas possibilidades de utilização dos mesmos, além de diminuir seu custo de manutenção. A automação é um recurso utilizado para controle de um ou mais aparelhos eletrônicos por meio de uma central computadorizada, automação em uma residência não é diferente, ela utiliza do mesmo conceito da automação industrial, mais com uma diferença, prioriza o bem-estar, conforto, segurança, economia de agua, luz, telefone e controle do sistema se segurança para as residências. 4.2 Linguagens de Programação Utilizadas Linguagem de programação é um método para passar instruções ao computador. Permite ao programador especificar precisamente quais dados o computador vai atuar, armazenar ou transmitir HTML HTML (Hyper Text Markup Language) ou Linguagem de Marcação de Hipertexto é uma linguagem de programação utilizada para produzir páginas para a internet, juntamento com o HTTP (Protocolo de Transferência de Hipertexto) e URL ( Localizador Uniforme de Recursos ), são os principais protocolos da WEB PHP O PHP (Hypertext Prepocessor) é uma linguagem, de script Open Source, para desenvolvimento de aplicações WEB, mais utilizada hoje em dia. O PHP é uma ferramenta muito forte para desenvolvimento Web, ele pode gerar imagens, suporte

14 12 para aplicações em flash, suporta vários padrões de texto, como XML e XHTML, e suporta uma ampla variedade de banco de dados C/C++ A linguagem de programação C/C++ é uma linguagem amplamente utilizada para criar programas de computador, ela oferece para seus usuários o máximo de controle e eficácia no programa. Com a linguagem C é possível escrever programas para diversas plataformas, desde microcontroladores até sistemas mais avançados como o sistema operacional. A linguagem C++ foi uma evolução da C, onde tornou-se uma linguem orientada para objetos. 4.3 Servidores e Banco de Dados WampServer Wampserver é uma plataforma para o sistema operacional Windows, voltada para aplicações web que necessitam de um banco de dados Mysql e linguagem PHP Apache Apache é um servidor WEB com código fonte aberto é o servidor mais utilizado ultimamente, tem um excelente desempenho, segurança e compatibilidade com diversas plataformas. O apache é o servidor que processa as solicitações do usuário, para acessar uma determinada pagina na internet MySQL

15 13 É um sistema de gerenciamento de banco de dados, que utiliza a linguagem SQL(Structured Query Language Linguagem de consulta Estruturada). Ele tornouse o mais utilizado bando de dados open source do mundo. O MySQL funciona em diversas plataformas como, Linux, Windows, Netware e tem acesso a diversas linguagens, C, C++, Java, PHP, Python, entre outros. 5 PLANEJAMENTO DO PROJETO Para o desenvolvimento do projeto foram escolhidos a plataforma de programação Arduino, por ser uma ferramenta de desempenho surpreendente e de fácil utilização, a linguagem PHP por ter uma sintaxe simples e possibilitar tarefas complexas de implementação de objetos. Para a criação da interface de interação com o usuário foi utilizado o HTML em conjunto com PHP, que forneceram uma grande gama de possibilidades de criação da interface. O software desenvolvido para interagir com o usuário tem uma função fundamental, alterar o estado dos periféricos da residência. O MySQL foi escolhido como servidor de banco de dados por ser uma linguagem nativa do PHP. Os periféricos citados são basicamente, lâmpadas internas e motores encontrados na piscina e portão da garagem. Na figura abaixo, podemos analisar o fluxograma de funcionamento do projeto. 5.1 Previsão de Custo Fluxograma. Um dos objetivos no projeto, Casa automatizada, é construir um protótipo para controlar uma residência, com baixo custo para os consumidores, com isso utilizamos ferramentas open-sourcer, que é possível comercializar e baratear um projeto. Na tabela abaixo, pode-se verificar o custo aproximado do projeto.

16 14 Tabela de custo. 6 DESENVOLVIMENTO DO PROJETO Durante toda a fase de implementação, foram realizados inúmeras analises e testes do circuito, visando identificar inconformidades no projeto. À medida que era encontrado inconformidades, eram corrigidas e testadas novamente até realizarmos uma analise de forma geral em todo software e circuito. 6.1 Hardware O hardware foi desenvolvido para interagir com o circuito, ligando-desligando equipamentos eletroeletrônico Arduino Mega O Arduino mega é uma placa de microcontrolador baseado no processador ATmega1280, possui 54 (cinquenta e quatro) entradas/saídas digitais, 16 (dezesseis) entradas analógicas. O ATmega1280 possui 128KB de memória flash para o armazenamento do código, 8KB de SRAM e 4KB de EEPROM. Microcontrolador ATmega1280 Tensão de Funcionamento 5v Tensão de Entrada 7-12V Tensão de Entrada (limites) 6-20V Pinos Digitais de I / O 54(15 oferecem saídas PWM) Entrada Analógica de Pinos 16 DC Currente per I / O Pin 40mA Corrente DC para Pin 3,3V 50mA

17 15 Memória Flash SRAM EEPROM Velocidade de Clock 128KB 8 KB 4 KB 16Mhz Figura 1 - Arduino Mega Arduino Ethernet Shield A placa Ethernet Shield do arduino é uma plataforma que interliga a placa Arduino Mega com a internet, através de uma porta RJ45 e um cabo de rede. Essa placa é baseada na W5100 Wiznet (chip ethernet), esse chips possibilita a comunicação TCP e UDP do arduino com redes de internet. O Ethetnet Shield funciona com tensão de 5V, fornecida pela placa arduino, possui uma velocidade de conexão de 10/100Mbps.

18 16 Figura 2 - Modulo Ethernet Shield Motor de Passo Motor de passo é um dispositivo que converte os pulsos eletrônicos em movimentos mecânicos. O controle do eixo desse tipo de motor é feito por pulsos elétricos aplicados na entrada do motor, esses pulsos pode controlar a direção do eixo, mudando a frequência dos pulsos, pode-se controlar a velocidade. Uma das grandes vantagens do motor de passo é a sua precisão. Para a confecção do projeto, utilizamos um motor de passo, modelo 28BYJ- 48, para simular um portão automático de uma residência. Com um comando executado pelo usuário, o motor de passo vai abrir ou fechar o portão de entrada de carros. Figura 3 - Motor de Passo 28BYJ Interface de Potência com Relés

19 17 A interface de potência com relés é a responsável por ligar e desligar equipamentos eletroeletrônicos.para o funcionamento dessa placa foram utilizados os seguintes componentes: Resistores, para limitar a passagem de corrente; Relés, que tem sua função semelhante a um interruptor; Diodo, para retificar o circuito; Leds para sinalizar o funcionamento do relé. Na imagem abaixo, podemos visualizar a placa relé montada: Figura 4 - Placa Interface de potência com relé A placa de relé foi produzida, primeiramente fazendo um desenho do circuito impresso e analisando o circuito, observando se estava de acordo com o projeto, posteriormente o desenho foi enviado para um programa de cad, onde foi gerado o

20 18 código G, que foi direcionado para uma impressora CNC realizar a confecção das placas. Figura 5 - Placa de relé sendo confeccionado por CNC Na imagem abaixo, pode-se observar o esquema elétrico da interface de potência com relé. A placa foi confeccionada com tensão de alimentação do relé em 12V e a tensão de controle com no mínimo 2V e máximo 5V. Figura 6 - Esquema elétrico da interface de potência de relé

21 Software Software é toda a parte lógica no nosso projeto, contendo conjuntos de instruções para realizar alguma tarefa pré-definida Ferramentas Utilizadas A ferramenta escolhida para o desenvolvimento desse projeto foi o ambiente de desenvolvimento integrado (IDE Integrated Developtment Environment) Arduino 1.5 Beta, e o Notepad++++. Os principais motivos para escolha desses ambientes de desenvolvimento foram à facilidade e agilidade com que eles compilam os códigos digitados Código Fonte Site (PHP + HTML) A interface que integra o usuário ao sistema controlador da casa, foi criador por códigos PHP em conjunto com o HTML. Para uma maior segurança do site de cada usuário, foi criado um sistema de login, onde o usuário tem uma conta prédefinida para acessar seu sistema. Figura 7 - Página de login O código da página de login pode-se ser observada no apêndice 1.

22 20 A comunicação com o banco de dados foi feito em PHP, onde recebe os dados digitados pelo usuário na tela de login e confere com o banco se as informações digitadas estão corretas. No apêndice 2 pode-se ser observado o código de conexão com o banco de dados e a verificação da existência do usuário. O site que realiza a comunicação entre o usuário e o sistema foi configurado com botões que correspondem o ligar ou desligar de um determinado equipamento que deseja ser controlado, na imagem abaixo, pode-se observar o site de controle, sendo acessado por um dispositivo móvel. Figura 8 - Site de controle No apêndice 3 consta o código da página de interface com o usuário. A estrutura de comunicação com o banco de dados e a verificação de login dos usuários foram utilizados os códigos do site, PHP-login.net, que disponibiliza os scripts de login por páginas criadas em PHP Código de controle (C/C++)

23 21 O script que controla todos os equipamentos eletroeletrônicos foi desenvolvido na linguagem C++, esse script pode ser considerado o núcleo do projeto, pois ele que recebe o comando enviado pelo usuário, através do site e decodifica qual equipamento o usuário pretende controlar, assim ele envia um sinal para a interface de potência para acionar ou não os equipamentos. O código de controle está descrito no apêndice 4. 7 RESULTADOS OBTIDOS Após a criação dos códigos fonte e a montagem das placas de potencia, montamos uma maquete, representando uma casa para demostrar todo o funcionamento do circuito. Figura 9 Maquete

24 22 O resultado de obtido com a montagem do projeto foram os esperados, primeiramente montamos um servidor web localmente, simulando o acesso a internet, com isso para acessarmos a página de controle, tivemos apenas que digitar o endereço do servidor local que hospedava toda a estrutura do site. Conseguimos simular com sucesso o funcionamento de uma casa automatizada dentro da maquete montada para o projeto, todas as lâmpadas foram acionadas pelo celular, o motor de passo foi controlado para abrir e fechar o portão da garagem, além de controlar a fonte da cascata instalada na piscina. 8 CONCLUSÃO Esse projeto teve como objetivo, construir uma solução de casa automatizada de baixo custo, visando à população com baixo poder aquisitivo, além de ajudar pessoas portadoras de necessidades especiais, com automação planejamos aumentar o conforto dos usuários e segurança das suas residências. Analisando o mercado de automação residencial, concluímos que nosso projeto conseguiu atingir o objetivo estipulado, automação de baixo custo, com o uso de softwares livres e hardware de arquitetura aberta, conseguimos reduzir bruscamente o valor de uma automação residencial. O custo do projeto, contando com o hardware e o software ficou em torno de R$ 400,00 sem contar com possíveis modificações na casa do usuário na hora de instalar todo o sistema. O projeto proposto nesse trabalho obteve êxito em apresentar uma solução prática e barata na área de automação residencial, isso foi alcançado através de pesquisas de mercado e de novas tecnologias que poderiam baratear o custo de uma automação, a utilização de software e hardware livres foram de suma importância para alcançar esse resultado.

25 23 9 Referências Bibliográficas Arduino.cc. (s.d.). Arduino Mega. Acesso em Agosto de 2013, disponível em Arduino: Brain, M. (01 de Abriel de 2000). Coomo funciona a programação em C. Acesso em Setembro de 2013, disponível em HowStuffWorks: Engenharia é. (s.d.). Microcontrolador Arduino. Acesso em Agosto de 2013, disponível em Engenharia é: FLIPFLOP. (18 de Fevereiro de 2013). Controlando um motor de passo 5V com Arduino. Acesso em Outubro de 2013, disponível em FlipFlop projetos com arduino: Flisolpa. (s.d.). O que é Open Source. Acesso em Outubro de 2013, disponível em Flisol: PHP-Login. (s.d.). PHP & MySQL Login Script. Acesso em Outubro de 2013, disponível em PHP-Login.net: Projeto 39. (s.d.). O que è Arduino? Acesso em Agosto de 2013, disponível em Projeto 39: Software Livre Brasil. (s.d.). Open Source - Código Aberto. Acesso em Outubro de 2013, disponível em Software Livre Brasil:

26 Apêndice A 24

27 25 Apêndice 1: Código fonte da página de login <!-- errors & messages ---> <?php // show negative messages if ($login->errors) { foreach ($login->errors as $error) { echo $error; // show positive messages if ($login->messages) { foreach ($login->messages as $message) { echo $message;?> <!-- errors & messages ---> <html xmlns=" <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>página de Login</title> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <!-- login form box --> <form method="post" action="index.php" name="loginform"> <label for="login_input_username">usuário:</label> <input id="login_input_username" class="login_input" type="text" name="user_name" required /> <label for="login_input_password">senha:</label> <input id="login_input_password" class="login_input" type="password" name="user_password" autocomplete="off" required /> <input type="submit" name="login" value="log in" /> </form> <!-- login form box --> <!-- <a href="register.php">registre-se</a> --> </body> </html>

28 26 Apêndice 2: Código de conexão com o banco de dados <?php //lida com o usuário login/logout/sessão class Login { // Variável do Objeto "$db_connection" Conexão com o banco de dados private $db_connection = null; // String "$user_name" Com o Nome de usuário private $user_name = ""; // String "$user_ " do usuário private $user_ = ""; // String "$user_password_hash" do hash da senha private $user_password_hash = ""; // Variavel "$registration_successful" Se o usuário foi registrado com sucesso private $user_is_logged_in = false; // Matriz "$errors" Mensagens de erro public $errors = array(); // Matriz "$messages" Coleta as mensagens public $messages = array(); /** Essa função é iniciada automaticamente, quando um objeto dessa classe é criada, você sabe, quando vc faz "$login = new Login();" */ public function construct() { // cria/lê a sessão session_start(); // verifica as possiveis ações de login: // 1. logout (acontece quando o usuário clica no botão de logout) // 2. login via senha (acontece quando o usuário acessa um página, depois de ter logado, através da página de login) // Verifica se o usuário fez logout if (isset($_get["logout"])) { $this->dologout(); // verifica se o usuário tem uma sessão ativa elseif (!empty($_session['user_name']) && ($_SESSION['user_logged_in'] == 1)) { $this->loginwithsessiondata();

29 27 // Verifica se o usuário fez login elseif (isset($_post["login"])) { $this->loginwithpostdata(); //Faz login private function loginwithsessiondata() { $this->user_is_logged_in = true; //Entra com os dados de login private function loginwithpostdata() { // verifica se o campo "nome de usuário" e "senha" está vazio if (!empty($_post['user_name']) &&!empty($_post['user_password'])) { // cria uma conexão com o banco de dados, usando as configurações do arquivo "config/db.php "(carregadas na página index.php) $this->db_connection = new mysqli(db_host, DB_USER, DB_PASS, DB_NAME); // verifica se existe erros de conexão com o banco de dados. if (!$this->db_connection->connect_errno) { $this->user_name = $this->db_connection->real_escape_string($_post['user_name']); //Consulta o banco e obtem todas as informações do usuário $checklogin = $this->db_connection->query("select user_name, user_ , user_password_hash FROM users WHERE user_name = '". $this->user_name. "';"); // se esse usuário existir if ($checklogin->num_rows == 1) { // Obtêm os resultados, como um objeto $result_row = $checklogin->fetch_object(); //Verifica se a senha fornecida é igual ao hash armazenado no banco if (password_verify($_post['user_password'], $result_row->user_password_hash)) { // escreve os dados do usuário em uma sessão do PHP $_SESSION['user_name'] = $result_row->user_name; $_SESSION['user_ '] = $result_row->user_ ; $_SESSION['user_logged_in'] = 1; // Muda o status de login para true $this->user_is_logged_in = true; else { $this->errors[] = "Senha errada, tente novamente."; else { $this->errors[] = "Esse usuário não existe."; else { $this->errors[] = "Problemas na conexão com o banco de dados."; elseif (empty($_post['user_name'])) { $this->errors[] = "Nome de usuário não foi preenchido"; elseif (empty($_post['user_password'])) {

30 28 $this->errors[] = "Senha não foi preenchido"; // realiza o logout public function dologout() { $_SESSION = array(); session_destroy(); $this->user_is_logged_in = false; $this->messages[] = "Você foi desconectado."; /** * simply return the current state of the user's login boolean user's login status */ public function isuserloggedin() { return $this->user_is_logged_in;?>

31 29 Apêndice 3: Código de Interface com o usuário <html xmlns=" <head> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> <title>página</title> <style type="text/css"> body{background-color: #eeeeee label{ color: #606060; font-weight:bold;.bt{ background-color:#c00000; color: #ffffff; width: 100px; height: 25px; border: 0px; cursoe: pointer; input:hover{border:2px solid #0000ff </style> <meta http-equiv="content-type" content="text/html; charset=utf-8" /> </head> <body> <div> <b><i><center><label>trabalho de Conclusão de Curso</label></center></b></i></br> <b><i><center><label>casa Automatizada</label></center></b></i></br> <form method ="post" action="?php echo $PHP_SELF;?"> <input type="hidden" name="bits" value=" "> <label>sala</label></br> <button style="width:70; background-color: $cor4 ;font: bold 14px Arial" type = "Submit" Name = "Salaon" class="bt">liga</button> <button style="width:70; background-color: $cor4 ;font: bold 14px Arial" type = "Submit" Name = "Salaof" class="bt">desliga</button> </br></br> <label>cozinha</label></br>

32 30 <button style="width:70; background-color: $cor2 ;font: bold 14px Arial" type = "Submit" Name = "Cozinhaon" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Cozinhaof" class="bt">desliga</button> </br></br></br> <label>banheiro</label></br> <button style="width:70; background-color: $cor2 ;font: bold 14px Arial" type = "Submit" Name = "Banheiroon" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Banheiroof" class="bt">desliga</button> </br></br></br> <label>quarto 1</label></br> <button style="width:70; background-color: $cor2 ;font: bold 14px Arial" type = "Submit" Name = "Quarto1on" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Quarto1of" class="bt">desliga</button> </br></br></br> <label>quarto 2</label></br> <button style="width:70; background-color: $cor3 ;font: bold 14px Arial" type = "Submit" Name = "Quarto2on" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Quarto2of" class="bt">desliga</button> </br></br> <label>suite</label></br> <button style="width:70; background-color: $cor3 ;font: bold 14px Arial" type = "Submit" Name = "Quarto3on" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Quarto3of" class="bt">desliga</button> </br></br> <label>suite</label></br> <button style="width:70; background-color: $cor3 ;font: bold 14px Arial" type = "Submit" Name = "Suiteon" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Suiteof" class="bt">desliga</button>

33 31 </br></br> <label>fora</label></br> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Foraon" class="bt">liga</button> <button style="width:70; background-color: $cor1 ;font: bold 14px Arial" type = "Submit" Name = "Foraof" class="bt">desliga</button> </br></br> <label>portão Carro</label></br> <button style="width:90;font: bold 14px Arial" type = "Submit" Name = "Grandeon" class="bt">abre</button> <button style="width:90;font: bold 14px Arial" type = "Submit" Name = "Grandeof" class="bt">fecha</button> </br></br> <label>piscina</label></br> <button style="width:90;font: bold 14px Arial" type = "Submit" Name = "Piscinaon" class="bt">liga</button> <button style="width:90;font: bold 14px Arial" type = "Submit" Name = "Piscinaof" class="bt">desliga</button> </br></br> </form> <?php $sock = socket_create(af_inet, SOCK_STREAM, SOL_TCP); // Se conecta ao IP e Porta: socket_connect($sock," ", 8081); // Executa a ação correspondente ao botão apertado. if(isset($_post['bits'])){ $msg = $_POST['bits']; else { $msg[2]='1'; // if(isset($_post['quarto2'])){ if($msg[2]=='1') { $msg[2]='0';

34 32 //liga e desliga luz da sala if(isset($_post['salaon' ])){ $msg = '1SL#'; if(isset($_post['salaof' ])){ $msg = '0SL#'; //Liga e desliga luz da cozinha if(isset($_post['cozinhaon'])) { $msg = '1CL#'; if(isset($_post['cozinhaof'])) { $msg = '0CL#'; //Liga e desliga luz do banheiro if(isset($_post['banheiroon'])) { $msg = '1BL#'; if(isset($_post['banheiroof'])) { $msg = '0BL#'; //Liga e desliga luz do primeiro quarto if(isset($_post['quarto1on'])) { $msg = '1QL#'; if(isset($_post['quarto1of'])) { $msg = '0QL#'; //Liga e desliga luz do segundo quarto if(isset($_post['quarto2on'])) { $msg = '1WL#'; if(isset($_post['quarto2of'])) { $msg = '0WL#'; //Liga e desliga luz do terceiro quarto if(isset($_post['quarto3on'])) { $msg = '1YL#'; if(isset($_post['quarto3of'])) { $msg = '0YL#'; //Liga e desliga luz da suite if(isset($_post['suiteon'])) { $msg = '1TL#'; if(isset($_post['suiteof'])) { $msg = '0TL#'; //liga e desliga luz fora if(isset($_post['foraon'])) { $msg = '1FL#'; if(isset($_post['foraof'])) { $msg = '0FL#'; // Abre e fecha portão do carro if(isset($_post['grandeon' ])){ $msg = 'AG#'; if(isset($_post['grandeof' ])){ $msg = 'HG#'; // Liga a Piscina

35 33 if(isset($_post['piscinaon' ])){ $msg = '1PL#'; if(isset($_post['piscinaof' ])){ $msg = '0PL#'; socket_write($sock,$msg,strlen($msg));?> socket_close($sock); </div> <div> </div> </body> </html> <a href="index.php?logout">logout</a>

36 34 Apêndice 4: Código de controle (Arduino) #include <SPI.h> #include <Ethernet.h> #include <Stepper.h> //Configurações do Ethernet Shield byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED ; byte ip[] = { 192,168,1, 22 ; // ip que o arduino assumirá byte gateway[] = { 192,168,1, 1 ; // ip do roteador byte subnet[] = { 255, 255, 255, 0 ; EthernetServer server(8081); // Cria o servidor na porta 8081 // String que representa o estado dos dispositivos char Luz[7] = "0000L#"; // String onde é guardada as msgs recebidas char msg[7] = "0000L#"; const int VoltaCompleta = 2037; // numero de passos por volta completa Stepper Motor(VoltaCompleta,8,10,11,9); //pinos que o motor esta conectado int velocidade = 5; // determina a velocidade inicial para 5 RPM int travamento = 1; int passos = 430; // passos para abrir e fechar o portão void setup() { Ethernet.begin(mac, ip, gateway, subnet); server.begin(); pinmode(a0,output); pinmode(a1,output); pinmode(a2,output); pinmode(a3,output); pinmode(a4,output); pinmode(a5,output); pinmode(a7,output); pinmode(a8,output); pinmode(a9,output); Motor.setSpeed(velocidade); Serial.begin(9600); delay(1000); Serial.println("connecting..."); void loop() { // recebe os dados do cliente EthernetClient client = server.available(); // SE receber um caracter... if (client == true) { // guarda o caracter na string 'msg' msg[1]=msg[2]; msg[2]=msg[3]; msg[3]=msg[4]; msg[4]=msg[5]; msg[5]=msg[6]; // guarda na variavel msg[6], o que recebeu do php msg[6] = client.read();

37 35 if (msg[6]=='#') { switch(msg[5]) { case 'R': // Se receber o comando 'R#' envia de volta o status dos // dispositivos. (Que é a string 'Luz') client.write(luz); break; // Caso G#, ele abre ou fecha o portão do carro case 'G': if (travamento!= 1){ if (msg[4] == 'H'){ Motor.step(-passos); travamento = 1; if (travamento!= 0){ if (msg[4] == 'A'){ Motor.step(passos); travamento = 0; break; //caso L#, verifica as lampadas case 'L': switch(msg[4]) { // caso S#, liga ou desliga lampada da sala case 'S': if (msg[3] == '1') digitalwrite(a0,high); if (msg[3] == '0') digitalwrite(a0,low); break; // caso C#, liga ou desliga lampada Cozinha case 'C': if (msg[3] == '1') digitalwrite(a1,high); if (msg[3] == '0') digitalwrite(a1,low); break; // caso B#, liga ou desliga lampada Banheiro case 'B': if (msg[3] == '1') digitalwrite(a2,high); if (msg[3] == '0') digitalwrite(a2,low); break; // caso Q#, liga ou desliga lampada Quarto 1 case 'Q': if (msg[3] == '1') digitalwrite(a3,high); if (msg[3] == '0') digitalwrite(a3,low);

38 36 break; // caso W#, liga ou desliga lampada Quarto 2 case 'W': if (msg[3] == '1') digitalwrite(a4,high); if (msg[3] == '0') digitalwrite(a4,low); break; // caso Y#, liga ou desliga lampada Quarto 3 case 'Y': if (msg[3] == '1') digitalwrite(a5,high); if (msg[3] == '0') digitalwrite(a5,low); break; // caso T#, Liga ou desliga lampada suite case 'T': if (msg[3] == '1') digitalwrite(a7,high); if (msg[3] == '0') digitalwrite(a7,low); break; // caso F#, liga ou desliga lampada quintal case 'F': if (msg[3] == '1') digitalwrite(a8,high); if (msg[3] == '0') digitalwrite(a8,low); break; // caso P#, liga ou desliga piscina case 'P': if (msg[3] == '1') digitalwrite(a9,high); if (msg[3] == '0') digitalwrite(a9,low); break; break;