Controle de LED RGB com Arduino e Asterisk

Controle de LED RGB com Arduino e Asterisk

PABX antigo
PABX antigo

Para quem não conhece, Asterisk é um PBX por software, utilizado em muitas empresas de até grande porte, simplesmente distribuindo ramais dentro da rede ou fazendo interface com callcenters. Nesse artigo demonstro como o Arduino poderia ser controlado remotamente através de um telefone fixo ou celular, discando para o Asterisk em sua residência. No exemplo simplesmente farei o controle de LED RGB com Arduino e Asterisk, porém seria possível acender e apagar lâmpadas, abrir ou fechar portas, ajustar o ar condicionado da adega, etc.




Não vou dar aula de Asterisk, pois estou aprendendo agora, mas os procedimentos básicos foram os descritos a seguir.

Inicialmente, compilei a versão 1.8.5.0 do Asterisk com o DAHDI Linux 2.4.1.2. O Asterisk pode ser baixado do site oficial ou instalado via apt.

Criei um ramal SIP em /etc/asterisk/sip.conf com o seguinte conteúdo:

 


E no plano de discagem (em /etc/asterisk/extensions.conf) fiz o seguinte:



Claro que não criei esse contexto apenas para redirecionar para outro, mas os demais planos de discagem que criei não tem relação com esse artigo, portanto omiti.

Discando para 8888, a ligação será redirecionada para o contexto chamado arduino, onde criei uma URA (Unidade de Resposta Audivel):

 

Como se pode notar, existem 4 opções na URA (assista ao video para entender). Quando se escolhe uma opção, a extensão executa os passos 1 e 2, que é executar o script python para comunicação na rede e posteriormente voltar ao menu no passo 4, onde se pode escolher outra opção.

Finalizada a configuração do asterisk. Agora é necessário copiar o script udp.py para /var/lib/asterisk/agi-bin, que é o diretório padrão do Asterisk onde ele lê os scripts chamados com o comando AGI.

Seu conteúdo:



O que fiz foi basicamente abrir uma conexão UDP para se comunicar com o Arduino (que também está configurado para comunicação UDP) e enviar o comando para ele (vindo do argumento). Como UDP não garante a entrega do pacote, optei por fazer um loop para enviar 3 vezes o comando ao Arduino.

Em relação ao python, é uma linguagem absurdamente simples e creio que seja a mais fácil de se aprender, porém devido a necessidade de programar o Arduino, os tutoriais se basearam em C, mas recomendo o aprendizado de python.

O softphone que utilizei para discar para o Asterisk foi o SFLPhone. Em distribuições baseadas em Debian, apt-get install sflphone deve instalá-lo. Em distribuições baseadas em Red Hat, utilize o gerenciador de pacotes de sua distribuição.
Configure uma conta SIP, utilizando o ramal criado em sip.conf. No host name, utilize 127.0.0.1.

Discando 8888 a ligação deve ser redirecionada para a URA imediatamente. Depois disso, é só diversão.
O código utilizado no Arduino é o mesmo do artigo anterior.

E por fim, o video (horrível pra variar, mas é do meu canal antigo):

Inscreva-se no nosso newsletter, alí em cima à direita e receba novos posts por email.

Siga-nos no Do bit Ao Byte no Facebook.

Prefere twitter? @DobitAoByte.

Inscreva-se no nosso canal Do bit Ao Byte Brasil no YouTube.

Nossos grupos:

Arduino BR – https://www.facebook.com/groups/microcontroladorarduinobr/
Raspberry Pi BR – https://www.facebook.com/groups/raspberrybr/
Orange Pi BR – https://www.facebook.com/groups/OrangePiBR/
Odroid BR – https://www.facebook.com/groups/odroidBR/
Sistemas Embarcados BR – https://www.facebook.com/groups/SistemasEmbarcadosBR/
MIPS BR – https://www.facebook.com/groups/MIPSBR/
Do Bit ao Byte – https://www.facebook.com/groups/dobitaobyte/

Próximo post a caminho!

Agregador de Links - Loucuras da Net

Comments

comments

Djames Suhanko

Djames Suhanko é Perito Forense Digital. Já atuou com deployer em sistemas de missão critica em diversos países pelo mundão. Programador Shell, Python, C, C++ e Qt, tendo contato com embarcados ( ora profissionalmente, ora por lazer ) desde 2009.

Deixe uma resposta