Seção: Tutoriais Infraestrutura
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Nessa parte, serão descritos os detalhes técnicos utilizados no desenvolvimento desse projeto. Como base inicial de acesso foi utilizado um aparelho celular simples, podendo ser um aparelho usado, com a função de autoatendimento. A partir desse ponto foi considerado o acesso ao circuito através da interface Headset (headphone combinado com um microfone) do aparelho. O circuito foi desenhado para reconhecer tons DTMF [3] (Dual-Tone Multi-Frequency) no sinal de áudio transmitido através da chamada atendida automaticamente pelo aparelho celular. Assim, de qualquer ligação feita para o celular acoplado ao circuito, foi possível transmitir comandos para o circuito.
Sistema DTMF
Segundo a Wikipédia 2013, a sinalização DTMF foi desenvolvida nos laboratórios Bell (Bell Labs) visando permitir a discagem DDD, que usa enlaces sem fio como os de micro-ondas e por satélite.
DTMF é a sigla em inglês de "Dual-Tone Multi-Frequency", os tons de duas frequências utilizados na discagem dos telefones mais modernos (Wikipédia, 2013).
A combinação das frequências que formam os tons DTMF, mostradas no quadro 1, onde o cruzamento de uma frequência alta, descrita na primeira linha e uma frequência baixa descrita na primeira coluna da esquerda. O cruzamento da linha com a coluna, ou seja o cruzamento das duas frequências, formam o respectivo tom DTMF.
Quadro 1: Tabela DTMF Fonte: Wikipédia,2013
Para a detecção do tom DTMF, foi utilizado o CI (Circuito Integrado) MT8870DE [4] mostrado na figura 2. Esse CI tem a característica de detectar e decodificar todos os 16 pares dos tons DTMF e colocar em seus terminais de saída (Q4, Q3, Q2, Q1), um código de 4 bits (mostrado no quadro 2),
Segundo seu datasheet:
The MT8870D/MT8870D-1 monolithic DTMF receiver offers small size, low power consumption and high performance. Its architecture consists of a bandsplit filter section, which separates the high and low group tones, followed by a digital counting section which verifies the frequency and duration of the received tones before passing the corresponding code to the output bus. (p.4).
Figura 2: Pinagem MT8870DE Fonte: Datasheet MT8870DE
Quadro 2: Tabela da saída binária dos terminais Fonte: datasheet MT8870DE
Microcontrolador
O microcontrolador utilizado foi o ATmega168 [5] (figura 3 e figura 4) fabricado pela Atmel Corporation. Apesar de ser um microcontrolador menos presente no mercado do que controladores baseados no PIC, o ATmega168 apresenta uma vantagem de ser o mesmo utilizado pelo projeto Arduino [6], uma ferramenta de programação, compilação e gravação de fácil utilização e vasta documentação e exemplos. Assim, foi possível a utilização de todas as ferramentas de desenvolvimento presente no Arduino, na fase inicial do desenvolvimento do software embarcado do projeto. As principais características do microcontrolador ATmega168 são:
Figura 3: ATmega168 Fonte: HWTech, 2008
Figura 4: Pinagem do ATmega168 Fonte: Datasheet ATmega168
Figura 5: Definição de pinagem segundo o arduino Fonte: http://arduino.cc
Software de Controle
Como dito antes, foi utilizado o Arduino no desenvolvimento do software devido a facilidade da interface de programação (Figura 6). Por sua vez, foi necessário gravar o bootloader do Arduino no microcontrolador. A linguagem utilizada no desenvolvimento do software embarcado foi a linguagem C, no qual encontra-se na integra no APÊNDICE A, que posteriormente foi compilado, pela IDE do Arduino, em instruções assembly em seguida gravada diretamente no microcontrolador.
Basicamente, o software funciona em um loop infinito, ou seja, ao final da instrução ele retorna ao começo consultando as entradas de informações, quando encontra uma entrada esperada, a instrução é direcionada para o devido tratamento em outras funções. O software verifica dois tipos de entradas, uma é a entrada no pino 25 que no código é definido pelo nome "A2” (ver figura 4), esta entrada está ligada em um botão do tipo push-button que ao ser pressionado, coloca um sinal alto (5 volts).
Neste momento, no software, a intrusão ao reconhecer este sinal, aguarda 10 segundos e checa novamente, caso ainda assim o sinal continue alto, ou seja, o botão ainda está pressionado, inicia-se o processo de reset para a senha padrão, que neste caso foi definida como sendo a senha "1234”, diretamente na memória EEPROM em seguida retorna um sinal de áudio que será explicado a seguir.
A outra checagem é a entrada no pino 15, que no código é chamado de porta "9”, está entrada está ligada ao CI MT8870DE e recebe um sinal alto quando um código de 4 bits está disponível para leitura. Neste momento o software faz a leitura dos 4 bits nas portas Q1, Q2, Q3 e Q4 em seguida converte os bits em decimal utilizando a formula do quadro 2.3 e chama a função "criar_frase()” passando como parâmetro o número obtido que se refere ao dígito DTMF. Esta função primeiro retorna um sinal em formato de áudio com um tom breve indicando assim que o dígito foi recebido.
Com isso, podemos saber se o dígito foi reconhecido ou até mesmo se foi recebido duplicado, muito comum em casos de eco na telefonia. Depois, a função verifica qual dígito foi teclado a adiciona em uma variável externa para ser formado o comando. O dígito 12, que é a tecla "#”, indica que é o final daquele comando, chamando assim a função "dispara_comando()”. Esta função tem por finalidade analisar o conteúdo da variável externa, que chamamos de "frase”, onde foi salva uma certa quantidade de dígitos e executa processos diferentes para cada condição desta frase, como descrito no quadro 4.
Quadro 3: Conversão binário para decimal
Figura 6: Tela do Software de desenvolvimento Arduino
Quadro 4: lista de comandos
Os comandos de trocar senha, desligar tomada, ligar tomada e reinicializar, após serem executados retornam, em forma de áudio, um tom longo e agudo para informar o sucesso do comando. O comando que verifica o estado atual da tomada retorna um tom longo e agudo para informar que a tomada está no estado atual ligada ou um tom longo e grave para informar que a tomada está no estado atual desligada. Após a execução de cada comando, o conteúdo da frase é excluído, para guardar a próxima entrada.
|