Anais do XX Congresso Brasileiro de Automática

Belo Horizonte, MG, 20 a 24 de Setembro de 2014

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: michel.dias@ifpb.edu.br, daiana000@gmail.com, elielpoggi@gmail.com
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 automaçã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

Algumas funcionalidades como o acesso a bases
de dados e comunicação com recursos externos podem ser executadas através de scripts em outras linguagens de programação, tais como Python, PHP
(Hypertext Preprocessor) e Perl a partir do plano de
discagem por meio do AGI (Asterisk Gateway Interface) (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 plataforma 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 aplicada 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 é aberta porque utiliza apenas softwares/plataformas em
código aberto. Por outro lado, o Asterisk pode també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 Service tem sido utilizadas em sistemas de automação.
Comumente surgem novas pesquisas na área de sistemas de automação utilizando diferentes mecanismos para o controle remoto (JIN et. al, 2000),
(KAPICAK et. al, 2011), (LEE & CHOI, 2003). A
plataforma proposta, sendo modular, aberta e facil-

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 muitos casos, um dos fatores que dificultam a implementaçã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. Diante 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), normalmente 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 automação. Estas permitem gerenciar e direcionar chamadas telefônicas, através de uma URA (Unidade de
Resposta Audível), a processos de automação, controlando equipamentos remotamente, reduzindo custos e criando um sistema flexível. Um servidor centralizado 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).

1674

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

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 residencial (EGUINO, 2013) (HACKWORTH, 2012).
São príncípios de trabalhos como por exemplo em
(GRAVEN, 2009) que se baseiam a automação residencial utilizando Asterisk no qual é possível controlar 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 pesquisas (GUPTA, AGRAWAL & QADEER, 2013).
Este trabalho está organizado da seguinte forma:
inicialmente é descrito que microcontrolador foi utilizado 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.

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, bilhetagem, chamadas em fila, call agents (gerencia funções
como roteamento de ligações e sinalização), Distribuiçã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 podem 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 conectar-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ódulos, 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 Asterisk, 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.

2 Arduino
O Arduino é um circuito eletrônico para controle
de entrada/saída de dados baseada no microcontrolador 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 projetos escolares, com um orçamento menor que outros
sistemas de prototipagem disponíveis na época. De
forma que as pessoas tivessem acesso ao códigofonte 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 estendidas através de shields, que são placas contendo
dispositivos adicionais como receptores GPS, módulos Ethernet, bluetooth, zigBee, etc. Estes conectamse ao Arduino por barras de pinos empilháveis, mantendo o layout e permitindo que outro shield se encaixe 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 enviar sinais para que os dispositivos sejam acionados.
A Figura 1 apresenta os elementos de um Arduino
Uno (ARDUINO BRASIL, 2013).

1675

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

Os contextos mantem blocos isolados no plano
de discagem, sendo definidos por um nome entre
colchetes ([]). Uma extensão definida em um contexto 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 contexto, 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).

O SIP trata cada conexão como um par, negociando 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 registro 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 utilizada, através de uma característica denominada
trunk que possibilita a multiplexação de várias chamadas utilizando um único cabeçalho. E o IAX2 (2ª
versão do protocolo IAX) foi desenvolvido para funcionar 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 sendo eficiente para comunicação em tempo real. O proposito 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 cheguem ao destino final em um intervalo de tempo menor.
O SCTP (Stream Control Transmission Protocol) 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)].

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 executada.
As aplicações executam uma ação especifica
como tocar um som, procurar algo no banco de dados, 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 finais devem lidar com a perda de pacotes, aguardando
a chegada de alguns, requisitando uma retransmissão
ou desconsiderando os que foram perdidos. No entanto, 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 conexão/chamada VoIP entre dispositivos finais um
protocolo de sinalização (MADSEN, MEGGELEN
& SMITH, 2011).
Quanto aos protocolos de sinalização, a recomendação H.323 foi largamente implementada em
redes VoIP (Voice Over IP). Atualmente, tem se tornado comum o uso do SIP (Session Initiation Protocol), considerado mais simples em relação ao H.323.

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 comunicação com a RTPC (Rede Pública de Telefonia Comutada), 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
1676

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

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 informaçõ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 especificamente criado para o desenvolvimento de aplicações
com o AGI (Asterisk Gateway Interface) e está disponível para uso e distribuição sob os termos da
GNU GPL (General Public License). O Asterisk espera
encontrar
o
script
no
diretório
/var/lib/Asterisk/agi-bin/ para que o AGI possa executá-lo. E os parâmetros recebidos pelo Asterisk durante 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 arquivo>, valor1, valor2, valor3).
Os parâmetros valor1, valor2 e valor3 serão armazenados 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 atravé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 ($Arduino_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 inicialização do socket (PHP, 2013).

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 discagem (extensions.conf), as ações que devem ser
aplicadas às chamadas, são responsáveis por exemplo, 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 gerenciamento das chamadas determinando a sequência de
passos por onde a chamada será conduzida. A maioria 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 desenvolvedor 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 conexão, via socket, entre a plataforma Asterisk e o
Arduino.
3.6 AstDB (Asterisk Database)
O AstDB foi utilizado neste trabalho para armazenamento/consulta do login e senha dos usuários,
necessário durante a etapa de autenticação, para acesso ao menu da URA. Este é um banco de dados interno 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.

5 Arquitetura da Plataforma
A plataforma implementada é formada por um servidor Asterisk com uma URA configurada, os dispositivos a serem acionados, telefone IP, softfone ou
telefone analógico com um ATA e uma placa Arduino com Ethernet shield para cada localidade a ser
controlada. A Figura 3 ilustra a arquitetura geral da
plataforma.

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.

1677

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

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á relacionada a cada um dos usuários, já que estes podem possuir 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 autenticaçã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. Estes 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, utilizou-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 interno 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 programa também será reiniciado, interrompendo a temporização. A solução seria utilizar um RTC (Real Time
Clock), que é um módulo capaz de gerar uma contagem 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).

Figura 3 - Arquitetura geral do sistema. Fonte: Própria.

A Figura 4 ilustra a arquitetura detalhada do sistema 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 forma:
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 solicitados.
3. Caso o passo 2 seja bem sucedido, o usuário
pode acessar o menu, para controle dos dispositivos, da URA.
4. De acordo com as escolhas do usuário, o Asterisk irá receber e processar tons DTMF
(Dual-Tone Multi-Frequency), que corresponderão dentro do menu, a um dos dispositivos 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 enviando os comandos para o Arduino.
7. O Arduino envia sinais de controle para os
dispositivos.

6 Validação da Plataforma
Para fins de validação da plataforma construíramse 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 dispositivos através da rede. A intenção deste cenário é si-

Na configuração do softfone foram utilizados os
protocolos SIP/RTP para o estabelecimento da chamada, alternativamente o protocolo IAX poderia ter
sido usado.

1678

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

mular o controle de dispositivos comumente utilizados em utilizados em automação residencial.
A plataforma utilizada durante o experimento pode ser visualizada na Figura 5. A interface elétrica
entre o Arduino e os dispositivos é composta basicamente 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 correspondente estiver em nível lógico alto, ativando os dispositivos. 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 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 sistemas 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 desenvolvimento e facilitaram-se futuras alterações no sistema. 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, industrial, engenharia biomédica.
Em trabalhos futuros o sistema pode ser modificado. Outra plataforma microcontrolada que permita
comunicação pela Internet pode ser utilizada. O sistema pode utilizar o reconhecimento de voz, em vez
do recebimento de dígitos.
Com relação à segurança do sistema, foi implementada uma autenticação do usuário na URA através do login e senha. Mas, outras questões relacionadas à 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 confidencialidade e integridade dos dados transmitidos. Neste
sentido propõe-se construir uma aplicação no Asterisk e fazer uma modificação no software do Ethernet
shield para que se possa estabelecer um túnel criptografado entre a URA e as plataformas microcontrolada.
Propõe-se também estender os cenários de validação para problemas relacionados à assistência a pessoas com necessidades especiais dentro do contexto
de tecnologia e-health. A título de exemplo, um tetraplégico poderia utilizar o sistema para realizar

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 programa em PHP, e o Arduino foi responsável por gerenciar 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 permanecer ativo, através da URA. Para realizar a irrigação
utilizou-se uma válvula solenoide normalmente fechada. O seu princípio de funcionamento consiste em
uma bobina (formada por um condutor enrolado atravé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 desenvolvido.

Figura 6 – Valvula solenoide utilizada. Fonte: Própria.

1679

Anais do XX Congresso Brasileiro de Automática
Belo Horizonte, MG, 20 a 24 de Setembro de 2014

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.

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 funcione 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 diferente na URA, ou a cada vez que o Arduino for realimentado.
Referências Bibliográficas
AGI. AGI Scripting with PHP. Disponível em: < http://www.itpredial.com/class/weekly-notes/week4-notes/agi-scriptingwith-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-invoip2day-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-applicationsfrom-asterisk/> Acesso em: 13 Jun 2014.
GUPTA, P; AGRAWAL, N and QADEER, M. A (2013). GSM
and PSTN Gateway for Asterisk EPBX. Wireless and Optical Communications Networks (WOCN), 2013 Tenth International Conference on.
HACKWORTH, J. (2012). Home Automation with Asterisk and
FreePBX.
Disponível
em:
<http://www.jordanhackworth.com/home-automation-withasterisk-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. AddisonWesley, 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),

1680