Mudanças entre as edições de "Preparação para o Projeto"
Linha 196: | Linha 196: | ||
O microcontrolador Arduino também foi escolhido para desempenhar a função de Controlador de Eletroeletrônicos e o módulo Xbee para a comunicação com o Servidor. | O microcontrolador Arduino também foi escolhido para desempenhar a função de Controlador de Eletroeletrônicos e o módulo Xbee para a comunicação com o Servidor. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
Os valores dos pinos enviados do Aplicativo de Automação variam de 1 a 6, assim, uma função identifica o tipo de mensagem e define a porta correta que deve ser comutada ou lida conforme o esquema da figura abaixo. | Os valores dos pinos enviados do Aplicativo de Automação variam de 1 a 6, assim, uma função identifica o tipo de mensagem e define a porta correta que deve ser comutada ou lida conforme o esquema da figura abaixo. |
Edição das 03h11min de 6 de maio de 2015
DOMÓTICA
INTRODUÇÃO
- DOMÓTICA COM ANDRÓID -
A domótica permite o controle de diversas funções da casa, quer seja de forma automática ou através de um comando remoto, da Internet ou do seu celular. Este projeto visa encontrar ideias para controle e monitoramento residencial através de celular e placa microcontrolada. Através de programas desenvolvidos para uso em celular baseado em sistema operacional Android e também para microcontrolador da família Atmega (Arduino) com o objetivo de controlar diretamente cargas de corrente alternada como lâmpadas, motores, etc. Na programação do celular será utilizado o programa gratuito App Inventor do MIT .
Este projeto foi motivado pela Monografia sob o título “DroidLar - Automação residencial através de um celular Andróid”, defendida por Michel Vinicius de Melo Euzebio, apresentada e aprovada em agosto de 2011 a Coordenação do Curso Superior de Tecnologia em Sistemas de Telecomunicações do Instituto Federal de Santa Catarina para a obtenção do diploma de Tecnólogo em Sistemas de Telecomunicações. http://wiki.sj.ifsc.edu.br/images/b/b7/TCC_MichelEusebioMello.pdf
O objetivo desse trabalho é dimensionar o projeto em questão para turmas da disciplina de PI-1 executarem, simplificando e omitindo detalhes muito complexos para os alunos da primeira fase.
Os sistemas de automação residencial oferecem muitas opções, muitos possibilitam a utilização de aplicativos em smartfones .O DroidLar consiste num sistema de automação residencial onde é possível controlar
dispositivos de uma residência utilizando como interface de controle celulares Android.
A arquitetura do DroidLar foi construída de forma centralizada, ou seja, um servidor central gerencia toda a rede. Este é capaz de se comunicar tanto com as interfaces de controle quanto com os dispositivos controladores. O DroidLar é dividido em três partes: Cliente Android; Servidor de Automação Residencial (SAR); Arduino.
O cliente Android atua como uma interface de controle no sistema e se comunica pela rede IP, os kits Arduino funcionam como controladores de dispositivos e utilizam ZigBee para a comunicação, já o SAR é o servidor central, ele se comunica tanto pela rede IP quanto por ZigBee e tem como principal função transferir as mensagens entre essas duas redes.
O SAR deve ficar continuamente conectado na rede IP, fazendo a verificação de pedidos e atualização do status dos dispositivos. O aplicativo no telefone poderia conectar com a WebDB para verificar o status dos dispositivos e solicitar uma nova configuração para os ambientes.
Uma das propostas para simplificar o projeto é usar inicialmente um módulo bluetooth para a comunicação, migrando posteriormente para a comunicação via rede IP.
ESPECIFICAÇÕES DO SISTEMA
DESCRIÇÃO DO PRODUTO
Este documento descreve um sistema de automação para residência controlado por celulares ou tablets com sistema operacional Android.
O sistema oferece comunicação entre usuário e os eletroeletrônicos de sua residência através de uma conexão sem fio. Essa conexão entre o celular ou tablet do usuário e o servidor de automação residencial, possibilita controle e verificação de status de eletroeletrônicos como iluminação, irrigadores de jardim, aparelhos de climatização, portões eletrônicos, sensores, entre outros.
ESPECIFICAÇÕES DO PRODUTO
Descrição do Sistema
Três componentes com funções específicas constituem o sistema: o Aplicativo para controle do sistema usando celular ou tablet; o Servidor de automação residencial; e os Controladores de Eletroeletrônicos.
O Aplicativo atua como interface de controle Homem-Máquina e se comunica com o Servidor usando tecnologia sem fio. O Servidor gerência a rede fazendo a ponte entre o APP e os controladores de eletroeletrônicos.
Os controladores de eletroeletrônicos tem a função de acender lâmpadas, fechar persianas, ligar aparelhos de ar-condicionado etc.
O Aplicativo possui interfaces com botões que permitem procurar e conectar o Servidor de Automação, escolher um ambiente da casa onde se localiza o eletroeletrônico que se quer controlar, escolher o eletroeletrônico e enviar comandos para execução de tarefas ou leitura do status desses eletroeletrônicos e sensores.
Os controladores permitem controlar eletroeletrônicos em ambientes internos e externos da residência.
Nos ambientes internos o sistema permite por exemplo ascender ou apagar as luzes dos ambientes, regular a intensidade da iluminação, ligar/desligar e regular a temperatura dos condicionadores de ar, abrir ou fechar persianas, regular o volume do som, verificar a temperatura de um ambiente e ligar ou desligar aparelhos eletrônicos.
Nos ambientes externos é possível por exemplo ascender ou apagar as luzes do jardim e piscina, ligar ou desligar motores, regular ou verificar a temperatura da água de piscinas, abrir e fechar portões.
A figura abaixo mostra os componentes do sistema. É possível visualizar as ligações entre cada componente do sistema, os ambientes e eletroeletrônicos controláveis por cada controlador.
PROJETO
Sumário
1-Introdução
2-Projeto Preliminar
2.1-Visão Geral do Sistema
2.2-Interface com Usuário - APP
2.3-Servidor de Automação - Coordenador
2.4-Controladores de Eletroeletrônicos – Dispositivos Finais
3-Projeto Detalhado
3.1-Interface com Usuário
3.2-Servidor de Automação
3.3-Controladores de Eletroeletrônicos
3.4-Descrição do Protocolo de Comunicação
3.5-Configurando os módulos XBee
3.6-Gravando o código no microcontrolador Arduino
3.7-Testes
3.8-Erros previstos
1-Introdução
Este documento apresenta o projeto para o sistema de automação residencial com Android, Arduino e módulos XBee.
2-Projeto Preliminar
2.1-Visão Geral do Sistema
A estrutura proposta para o sistema especificado é mostrada abaixo.
O sistema é subdividido em três subsistemas:
• APP para controle do sistema de automação
• Servidor de Automação
• Controladores de Eletroeletrônicos
A arquitetura do sistema foi definida de forma centralizada. O Servidor gerencia toda a rede, sendo capaz de comunicar-se tanto com o APP quanto com os Controladores de Eletroeletrônicos.
2.2-APP para controle do sistema de automação
O App permite a comunicação e o controle do sistema. Ele atua como interface Homem-Máquina, enviando mensagens ao Servidor de Automação. Essas mensagens são enviadas como Strings e contém campos que definem parâmetros da mensagem. A comunicação entre o APP e o Servidor é feita usando tecnologia Bluetooth.
2.3-Servidor de Automação
O Servidor do sistema, pode comunicar-se nas duas redes (Bluetooth e ZigBee) e faz a ponte entre o APP e os dispositivos finais, recebendo e encaminhando as mensagens nas duas redes.
2.4-Controladores de Eletroeletrônicos
Os controladores de eletroeletrônicos tem a função de executar os comandos enviados pelo APP, tais como acender lâmpadas, fechar persianas, ligar aparelhos de ar-condicionado. Os Controladores recebem as mensagens pela rede sem fio e executam os comandos determinados pelo usuário, acionando os eletroeletrônicos. Esses Controladores também enviam mensagens de confirmação de recebimento de mensagem e status dos eletroeletrônicos para o Coordenador.
3.2-Servidor de Automação
Para desempenhar a função de Servidor da rede foi escolhido o microcontrolador Arduino.
A plataforma Arduino é uma ferramenta simples e fácil de usar mesmo para leigos em programacão e eletrônica. Essas características tornaram ela uma plataforma muito utilizada para o desenvolvimento de prototipos. Por se tratar de uma plataforma aberta de hardware e software, qualquer um pode montar protótipos com kits Arduino.
O kit Arduino é composto por um um microcontrolador que contém um código a ser executado, além de portas de entrada e saída digitais, portas para comunicação serial, portas de entrada analógicas e de saída PWM (Power Wave Modulation), onde é possível controlar o nível de tensão da saída.
Nessas portas de entrada e saída é possível conectar botões, sensores, LEDs ou quaisquer outros dispositivos elétricos, tornando inúmeras as possibilidades de uso para essa plataforma.
Na topologia escolhida o Coordenador desempenha função fundamental na rede, ou seja, tem todo o controle da rede, assumindo um papel central e fazendo a comunicação direta com o APP e todos os dispositivos finais. Toda a informação transmitida tem que passar pelo Coordenador, por esse motivo seu código deve processar as mensagens das duas redes, Bluetooth e Zigbee.
A expansão das funcionalidades da plataforma Arduino é possível através da conexão de diversos shields e módulos de comunicação encontrados no mercado.
Para a conexão com o dispositivo Andróid, por exemplo, pode ser usado o shield bluetooth HC-06. Similar ao módulo da figura abaixo.
Para a comunicação entre o Servidor e os Controladores Finais foram escolhidos os módulos XBee.
XBee é a marca da Digi International para uma família de módulos de rádio comunicação. Esses rádios operam usando o protocolo ZigBee, utilizado para aplicações que exigem baixas taxas de transmissão de dados e baixo consumo de energia.
3.3-Controladores de Eletroeletrônicos
O microcontrolador Arduino também foi escolhido para desempenhar a função de Controlador de Eletroeletrônicos e o módulo Xbee para a comunicação com o Servidor.
Os valores dos pinos enviados do Aplicativo de Automação variam de 1 a 6, assim, uma função identifica o tipo de mensagem e define a porta correta que deve ser comutada ou lida conforme o esquema da figura abaixo.
Ou seja, se o programa receber na variável APP_command o tipo de mensagem MSG_DIGITALWRITE com valor 10 e na variável pin_num o valor 1, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 2 (primeiro pino digital após pinos 0 e 1, RX e TX). Se o programa receber na variável APP_command o tipo de mensagem MSG_DIGITALWRITE com valor 10 e na variável pin_num o valor 2, o subsistema de Gerenciamento de comando App executa o comando solicitado no pino digital 4 (segundo pino digital após pinos 0 e 1, RX e TX).
De maneira semelhante, a função processa o valor correto dos pinos digitais PWM e dos pinos analógicos.
A figura abaixo relaciona os eletroeletrônicos com as portas do Arduino usadas para seu controle.
Com o valor correto da porta definido pela função anterior, os comandos são executados conforme os parâmetros recebidos.
Se o controlador receber corretamente a mensagem do servidor e executar os comandos conforme solicitado, é montada e enviada em seguida uma mensagem de retorno para confirmar o recebimento da mensagem ou enviar valores de retorno.
Valor com tamanho igual a 1 byte enviado como decimal. Define tipo de mensagem para que o microcontrolador ligado ao dispositivo final execute um comando de acionamento ou desligamento de um dos seus pinos digitais. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.
Os pinos reservados para acionamento digita na placa Arduinol, ou seja, com valores 0 ou 1 são os pinos:
D2, D4, D7, D8, D12, D13.
MSG_ANALOGWRITE 11 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Define tipo de mensagem para que o microcontrolador ligado ao dispositivo final execute um acionamento de um dos pinos digitais com PWM. Após o envio desse tipo de mensagem é aguardado mensagem de confirmação do tipo 12.
Os pinos reservados para acionamento digital com PWM, ou seja, com valores que podem variar entre 0 e 255 são os pinos:
D3, D5, D6, D9, D10, D11.
RSP_COMANDO 12 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Tipo de mensagem que confirma a execução de um comando após uma mensagem do tipo 10 ou 11.
MSG_DIGITALREAD 13 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Define mensagem de pedido de leitura de uma das portas digitais seguintes:
D2, D4, D7, D8, D12, D13.
Após o envio desse tipo de mensagem é aguardado mensagem de resposta do tipo 15, com o valor solicitado (0 ou 1) num de seus campos.
RSP_LEITURA 15 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Tipo de mensagem de resposta que define o valor de leitura da porta digital PWM solicitada em mensagens do tipo 13 e 14.
MSG_STATUS 16 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Define mensagem de pedido de leitura de uma das portas analógicas do microcontrolador. As portas analógicas do microcontrolador que permitem essa leitura são as seguintes:
A0, A1, A2, A3, A4, A5.
RSP_STATUS 17 (1 Byte )
Valor com tamanho igual a 1 byte enviado como decimal. Tipo de mensagem de resposta que define o valor de leitura da porta analógica solicitada em mensagem do tipo 16.
Identificador do Controlaor - Id XBee
Valor com tamanho igual a 1 byte enviado como decimal. Pode assumir os valores 1 ou 2, referente ao Controlador do ambiente.
Porta
Valor com tamanho igual a 1 byte enviado como decimal. Pode assumir valores de 1 a 6 e indicam a porta onde o eletroeletrônico está ligado no Controlador.
Valor
Valor com tamanho igual a 1 byte enviado como decimal. Assume valores entre 0 e 255 e indicam o estado do eletroeletrônico ou o valor de ajuste.
Protocolo ZigBee - Coordenador/End Device
Na figura abaixo pode ser observada a estrutura dos pacotes de dados do protocolo ZigBee.
A imagem abaixo mostra a troca de mensagens entre o APP, Coordenador e Dispositivos Finais.
Cada eletroeletrônico é acionado por uma das portas do Arduino. A figura abaixo relaciona os eletroeletrônicos com as portas do Arduino usadas para seu controle.