Sunteți pe pagina 1din 50

INSTITUTO FEDERAL DE EDUCAO, CINCIA E TECNOLOGIA DA PARABA

COORDENAO DO CURSO DE ENGENHARIA ELTRICA







Daiana Correia de Lucena








O USO DO ASTERI SK PARA O CONTROLE REMOTO DE SISTEMAS DE
AUTOMAO

















Joo Pessoa
2013

Daiana Correia de Lucena

USO DO ASTERI SK PARA O CONTROLE REMOTO DE SISTEMAS DE
AUTOMAO



Trabalho de Concluso de Curso
submetido Coordenao do Curso de
Engenharia Eltrica do Instituto Federal
de Educao, Cincia e Tecnologia da
Paraba, como parte dos requisitos para a
obteno do grau de Engenheira
Eletricista.


Orientador: M.Sc. Michel Coura Dias




Joo Pessoa
2013

Daiana Correia de Lucena

USO DO ASTERI SK PARA O CONTROLE REMOTO DE SISTEMAS DE
AUTOMAO


Trabalho de Concluso de Curso
submetido Coordenao do Curso de
Engenharia Eltrica do Instituto Federal
de Educao, Cincia e Tecnologia da
Paraba, como parte dos requisitos para a
obteno do grau de Engenheira
Eletricista.



BANCA EXAMINADORA

Michel Coura Dias, M.Sc. - IFPB
Orientador

Silvana Luciene do Nascimento Cunha Costa, Dr. - IFPB


Erik Farias da Silva, M.Sc. - IFPB


Joo Pessoa, 23 de Julho de 2013.



4


















































Aos meus pais, a minha tia Ftima.










5
AGRADECIMENTOS
Aos meus pais, Geraldo Lucena e Maria Jos Correia de Lucena, a minha tia Maria de
Ftima pelo apoio incondicional, pelo auxilio em minhas escolhas e por acreditarem que eu
poderia concluir esta etapa.
A Lindomar Barbosa, a minha av Alzira Correia e ao meu av (em memria) Euclides
Correia. Ao meu irmo, Euclides Correia, aos meus primos, Lindomar Barbosa e Galvem
Lucena, e a Romulo Damio, pelo apoio e incentivo.
Aos professores do corpo docente que acompanharam e possibilitaram minha formao. Em
especial, ao professor Alfredo Gomes Neto, tutor do PET (Programa de Educao Tutorial)
durante o perodo em que fui integrante do grupo, por ter sido um excelente tutor e professor,
e uma referncia para os alunos do curso. E ao professor orientador Michel Coura Dias,
pela dedicao, pelo incentivo e acompanhamento do amadurecimento dos conhecimentos
que possibilitou o desenvolvimento desta pesquisa.
s meninas, Cintia Mendes, Jayne Santos, Joyce Maia e Thamyres Tmulla, pelo apoio,
companhia e por todos os momentos compartilhados. Fico extremamente feliz pelos laos de
amizade que construmos, e sei que vamos levar pelo resto de nossas vidas.
A Iuri Santos pela companhia durante o curso. A Eliel Poggi, com quem foi desenvolvida a
pesquisa que resultou neste trabalho, pelos momentos juntos. Aos demais colegas e amigos de
curso que de alguma forma contriburam para este momento.




6





















No importa o caminho, algumas coisas
ficaro para trs.



7
RESUMO
Este trabalho descreve um sistema multiusurio que permite o controle remoto e concorrente
de sistemas de automao que utilizam o Arduino como controlador principal. A interface
com usurio definida na forma de uma URA (Unidade de Resposta Audvel), a qual envia
comandos atravs de uma rede TCP/IP estabelecida para o(s) sistema(s) remoto(s) a serem
controlados. O sistema foi desenvolvido em cima do software Asterisk, de mbito pblico,
amplamente difundido na Internet e gratuito. A validao se deu atravs de dois experimentos,
montados e testados em laboratrio. O resultado final um sistema de baixo custo que atende
ao especificado inicialmente.


Palavras-Chave: Asterisk, Sistema de automao, Arduino.



8
ABSTRACT
This work describes a multiuser and concurrent system that allows the remote control of
Automation systems which uses an Arduino as main controller. The user interface is an IVR
(Interactive Voice Response) that send commands thought the TCP/IP network established for
the remote systems to be controlled. The system was developed with Asterisk 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 final result is a low cost system that fulfills
what was described above.

Keywords: Asterisk, Automation system, Arduino.





9
LISTA DE ILUSTRAES

Figura 1 - Diagrama de blocos de um Sistema de Automao. ................................................ 18
Figura 2 - Topologia de um sistema de automao residencial. ............................................... 20
Figura 3 - Elementos de um Arduino Uno. .............................................................................. 22
Figura 4 - Ethernet shield. ........................................................................................................ 24
Figura 5 - Dispositivos que podem ser usados para o estabelecimento de comunicao via
rede TCP/IP. ............................................................................................................................. 26
Figura 6 - Relao entre um arquivo de configurao do canal e o contexto no plano de
discagem. .................................................................................................................................. 27
Figura 7 - Mdulos e APIs do Asterisk..................................................................................... 28
Figura 8 - Estabelecimento de uma chamada SIP. ................................................................... 29
Figura 9 - Operao do protocolo SIP com canreinvite=no (a esquerda) e com
canreinvite=yes (a direita). ....................................................................................................... 30
Figura 10 - Modelo da transferncia confivel de dados no TCP. ........................................... 36
Figura 11 - Processos de aplicao, sockets e protocolo de transporte. ................................... 37
Figura 12 - Processo de comunicao no sistema. ................................................................... 37
Figura 13 - Arquitetura geral do sistema. ................................................................................. 39
Figura 14 - Arquitetura detalhada do sistema. .......................................................................... 40
Figura 15 - Trecho do programa em PHP. ............................................................................... 41
Figura 16 - Plano de discagem, Asterisk e Softfone. ................................................................ 42
Figura 17 - Plataforma de experimento. ................................................................................... 43
Figura 18 - Cenrio final funcionando. .................................................................................... 43
Figura 19 Vlvula solenoide utilizada no sistema. ................................................................ 44
Figura 20 Prottipo desenvolvido para um sistema de irrigao residencial. ....................... 44
Figura 21 - Trecho do arquivo extensions.conf responsvel pelo acionamento da vlvula...... 45



10
LISTA TABELAS
Tabela 1 - Especificaes do Arduino Uno. ............................................................................. 21
Tabela 2 - CODECS utilizados em VoIP. ................................................................................ 32
Tabela 3 - Comandos de console no Asterisk. .......................................................................... 34
Tabela 4 - Comandos para o plano de discagem. ..................................................................... 34



11
LISTA DE SIGLAS
AGI - Asterisk Gateway Interface
AstDB - Asterisk Database
API - Application Programming Interface
ATA - Analog Terminal Adaptor
CODEC - Codificador/decodificador
CLP - Controlador Lgico Programvel
DAC - Distribuio Automtica de Chamadas
DTMF - Dual-Tone Multi-Frequency
GPL - General Public License
IAX - Inter-Asterisk eXchange
ICSP - In-circuit Serial Programming
IDE - Integrated Development Environment
IEEE - Institute of Electrical and Electronics Engineers
IP - Internet Protocol
IVR - Interactive Voice Response
I
2
C - Inter-Integrated Circuit
MGCP - Media Gateway Control Protocol
MIPS - Milhes de Instrues Por Segundo
MOS - Mean Opinion Score
NAT - Network Adress Translation
OSI - Open Systems Interconnetion
PBX - Private Branch Exchange
PHP - Hypertext Preprocessor
PWM - Pulse Width Modulation
RTC - Real Time Clock
RTCP - Rede Publica de Telefonia Comutada
RTP - Real-time Transport Protocol
SCTP - Stream Control Transmission Protocol
SIP - Session Initiation Protocol
SPI - Serial Peripheral Interface
TCP - Transmission Control Protocol
UAC - User Agent Client



12
UAS - User Agent Server
UA - User Agent
UDP - User Datagram Protocol
URA - Unidade de Resposta Audvel
VoIP - Voice over IP




13
SUMRIO
AGRADECIMENTOS ............................................................................................................. 5
RESUMO ................................................................................................................................... 7
ABSTRACT .............................................................................................................................. 8
LISTA TABELAS .................................................................................................................. 10
LISTA DE SIGLAS ................................................................................................................ 11
SUMRIO ............................................................................................................................... 13
CAPTULO 1 INTRODUO ............................................................................................. 14
1.1 OBJETIVO ......................................................................................................................... 15
1.2 MOTIVAO E JUSTIFICATIVA DO TRABALHO ..................................................... 15
1.3 ORGANIZAO DO TRABALHO ................................................................................. 17
CAPTULO 2 SISTEMAS DE AUTOMAO .................................................................. 18
2.1 SISTEMAS DE AUTOMAO INDUSTRIAL............................................................... 18
2.2 SISTEMAS DE AUTOMAO RESIDENCIAL ............................................................ 19
CAPTULO 3 ARDUINO ...................................................................................................... 21
CAPTULO 4 ASTERISK ...................................................................................................... 25
4.1 AGI (ASTERISK GATEWAY INTERFACE) ....................................................................... 33
4.2 ASTDB (ASTERISK DATABASE) ..................................................................................... 33
CAPTULO 5 ESTABELECIMENTO DA COMUNICAO ......................................... 35
5.1 ESTABELECIMENTO DE UMA CONEXO VIA SOCKET ......................................... 35
5.2 ESTABELECIMENTO DE CONEXO ENTRE O ASTERISK E O ARDUINO ............ 37
CAPTULO 6 ARQUITETURA DO SISTEMA ................................................................. 39
CAPTULO 7 VALIDAO DO SISTEMA ...................................................................... 42
CONSIDERAES FINAIS ................................................................................................. 46
REFERNCIAS ..................................................................................................................... 48
APNDICE A CDIGO DO SCRI PT PHP ...................................................................... 50



14
CAPTULO 1
INTRODUO

Automao envolve um conjunto de tcnicas de controle, a partir das quais possvel
alcanar a resposta desejada em funo das informaes recebidas do processo em que est
atuando, sem a necessidade de interferncia humana. De acordo com as informaes, o
sistema decidir a melhor ao a ser executada. Est indissoluvelmente associado ao conceito
de software, j que um sistema automatizado pode ser radicalmente alterado a fim de alcanar
um resultado diferente (WEG, 2002).
Segundo Gutierrez e Pan (2008):
Pode-se dizer que o desejo de controlar os processos industriais acompanha
o homem desde a criao das primeiras mquinas. At a dcada de 1940, as
plantas eram operadas manualmente por um grande nmero de operadores,
os quais se valiam de alguns poucos instrumentos mecnicos elementares
que realizavam controle local.
Automatizar sistemas decorre da necessidade de reduzir custos da produo
(envolvendo tambm perdas materiais e de energia), elevar o nvel de qualidade, oferecer
maior segurana aos operrios, disponibilidade e preciso de informao sobre o processo.
Abrange a implantao de sistemas assistidos por redes de comunicao, envolvendo sistemas
supervisrios e interfaces homem-mquina (CASTRUCCI & MORAES, 2012).
A evoluo de dispositivos eletrnicos, computadores e equipamentos de rede
impulsionou o desenvolvimento dos sistemas de automao. Nos primeiros sistemas de
automao, os operadores observavam instrumentos analgicos e lmpadas e faziam o
controle manualmente, atravs de chaves e botoeiras. O advento dos microprocessadores
possibilitou o uso de computadores como interface.
A evoluo seguinte foi com relao ao uso de redes de comunicao que passaram a
integrar a aquisio de dados e a atuao no processo. Surgindo sistemas interligados e
assistidos por redes de computadores, compreendendo sistemas supervisrios e interfaces
homem-mquina. A vantagem de utilizar sistemas computadorizados a facilidade de
expanso j que utiliza recursos de fcil acesso.
possvel atuar sobre processos tendo como interface uma URA (Unidade de
Resposta Audvel), configurada atravs de um plano de discagem da plataforma Asterisk.
Esta, foi criada em meados de 1999 por Mark Spencer, um software em cdigo aberto,



15
bastante flexvel, que executa as funes de uma central telefnica. Permite conectividade
com as redes RPTC (Rede Publica de Telefonia Comutada) e pode executar protocolos VoIP
(Voice Over IP). E o usurio pode adequar o software de acordo com suas necessidades.
Podem-se conectar filiais de uma empresa atravs da Internet ou de uma rede TCP/IP, criar
distribuidor automtico de chamadas, salas de conferncia, gravar chamadas em arquivos
texto ou banco de dados, entre outros.
Algumas funcionalidades seriam muito complexas ou mesmo impossveis de serem
realizadas dentro da linguagem do plano de discagem do Asterisk, como por exemplo, o
acesso a bases de dados e comunicao com recursos externos. Para solucionar isto, podem
ser executados scripts em outras linguagens de programao tais como Python, PHP, Perl, a
partir do plano de discagem (KELLER, 2009, p.166).
1.1 OBJETIVO
O objetivo deste trabalho propor um sistema multiusurio para controle remoto
concorrente de mltiplos sistemas de automao. De forma especfica, desenvolver um
sistema de automao residencial, industrial, empresarial ou at mesmo no mbito da
engenharia biomdica, que apresenta como interface ao usurio uma URA (Unidade de
Resposta Audvel), configurada atravs da plataforma Asterisk.
1.2 MOTIVAO E JUSTIFICATIVA DO TRABALHO
Na dcada de 80, com a popularizao dos computadores pessoais, pde-se pensar em
utiliza-los como dispositivo central em sistemas automao. Algumas desvantagens, na poca,
eram o elevado consumo e a centralizao do controle que pode vir a ser falho e comprometer
o funcionamento de todo o sistema automatizado. Isto motivou o desenvolvimento de
dispositivos embarcados atravs da utilizao de microprocessadores e microcontroladores.
De forma paralela outras tecnologias foram incorporadas automao residencial e
empresarial, o controle remoto programvel infravermelho e radiofrequncia, que
diferentemente da tecnologia infravermelho, no necessita de visada direta entre o controle
remoto e o dispositivo.
A expanso e desenvolvimento da Internet, intensificado a partir do sculo XXI,
concedeu ao usurio a possibilidade de controle e monitoramento de ambientes de qualquer



16
lugar que disponha do servio. Acrescenta-se a este fato a crescente utilizao de
equipamentos capazes de se conectar a Internet, celular, smartphone, tablet, etc. Nesses casos,
um software aplicativo realiza controle das automaes.
A automao proporciona uma maior segurana por controlar equipamentos
remotamente, ou seja, sem o contato direto do profissional, reduzindo custos e tornando o
sistema flexvel. A plataforma Asterisk, normalmente utilizada como PBX em empresas,
contm um conjunto de aplicaes e funes que podem ser utilizados para fins de
automao. Segundo Madsen, Meggelen e Smith (2011, p.1, traduo nossa):
Asterisk atualmente o PBX (Private Branch Exchange) mais bem sucedido
no mundo, e uma tecnologia aceita (embora nem todos gostem) na
indstria de telecomunicaes. [...] Asterisk uma tecnologia poderosa, e
nos acreditamos que uma das melhores opes para integrao de servios
de telecomunicaes com todas as outras tecnologias que possam necessitar
ser interconectadas. Com Asterisk ningum vai especificar como o seu
sistema telefnico deve funcionar ou as tecnologias as quais voc est
limitado. [...] O que voc decidir implementar pode ser feito Asterisk no
impe limites.
O sistema a ser proposto neste trabalho, pode ser utilizado para automatizar
residncias que estariam conectadas ao servidor Asterisk, em automao empresarial,
industrial ou no mbito da engenharia biomdica.
Em automao residencial, um servidor Asterisk centralizado controlaria vrias
residncias, onde cada uma delas teria um menu especfico na URA previamente configurada.
Em automao empresarial ou industrial, o setor poderia utilizar o software Asterisk como
central telefnica, e aproveitando-se da estrutura existente, utiliza-lo para fins de automao.
No mbito da engenharia biomdica o sistema pode prover acessibilidade a pessoas com
dificuldade de locomoo.
O sistema desenvolvido permite gerenciar e direcionar chamadas telefnicas a
processos de automao e pode ser aplicado em diversas situaes. Criando um sistema de
baixo custo, j que necessita de um Arduino junto a um Ethernet shield e um ponto de rede
para cada localidade a ser automatizada. E de alta escalabilidade, pois pode suportar um
nmero elevado de novas conexes. Centralizado, um servidor executando o Asterisk
responsvel pelo gerenciamento das chamadas e pelo envio de comandos pela rede TCP/IP.




17
1.3 ORGANIZAO DO TRABALHO
Na presente seo feita uma introduo ao tema, apresentando a motivao e os
objetivos da pesquisa. Os demais captulos esto estruturados como descrito a seguir. No captulo
2, 3 e 4 apresentada uma fundamentao terica envolvendo, sistemas de automao,
Arduino e o Asterisk, respectivamente. O captulo 5 aborda a comunicao via socket entre o
Asterisk e o Arduino. No captulo 6 e captulo 7 apresentada respectivamente, a arquitetura e
a definio do sistema: mencionando os componentes do sistema e quais ferramentas foram
utilizadas para o desenvolvimento do projeto e a etapa de validao do sistema, onde
mostrado o cenrio experimental implementado para validao do que foi proposto. E o
capitulo 8 apresenta as concluses referentes ao sistema desenvolvido, bem como
perspectivas futuras.



18
CAPTULO 2
SISTEMAS DE AUTOMAO
2.1 SISTEMAS DE AUTOMAO INDUSTRIAL
Na automao industrial verifica-se sempre que novas tcnicas de controle so
introduzidas num processo, oferecendo e gerenciando solues. De uma forma geral o
processo sob controle tem o diagrama semelhante ao mostrado na Figura 1.
Os sistemas de automao usuais podem ser de tecnologia centralizada, que dispe de
uma unidade central de controle, ou distribuda, em que cada dispositivo possui capacidade de
processamento.

Figura 1 - Diagrama de blocos de um Sistema de Automao.

Fonte: CASTRUCCI & MORAES, 2012.

Os sensores so os elementos que fornecem informaes sobre o sistema,
correspondendo s entradas do controlador. Apresenta sensibilidade a um fenmeno fsico tal
como: temperatura, umidade, luz, presso, impedncia eltrica entre outros. Podem converter
uma forma de energia em outra, neste caso so transdutores, ou alterar suas propriedades,
como a resistncia, capacitncia ou indutncia.
Os atuadores so os responsveis pela realizao de uma tarefa, determinada pelo
controlador, no processo. Podem ser magnticos, hidrulicos, pneumticos, eltricos ou de
acionamento misto.
O controlador o elemento responsvel pelo acionamento dos atuadores, desenvolvido
com base em critrios de estabilidade. Para isto, atualmente utiliza-se de forma predominante,
Controladores Lgicos Programveis (CLPs).
Os CLPs so dispositivos digitais, com uma memria programvel para armazenar
instrues e executar funes especficas: energizao/desenergizao, temporizao,
contagem, sequenciamento, operaes matemticas e manipulao de dados. Caracterizam-se
por oferecer robustez adequada aos ambientes industriais, programao por meio de PCs,



19
linguagens amigveis para o projetista e capacidade de conexo com redes de dados. E
automatiza uma elevada quantidade de aes com preciso, confiabilidade, rapidez e pouco
investimento (CASTRUCCI & MORAES, 2012).
2.2 SISTEMAS DE AUTOMAO RESIDENCIAL
Sistemas de automao foram facilmente incorporados a ambientes industriais, pois
um sistema que integre o gerenciamento do consumo de energia, controle de iluminao,
acesso, climatizao e comunicao, torna o ambiente de trabalho mais produtivo, saudvel e
reduz os custos operacionais. Com advento dos computadores pessoais, a popularizao da
Internet e de dispositivos mveis, a aceitao das tecnologias residenciais passou a ter um
forte apelo. E a automao apresenta recursos tecnolgicos que podem ser incorporados s
instalaes domsticas promovendo conforto, segurana e reduo de barreiras a pessoas
acometidas por enfermidades (DIAS & PIZZOLATO, 2004).
As principais tecnologias utilizadas atualmente na Automao Residencial so: Padro
X-10, Padro LonWorks, Z-Wave, Zig-Bee, EIB/KNX (PARRACHO, 2010).
O Padro X-10 foi projetado para estabelecer comunicao entre transmissores e
receptores atravs da rede eltrica usando mdulos que possuem um endereo digital
programado e que ser utilizado pelos controladores na comunicao com os dispositivos.
A tecnologia LonWorks prope um sistema supervisrio remoto, que utiliza a Internet
para superviso e atuao distncia. Para a implementao de seu protocolo, LonTalk, so
utilizados chips que so integrados aos equipamentos e responsveis pela comunicao desses
com o sistema.
O Z-Wave um protocolo sem fio que usa uma largura de banda estreita para enviar
comandos de controle e dados, no sendo suficiente para o envio de udio e vdeo. Assim
como o padro LonWorks, cada equipamento dotado de um chip Z-Wave.
O ZigBee um padro para comunicao sem fio, utiliza a definio 802.15.4 do
IEEE, e possui uma largura de banda um pouco maior do que o Z-Wave, possibilitando o
controle de sistemas de udio e vdeo.
O padro EIB/KNX um sistema aberto que utiliza os sete nveis do modelo OSI
(Open Systems Interconection), onde cada dispositivo tem seu prprio controle, necessitando
apenas de um software para definir ou alterar sua configurao.



20
Segundo Muratori e B (2011), o principal fator que define uma instalao
residencial automatizada a integrao entre os sistemas aliada capacidade de executar
funes. A integrao deve abranger todos os sistemas da residncia, como apresentado na
Figura 2, tais como:
Instalao eltrica: iluminao, persianas, gesto de energia;
Sistemas de segurana: alarmes de intruso, circuito fechado de TV, monitoramento,
controle de acesso;
Utilidades: irrigao, climatizao, aquecimento de gua.

Figura 2 - Topologia de um sistema de automao residencial.

Fonte: SMART HOME, 2013.




21
CAPTULO 3
ARDUINO
O Arduino teve seu projeto iniciado na cidade de Ivre, Itlia, em 2005, com o intuito
de interagir em projetos escolares com um oramento menor que outros sistemas de
prototipagem disponveis na poca. De forma que as pessoas tivessem acesso ao cdigo-fonte
do software e ao projeto do hardware (sendo assim open-source), pudessem estender e
adequar a plataforma s suas necessidades. uma placa para controle de entrada/sada de
dados baseada no microcontrolador AVR de 8 bits, de arquitetura Harvard (memria de dados
e de programa so fisicamente separadas), da Atmel.
O Arduino pode ter suas funcionalidades estendidas atravs de Shields, que so placas
contendo dispositivos adicionais como receptores GPS, mdulos Ethernet, bluetooth, zigBee,
etc. E conectam-se ao Arduino por barras de pinos empilhveis, mantendo o layout e
permitindo que outro shield se encaixe acima.
Para programa-lo utilizado o IDE (Integrated Development Environment) do
Arduino. Este ambiente um software livre, que apresenta uma biblioteca prpria e funes
de uma parte da biblioteca padro C, no qual o cdigo escrito em uma DLS (Domain
Specific Language) inspirada na linguagem C/C++.
Para o desenvolvimento do trabalho foi utilizado um Arduino Uno, apresentado na
Figura 3, que responsvel por receber os comandos de um Ethernet shield, processa-los e
enviar sinais para que os dispositivos sejam acionados.
O Arduino Uno apresenta uma entrada USB, um conector ICSP e um boto reset. E
utiliza o ATmega328 como microcontrolador. Em sua programao utilizada a linguagem
C, e o Ambiente de Desenvolvimento Integrado (IDE) do Arduino utilizado na gravao dos
cdigos. A Tabela 1 resume as especificaes do dispositivo (ARDUINO, 2013).

Tabela 1 - Especificaes do Arduino Uno.

Microcontrolador ATmega328
Tenso de Operao +5V
Tenso de Entrada (recomendado) 7-12V
Tenso de Entrada (limite) 6-20V
Pinos E/S Digitais 14 (dos quais 6 podem ser usados para PWM (Pulse
Width Modulation)



22
Pinos de Entrada Analgica 6
Corrente CC por pino E/S 40 mA
Corrente CC fornecida pela fonte
de 3.3V
50 mA
Memria Flash 32 KB (ATmega328), sendo 0,5KB utilizados pelo
bootloader
SRAM 2 KB (ATmega328)
EEPROM 1 KB (ATmega328)
Frequncia do Clock 16 MHz

Figura 3 - Elementos de um Arduino Uno.

Fonte: ARDUINO BRASIL, 2013.

O Arduino Uno pode ser alimentado pela conexo USB ou por uma fonte de
alimentao externa. A fonte de alimentao selecionada automaticamente. Os pinos de
alimentao so (ARDUINO, 2013):
Vin: Entrada de alimentao para a placa Arduino quando uma fonte externa for
utilizada. A alimentao pode ser feita e acessada (no caso da alimentao est sendo
feita via USB ou atravs do conector DC de 2.1mm) por este pino.
5V: Pino de sada que fornece 5V.



23
3,3V: Alimentao de 3,3 volts fornecida pelo chip FTDI. A corrente mxima de 50
mA.
GND: Pino terra.
O ATmega328 apresenta 32 KB de memria flash (dos quais 0,5 KB so utilizados
pelo bootloader), 2 KB de SRAM e 1 KB de EEPROM (que pode ser lida e escrita atravs da
biblioteca EEPROM).
Cada um dos 14 pinos digitais do Uno, operam com 5 volts, fornecem ou recebem um
mximo de 40mA. E podem ser usados como entrada ou sada usando as funes pinMode (),
digitalWrite (), e digitalRead (). Alm disso, alguns pinos tm as seguintes funes
especializadas (ARDUINO, 2013):
Serial (Pinos 0 (RX) e 1 (TX)): Usados para receber (RX) e transmitir (TX) dados
seriais. Estes pinos esto conectados aos pinos correspondentes do chip serial
ATmega328 FTDI USB-to-TTL;
Interrupo Externa (pinos 2 e 3): Estes pinos podem ser configurados para disparar
uma interrupo por um baixo valor, uma elevao ou uma mudana de valor da
tenso;
PWM (pinos 3, 5, 6, 9, 10, e 11): Fornecem uma sada analgica PWM de oito bits
atravs da funo analogWrite ();
SPI (Serial Peripheral Interface) (pinos 11, 12 e 13): Estes pinos suportam
comunicao SPI. So as portas utilizadas quando est conectado um carto de
memria ou um Ethernet shield;
LED (Light Emitting Diode) (pino 13): LED built-in conectado ao pino digital 13;
I
2
C (pinos 4 e 5): Fornecem suporte a comunicao I
2
C.
Reset: Pino tipicamente usado para adicionar um boto de reset quando shields so
montados sobre a placa original.
O Uno possui 6 entradas analgicas e cada uma delas tem uma resoluo de 10 bits
(isto , 1024 valores diferentes). Por padro, elas medem de 0 a 5 volts, embora seja possvel
mudar o limite superior usando o pino AREF e a funo analogReference () (ARDUINO,
2013).
3.1 ETHERNET SHIELD



24
O Ethernet shield, Figura 4, permite que um Arduino seja conectado Internet atravs
de uma interface Ethernet, suportando at quatro conexes de socket simultneas. Baseado no
chip Wiznet W5100, utiliza-se da biblioteca Ethernet e suporta tanto TCP como UDP.

Figura 4 - Ethernet shield.

Fonte: ETHERNET SHIELD, 2013.

H um slot para cartes micro SD que pode ser utilizado para armazenar arquivos que
estejam disponveis na rede. O carto pode ser acessado atravs da biblioteca SD
(ETHERNET SHIELD, 2013).
O Arduino se comunica tanto com o chip Wiznet W5100 quanto com o carto SD
atravs do barramento SPI que est nos pinos digitais 11, 12 e 13 do Uno, portanto apenas um
deles pode estar ativo. Os pinos 10 e 4 no podem ser usados como entrada/sada j que so
responsveis respectivamente por selecionar o W5100 e o carto SD. Um endereo MAC e
um IP fixo devem ser atribudos atravs da funo Ethernet.begin() ou o DHCP pode ser
utilizado para a atribuio do endereo IP (ETHERNET SHIELD, 2013).
Os seguintes LEDs so utilizados para informao (ETHERNET SHIELD, 2013):
PWR: indica que a placa est ligada;
LINK: permanece aceso na presena de uma rede e pisca quando o shield envia ou
recebe dados;
FULLD: indica que a conexo de rede full duplex;
100M: indica a presena de uma conexo de rede de 100 Mb/s ;
RX/TX: pisca quando informaes so respectivamente recebidas/transmitidas pelo
shield;
COLL: pisca quando colises na rede so detectadas.



25
CAPTULO 4
ASTERISK
A plataforma Asterisk foi criada pela companhia Digium, tem sido utilizado por
pequenas e grandes empresas, call centers, operadoras, provedores VoIP e agncias
governamentais em todo o mundo, seguindo trs diferentes tipos de licena:
GPL (General Public License): a verso mais usada, livre para ser usada e modificada de
acordo com os termos da GPL. Permitindo que centenas de programadores contribuam para o
desenvolvimento do produto, adicionando novas funcionalidades, reportando eventuais bugs
do sistema (GPL, 2013).
Asterisk Business Edition: Usado por algumas empresas que no podem usar a licena GPL,
geralmente porque no desejam disponibilizar seu cdigo fonte para a comunidade (VOIP-
INFO.ORG, 2011).
Asterisk OEM: Utilizado principalmente em PBX (Private Branch Ex-change), em uma
situao na qual a empresa no quer revelar ao publico que seu software baseado no Asterisk
(OEM, 2011).
A aceitao do Asterisk deve ocorrer mais rpido do que aconteceu com o Linux j
que o Linux transps barreiras com relao a softwares em cdigo aberto, a indstria de
telecomunicaes no apresenta um lder (MADSEN; MEGGELEN & BRYANT, 2011, p.5)
e existem muitos usurios insatisfeitos com funcionalidades de produtos limitadas e
incompatveis. Outro aspecto relevante do Asterisk a comunidade que gera cooperao entre
os profissionais da rea de telecomunicaes, de redes de computadores e profissionais de
tecnologia de informao que compartilham suas experincias (MADSEN; MEGGELEN &
BRYANT, 2011).
A estrutura dinmica da plataforma Asterisk permite ao cliente adequar o cenrio da
empresa aos diversos recursos tecnolgicos por meio de aplicaes tais como: correio de voz,
conferncias, bilhetagem, chamadas em fila, call agents (gerencia funes como
roteamento de ligaes e sinalizao), Distribuio Automtica de Chamadas (DAC), URA,
msica em espera, gravao da chamada, bloqueio de chamadas, entre outras. Essas
aplicaes so caractersticas padronizadas ou que podem ser inseridas no software por meio
do plano de discagem (MADSEN; MEGGELEN & BRYANT, 2011).
Existem trs tipos de dispositivos finais que podem ser usados para o estabelecimento
de comunicao via rede TCP/IP: Telefone IP, Softfone e ATAs (Analog Terminal Adaptors),
conforme ilustrado na Figura 5. Um Telefone IP possui a interface de um telefone



26
convencional, e pode conectar-se diretamente a uma rede. O Softfone uma aplicao em
software que se pode executar em um computador ou em um celular, exercendo a funo de
um telefone. ATAs so designados para permitir que telefones convencionais possam ser
conectados a rede.

Figura 5 - Dispositivos que podem ser usados para o estabelecimento de comunicao via rede TCP/IP.

Fonte: Prpria.

A arquitetura do Asterisk organizada em mdulos, isto , componentes carregveis
que possibilitam a execuo de uma funcionalidade especifica, como o driver de um canal
(chan_sip.so) ou um recurso que permite conexo com uma tecnologia externa
(func_odbc.so).
O plano de discagem o ponto central do Asterisk, composto por contextos, extenses,
prioridades e aplicaes. 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.
Os contextos mantem blocos isolados no plano de discagem, sendo definidos por um
nome entre colchetes ([]). Uma extenso definida em um contexto est isolada de extenses
em outro contexto. Quando um canal configurado (no arquivo sip.conf ou iax.conf), um dos
parmetros necessrio o contexto, que especifica o ponto no plano de discagem, onde as
instrues devem comear a ser executadas. A Figura 6 ilustra isto (MEGGELEN; MADSEN
& BRYANT, 2011).








27
Figura 6 - Relao entre um arquivo de configurao do canal e o contexto no plano de discagem.
Fonte: MEGGELEN; MADSEN & BRYANT, 2011.

As extenses so identificaes que dentro de cada contexto definem os passos a
serem seguidos no plano de discagem. Cada extenso composta por um nome (ou nmero),
prioridade (que define qual passo ir ser executado) e aplicao. A sintaxe a seguinte:
exten => nome, prioridade, aplicao()
As prioridades so numeradas sequencialmente, comeando com 1, e cada uma
executa uma aplicao especifica. A prioridade n pode ser utilizada para indicar que a
anterior mais 1 deve ser executada.
As aplicaes executam uma ao especifica como tocar um som, procurar algo no
banco de dados, desligar ou atender uma chamada, entre outros.
Na Figura 7 apresentado o diagrama de funcionalidades dos mdulos e as Interfaces
de Programao de Aplicativos (API) que formam o Asterisk:
























28

Figura 7 - Mdulos e APIs do Asterisk.

Fonte: KELLER, 2009.

O funcionamento e a operao do Asterisk esto baseados em quatro componentes
bsicos:

Protocolo
Os protocolos de transporte TCP e UDP no 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 retransmisso ou
desconsiderando os que foram perdidos. No entanto, na transmisso de voz, se pacotes so
perdidos ou ocorrer um atraso superior a 150 milissegundos haver dificuldades em continuar
uma conversao. Sendo necessrio para o estabelecimento de uma conexo/chamada VoIP
entre dispositivos finais um protocolo de sinalizao (MEGGELEN; MADSEN & BRYANT,
2011).
Quanto aos protocolos de sinalizao, a recomendao 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 relao ao H.323.



29
O SIP trata cada conexo como um par, negociando o estabelecimento da conexo
entre eles, e transporta apenas a sinalizao sobre TCP ou UDP. O RTP (Real Time Protocol)
usado junto ao SIP ou H.323 para a transmisso dos pacotes de dados (que contm o udio
das chamadas).
O protocolo de sinalizao SIP formado pelos seguintes elementos: o cliente ou
terminal que inicializa a sinalizao SIP - UAC (User Agent Client), o servidor que responde
a uma sinalizao SIP vindo de um UAC - UAS (User Agent Server), o terminal SIP (telefone
ou gateway que contem o UAC e o UAS) - UA (User Agent), um Servidor Proxy que recebe
requisies de um UA e transfere para outro SIP Proxy caso o terminal a ser requisitado no
esteja sobre sua administrao, um Servidor de Redirecionamento que envia requisies de
volta ao UA informando um prximo servidor e um Servidor de Registro que recebe
requisies dos UA e atualiza sua localizao em uma base de dados. Normalmente o
Servidor Proxy, o Servidor de Redirecionamento e o Servidor de Registro esto no mesmo
hardware e utiliza o mesmo software do SIP Proxy, que responsvel por manuteno da
base de dados, estabelecimento da conexo e por terminar a sesso (GONALVES, 2007).
Cada UA possui um UAC (parte do UA responsvel por enviar requisies e receber
respostas) e um UAS (parte do UA responsvel por receber requisies e enviar respostas)
que so entidades lgicas. A Figura 8 mostra o estabelecimento de uma chamada SIP.

Figura 8 - Estabelecimento de uma chamada SIP.

Fonte: GONALVES, 2007.



30
Antes de um terminal SIP poder receber uma chamada, necessrio que sua
localizao esteja registrada em uma base de dados. O Asterisk realiza as funes do Servidor
de Registro. E pode conectar diretamente dois canais SIP (UACs), de forma que o udio seja
enviado diretamente pelo terminal SIP, para isto a opo canreinvite no arquivo de
configurao sip.conf deve estar setada como yes. A Figura 9 mostra os dois casos
(GONALVES, 2007).

Figura 9 - Operao do protocolo SIP com canreinvite=no (a esquerda) e com canreinvite=yes (a direita).

Fonte: GONALVES, 2007.

Provavelmente o maior problema tcnico com o SIP a convivncia com o NAT
(Network Adress Translation), que soluciona parcialmente o problema da quantidade de
endereos IP disponveis atravs do mapeamento de endereos internos para endereos
externos, onde cada mapeamento vlido para um intervalo de tempo determinado. O SIP
encapsula a informao do endereo em quadros e a maioria dos parmetros de configurao
transmitida no corpo da mensagem SIP. Um dispositivo SIP atrs de NAT conhece apenas
seu prprio endereo IP, onde a aplicao est rodando (MEGGELEN; MADSEN &
BRYANT, 2011).
Quando um UAC envia um pacote, o seu endereo IP fixado no campo do cabealho
SIP Contact. Para solucionar o problema descrito no paragrafo anterior, no arquivo de
configurao sip.conf a linha nat=yes deve ser acrescentada, assim o Asterisk ignora o
endereo contido no campo Contact do cabealho SIP e utiliza a porta e o endereo IP
externo vlido no cabealho do pacote IP. Adicionalmente, qualify=yes deve ser
acrescentado para que no seja realizado pelo NAT outro mapeamento, e no caso ocorrer, o
UAC poder enviar chamadas mas no conseguir receber (GONALVES, 2007).



31
O IAX (Inter-Asterisk eXchange) um protocolo de aplicao aberto, que utiliza um
processo de registro e autenticao similar ao SIP e foi produzido com o objetivo de
estabelecer comunicao entre dois servidores Asterisk. A sinalizao do canal e o fluxo de
dados so enviados por uma nica porta UDP (4569) (o protocolo RTP no utilizado para o
transporte do udio), e consegue reduzir a vazo utilizada, atravs de uma caracterstica
denominada trunk que possibilita a multiplexao de vrias chamadas utilizando um nico
cabealho. E o IAX2 (2 verso do protocolo IAX) foi desenvolvido para funcionar atrs de
dispositivos utilizando NAT (MEGGELEN; MADSEN & BRYANT, 2011).
Em uma rede IP os dados sero 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 latncia, no sendo eficiente para
comunicao em tempo real. O proposito do TCP garantir a entrega dos pacotes, e por isto,
vrios mecanismos so implementados, como numerao dos pacotes, confirmao da entrega
e retransmisso de pacotes perdidos. Diferentemente do TCP, o UDP no 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
limitaes do TCP e do UDP. Consegue implementar tcnicas mais eficazes de controle de
congestionamento (evitando tambm ataques de negao de servio), garante a sequncia dos
pacotes entregues e apresenta baixa latncia (GONALVES, 2007).

Driver do canal
So necessrios para a realizao de chamadas. Cada protocolo utilizado (SIP, IAX,
etc.) possui um driver especfico como descrito a seguir: chan_iax2 - promove conexo entre
dois terminais IAX, chan_sip - driver do protocolo SIP, chan_mgcp - driver do protocolo
MGCP, chan_dahdi - possibilita comunicao com a RTCP, entre outros. O mdulo do canal
age como um gateway para o Asterisk.

CODEC
Software dedicado a codificar e decodificar uma informao digital. O propsito dos
algoritmos de codificao apresentar diferentes relaes entre eficincia e qualidade. So
caracterizados de acordo com a taxa de compresso, perda de pacotes, largura de banda
utilizada e processamento computacional exigido, possibilitam a deteco de silncio e



32
gerao do rudo de conforto. Como a vazo finita, o nmero de conversaes simultneas
que uma conexo pode estabelecer est diretamente relacionado ao CODEC utilizado.
A Tabela 2 mostra os parmetros de alguns CODECS utilizados em chamadas VoIP.
O algoritmo utilizado em seu desenvolvimento. A frequncia de amostragem, que
corresponde ao dobro da frequncia mais elevada do som que pode ser reproduzida. O atraso,
que corresponde ao intervalo de tempo considerando que o processamento das amostras seja
instantneo. O MOS, um teste obtido atravs da opinio de usurios para identificar a
qualidade do som produzido pelo CODEC, sendo 5 o valor mximo e 1 o mnimo. E a
capacidade de processamento necessria para o funcionamento do CODEC.

Tabela 2 - CODECS utilizados em VoIP.

CODEC Algoritmo Frequncia
de
amostragem
(kHz)
Ritmo
binrio
(kbits/s)
Atraso
(ms)
Mean
Opinion
Score
(MOS)
Processamento
(MIPS)
G.711 PCM 8 64 0,125 4,3 0,01
G.722 ADPCM 16 48/56/64 0,125 4,1 5
G.723.1 ACELP 16 5,3/6,3 37,5 3,8 16
G.726 ADPCM 8 16/24/32/40 0,125 4,0 a 32 10
G.728 LD_CELP 8 16 0,625 3,9 30
G.729A ACELP 8 8 15 4,0 20
GSM-FR RPE-LTP 8 13 20 3,5-3,9 5-6
iLBC LPC 8 13,33/15,2 20-30 4,14 20
Speex CELP 8/16/32 2,15-24,6 30 - -

Fonte: SOUSA, 2008.

Aplicaes
As aplicaes definem, dentro do plano de discagem (extensions.conf), as aes que
devem ser aplicadas as chamadas, so responsveis por exemplo pelo estabelecimento da
comunicao, toque de uma gravao, recebimento de dgitos e desligamento de uma
chamada.
As aplicaes so invocadas a partir do plano de discagem. O plano de discagem
realiza o gerenciamento das chamadas determinando a sequncia de passos por onde a



33
chamada ser conduzida. A maioria das caractersticas como VoiceMail, conferncia, call
center so executadas como aplicaes, que podem ser vistas por meio do prompt de comando
com o comando core show aplications.
Alguns exemplos de aplicaes so os seguintes: Meetme() para realizar conferncias,
Playback() que executa um arquivo de udio, Background() que realiza a mesma funo de
Playback() at que uma tecla seja pressionada, VoiceMail() utilizada para correio de voz,
Dial() para conectar dois canais de comunicao, HangUp() para finalizar a ligao e fechar
os canais de comunicao, Authenticate() que espera o recebimento de uma sequncia de
caracteres para ento executar o prximo comando, etc.
Aplicaes e funes, que podem ser visualizadas respectivamente com o comando
core show aplications e core show functions, contidas na plataforma Asterisk permitem
que seja criada, por exemplo, uma Unidade de Resposta Audvel (URA). Outros exemplos de
aplicaes so Goto(), que salta a ordem de execuo do plano de discagem para um local
determinado pelo contexto, extenso e prioridade, e GotoIF() que verifica se uma entrada
vlida e para determinar qual o prximo passo a ser executado podem ser. (KELLER, 2009):

4.1 AGI (ASTERISK GATEWAY INTERFACE)
Em vrias situaes se faz necessrio estender as funcionalidades da plataforma
Asterisk utilizando aplicaes externas. O AGI permite ao desenvolvedor realizar o controle
das chamadas ou parte dele, na linguagem de programao 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>) (AGI, 2013).
Neste trabalho utilizou-se um script em PHP, executado atravs do AGI, para
estabelecer uma conexo, via socket, entre a plataforma Asterisk e o Arduino.
4.2 AstDB (ASTERISK DATABASE)
O AstDB foi utilizado neste trabalho para armazenamento/consulta do login e senha
dos usurios, necessrio durante a etapa de autenticao, para acesso ao menu da URA. Este



34
um banco de dados interno ao Asterisk que armazena os dados em grupos chamados famlias
com valores identificados por chaves, onde cada chave possui um valor nico. E cada valor
alocado est associado a uma famlia. Os dados do AstDB ficam no arquivo
/var/lib/Asterisk/astdb. A Tabela 3 apresenta alguns comandos de console do Asterisk para o
AstDB e a Tabela 4 para o plano de discagem.

Tabela 3 - Comandos de console no Asterisk.

database show Lista o contedo armazenado no AstDB.
database show <famlia> Lista o contedo armazenado na famlia especificada.
database del <famlia>
<chave>
Remove a chave da famlia especificada.
databasedeltree <famlia> Remove a famlia especificada.
database get <famlia>
<chave>
Retorna o valor armazenado na famlia e chave
especificada.

Tabela 4 - Comandos para o plano de discagem.

Set (DB(famlia/chave)=valor) Armazena valor em famlia/chave.
Set (varivel=${DB_DELETE(famlia/chave)}) Armazena o valor da chave em varivel
e apaga a chave especificada.
Set (varivel=${DB(famlia/chave)}) Busca o valor de uma chave e armazena
em varivel.



35
CAPTULO 5
ESTABELECIMENTO DA COMUNICAO
A comunicao entre o Arduino juntamente ao Etehrnet Shield e o Asterisk foi
estabelecida atravs de um socket criado a partir de um script na linguagem PHPAGI, uma
classe da programao PHP (Hypertext Preprocessor). A seguir ser descrito os detalhes do
estabelecimento da conexo.
5.1 ESTABELECIMENTO DE UMA CONEXO VIA SOCKET
Na viso dos sistemas operacionais, os programas que rodam em vrios sistemas finais
se comunicam entre si por meio de processos. Esses processos podem ser vistos como
programas que esto em execuo nos sistemas finais.
Quando os processos esto rodando em sistemas finais diferentes a comunicao
realizada por da troca de mensagens por meio da rede. Alm de saber o endereo IP do
sistema final, necessrio identificar a qual processo em execuo os dados devem ser
entregues (j que o dispositivo pode estar com vrias aplicaes rodando), o que feito
atravs do nmero de porta. No contexto de uma comunicao entre processos, o que inicia a
comunicao chamado de cliente e o que espera ser contatado para iniciar a sesso
chamado de servidor. O servidor espera pedidos de seus clientes, os processa e retorna os
resultados ao cliente (KUROSE, 2010).
Um processo envia e recebe mensagens da rede atravs de uma interface de software
denominada socket. Tambm denominado interface de programao da aplicao (Application
Programming Interface API), visto que a interface de programao pelas quais as
aplicaes de rede so inseridas na Internet. uma interface ou porta entre o processo de
aplicao e a camada de transporte dentro de uma mquina, que especifica os detalhes de
como o programa aplicativo interage com o protocolo. Uma vez que o socket for estabelecido,
os aplicativos podem transferir informaes (KUROSE, 2010) (COMER, 2007).
Normalmente a Internet disponibiliza dois protocolos de transporte para aplicaes, o
UDP (User Datagram Protocol) e o TCP (Transmission Control Protocol).
O UDP um servio no orientado a conexo, prov um servio no confivel de
transferncia de dados, no oferecendo a garantia de que a mensagem chegar ao receptor sem
erros e em ordem. E ao contrrio do TCP, no inclui um controle de congestionamento. Para



36
aplicaes em tempo real que normalmente podem tolerar a perda de dados e exigem a sua
entrega em um tempo de resposta determinado prefervel utilizar UDP.
O modelo de servio TCP orientado conexo, cliente e servidor precisam trocar
informaes de controle da camada de transporte antes que os dados comecem a ser entregue,
aps esta fase de apresentao uma conexo TCP estabelecida. E oferece uma transferncia
confivel dos dados, isto , todos dados enviados sero recebidos sem erros e na ordem
correta, embora o protocolo da camada de rede possa ser no confivel. Do ponto de vista da
aplicao, a conexo TCP um caminho virtual direto, conforme a Figura 10, que permanece
ativo at que um dos processos o feche, entre o socket do cliente e o socket do servidor. E o
recebimento e envio de dados ocorre pelo mesmo socket (KUROSE, 2010).

Figura 10 - Modelo da transferncia confivel de dados no TCP.

Fonte: KUROSE, 2010.

Um programa aplicativo solicita a criao de um socket e o sistema retorna um inteiro
que o programa usar ento para se referir ao socket. Desde que o processor servidor esteja
em execuo, o processo cliente pode iniciar uma conexo com o servidor atravs da criao
de um socket. Na criao do socket, o cliente especifica o endereo IP do hospedeiro servidor
e o nmero de porta do processo servidor. A Figura 11 ilustra o posicionamento do socket



37
entre o processo (controlado pelo desenvolvedor da aplicao) e protocolo de transporte, que
controlado pelo sistema operacional (KUROSE, 2010).

Figura 11 - Processos de aplicao, sockets e protocolo de transporte.


Fonte: KUROSE, 2010.
5.2 ESTABELECIMENTO DE CONEXO ENTRE O ASTERISK E O ARDUINO
A Figura 12 ilustra a sequncia de execuo do script em PHP.

Figura 12 - Processo de comunicao no sistema.

Fonte: Prpria.



38
Para realizar a comunicao entre o Arduino e o Asterisk, estabeleceu-se uma conexo
UDP, atravs de um script, utilizando uma classe da programao PHP (Hypertext
Preprocessor), o PHPAGI (PHPAGI, 2013). Este foi especificamente criado para o
desenvolvimento de aplicaes com o AGI (Asterisk Gateway Interface) eest disponvel para
uso e distribuio sob os termos da GNU (General Public License). O Asterisk espera
encontrar o script no diretrio /var/lib/Asterisk/agi-bin/ para que o AGI possa execut-lo. E os
parmetros recebidos pelo Asterisk durante a execuo do menu da URA, so passados para o
script PHP atravs do AGI. A sintaxe utilizada no plano de discagem a seguinte:
exten => nome, prioridade, AGI (<nome do arquivo>, valor1, valor2, valor3)
Em que valor1, valor2 e valor3 so os parmetros que sero armazenados
respectivamente em $argv[1], $argv[2] e argv[3].
A varivel $argv [ ] um array prprio da linguagem PHP que armazena todos os
parmetros passados para o script PHP, neste caso enviado atravs do plano de discagem do
Asterisk, do arquivo extensions.conf. Os parmetros so as informaes que o usurio
escolheu durante o menu da URA.
Para a abertura do socket utilizou-se a funo fsockopen (), que apresenta a sintaxe:
fsockopen ($Arduino_ip, $Arduino_port, $errno, $errstr), onde $Arduino_ip, $Arduino_port,
$errno e $errstr so variveis que contm respectivamente, o endereo IP do Arduino, o
nmero da porta, uma mensagem de erro e o valor 0 caso haja algum problema na
inicializao do socket (PHP, 2013).
A funo chr () retorna o valor da varivel que ser enviada pelo socket em ascii. Em
chr ($status.$pin), o operador . utilizado para concatenar as variveis $status e $pin.
A funo fwrite ($fp, $ascii1) envia a varivel $ascii1, que deve estar em ascii, atravs
do socket $fp que deve ter sido especificado atravs da funo fsockopen (). Aps isto, fclose
($fp) utilizado para fechar o socket $fp (PHP, 2013).







39
CAPTULO 6
ARQUITETURA DO SISTEMA
O sistema formado por um servidor Asterisk com uma URA configurada, os
dispositivos a serem acionados, telefone IP, softfone ou telefone analgico com um ATA e
uma placa Arduino com Ethernet shield para cada localidade a ser controlada.
Inicialmente a chamada realizada pelo usurio que passa por uma etapa de
autenticao pra ento ter acesso a URA. De acordo com as opes escolhidas, o Asterisk ir
receber e processar os dados DTMF (Dual-Tone Multi-Frequency) de acordo com as regras
configuradas no plano de discagem. A seguir o script em PHP ser executado atravs do AGI,
estabelecendo comunicao com o Arduino, que por sua vez ir acionar ou desligar
dispositivos externos atravs de um circuito de chaveamento. O sistema criado pode suportar
diversos usurios, onde a cada um deles estaria associado um endereo IP (juntamente com
um Arduino e um Ethernet shield). A Figura 13 ilustra a arquitetura geral do projeto.

Figura 13 - Arquitetura geral do sistema.

Fonte: Prpria.



40
A Figura 14 ilustra a arquitetura detalhada do sistema mostrando alguns pontos
especficos.

Figura 14 - Arquitetura detalhada do sistema.

Fonte: Prpria.

Na configurao do softfone foram utilizados os protocolos SIP/RTP para o
estabelecimento da chamada, alternativamente o protocolo IAX poderia ter sido usado.
O arquivo de configurao do plano de discagem o extensions.conf, onde esto as
aplicaes e funes necessrias para o desenvolvimento do projeto. Nele est configurada
uma URA, que est relacionada a cada um dos usurios, j que estes podem possuir diferentes
dispositivos a controlar. Ao escolher as opes durante o menu da URA, o AGI executa o
programa em linguagem PHP, passando as opes em forma de argumentos.
O plano de discagem possui uma etapa de autenticao, no qual o usurio deve digitar
seu login e sua senha para que possa ter acesso ao sistema. Caso erre o login ou a senha, o
usurio retorna a um estgio anterior para repetir o processo de identificao. Estes dados
foram previamente armazenados no banco de dados do Asterisk, o astDB, onde cada usurio
possui sua entrada correspondente.
No script PHP (que pode ser visualizado no Apndice A), os argumentos $argv[1],
$argv[2] e $argv[3] recebem variveis inteiras que correspondem respectivamente a acionar
ou desligar um dispositivo, ao pino do Arduino que est associado ao dispositivo e a um valor
que deve ser interpretado. A Figura 15 mostra o trecho do programa em PHP no qual os
argumentos $argv[1], $argv[2] e $argv[3] (vindos do plano de discagem do Asterisk) so
atribudos a trs variveis ($status, $pin, $time) que sero utilizadas no decorrer do processo.
O argumento $argv[3] utilizado apenas quando se deseja acionar um dispositivo por um
tempo determinado pelo usurio em minutos, este tempo estabelecido durante a execuo da



41
URA. Aps a abertura do socket e o envio dos dados pelo programa em PHP, a URA
configurada no Asterisk, continua sendo executada para que o usurio possa realizar outra
tarefa.

Figura 15 - Trecho do programa em PHP.

Fonte: Prpria.

O bloco designado como interface eltrica composto por um circuito de
chaveamento capaz de elevar a corrente recebida do Arduino (40mA), e possibilitar o
acionamento de dispositivos em 220V.
Na programao do Arduino, para que alguns dispositivos pudessem permanecer
acionados por um intervalo de tempo, utilizou-se um temporizador interno atravs da funo
millis (), que retorna o tempo em milissegundos desde que o programa corrente est em
execuo. Este nmero estoura aproximadamente aps 50 dias (ARDUINO, 2013).
vlido salientar que utilizar um temporizador interno apresenta os seguintes
inconvenientes: preciso na contagem, acumulando erros em perodos 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 usurio acessar outro menu na
URA, o programa tambm ser reiniciado, interrompendo a temporizao. A soluo seria
utilizar um RTC (Real Time Clock), que um mdulo capaz de gerar uma contagem de tempo
precisa a partir da oscilao de um cristal (no valor padro de 32,768 kHz), armazenando a
data (com ano, ms e dia) e a hora, minuto e segundo. Mantendo a contagem de tempo mesmo
que a energia principal seja desligada, atravs de uma bateria de backup. Para a comunicao
destes mdulos com microcontroladores geralmente se utiliza o protocolo I
2
C.



42
CAPTULO 7
VALIDAO DO SISTEMA
Para fins de validao do sistema montou-se em laboratrio dois experimentos. O
primeiro apresentado na Figura 10. Neste cenrio, o usurio realiza uma chamada atravs
do softfone, que est com uma conta SIP configurada no servidor Asterisk. Este desempenha o
papel de uma URA, e envia os comandos atravs da rede para o dispositivo a ser controlado.
A Figura 16 mostra a utilizao do Asterisk (janela roxa no centro do monitor), o
softfone (janela azul no lado direito) e o arquivo de configurao extensions.conf (arquivo
texto atrs da janela de execuo do Asterisk e do softfone ). Est sendo efetuada uma
chamada atravs do softfone, que est com uma conta SIP configurada.

Figura 16 - Plano de discagem, Asterisk e Softfone.

Fonte: SANTOS, 2013.

A plataforma utilizada durante o experimento pode ser visualizada na Figura 17. A
interface eltrica entre o Arduino e os dispositivos composta basicamente por rels e
transistores atuando como chave. O Arduino fornece uma corrente mxima de 40mA, e quatro
de seus pinos esto configurados como sada e ligados a transistores que por sua vez iro fazer
com que os rels comutem, sempre que o pino correspondente estiver em nvel lgico alto,
ativando os dispositivos. A sada de tenso de 5V
DC
do Arduino, que estava sendo alimentado
via USB, foi utilizada para alimentar o circuito de chaveamento, o motor e o cooler.




43
Figura 17 - Plataforma de experimento.

Fonte: SANTOS, 2013.

Estabeleceu-se comunicao entre o Asterisk e o Ethernet shield atravs do socket
criado pelo programa em PHP, e o Arduino foi responsvel por gerenciar os sinais de sada. A
Figura 18 ilustra o cenrio final do trabalho.

Figura 18 - Cenrio final funcionando.

Fonte: SANTOS, 2013.

Adicionalmente foi implementado um sistema de irrigao temporizado. A ideia que
o usurio determine o intervalo de tempo em minutos em que o sistema deve permanecer
ligado atravs da URA. Para realizar a irrigao utilizou-se uma vlvula solenoide
normalmente fechada. O seu principio de funcionamento consiste em uma bobina (formada
por um condutor enrolado atravs de um cilindro) que quando energizada gera uma fora



44
fazendo com que o mbolo da vlvula seja deslocado, permitindo a passagem do fluido, neste
caso a gua. O tipo de vlvula utilizada, ilustrada pela Figura 19, a que est presente em
mquinas de lavar roupa. E a Figura 20 mostra o prottipo desenvolvido.

Figura 19 Vlvula solenoide utilizada no sistema.

Fonte: Prpria.

Figura 20 Prottipo desenvolvido para um sistema de irrigao residencial.

Fonte: Prpria.




45
A Figura 21 contem um trecho do arquivo extensions.conf onde o usurio ir ser
inicialmente questionado se deseja acionar um dispositivo, neste caso a vlvula, atravs de
Playback(ligardesligar). O valor digitado pelo usurio ser lido e armazenado na varivel
${valor4}, em Read(valor4,beep,1). Caso a resposta seja positiva, o que ser avaliado atravs
da aplicao GotoIf(), o sistema ir solicitar do usurio o intervalo de tempo em minutos, que
ser lido e armazenado na varivel $tmp por meio de Read(tmp,beep,1). E posteriormente, as
variveis ${valor4} e ${tmp}, juntamente ao valor 6 que corresponde a identificao do
pino do Arduino que ser utilizado, sero enviadas para o script PHP em
AGI(arduino_control.php,${valor4},6,${tmp}).

Figura 21 - Trecho do arquivo extensions.conf responsvel pelo acionamento da vlvula.

Fonte: Prpria.

Assim como acontece para o sistema de irrigao, o plano de discagem pode ser
adequado para receber o intervalo de tempo (em minutos) durante o qual o usurio deseje
acionar os demais dispositivos.





46
CONSIDERAES FINAIS
Neste trabalho foi proposta uma soluo para sistemas de automao. Inicialmente foi
realizada uma contextualizao com relao aos mesmos, posteriormente um estudo das
ferramentas a serem utilizadas, o software Asterisk e a plataforma microcontrolada Arduino, e
de como a comunicao entre eles seria feita. Ao fim apresentou-se o sistema implementado
em laboratrio.
A soluo simples, de baixo custo e baseada em plataformas bem estabelecidas e
abertas a modificaes como o Asterisk e a placa Arduino com Ethernet Shield. Desta forma,
reduziu-se o tempo de desenvolvimento e facilitaram-se futuras alteraes no sistema. Alm
disso, considera-se a soluo abrangente, pois pode ser utilizada em vrios campos diferentes
da automao tais como residencial, agrcola, industrial, engenharia biomdica.
Em trabalhos futuros o sistema pode ser modificado. Outra plataforma
microcontrolada que permita comunicao pela Internet pode ser utilizada. O sistema pode
utilizar o reconhecimento de voz, em vez do recebimento de dgitos.
Com relao segurana do sistema, foi implementada uma autenticao do usurio
na URA atravs do login e senha. Mas, outras questes relacionadas segurana do trafego
das informaes dos usurios pela rede devem ser consideradas. Devem-se procurar solues
que permitam garantir a confidencialidade e integridade dos dados transmitidos. Neste sentido
prope-se construir uma aplicao no Asterisk e fazer uma modificao no software do
Ethernet Shield para que se possa estabelecer um tnel criptografado entre a URA e os PLCs
controlados.
Prope-se tambm estender os cenrios de validao para problemas relacionados
assistncia a pessoas com necessidades especiais. A ttulo de exemplo, um tetraplgico
poderia utilizar o sistema para realizar tarefas como ligar luzes, levantar a cama e ligar a
televiso sem o auxlio de outras pessoas bastando para isso apenas adicionar o
reconhecimento de voz soluo.
Quanto ao acionamento de dispositivos por um tempo predeterminado (com aplicao
em um sistema de irrigao, por exemplo), um hardware adicional deve ser utilizado, um
mdulo RTC. Pois com a funo millis () ou outra funo/procedimento que funcione como
temporizador e seja interno ao Arduino, o horrio em que o dispositivo deve ser desligado
ser perdido a cada reinicializao do programa, o que ocorre a cada vez que o usurio acessa
um menu diferente na URA, ou a cada vez que o Arduino for realimentado.



47
Conseguiu-se simular um sistema de automao com um servidor centralizado (o
Asterisk) que pode gerenciar um nmero elevado de localidades e usurios concorrentemente,
utilizando um Arduino como controlador, e que atua de acordo com as opes escolhidas por
cada usurio. vlida tambm a ideia de realizar o controle de dispositivos atravs da URA
em uma empresa/organizao que j utilize o Asterisk como central telefnica.





48
REFERNCIAS
ARDUINO. Arduino Uno. Disponvel em: <http://Arduino.cc/en/Main/ArduinoBoardUno>
Acesso em: 23 Jan 2013.
ARDUINO BRASIL. Nova verso do Arduino: Uno. Disponvel em: <
http://www.arduinobrasil.com/2011/01/uno/> Acesso em: 23 Mar 2013.
AGI. AGI Scripting with PHP. Disponvel em: < http://www.itp-redial.com/class/weekly-
notes/week4-notes/agi-scripting-with-php> Acesso em: 10 Fev 2013.
CASTRUCCI, P., L.; MORAES, C., C. Engenharia de Automao Industrial. 2 ed. Rio de
Janeiro: LTC, 2012.
COMER, D., E. Redes de Computadores e Internet. 4 ed. Bookman Companhia Editora
Ltda, So Paulo, 2007.
DIAS, C., L., A. PIZZOLATO, N., D. Domtica: Aplicabilidade e Sistemas de Automao
Residencial. CEFET. Campos dos Goytacazes - RJ, 2004.
ETHERNET SHIELD. Arduino Ethernet shield. Disponvel em:
<http://Arduino.cc/en/Main/ArduinoEthernetShield> Acesso em: 23 Jan 2013.
GONALVES, 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.
GPL. FAQ sobre a GNU GPL. Disponvel em: <http://www.gnu.org/licenses/gpl-faq.html>
Acesso em: 20 Jul 2013.
PARRACHO, J., P., L., F. Gateway LinuxMCE - OpenWrt para Aplicaes Domticas.
Dissertao de Mestrado. Universidade de Avreio, 2010. Disponvel em: <
http://ria.ua.pt/bitstream/10773/4456/1/JoaoParrachoMSc.pdf> Acesso em: 09 Jul 2013.
KELLER, A. Asterisk na prtica. 1 ed. So Paulo: Novatec, 2009.
SMART HOME. Disponvel em: < http://www.loxone.com/Pages/br/produtos/produtos-e-
solucoes/visaogeral.aspx> Acesso em: 23 Mar 2013.



49
MADSEN, L., MEGGELEN, J., V., & SMITH. Asterisk: The Definitive Guide. 3 ed. USA:
OReilly Media, 2011.
MURATORI, J., R.; B, P., H., D. Automao residencial principais subsistemas. 6 ed.
Revista O Setor Eltrico. 44 p. 2011.
OEM. Licenciamento OEM. Disponvel em:
<http://www.microsoft.com/brasil/oem/licenciamento.html> Acesso em: 20 Jul 2013.
PHP. PHP Manual. Disponvel em:
<http://www.php.net/manual/pt_BR/language.functions.php> Acesso em: 22 Jan 2013.
PHPAGI. PHPAGI: Where PHP connects to Asterisk. Disponvel em:
<http://phpagi.sourceforge.net/> Acesso em: 20 Jan 2013.
SANTOS, E., P. Uso do Asterisk para o controle remoto de Sistemas de Automao
Residencial. Trabalho de concluso de curso. Instituto Federal de Educao, Cincia e
Tecnologia da Paraba - Campus Joo Pessoa. Joo Pessoa - JP, 2013.
SOUSA, L., A., P. Avaliao de desempenho do PBX Asterisk. Dissertao de mestrado.
Universidade Tcnica de Lisboa, 2008. Disponvel em:
<https://dspace.ist.utl.pt/bitstream/2295/230369/1/dissertacao_Asterisk_52871.pdf> Acesso
em: 14 Jul 2013.
VOIP-INFO.ORG. VoIP-info.org: Asterisk Business Edition. Disponvel em:
<http://www.voip-info.org/wiki/view/Asterisk+Business+Edition> Acesso em 20 Jul 2013.
WEG, Automao de Processos Industriais - PC12 Design Center. Apostila para
treinamento interno. Jaragu do Sul: Weg S.A., 2002.





50
APNDICE A CDIGO DO SCRI PT PHP
#!/usr/bin/php -q
<?php
require("/var/lib/Asterisk/agi-bin/phpagi-2.20/phpagi.php");
$agi = new AGI();

// Configuraes
$Arduino_ip = "tcp://10.0.55.40";
$Arduino_port = 80;
$status=$argv[1];
$pin=$argv[2];
$time=$argv[3];

// Criao do socket
$fp = fsockopen($Arduino_ip, $Arduino_port, $errno, $errstr);
$continue = true;

// Envio de dados atravs do socket
while($continue){
$ascii1 = chr($status.$pin);
$ascii2 = chr($time);
fwrite($fp, $ascii1);
fwrite($fp, $ascii2);
fclose($fp);
break;
}
?>

S-ar putea să vă placă și