O sistema de monitoramento residencial

Monitoramento de Vigilância

1 Automação residencial:

  A automação residencial é uma área que está em constante crescimento e tem enorme campo de atuação que vai desde a implementação de sensores para detectar fumaça, movimento ou pressão, até o acionamento automático de lâmpadas, portões eletrônicos e sirenes. Estes fatos foram constatados em uma pesquisa realizada pela Motorola. Observou-se também o estudo feito pelo Instituto Brasileiro de Geografia e Estatística (IBGE), no qual foi demonstrado que 47,2% da população brasileira com 10 anos ou mais de idade se sente insegura na cidade em que mora e 21,4% da população se sente insegura no domicílio em que reside.

  Essas porcentagens revelam uma tendência cada vez maior na busca por alternativas de segurança domiciliar, que vão desde métodos simples, como grades, olho mágico e correntes, até procedimentos mais sofisticados, como os citados por Pereira: instalação de alarmes, câmeras de filmagem, seguranças particulares, entre outros. No entanto, como afirma o Jornal da Manhã, os recursos citados por Pereira muitas vezes têm custo alto (dependendo do sistema que será implantado) o que dificulta a aquisição desses serviços por pessoas de classe social mais baixa. Além disso, quando ocorre algum furto, arrombamento ou invasão na residência, muitos dos dispositivos de segurança mostram-se ineficazes, pois não informam ao proprietário em tempo real o fato ocorrido, nem o que realmente aconteceu.

Microcontroladores:

  Os microcontroladores, por serem pequenos e apresentarem a melhor relação custo/benefício, estão presentes em quase tudo que envolve a eletrônica. Eles são dispositivos que possuem internamente todos os componentes necessários para seu funcionamento autônomo. Dito de outra forma, os microcontroladores são computadores de propósito específico. Eles possuem tamanho reduzido, baixo custo e baixo consumo de energia. Devido a esses fatores há diversos segmentos, que os utilizam, tais como a indústria automobilística, de telecomunicações, de brinquedos, de eletrodomésticos, de eletroeletrônicos, bélica.

  Para o seu funcionamento autônomo, os microcontroladores incorporam vários recursos em uma única pastilha, tais como: memória, portas de entrada e saída, processador e diversas outras peças, todas montadas em um circuito integrado com pequenas dimensões. Veja a descrição completa dos componentes dos microcontroladores feita por Martins:

  "Tipicamente, um microcontrolador caracteriza-se por incorporar no mesmo encapsulamento um microprocessador (com a finalidade de interpretar as instruções de programa e processar dados), memória de programa (com a finalidade de armazenar de maneira permanente as instruções do programa), memória de dados (com a finalidade de memorizar os valores associados com as variáveis definidas no programa), uma série de pinos de entrada/saída (com a finalidade de realizar a comunicação do microcontrolador com o meio externo) e vários periféricos (tais como temporizadores, controladores de interrupção, temporizadores cão de guarda (WatchDog Timers – WDTs), comunicação serial, geradores de modulação por largura de pulso ou de PWM (Pulse Width Modulation), conversores analógico/digital etc.), fazendo com que o hardware final fique extremamente complexo."

  Martins, afirma ainda que existem vários tipos de microcontroladores. Segundo ele, o que os diferencia são: a velocidade do processamento; a quantidade de memória interna disponível para armazenar dados (memória de dados) e para armazenar as instruções de programas (memória de programa); “a quantidade de pinos de [entrada e saída], a forma de alimentação, os tipos e as quantidades de periféricos, a arquitetura e o conjunto de instruções disponibilizado nos circuitos internos”.

  Um exemplo de microcontrolador, talvez o mais popular, é o da série PIC, que se popularizou pelo bom plano de marketing “baseado na disseminação de uma ferramenta de auxílio à construção de programas – o MPLAB IDE. […] [e, por possuírem] uma linguagem Assembly menos complexa em relação àquelas disponibilizadas por outros fabricantes”. Esses microcontroladores da série PIC têm várias opções de memória de programas, como o One Time Programable (OTP) e o Erasable and Programmable Read Only Memory (EPROM). Ademais, têm “opções de baixa tensão e inúmeros tipos de circuito osciladores, assim como várias opções de encapsulamento”.

  Outro microcontrolador fortemente citado na literatura e que tem ampla aceitação no mercado é o da família AVR, fabricado pela empresa ATMEL. Este microcontrolador apresenta “bom desempenho frente ao número de instruções executadas por ciclo de clock.”. Além disso, Lima e Schwarz,  afirmam que a ATMEL fornece um programa gratuito, chamado AVR Studio, para a programação desses microcontroladores, que podem ser programadas tanto em linguagem Assembly, quanto em linguagem C (empregando-se o compilador C gratuito).

  Após a análise desses dois tipos de microcontroladores, estudou-se a plataforma Arduino, que se caracteriza por utilizar um microcontrolador da família AVR. “O que antes necessitava de conhecimentos técnicos específicos de eletrônica e programação, agora se tornou extremamente simples e até intuitivo.” Além disso, essa plataforma facilita o uso de microcontroladores. Com ela, pode-se monitorar sensores, pode-se comunicar com computadores e celulares e, inclusive, pode-se controlar algumas funções como ligar e desligar lâmpadas (através do controle de relés que funcionam como interruptores), abertura de fechaduras elétricas, leitura de sensores, etc.

 

  Adicionado a tudo isso, tem-se que: O Arduino oferece uma interface de hardware proporcionando todo o circuito necessário para funcionamento do microcontrolador e uma interface e ambiente de desenvolvimento em software para programação. Por ser uma plataforma de código aberto (open-source) há uma grande comunidade de desenvolvedores do mundo inteiro que publicam bibliotecas já com toda a programação pronta para se usar, com funções específicas, como, por exemplo, o controle de servo motores ou leitura de sensores analógicos.

2 Sensores:

  Sensores são dispositivos que mudam de estado conforme a interação com o ambiente. Seu hardware pode ser composto por diversos componentes eletrônicos ou por apenas um componente. Estes dispositivos podem interagir com diversos tipos de grandezas físicas, tais como temperatura, movimento, pressão, entre outras, convertendo essas grandezas em sinais elétricos analógicos ou digitais. Os que possuem saídas analógicas tem seu valor oscilando, conforme a variação da grandeza de entrada. Já os com saída digital, geralmente digital binário, assumem apenas dois valores bem definidos. Este comparativo entre sinais analógicos e digitais pode ser melhor visualizado na Figura abaixo.

  Dentre os vários tipos de sensores, serão apresentados, no decorrer das próximas seções, os sensores considerados mais importantes para a proteção de uma residência: magnético, de presença e de pressão.

Sensor magnético:

  Os sensores magnéticos são formados por duas placas ferromagnéticas separadas e encapsuladas por um vidro. Quando um campo magnético (ímã) é aproximado do sensor, suas chapas são alinhadas ao campo externo, estabelecendo contato elétrico (Figura.b) e possibilitando a passagem de corrente. Quando o campo magnético é afastado, as chapas voltam a se afastar, eliminando o contato, e o sensor muda seu estado para aberto (Figura.a).

  Este tipo de sensor magnético é considerado o mais simples e é composto por duas partes: o sensor e o ímã. Há várias possíveis aplicações para o sensor magnético. Ele pode ser utilizado para monitorar objetos, por exemplo. Nesse caso, o imã fica preso a um objeto de referência, enquanto o sensor fica localizado próximo a ele para que possam interagir.

  Existem outros tipos sensores magnéticos que são utilizados em várias aplicações, tais como: medir correntes elétricas a partir do campo magnético originado por elas, bússola digital através da análise do campo magnético do planeta Terra, entre outras.

Sensor de presença:

  O sensor de presença ou de infravermelho detecta movimento de objetos em seu raio de atuação através do calor emitido pelo objeto. Este tipo de sensor é sensível à mudança de radiação infravermelha, por isso, quando uma pessoa fica imóvel no seu raio de atuação o mesmo não detecta sua presença, pelo fato de não detectar essa variação da radiação. Possui saída digital, tendo somente dois estados: detecção de movimento e sem detecção.

Sensor de pressão:

  Baseado num condutor ou semicondutor, este tipo de sensor tem sua resistência alterada, conforme a deformação que é aplicada sobre ele. Assim, a tensão elétrica da saída analógica varia conforme a pressão aplicada.

3 Desenvolvimento Web:

  Esta seção apresenta diversos aplicativos que foram estudados a fim de desenvolver a interface Web do projeto proposto. Ela tem por finalidade armazenar diversas informações que poderão ser acessadas de qualquer lugar através da Internet.

Servidor de páginas Web:

  Alecrim, esclarece que um servidor Web é um computador que processa solicitações Hyper Text Transfer Protocol (HTTP). Um sistema Web é baseado na arquitetura cliente/servidor. Conforme Tanenbaum, nesta arquitetura, o cliente envia requisições ao servidor Web e aguarda uma resposta. Enquanto isso, o servidor Web é responsável por processar as requisições recebidas e enviar os resultados para o cliente. Os servidores Web suportam diversos tipos de linguagens de programação, estáticas como o HTML e dinâmicas como PHP ou ASP.

  Uma pesquisa realizada pela Netcraft, quantificou a utilização de diversos tipos de servidores Web disponíveis no mercado. Esses dados são apresentados na Figura abaixo. Pelos dados, percebe-se que houve um crescente fluxo de utilização do servidor Apache (azul) desde outubro de 1995, com uma ligeira queda de 2006 a 2009. Mesmo assim, esse servidor é o mais utilizado desde 1995. Outro servidor que vinha ganhando destaque de uso é o da Microsoft (linha vermelha) que, teve um grande aumento justamente no período de queda da Apache. Ao contrário, o servidos MCSA teve queda brutal desde a mesma época.

  • Apache:

  Segundo informações do projeto Apache, o apache é uma aplicação desenvolvida que utiliza o conceito de software open source. Este conceito visa o desenvolvimento de software sem fins lucrativos e mantidos por uma comunidade de desenvolvedores.

  Abaixo seguem algumas características que tornaram este servidor de páginas Web muito atrativo:

a) Suporte para plataformas open source e proprietárias;

b) Sem custos para sua utilização;

c) Estruturação em módulos;

d) Suporte a várias linguagens: PHP, PERL, HTML, PYTHON;

e) Controle de acesso e encriptação utilizando certificados digitas, SSL, entre outros.

  • IIS – Internet Information Services:

  A solução proprietária IIS (do inglês, Internet Information Services) oferecida pela Microsoft para servidores Web é disponibilizada somente para a plataforma Windows. Abaixo seguem algumas características:

a) Código proprietário;

b) Suportada somente na plataforma Windows;

c) Suporte a várias linguagens: ASP, PHP PERL, HTML;

d) Controle de acesso e encriptação, utilizando certificados digitais, SSL, entre outros.

Sistema de gerenciamento de banco de dados – SGBD:

  A utilização de banco de dados está presente no cotidiano da sociedade. Eles são utilizados em formas simples, como uma agenda que armazena nomes, endereços e telefones de diversas pessoas; e, também, em sistemas mais complexos, como nos sistemas de saque de dinheiro em caixas eletrônicos. Neste último caso, há um sistema que armazena as informações da conta e atualiza o saldo.

  Um sistema de gerenciamento de banco de dados (SGBD), pode ser definido como uma coleção de programas que permite aos usuários criar e manter um banco de dados. O SGBD é, portanto, um sistema de software de propósito geral que facilita os processos de definição, construção, manipulação e compartilhamento de bancos de dados entre vários usuários e aplicações. A definição de um banco de dados implica especificar os tipos de dados, as estruturas e as restrições para os dados a serem armazenados em um banco de dados.

  •  PostgreSQL:

  PostgreSQL é um SGDB objeto-relacional de código aberto, que é suportado por diferentes sistemas operacionais, como Microsoft Windows, distribuições Linux, Solaris, Mac OS, entre outras. Seu projeto foi iniciado há mais de quinze anos, e está em constante evolução, pois é mantido por uma comunidade de colaboradores. O PostgreSQL ainda informa que a aplicação “é altamente escalável, tanto na quantidade enorme de dados que pode gerenciar, quanto no número de usuários concorrentes que pode acomodar”. No Quadro, abaixo, é possível analisar alguns limites suportados por este SGBD.

  • MySQL:

  Alecrim, afirma que “O MySQL é um dos sistemas de gerenciamento de banco de dados mais populares que existe e, por ser otimizado para aplicações Web, é amplamente utilizado na Internet”. Ainda segundo Alecrim, esta aplicação é muito utilizada em conjunto com a linguagem de programação Web PHP, disponível em vários sites de hospedagem de páginas, pois tem um bom desempenho em conjunto.

  Sua aplicação é suportada por diferentes sistemas operacionais, entre eles podemos citar Windows e o Linux. Este SGBD é desenvolvido utilizando o princípio do código livre, mas ao contrário de muitos aplicativos open source, possui também uma licença comercial, isto é, uma versão paga, que garante suporte diferenciado dos desenvolvedores.

  • Linguagem de programação Web:

  As linguagens de programação Web são utilizadas para desenvolver sistemas que serão acessados através de uma rede, podendo ser acesso local (intranet) ou acesso remoto (extranet, Internet).

  • ASP – Active Server Pages:

  O ambiente de programação ASP, cria scripts para gerar páginas dinâmicas que foi desenvolvido pela Microsoft, por tanto, é proprietário. Foi desenvolvido utilizando a linguagem de programação Visual Basic. Os scripts são executados do lado do servidor, gerando para o cliente, páginas em HTML puro, onde qualquer navegador Web possa acessar. Tem suporte ao ASP, os servidores de página Web IIS, desenvolvido pela Microsoft, Apache, entre outros.

  • PHP – Hypertext Preprocessor:

  A linguagem de programação Web PHP foi desenvolvida em 1994 por Rasmus Lerdorf. Essa linguagem utiliza um conjunto de scripts e é voltada para aplicações Web, embutido no HTML. O código é delimitado por tags iniciais e finais, que permitem ao programador oscilar entre o HTML e o PHP. A maneira como o PHP é executado diferencia-se do Javascript, pois é do lado do cliente que o código é executado no servidor, gerando um HTML e o cliente acaba recebendo os resultados gerados pelos scripts. Possui código aberto, não se necessita da compra de licença, o programa é gratuito, é multiplataforma, tem acesso a banco de dados e faz o processamento de imagens ao enviá-las para o navegador do usuário. 

  A utilização do PHP tem grande vantagem, pois com ela pode-se criar páginas com conteúdo dinâmico, sem a necessidade de alterar os códigos fonte do sistema, através da integração com um banco de dados que registre as informações que serão atualizadas. Algumas aplicações que suportam a linguagem de programação PHP:

  • Servidores de páginas Web: Apache, IIS, entre outros;
  • Sistemas operacionais: distribuições Linux, Microsoft Windows, entre outros.
  • Suporte nativo ao banco de dados: MySQL, Oracle, Interbase, entre outros;

  Além disso, esta linguagem é concebida pelo conceito de código livre, sendo constantemente atualizada e com grande quantidade de documentação disponível para consultas.

Hardware:

  Os microcontroladores são comercializados na sua maioria sem nenhuma plataforma de desenvolvimento, isto é, somente o microcontrolador. Sendo necessário para sua utilização, realizar a integração com outros componentes: como diodos, reguladores de tensão e resistores. Só assim, conseguiria-se implementar o projeto proposto. No entanto, como um dos objetivos é elaborar um sistema de gerenciamento de segurança residencial de baixo custo, a opção por microcontroladores sem nenhuma plataforma de desenvolvimento tornaria o preço final do produto muito caro.

  Tendo em vista isso, escolheu-se a plataforma de desenvolvimento Arduino para a realização do desenvolvimento do protótipo, pois esta plataforma já possui todos esses componentes integrados em uma placa de circuito impresso. A facilidade de interação com sensores digitais e analógicos oferecida pela plataforma também foi significativa no momento da escolha. As características dessa plataforma serão apresentadas a seguir:

  • Plataforma Arduino:

  A plataforma de desenvolvimento Arduino possui diversas características que a tornaram uma solução atraente. Por oportuno, algumas dessas características:

  • Regulador de tensão de entrada, podendo utilizar fontes de alimentação que possuam tensão entre 6 a 20 volts;
  • Saída de alimentação de 3,3 e 5 volts para ligar outros componentes ao hardware sem ter necessidade de utilizar outra fonte de alimentação;
  • Conectores em todas as portas de entrada e saída do microcontrolador, facilitando a integração com outros componentes, como por exemplo, sensores de movimento;
  • Ambiente de desenvolvimento de algoritmos próprio e upload através da porta USB de qualquer computador.

  Segundo informações do site, Arduino “é uma plataforma open-source de prototipagem eletrônica baseada na flexibilidade, hardware e software fácil de usar”. Ela foi desenvolvida para ser totalmente autônoma, isto é, necessitar somente de uma fonte de alimentação para executar suas rotinas. Por utilizar os microcontroladores da família AVR, essa plataforma é composta por inúmeras versões. Algumas listadas no quadro abaixo:

  Como se pode observar, com a variação dos microcontroladores utilizados, obtém-se uma plataforma muito versátil em relação à quantidade de portas de E/S e memória para a gravação dos algoritmos. A plataforma Arduino possui Interface de Desenvolvimento - IDE (Figura) multiplataforma, isto é, há a possibilidade de utilizar a IDE com sistemas operacionais distintos, como, Windows, Linux, Mac OS. Esta característica facilita o desenvolvimento dos algoritmos, podendo ser escritos, alterados e enviados ao Arduino de qualquer Sistema Operacional suportado.

  O modelo escolhido para realizar o desenvolvimento do protótipo foi o Arduino Mega 1280, pois possui uma quantidade aceitável de memória para o armazenamento de códigos e um número razoável de portas de entrada e saída para conexão dos sensores. A seguir, serão apresentadas mais informações sobre as características do Arduino Mega 1280.

  • Estrutura do hardware do Arduino Mega 1280:

  A plataforma Arduino Mega 1280 possui pequenas dimensões (10 cm x 5,25 cm), podendo ser instalado em qualquer local na residência. Na Figura abaixo, é possível fazer a análise das diferentes partes que compõem seu hardware.

  As características do Arduino Mega 1280 são as seguintes:

a) Microcontrolador ATmega1280;

b) 54 portas digitas de E/S (sendo que 14 delas podem ser utilizadas como saída PWM);

c) 16 portas de entrada analógicas (podem ler valores analógicos de tensão e convertê-los em valores binários correspondentes, de 0 a 1023);

d) Conexão padrão USB B;

e) Conector fêmea de 2,1mm para ligar fonte de alimentação;

  Além desses recursos de hardware, a plataforma Arduino conta com inúmeros acessórios próprios, denominados Shields. Os Shields são placas de circuito impresso desenvolvidos para realizar outras tarefas, como por exemplo, o ethershield baseado no microcontrolador ENC28J60 (Figura abaixo), que tem por finalidade realizar a conexão do Arduino com uma rede ethernet. Esses shields foram projetados na sua maioria para “encaixar” sobre o Arduino, tendo em vista a redução do espaço ocupado e utilização da mesma fonte de alimentação.

  • Sensores:

  Os sensores utilizados no protótipo foram somente do tipo magnético, porém é importante ressaltar que poderá ser utilizado qualquer tipo de sensor que possua saída. Posicionou-se o imã junto à porta, enquanto o sensor foi preso ao portal, assim, quando a porta estiver fechada o circuito também estará, possibilitando a passagem de corrente elétrica. Caso a porta seja aberta, ocorrerá a mudança de estado do sensor, pois com o afastamento do ímã e a passagem de corrente elétrica é cessada.

Sistema Web:

  Para o desenvolvimento do sistema Web foram analisadas algumas soluções proprietárias e outras open source. Como o objetivo é obter um sistema robusto e com o menor custo possível, optou-se pelas seguintes soluções de código livre:

  • Como servidor Web, foi escolhido o servidor Apache, por se tratar de uma aplicação open source, com vasta documentação disponível;
  • A linguagem de programação escolhida foi o PHP, o que facilitará a implementação do sistema Web;
  • O sistema de gerenciamento de banco de dados será o MySQL, por se tratar de um sistema de banco de dados otimizado para aplicações Web.

Hardware:

  O Arduino Mega 1280, não tem o posicionamento padrão dos pinos como os demais modelos (Uno, Duemilanove, Diecimila). Assim, os pinos responsáveis pela comunicação SPI (Serial Peripheral Interface) foram trocados de lugar, causando a incompatibilidade de alguns shields, como é o caso do ethershield e algumas bibliotecas que utilizam uma conexão SPI para comunicação.

  Conforme Monaro, “o barramento SPI é uma interface de dados serial síncrona padronizada pela Motorola que funciona em modo full-duplex. Os equipamentos se comunicam em modo mestre/escravo, onde o equipamento mestre inicializa a comunicação”. A comunicação SPI é composta por quatro canais (Figura):

  • MISO (Master In Slave Out): dados enviados do Slave para o Master;
  • MOSI (Master Out Slave In): dados envidados do Master para o Slave;
  • SCK (Serial Clock): pulsos gerados pelo Master para sincronizar a transmissão;
  • SS (Slave Select): utilizado para ativar/desativar a comunicação com um Slave;

  Para estabelecer a comunicação entre o Arduino Mega 1280 e o ethershield, foi necessário inserir quatro jumpers (conforme a Figura abaixo) para que fosse possível deixá-los “encaixados”, já que os pinos responsáveis pela conexão SPI estão dispostos em locais diferentes. Também foi preciso adaptar o encaixe entre ambos, para que não ocorresse conflito entre as portas E/S do Arduino que ficam embaixo dos pinos do SPI do ethershield (como mostra a Figura).

  Com essas alterações, o conjunto de hardware (Arduino + ethershield) foi possível estabelecer a comunicação com a rede ethernet.

  Para conectar os sensores ao Arduino foi necessário utilizar um resistor no circuito. A Figura acima, mostra a ligação de dois sensores magnéticos ao Arduino, utilizando resistores em modo pull-down, que tem por objetivo manter as portas de entrada (pinos 22 e 24 utilizados no exemplo) em valores lógicos próximos a zero.

  • Fluxograma desenvolvido para o Arduino:

  O Arduino precisa realizar um monitoramento constante de todos os sensores que estão conectados a ele. Quando um sensor mudar seu estado, o Arduino deve tomar uma decisão sobre qual procedimento irá tomar sobre aquele evento. No entanto, para que isso ocorra é necessário desenvolver um algoritmo capaz de interagir com a mudança de estado dos sensores e os demais dispositivos ligados a ele. 

  O algoritmo desenvolvido pode ser melhor visualizado no diagrama de estados apresentado na Figura abaixo. Para uma melhor compreensão do diagrama de estados, deve-se saber:

  • Estado HIGH ou fechado ou desativado: quando o sensor está próximo ao imã (porta ou janela fechada), possibilitando a passagem de uma tensão elétrica, este é o estado padrão do sensor no sistema de monitoramento residencial;
  • Estado LOW ou aberto ou ativado: quando o sensor está afastado do imã (porta ou janela aberta), impossibilitando a passagem de uma tensão elétrica;
  • Estado atual: é o estado real do sensor naquele exato momento;
  • Cada porta de E/S possui somente um sensor conectado;
  • Lista de sensores: quando um sensor é cadastrado na lista, o mesmo só é removido quando o sensor voltar para o estado fechado, este procedimento é necessário, para não ocorrer várias notificações sobre um mesmo evento.

  O Arduino deve estar conectado a uma fonte de alimentação, possuir uma conexão com a Internet e seus sensores devem estar conectados nas devidas portas. Com esses requisitos “preenchidos”, o diagrama de estado pode ser dividido em 4 partes:

  • 1. Inicialmente o Arduino realiza uma requisição de DHCP através do ethershield para rede ao qual está conectado, repetindo esse procedimento caso não consiga adquirir um endereço na rede;
  • 2. Na sequência, as portas de E/S que serão utilizadas são configuradas para o modo INPUT ou entrada, para receber os sinais dos sensores;
  • 3. A partir de então, é verificado o estado de cada sensor:

  A. Sensor fechado: estado padrão do sistema, significa que a porta ou janela está fechada;

  B. Sensor aberto: significa que a porta ou janela está aberta:

I. É verificado se o sensor já está cadastrado na lista de sensores ativos:

a) Se este sensor for encontrado na lista, é passado para verificar o próximo sensor;

b) Se não for encontrado o sensor, é realizado o cadastro do mesmo (número da porta utilizada, e seu estado igual a aberto) e passado para verificar o próximo sensor; Ao final da verificação de todos os sensores, é iniciada uma análise da lista de sensores ativados a partir do primeiro sensor cadastrado.

  • 4. É procurado pelo primeiro sensor que possua um dos estados listados abaixo, exceto o estado aguardando que necessita ter o estado atual do sensor igual a fechado:

  A. Aberto: muda o estado do sensor cadastrado na lista para “enviar um tweet”;

  B. Enviar um tweet: envia um tweet para a conta cadastrada, informando qual o sensor que foi ativado e passando seu estado para “enviar para o site”;

  C. Enviar para o site: envia uma mensagem para o sistema de monitoramento residencial informando qual o sensor que foi ativado e logo após, muda o estado do sensor cadastrado na lista para aguardando;

  D. Aguardando: remove o sensor da lista, caso o estado atual do sensor for igual a fechado;

  Ao término da parte quatro, volta-se para a parte três, verificando o estado de todos os sensores. Pode-se destacar que a etapa quatro, trabalha somente com um sensor cadastrado na lista por vez, isto é necessário para ter um melhor controle dos sensores do sistema.

  Estes métodos de programação foram utilizados para desenvolver um algoritmo que ocupe o mínimo de espaço possível, já que o Arduino Mega 1280 possui apenas 128Kb de memória. O algoritmo desenvolvido faz com que o Arduino assuma a posição de cliente no sistema, pois quando ocorre algum evento, ele se conecta ao sistema Web para reportar informações sobre o evento e também enviar, automaticamente, um tweet para a conta configurada no Web site, avisando qual sensor foi ativado.

Sistema Web:

  O sistema Web tem por finalidade armazenar as informações enviadas pelo Arduino, bem como algumas informações referentes ao usuário (endereço, e-mail, telefone, twitter) e aos sensores utilizados. Também é responsável por permitir um acesso rápido e prático ao sistema de monitoramento residencial em qualquer aparelho que possua acesso à Internet.

  • Modelagem do Banco de Dados:

  Para realizar o desenvolvimento do banco de dados do sistema de monitoramento, foi feito um levantamento dos requisitos básicos que deveriam constar no modelo conceitual do banco de dados. Tais requisitos estão elencados abaixo:

  • Um cliente poderá ter mais de uma residência monitorada;
  • Um Arduino irá realizar o monitoramento de somente uma residência;
  • Cada Arduino deverá possuir um status (ON ou OFF ou ALERTA);
  • Cada sensor deve estar ligando em um único Arduino;
  • Deve-se saber o horário (data e hora) do acontecimento de cada evento, assim como o sensor que originou;
  • A localização e o tipo de cada sensor instalado;
  • A localização, a descrição e as coordenadas geográficas de cada Arduino.

  Após o levantamento de todos os requisitos básicos, foi realizado o projeto conceitual do banco de dados, conforme mostrado na Figura abaixo:

  Realizado o projeto conceitual e definidas as cardinalidades do banco, foi realizado o projeto lógico para definir os tipos das variáveis e as chaves estrangeiras. Esta etapa pode ser visualizada na Figura, a seguir:

  Concluído o projeto lógico, foi realizada a implementação do projeto físico utilizando o SGBD MySQL e criando as cinco tabelas, que são brevemente descritas abaixo:

  • A tabela “cliente” é responsável por armazenar as informações (nome, endereço, login, senha) do usuário;
  • A tabela “arduino” é o local em que são dispostos os dados de cada Arduino, pois conforme a modelagem do banco, um usuário poderá ter mais de uma residência cadastradas. Entre as diversas informações cadastradas nesta tabela, está a “descrição” (ex.: casa de praia), endereço, coordenadas geográficas para o posicionamento no mapa disponibilizado pela aplicação. Também nesta tabela, encontra-se o real estado do sistema, onde o “id_status” poderá assumir os seguintes valores, conforme a tabela “status”:
  1. Dispositivo em modo ON;
  2. Dispositivo em modo OFF;
  3. Dispositivo em modo ALERTA;
  • A coluna “up” da tabela “arduino” é atualizada em intervalos determinados de tempo, nos quais o Arduino envia um sinal para o sistema de monitoramento, informando que ainda está em funcionamento. Caso o sistema não receba esta confirmação, o estado do Arduino será alterado para OFF.
  • Na tabela “sensor”, cada sensor terá armazenado seu tipo (magnético, de movimento, pressão), local onde foi instalado (janela da cozinha, porta da garagem), o respectivo arduino ao qual pertence e em qual porta do arduino está associado. Cada sensor poderá estar cadastrado a somente um Arduino.
  • A tabela “histórico de eventos” é responsável por armazenar todos os eventos ocorridos com os sensores, registrando a data e hora do evento, assim como o sensor que o gerou.

Desenvolvimento do sistema Web:

  No sistema Web, o usuário poderá realizar algumas interações no sistema, tais como:

  • Inserir, alterar e excluir sensores;
  • Inserir, alterar e excluir Arduinos;
  • Acessar os eventos ocorridos nas residências cadastradas pelo usuário;
  • Acessar um mapa com as coordenadas das residências e a atual situação do sistema (ON, OFF, ALERTA).

  Serão demonstradas algumas telas do sistema a fim de ilustrar os recursos disponíveis. Na Figura abaixo é apresenta a tela inicial do sistema Web, onde é necessário utilizar usuário e senha para ter acesso aos recursos da aplicação. Este é um requisito básico de segurança para evitar o acesso de pessoas não autorizadas ao sistema.

  Com a confirmação das credenciais, o usuário pode ter acesso ao menu da aplicação, em que é possível acessar o histórico dos eventos ocorridos, informando a data e a hora do evento ocorrido, como também qual sensor originou o evento. Essa tela pode ser vista na Figura a seguir:

  O sistema também conta com a possibilidade de inserir, alterar e excluir os Arduinos cadastrados em sua conta. A Figura abaixo, mostra as telas de manipulação dos Arduinos.

  Para melhor visualização da atual situação do sistema de monitoramento residencial, foi utilizada uma aplicação disponibilizada pelo Google, onde é gerado um mapa utilizando as coordenadas geográficas cadastradas no sistema e marcando com um balão a posição da residência. Isto pode ser visualizado na Figura abaixo.

  Este balão poderá assumir três cores:

  • Vermelho, quando sistema está desligado;
  • Verde, quando sistema está funcionando sem evento ocorrido desde que foi ligado;
  • E amarelo quando ocorrer algum evento.

  Ao clicar sobre o balão são mostradas algumas informações do Arduino em questão, como endereço, tempo de funcionamento e em caso de alerta, qual foi o sensor ou sensores que foram ativados (Figura abaixo).

  Ainda é possível cadastrar, alterar e excluir os sensores, como pode ser visualizado na Figura abaixo.

4 Sistema de monitoramento residencial – SiMRe:

  Após a implementação do fluxograma responsável por tomar as decisões na plataforma Arduino e o desenvolvimento do sistema Web, obteve-se o sistema de monitoramento residencial - SiMRe, que é mostrado na Figura abaixo:

  O SiMRe é composto das seguintes partes:

  • Arduino: responsável por monitorar os sensores instalados na residência;
  • Sensores: responsáveis por monitorar as portas e janelas da residência;
  • Ethershield: realiza a interface de comunicação entre o Arduino e o sistema Web;
  • Sistema Web: realiza a interface entre o usuário, Arduino e sensores;
  • Mapa: permite a visualização dos Arduinos monitorados;
  • Twitter: possibilita ao usuário receber notificações em tempo real enviadas pelo SiMRe, através do envio de um tweet, para a conta configurada caso ocorra algum evento na residência.

  O custo do projeto pode variar, dependendo da quantidade e o tipo de sensores utilizados, além da utilização dos fios para interligar os diversos sensores ao Arduino que para o projeto foi desconsiderado.