Manual

do

Maker

.

com

Controle de LED RGB com Arduino e Asterisk

Controle de LED RGB com Arduino e Asterisk

Controle de LED RGB com Arduino e Asterisk

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:

[1000]
callerid=Djames Suhanko
secret=1234
host=dynamic
type=friend
context=casa

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

exten => 8888,1,Goto(arduino,s,1)

 

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):

[arduino]
exten => s,1,Answer()
exten => s,2,NoOp(Ligação entrou na URA)
exten => s,3,Background(ar)
exten => s,4,NoOp(Digite a opção...)
exten => s,5,WaitExten(10)

exten => 1,1,AGI(udp.py,553255)
exten => 1,2,GoTo(arduino,s,4)

exten => 2,1,AGI(udp.py,9997755557)
exten => 2,2,GoTo(arduino,s,4)

exten => 3,1,AGI(udp.py,255)
exten => 3,2,GoTo(arduino,s,4)

exten => 3,1,AGI(udp.py,00000000000000000000)
exten => 3,2,Hangup()

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:

#!/usr/bin/env python
import socket
import sys

UDP_IP="10.0.0.1"
UDP_PORT=8888
MESSAGE = sys.argv[1]

try:
  if not sys.argv[1]:
    print "Passe o r,g,b como parametro"
    print ""
  except:
    print "Passe o R,G,B como parametro no formato decimal separado por virgula"
    print ""

#print "UDP target IP:", UDP_IP
#print "UDP target port:", UDP_PORT
#print "message:", MESSAGE

sock = socket.socket( socket.AF_INET, # Internet
socket.SOCK_DGRAM ) # UDP
for i in range(3):
sock.sendto( MESSAGE, (UDP_IP, UDP_PORT) )

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.

Post sugerido: SIM800L

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

Video horrível

Inscreva-se no nosso canal Manual do Maker Brasil no YouTube.

Próximo post a caminho!

Nome do Autor

Djames Suhanko

Autor do blog "Do bit Ao Byte / Manual do Maker".

Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.