Download - Projeto asteris para controle remoto
O USO DO ASTERISK PARA O CONTROLE REMOTO DE SISTEMAS DE AUTOMAÇÃO
MICHEL C. DIAS, DAIANA C. LUCENA, ELIEL P. SANTOS
Laboratório de Telefonia e Redes Convergentes, Departamento de Engenharia Elétrica, Instituto Federal de
Educação, Ciência e Tecnologia da Paraíba - IFPB
Avenida Primeiro de Maio, 720 - Jaguaribe, João Pessoa - PB, 5015-430 E-mails: [email protected], [email protected], [email protected]
Abstract This work describes a multiuser platform that allows the remote and concurrent control of automation systems
which uses an Arduino as main controller. It user interface is an IVR (Interactive Voice Response) that send commands over the
TCP/IP network established for the remote systems to be controlled. The platform was developed with Asterisk VoIP software
which is in public domain, free and widely spread in Internet. The validation occurred through two experiments set up and tested
in laboratory. The result is a low cost and open VoIP platform that fulfills what was described above.
Keywords Asterisk, Automation Systems, Arduino, VoIP.
Resumo Este trabalho descreve uma plataforma multiusuário que permite o controle remoto e concorrente de sistemas de au-
tomação que utilizam o Arduino como controlador principal. A interface com o usuário é uma URA (Unidade de Resposta audí-
vel) que de acordo com as interações dos usários envia comandos para os sistemas remotos a serem controlados. A plataforma
foi desenvolvida com o software VoIP Asterisk que é de domínio público, gratuito e amplamente utilizado na Internet. A valida-
ção foi feita em dois experimentos realizados em laboratório. O resultado é uma plataforma aberta e baixo custo que atende o
proposto no artigo.
Palavras-chave Asterisk, Sistemas de Automação, VoIP.
1 Introdução
É cada vez mais frequente o uso de sistemas de
automação para resolver problemas do cotidiano.
Soluções são dadas nas mais variadas áreas, desde
segurança até na área de saúde. No entanto, em mui-
tos casos, um dos fatores que dificultam a implemen-
tação das soluções de automação é o custo. Além
disto, os sistemas comerciais em sua grande maioria
são de difícil alteração e evolução tecnológica. Dian-
te do exposto, este artigo contribui para sanar estas
deficiências ao propor um sistema de baixo custo
formado por soluções de software gratuito (Asterisk)
de código aberto, e hardware livre (Arduino, 2013).
O software Asterisk (ASTERISK, 2013), nor-
malmente utilizada como PABX VoIP (Voice Over
IP) em empresas, contém um conjunto de aplicações
e funções que podem ser utilizadas para fins de au-
tomação. Estas permitem gerenciar e direcionar cha-
madas telefônicas, através de uma URA (Unidade de
Resposta Audível), a processos de automação, con-
trolando equipamentos remotamente, reduzindo cus-
tos e criando um sistema flexível. Um servidor cen-
tralizado executando o Asterisk pode ser responsável
pelo gerenciamento das chamadas e pelo envio de
comandos pela rede TCP/IP aos sistemas a serem
controlados (GONÇALVES, 2009), (KAPICAK et.
al, 2011).
O Asterisk é um software em código aberto que
executa as funções de uma central telefônica e recebe
diversas contribuições de programadores de todo o
mundo. O software pode ser customizado de acordo
com as necessidades do usuário (ASTERISK, 2013).
Algumas funcionalidades como o acesso a bases
de dados e comunicação com recursos externos po-
dem ser executadas através de scripts em outras lin-
guagens de programação, tais como Python, PHP
(Hypertext Preprocessor) e Perl a partir do plano de
discagem por meio do AGI (Asterisk Gateway Inter-
face) (MACURA et. al, 2012), (KELLERl, 2009),
(QUADEER, SHAH & GOEL, 2012).
O Arduino é uma placa eletrônica em código
aberto, sendo o seu ambiente para desenvolvimento
um software também em código aberto.
O objetivo deste trabalho é propor uma plata-
forma aberta VoIP (Voice Over IP), de baixo custo,
multiusuário e que permite acesso concorrente para
controle remoto de múltiplos sistemas de automação.
A plataforma desenvolvida permite gerenciar e
direcionar múltiplas chamadas telefônicas para o
controle de processos de automação, e pode ser apli-
cada de diversas situações. É um sistema de baixo
custo já que necessita apenas de um computador com
o software Asterisk instalado, uma placa Arduico
para cada sistema de automação a ser controlado e
uma conexão de rede TCP/IP entre os dois. E é aber-
ta porque utiliza apenas softwares/plataformas em
código aberto. Por outro lado, o Asterisk pode tam-
bém ser instalado em um dispositivo Android para
controlar uma quantidade pequena de dispositivos
Arduino. Estas características agregam à plataforma
proposta, alta flexibilidade e escalabilidade.
Tecnologias como bluetooth, GPRS e Web Ser-
vice tem sido utilizadas em sistemas de automação.
Comumente surgem novas pesquisas na área de sis-
temas de automação utilizando diferentes mecanis-
mos para o controle remoto (JIN et. al, 2000),
(KAPICAK et. al, 2011), (LEE & CHOI, 2003). A
plataforma proposta, sendo modular, aberta e facil-
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1674
mente modificável, pode ser utilizada junto a essas
novas tecnologias.
Atualmente, o Asterisk vem sendo utilizado por
diversos usuários em projetos para automação resi-
dencial (EGUINO, 2013) (HACKWORTH, 2012).
São príncípios de trabalhos como por exemplo em
(GRAVEN, 2009) que se baseiam a automação resi-
dencial utilizando Asterisk no qual é possível contro-
lar aplicações através dele. Projetos que descrevem a
integração do GSM com o Asterisk na qual o usuário
consegue registrar um servidor asterisk em celulares
e em computadores também tem sido alvo de pesqui-
sas (GUPTA, AGRAWAL & QADEER, 2013).
Este trabalho está organizado da seguinte forma:
inicialmente é descrito que microcontrolador foi uti-
lizado como também o software Asterisk. Em seguida
é explicado como é estabelecida a comunicação entre
o Asterisk e o Arduino e a arquitetura da plataforma.
Ao fim, são apresentadas a validação da plataforma e
as considerações finais.
2 Arduino
O Arduino é um circuito eletrônico para controle
de entrada/saída de dados baseada no microcontrola-
dor AVR de 8 bits, de arquitetura Harvard (memória
de dados e de programa são fisicamente separadas),
da Atmel. Seu projeto foi iniciado na cidade de Ivre,
Itália, em 2005, com o intuito de interagir em proje-
tos escolares, com um orçamento menor que outros
sistemas de prototipagem disponíveis na época. De
forma que as pessoas tivessem acesso ao código-
fonte do software e ao projeto do hardware (sendo
assim open-source), podendo estender e adequar a
plataforma às suas necessidades (ARDUINO, 2013).
O Arduino pode ter suas funcionalidades esten-
didas através de shields, que são placas contendo
dispositivos adicionais como receptores GPS, módu-
los Ethernet, bluetooth, zigBee, etc. Estes conectam-
se ao Arduino por barras de pinos empilháveis, man-
tendo o layout e permitindo que outro shield se en-
caixe acima.
Para o desenvolvimento do trabalho foi utilizado
um Arduino Uno, que é responsável por receber os
comandos de um Ethernet shield, processá-los e en-
viar sinais para que os dispositivos sejam acionados.
A Figura 1 apresenta os elementos de um Arduino
Uno (ARDUINO BRASIL, 2013).
Figura 1 – Elementos de um Arduino Uno (ARDUINO
BRASIL, 2013).
3 Asterisk
A plataforma Asterisk foi criada pela companhia
Digium, tem sido utilizado por pequenas e grandes
empresas, call centers, operadoras, provedores VoIP
e agências governamentais em todo o mundo.
A estrutura dinâmica da plataforma Asterisk
permite ao cliente adequar o cenário da empresa aos
diversos recursos tecnológicos por meio de aplica-
ções tais como: correio de voz, conferências, bilheta-
gem, chamadas em fila, call agents (gerencia funções
como roteamento de ligações e sinalização), Distri-
buição Automática de Chamadas (DAC), Unidade de
Resposta Audível (URA), música em espera, grava-
ção da chamada, bloqueio de chamadas, entre outras.
Essas aplicações são características padronizadas ou
que podem ser inseridas no software por meio do
plano de discagem (MADSEN, MEGGELEN &
SMITH, 2011).
Existem três tipos de dispositivos finais que po-
dem ser usados para o estabelecimento de comunica-
ção via rede TCP/IP: Telefone IP, Softfone e ATAs
(Analog Terminal Adaptors). Um Telefone IP possui
a interface de um telefone convencional, e pode co-
nectar-se diretamente a uma rede. O Softfone é uma
aplicação em software que se pode executar em um
computador ou em um celular, exercendo a função de
um telefone. ATAs são designados para permitir que
telefones convencionais possam ser conectados a
rede.
A arquitetura do Asterisk é organizada em módu-
los, isto é, componentes carregáveis que possibilitam
a execução de uma funcionalidade especifica, como o
driver de um canal (chan_sip.so) ou um recurso que
permite conexão com uma tecnologia externa
(func_odbc.so).
O plano de discagem é o ponto central do Aste-
risk, composto por contextos, extensões, prioridades
e aplicações. É por onde passam todas as chamadas, e
é o que determina como elas devem ser processadas.
Pode ser configurado utilizando a sintaxe tradicional
em /etc/Asterisk/extensions.conf.
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1675
Os contextos mantem blocos isolados no plano
de discagem, sendo definidos por um nome entre
colchetes ([]). Uma extensão definida em um contex-
to está isolada de extensões em outro contexto.
Quando um canal é configurado (no arquivo sip.conf
ou iax.conf), um dos parâmetros necessário é o con-
texto, que especifica o ponto no plano de discagem,
onde as instruções devem começar a ser executadas.
A Figura 2 ilustra isto (MADSEN, MEGGELEN &
SMITH, 2011).
Figura 2 – Relação entre um arquivo de configuração do canal e o
contexto no plano de discagem (MADSEN, MEGGELEN &
SMITH, 2011).
As extensões que são identificações dentro de
cada contexto definem os passos a serem seguidos no
plano de discagem. Cada extensão é composta por
um nome (ou número), prioridade (que define qual
passo irá ser executado) e aplicação. A sintaxe é a
seguinte:
exten => nome, prioridade, aplicação()
As prioridades são numeradas sequencialmente,
começando com “1”, e cada uma executa uma aplica-
ção especifica. A prioridade ”n” pode ser utilizada
para indicar que a anterior mais “1” deve ser execu-
tada.
As aplicações executam uma ação especifica
como tocar um som, procurar algo no banco de da-
dos, desligar ou atender uma chamada, entre outros.
O funcionamento e a operação do Asterisk estão
baseados em quatro componentes básicos: protocolo,
driver do canal, CODEC e aplicações.
3.1 Protocolo
Os protocolos de transporte TCP (Transport
Control Protocol) e UDP (User Datagram Protocol)
não foram desenvolvidos tendo como prioridade o
fluxo de dados em tempo real. E os dispositivos fi-
nais devem lidar com a perda de pacotes, aguardando
a chegada de alguns, requisitando uma retransmissão
ou desconsiderando os que foram perdidos. No en-
tanto, na transmissão de voz, se pacotes são perdidos
ou ocorrer um atraso superior a 150 milissegundos
haverá dificuldades em continuar uma conversação.
Sendo necessário para o estabelecimento de uma co-
nexão/chamada VoIP entre dispositivos finais um
protocolo de sinalização (MADSEN, MEGGELEN
& SMITH, 2011).
Quanto aos protocolos de sinalização, a reco-
mendação H.323 foi largamente implementada em
redes VoIP (Voice Over IP). Atualmente, tem se tor-
nado comum o uso do SIP (Session Initiation Proto-
col), considerado mais simples em relação ao H.323.
O SIP trata cada conexão como um par, negoci-
ando o estabelecimento da conexão entre eles, e
transporta apenas a sinalização sobre TCP ou UDP.
O RTP (Real Time Protocol) é usado junto ao SIP ou
H.323 para a transmissão dos pacotes de dados (que
contêm o áudio das chamadas) (GONÇALVES,
2013).
O IAX (Inter-Asterisk eXchange) é um protocolo
de aplicação aberto, que utiliza um processo de regis-
tro e autenticação similar ao SIP e foi produzido com
o objetivo de estabelecer comunicação entre dois
servidores Asterisk. A sinalização do canal e o fluxo
de dados são enviados por uma única porta UDP
(4569) (o protocolo RTP não é utilizado para o
transporte do áudio), e consegue reduzir a vazão uti-
lizada, através de uma característica denominada
trunk que possibilita a multiplexação de várias cha-
madas utilizando um único cabeçalho. E o IAX2 (2ª
versão do protocolo IAX) foi desenvolvido para fun-
cionar em uma rede que utilize NAT (Network
Adress Translation) (GONÇALVES, 2013),
(MADSEN, MEGGELEN & SMITH, 2011).
Em uma rede IP os dados serão transportados
utilizando como protocolo de transporte, o TCP,
UDP ou SCTP.
O TCP quase nunca é utilizado em VoIP, pois
embora garanta a entrega dos dados, acrescenta um
atraso significativo, aumentando a latência, não sen-
do eficiente para comunicação em tempo real. O pro-
posito do TCP é garantir a entrega dos pacotes, e por
isto, vários mecanismos são implementados, como
numeração dos pacotes, confirmação da entrega e
retransmissão de pacotes perdidos. Diferentemente
do TCP, o UDP não oferece nenhuma garantia de
entrega dos dados, conseguindo que os pacotes che-
guem ao destino final em um intervalo de tempo me-
nor.
O SCTP (Stream Control Transmission Proto-
col) foi desenvolvido para suprir as limitações do
TCP e do UDP. Consegue implementar técnicas mais
eficazes de controle de congestionamento (evitando
também ataques de negação de serviço), garante a
sequência dos pacotes entregues e apresenta baixa
latência [2, (KELLER, 2009)].
3.2 Driver do canal
São necessários para a realização de chamadas.
Cada protocolo utilizado (SIP, IAX, etc.) possui um
driver específico como descrito a seguir: chan_iax2 -
promove conexão entre dois terminais IAX, chan_sip
- driver do protocolo SIP, chan_mgcp - driver do
protocolo MGCP, chan_dahdi - possibilita comuni-
cação com a RTPC (Rede Pública de Telefonia Co-
mutada), entre outros. O driver do canal age como
um gateway para o Asterisk.
3.3 CODEC
Software dedicado a codificar e decodificar uma
informação digital. O propósito dos algoritmos de
codificação é apresentar diferentes relações entre
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1676
eficiência e qualidade. São caracterizados de acordo
com a taxa de compressão, perda de pacotes, vazão
utilizada e processamento computacional exigido,
possibilitam a detecção de silêncio e geração do ruí-
do de conforto. Como a vazão é finita, o número de
conversações simultâneas que uma conexão pode
estabelecer está diretamente relacionado ao CODEC
utilizado.
3.4 Aplicações
As aplicações definem, dentro do plano de dis-
cagem (extensions.conf), as ações que devem ser
aplicadas às chamadas, são responsáveis por exem-
plo, pelo estabelecimento da comunicação, toque de
uma gravação, recebimento de dígitos e desligamento
de uma chamada.
As aplicações são invocadas a partir do plano de
discagem. O plano de discagem realiza o gerencia-
mento das chamadas determinando a sequência de
passos por onde a chamada será conduzida. A maio-
ria das características como VoiceMail, conferência,
call center são executadas como aplicações.
3.5 AGI (Asterisk Gateway Interface)
Em várias situações se faz necessário estender as
funcionalidades da plataforma Asterisk utilizando
aplicações externas. O AGI permite ao desenvolve-
dor realizar o controle das chamadas ou parte dele, na
linguagem de programação de sua escolha, como
Perl, PHP e Python. Isto permite integrar o Asterisk
com outros sistemas, como um Arduino. Para isto, é
criado um script em /var/lib/Asterisk/agi-bin/, que
será executado por meio do AGI a partir do plano de
discagem. A sintaxe dentro do plano de discagem
deve ser a seguinte: exten => nome, prioridade, AGI
(<nome do arquivo>) (KELLER, 2009), (AGI,
2013).
Neste trabalho utilizou-se um script em PHP,
executado através do AGI, para estabelecer uma co-
nexão, via socket, entre a plataforma Asterisk e o
Arduino.
3.6 AstDB (Asterisk Database)
O AstDB foi utilizado neste trabalho para arma-
zenamento/consulta do login e senha dos usuários,
necessário durante a etapa de autenticação, para aces-
so ao menu da URA. Este é um banco de dados inter-
no do Asterisk que armazena os dados em grupos
chamados famílias com valores identificados por
chaves, onde cada chave possui um valor único. Cada
valor alocado está associado a uma família. Os dados
do AstDB ficam no arquivo /var/lib/Asterisk/astdb.
4 Estabelecimento da Comunicação
Esta seção irá descrever como se estabeleceu a
comunicação entre o servidor Asterisk e o Arduino
para o envio de comandos de controle.
Um processo envia e recebe mensagens da rede
utilizando uma interface de software denominada
socket, que é a interface de programação pelas quais
as aplicações de rede são inseridas na Internet. É uma
interface ou porta entre o processo de aplicação e a
camada de transporte dentro de uma máquina, que
especifica os detalhes de como o programa aplicativo
interage com o protocolo. Uma vez que o socket for
estabelecido, os aplicativos podem transferir infor-
mações (KUROSE & ROSS, 2010), (COMER,
2000).
Para realizar a comunicação entre o Arduino e o
Asterisk, estabeleceu-se um socket UDP, através de
um script, utilizando uma classe da programação
PHP, o PHPAGI (PHPAGI, 2013). Este foi especifi-
camente criado para o desenvolvimento de aplicações
com o AGI (Asterisk Gateway Interface) e está dis-
ponível para uso e distribuição sob os termos da
GNU GPL (General Public License). O Asterisk es-
pera encontrar o script no diretório
/var/lib/Asterisk/agi-bin/ para que o AGI possa exe-
cutá-lo. E os parâmetros recebidos pelo Asterisk du-
rante a execução do menu da URA, são passados
para o script PHP através do AGI. A sintaxe utilizada
no plano de discagem é a seguinte:
exten => nome, prioridade, AGI(<nome do ar-
quivo>, valor1, valor2, valor3).
Os parâmetros valor1, valor2 e valor3 serão ar-
mazenados respectivamente em $argv[1], $argv[2] e
argv[3]. A variável $argv[ ] é um array próprio da
linguagem PHP que armazena todos os parâmetros
passados para o script PHP, neste caso enviado atra-
vés do plano de discagem do Asterisk, do arquivo
extensions.conf. Os parâmetros são as informações
que o usuário escolheu durante o menu da URA.
Para a abertura do socket utilizou-se a função
fsockopen(), que apresenta a sintaxe: fsockopen ($Ar-
duino_ip, $Arduino_port, $errno, $errstr), onde
$Arduino_ip, $Arduino_port, $errno e $errstr são
variáveis que contém respectivamente, o endereço IP
do Arduino, o número da porta, uma mensagem de
erro e o valor “0” caso haja algum problema na inici-
alização do socket (PHP, 2013).
5 Arquitetura da Plataforma
A plataforma implementada é formada por um ser-vidor Asterisk com uma URA configurada, os dispo-sitivos a serem acionados, telefone IP, softfone ou telefone analógico com um ATA e uma placa Ardui-no com Ethernet shield para cada localidade a ser controlada. A Figura 3 ilustra a arquitetura geral da plataforma.
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1677
Figura 3 - Arquitetura geral do sistema. Fonte: Própria.
A Figura 4 ilustra a arquitetura detalhada do sis-
tema mostrando alguns pontos específicos.
Figura 4 - Arquitetura detalhada do sistema. Fonte: Própria.
Conforme pode ser observado na Figura 4, o
funcionamento da plataforma ocorre da seguinte for-
ma:
1. Inicialmente, o usuário inicia uma chamada
direcionada ao servidor Asterisk utilizando
um telefone IP (hardware ou software).
2. Quando a chamada é estabelecida, o usuário
é direcionado a um processo de autentica-
ção, em que um login e uma senha são soli-
citados.
3. Caso o passo 2 seja bem sucedido, o usuário
pode acessar o menu, para controle dos dis-
positivos, da URA.
4. De acordo com as escolhas do usuário, o As-
terisk irá receber e processar tons DTMF
(Dual-Tone Multi-Frequency), que corres-
ponderão dentro do menu, a um dos disposi-
tivos configurados previamente.
5. A escolha do usuário é direcionada a uma
ação, de acordo com o que foi configurado
no plano de discagem (dialplan).
6. O script PHP será executado através do
AGI, estabelecendo comunicação e envian-
do os comandos para o Arduino.
7. O Arduino envia sinais de controle para os
dispositivos.
Na configuração do softfone foram utilizados os
protocolos SIP/RTP para o estabelecimento da cha-
mada, alternativamente o protocolo IAX poderia ter
sido usado.
O arquivo de configuração do plano de discagem
é o extensions.conf, onde estão as aplicações e fun-
ções necessárias para o desenvolvimento do projeto.
Nele está configurada uma URA, que está relaciona-
da a cada um dos usuários, já que estes podem possu-
ir diferentes dispositivos a controlar. Ao escolher as
opções durante o menu da URA, o AGI executa o
programa em linguagem PHP, passando as opções
em forma de argumentos.
O plano de discagem possui uma etapa de auten-
ticação, no qual o usuário deve digitar seu login e sua
senha para que possa ter acesso ao sistema. Caso erre
o login ou a senha, o usuário retorna a um estágio
anterior para repetir o processo de identificação. Es-
tes dados foram previamente armazenados no banco
de dados do Asterisk, o astDB, onde cada usuário
possui sua entrada correspondente.
O bloco designado como interface elétrica é
composto por um circuito de chaveamento capaz de
elevar a corrente recebida do Arduino (40 mA), e
possibilitar o acionamento de dispositivos em 220 V.
Na programação do Arduino, para que alguns
dispositivos pudessem permanecer acionados por um
intervalo de tempo determinado pelo usuário, utili-
zou-se um temporizador interno através da função
millis(), que retorna o tempo em milissegundos desde
que o programa corrente está em execução. Este nú-
mero estoura aproximadamente após 50 dias
(ARDUINO, 2013).
É válido salientar que utilizar um temporizador in-
terno apresenta os seguintes inconvenientes: precisão
na contagem, acumulando erros em períodos muito
longos e ao ser desligado a contagem é interrompida,
sendo reiniciada quando o dispositivo for novamente
energizado. E devido à estrutura do sistema, cada vez
que o usuário acessar outro menu na URA, o progra-
ma também será reiniciado, interrompendo a tempo-
rização. A solução seria utilizar um RTC (Real Time
Clock), que é um módulo capaz de gerar uma conta-
gem de tempo precisa a partir da oscilação de um
cristal (no valor padrão de 32 KHz, (KAPICAK et.
al, 2011), (LEE & CHOI, 2003)), armazenando a
data (com ano, mês e dia) e a hora, minuto e segundo.
Mantendo a contagem de tempo mesmo que a energia
principal seja desligada, através de uma bateria de
backup. Para a comunicação destes módulos com
microcontroladores geralmente se utiliza o protocolo
I²C (Inter-Integrated Circuit).
6 Validação da Plataforma
Para fins de validação da plataforma construíram-
se em laboratório dois experimentos. No primeiro, o
usuário realiza uma chamada telefônica utilizando um
softfone configurado com uma conta SIP no servidor
Asterisk. O usuário escolhe opções através do menu
da URA e os comandos são enviados para os disposi-
tivos através da rede. A intenção deste cenário é si-
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1678
mular o controle de dispositivos comumente utiliza-
dos em utilizados em automação residencial.
A plataforma utilizada durante o experimento po-
de ser visualizada na Figura 5. A interface elétrica
entre o Arduino e os dispositivos é composta basica-
mente por relés e transistores atuando como chave. O
Arduino fornece uma corrente máxima de 40 mA, e
quatro de seus pinos estão configurados como saída e
ligados a transistores que por sua vez irão fazer com
que os relés comutem, sempre que o pino correspon-
dente estiver em nível lógico alto, ativando os dispo-
sitivos. A saída de tensão de 5 VCC do Arduino, que
estava sendo alimentado via USB, foi utilizada para
alimentar o circuito de chaveamento, o motor e o
cooler.
Figura 5 - Plataforma utilizada durante o experimento. Fonte:
Própria.
Estabeleceu-se comunicação entre o Asterisk e o
Ethernet shield através do socket criado pelo progra-
ma em PHP, e o Arduino foi responsável por geren-
ciar os sinais de saída.
O segundo cenário implementado foi um sistema
de irrigação temporizado. Nele o usuário determina o
tempo em minutos em que o sistema deve permane-
cer ativo, através da URA. Para realizar a irrigação
utilizou-se uma válvula solenoide normalmente fe-
chada. O seu princípio de funcionamento consiste em
uma bobina (formada por um condutor enrolado atra-
vés de um cilindro) que, quando energizada, gera
uma força fazendo com que o êmbolo da válvula seja
deslocado, permitindo a passagem do fluido, neste
caso a água. O tipo de válvula utilizada, ilustrada
pela Figura 6, é a que está presente em máquinas de
lavar roupa. Na Figura 7 é mostrado o protótipo de-
senvolvido.
Figura 6 – Valvula solenoide utilizada. Fonte: Própria.
Figura 7 – Protótipo desenvolvido para irrigação residencial.
Fonte: Própria.
Assim como acontece para o sistema de irrigação,
o plano de discagem pode ser adequado para receber
o intervalo de tempo (em minutos) durante o qual o
usuário deseje acionar os demais dispositivos.
Considerações Finais
Neste trabalho foi proposta uma solução para sis-
temas de automação. Inicialmente foi realizado um
estudo das ferramentas a serem utilizadas, o software
Asterisk e a plataforma microcontrolada Arduino. E
posteriormente como a comunicação entre eles seria
feita. Ao fim apresentou-se o sistema implementado
em laboratório.
A solução é simples, de baixo custo e baseada em
plataformas bem estabelecidas e abertas a modifica-
ções como o Asterisk e a placa Arduino com Ethernet
shield. Desta forma, reduziu-se o tempo de desenvol-
vimento e facilitaram-se futuras alterações no siste-
ma. Além disso, considera-se a solução abrangente,
pois pode ser utilizada em vários campos diferentes
da automação tais como residencial, agrícola, indus-
trial, engenharia biomédica.
Em trabalhos futuros o sistema pode ser modifica-
do. Outra plataforma microcontrolada que permita
comunicação pela Internet pode ser utilizada. O sis-
tema pode utilizar o reconhecimento de voz, em vez
do recebimento de dígitos.
Com relação à segurança do sistema, foi imple-
mentada uma autenticação do usuário na URA atra-
vés do login e senha. Mas, outras questões relaciona-
das à segurança do tráfego das informações dos usuá-
rios pela rede devem ser consideradas. Devem-se
procurar soluções que permitam garantir a confiden-
cialidade e integridade dos dados transmitidos. Neste
sentido propõe-se construir uma aplicação no Aste-
risk e fazer uma modificação no software do Ethernet
shield para que se possa estabelecer um túnel cripto-
grafado entre a URA e as plataformas microcontrola-
da.
Propõe-se também estender os cenários de valida-
ção para problemas relacionados à assistência a pes-
soas com necessidades especiais dentro do contexto
de tecnologia e-health. A título de exemplo, um te-
traplégico poderia utilizar o sistema para realizar
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1679
tarefas como ligar luzes, levantar a cama e ligar a
televisão sem o auxílio de outras pessoas bastando
para isso apenas adicionar o reconhecimento de voz à
solução.
Quanto ao acionamento de dispositivos por um
tempo predeterminado (com aplicação em um sistema
de irrigação, por exemplo), um hardware adicional
deve ser utilizado, um módulo RTC. Pois com a fun-
ção millis() ou outra função/procedimento que funci-
one como temporizador e seja interno ao Arduino, o
horário em que o dispositivo deve ser desligado será
perdido a cada reinicialização do programa, o que
ocorre a cada vez que o usuário acessa um menu dife-
rente na URA, ou a cada vez que o Arduino for rea-
limentado.
Referências Bibliográficas
AGI. AGI Scripting with PHP. Disponível em: < http://www.itp-redial.com/class/weekly-notes/week4-notes/agi-scripting-with-php> Acesso em: 10 Fev 2013.
ASTERISK. Disponível em: <http://www.asterisk.org/>. Acesso em: 15 Jul 2013.
ARDUINO. Arduino Uno. Disponível em: <http://Arduino.cc/en/Main/ArduinoBoardUno> Acesso em: 23 Jan 2013.
ARDUINO BRASIL. Nova versão do Arduino: Uno. Disponível em: < http://www.arduinobrasil.com/2011/01/uno/> Acesso em: 23 Mar 2013.
COMER, D., E. Redes de Computadores e Internet. 4ª ed. Bookman Companhia Editora Ltda, São Paulo, 2007.
EGUINO, A. (2013). Asterisk & Z-Wave demo. Disponível em: <http://domotica4all.com/2013/11/asterisk-z-wave-demo-in-voip2day-2013/>. Acesso em: 12 Jun 2014.
GONÇALVES, F., E. Configuration Guide for Asterisk PBX: How to build and configure a PBX with Open Source Software. 2ª ed. V.Office Networks LTDA, 2007.
GRAVES, M. (2009). Controlling Applications From Asterisk.
Disponível em :
<http://www.mgraves.org/2009/01/controlling-applications-
from-asterisk/> Acesso em: 13 Jun 2014. GUPTA, P; AGRAWAL, N and QADEER, M. A (2013). GSM
and PSTN Gateway for Asterisk EPBX. Wireless and Opti-cal Communications Networks (WOCN), 2013 Tenth Inter-national Conference on.
HACKWORTH, J. (2012). Home Automation with Asterisk and FreePBX. Disponível em: <http://www.jordanhackworth.com/home-automation-with-asterisk-and-freepbx/>. Acesso em: 12 Jun 2014.
JIN, J., JIN+, J., WANG, Y., ZHAO, K. and HU, J. (2008) Development of Remote-Controlled Home Automation System with Wireless Sensor Network. Fifth IEEE International Symposium on Embedded Computing, pp. 169-173.
KAPICAK, L., NEVLUD, P., ZDRALEK, J., DUBEC, P. and PLUCAR, J (2011). Remote Control of Asterisk via Web Services. Telecommunications and Signal Processing, pp. 27-30.
KELLER, A. Asterisk na prática. 1ª ed. São Paulo: Novatec, 2009.
KUROSE, J., F., ROSS, K., W. Redes de Computadores e a Internet: Uma Abordagem Top-down. 5ª ed. Addison-Wesley, 2010.
LEE, Y., K. and CHOI, J., W. (2003). Remote-Controlled Home Automation System via Bluetooth Home Network. SICE Annual Conference in Fukui, August 4-6, pp. 2824-2829.
MACURA, L.; VOZNAK, M.; TOMALA, K. and SLACHTA, J. (2012). Embedded multiplatform SIP server solution, Telecommunications and Signal Processing (TSP),
2012 35th International Conference on , vol., no., pp.263 -266.
MADSEN, L., MEGGELEN, J., V., and BRYANT, R. (2011). Asterisk: The Definitive Guide. 3 ed. USA: O’Reilly Media.
QADEER, M.A.; SHAH, K. and GOEL, U., (2012). Voice - Video Communication on Mobile Phones and PCs' Using Asterisk EPBX. Communication Systems and Network Technologies (CSNT), 2012 International Conference on. pp.534-538.
PHP. PHP Manual. Disponível em: <http://www.php.net/manual/pt_BR/language.functions.php> Acesso em: 22 Jan 2013.
PHPAGI. PHPAGI: Where PHP connects to Asterisk. Disponível em: <http://phpagi.sourceforge.net/> Acesso em: 20 Jan 2013.
Anais do XX Congresso Brasileiro de Automática Belo Horizonte, MG, 20 a 24 de Setembro de 2014
1680