Habilite Chamadas Telefônicas no Arduino UNO com Twilio e Yaler – Projeto Chame Meu Arduino
Componentes e Materiais
| Arduino UNO | × | 1 |
| Arduino Ethernet Shield | × | 1 |
| Sensor de Temperatura Analógico | × | 1 |
Sobre o Projeto

(De https://www.instructables.com/id/Call-my-Arduino/)
Como habilitar chamadas telefônicas para seu Arduino, usando Twilio e Yaler.net
O Twilio é um serviço Web que transforma tudo em um telefone. É uma API REST para telefonia, hospedada na nuvem. Neste caso, o Twilio solicita ao Arduino um novo arquivo voice.xml sempre que alguém liga para o número de telefone predefinido do Arduino. O conteúdo da resposta é lido para o chamador por Alice, uma voz do mecanismo de texto-para-fala do Twilio.
O Yaler.net permite acesso Web a dispositivos embarcados atrás de firewall, NAT ou roteador de rede móvel. Aqui, permite que o Twilio acesse o arquivo voice.xml no Arduino, que está em uma rede local e portanto não tem seu próprio endereço IP público (divulgação: sou fundador do Yaler).
Esta demo usa um sensor de temperatura, mas qualquer outro sensor funcionaria. Um exemplo de produto real seria o detector de fumaça Canary (agora Birdi) que permite donos preocupados ligarem para verificar se a bateria ainda está boa.
Em um nível mais abstrato, este Instructable tenta mostrar como, em uma Internet das Coisas aberta, serviços de nuvem modulares podem ser livremente combinados para construir soluções novas, simples e confiáveis. HTTP e Webhooks FTW! Mas vamos começar...
(Aqui está um vídeo explicando este projeto do IoTLive, parte do IoTDay 2014)
https://www.youtube.com/watch?v=4IPwkW38oIw
Material
- Arduino Uno (ex: https://www.adafruit.com/products/50)
- Cabo USB Padrão A-B (ex: https://www.adafruit.com/products/62)
- Arduino Ethernet Shield (ex: https://www.adafruit.com/products/201)
- Cabo Ethernet (ex: https://www.adafruit.com/products/995)
- Sensor de temperatura analógico (ex: https://www.adafruit.com/products/165)
- Pacote de fios para protoboard (ex: https://www.adafruit.com/products/153)
- Protoboard (ex: https://www.adafruit.com/products/64)
Passo 1: Ligando o Sensor

Adicione o Ethernet Shield ao Arduino e conecte o sensor de temperatura como mostrado. Para detalhes sobre sensoriamento de temperatura com o sensor TMP36, veja ex: https://learn.adafruit.com/tmp36-temperature-sensor/using-a-temp-sensor
Caso queira adicionar outros sensores (digitais), lembre-se que alguns pinos são usados pelo Ethernet Shield.
Passo 2: Instalando a Biblioteca Yaler

Siga os três passos para Instalando a biblioteca em https://yaler.net/arduino. Se ainda não fez, cadastre-se em https://yaler.net/ para uma conta de teste gratuita e anote o domínio de relay (a chave secreta não é necessária).
Passo 3: Programando o Arduino

Baixe o código fonte Arduino TwilioYalerWebService
https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default
Abra o código do Arduino
O programa implementa um servidor Web muito simples que escuta requisições HTTP de entrada. Quando uma requisição chega, o programa responde com um documento XML. O servidor não se importa se o caminho da URL é / ou /voice.xml.
Altere o endereço MAC
Certifique-se de que o endereço MAC no código do Arduino seja único. Isso é especialmente importante se houver vários Arduinos na mesma rede local. Uma forma simples de obter um endereço (esperançosamente) único é procurar o MAC do seu computador e adicionar 1 ao último dígito.
Insira seu domínio de relay
Em vez de criar um servidor local com EthernetServer server(80); criamos um acessível via relay Yaler try.yaler.net, na seguinte linha:
YalerEthernetServer server("try.yaler.net", 80, "RELAY_DOMAIN");
Substitua RELAY_DOMAIN pelo seu domínio de relay, ex: para gsiot-ffmq-ttd5 digite:
YalerEthernetServer server("try.yaler.net", 80, "gsiot-ffmq-ttd5");
Note que você também pode usar o servidor local, se souber configurar port forwarding para abrir uma porta para requisições HTTP de entrada no seu firewall local. O importante é que o Twilio possa acessar o Arduino da nuvem.
Salve alterações e faça upload
Salve todas as alterações e faça upload do programa para seu Arduino. Mantenha o cabo USB conectado ao seu computador de desenvolvimento por enquanto, e abra o console serial para ver saída de debug.
Passo 4: Acessando o Arduino

Acesse seu Arduino de qualquer navegador
A biblioteca Yaler torna seu Arduino (e com ele o documento XML) acessível da Internet pública em https://RELAY_DOMAIN.try.yaler.net/, ex: para o domínio de relay gsiot-ffmq-ttd5 a URL é https://gsiot-ffmq-ttd5.try.yaler.net/ Ou, para ficar mais bonito para o Twilio: https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml
Verifique o documento XML
O conteúdo do documento XML diz ao Twilio o que responder a uma chamada telefônica de entrada. Você pode até escolher a voz de texto-para-fala. Aqui é Alice. O formato XML do Twilio é chamado TwiML. Veja https://www.twilio.com/docs/api/twiml para detalhes. Note que o texto de resposta contém a temperatura real. Aqueça seu sensor e atualize o documento no navegador com F5 para ver a mudança.
Solução de Problemas
Caso obtenha página vazia ou erro, certifique-se que seu cabo Ethernet está conectado e verifique https://yaler.net/browser para debug específico do navegador.
Passo 5: Configurando um Número Twilio



Cadastre-se
Primeiro, para obter uma conta Twilio, cadastre-se em https://www.twilio.com/
Compre um número de telefone
Para receber chamadas, você precisará de um número, que tem um (pequeno) custo. Faça login, navegue até Numbers e selecione o submenu Twilio Numbers, para ver a aba Manage Numbers.
Clique no botão Buy a number, marque a caixa Voice e clique Search, depois escolha um número e clique Buy para comprá-lo.
Configure a URL do Webhook voice.xml
Na aba Manage Numbers, clique no número que acabou de comprar. Defina a Response URL para https://RELAY_DOMAIN.try.yaler.net/voice.xml e certifique-se que POST está selecionado, ex: para o domínio de relay Yaler gsiot-ffmq-ttd5 defina a Response URL para https://gsiot-ffmq-ttd5.try.yaler.net/voice.xml
Passo 6: Fazendo uma Chamada de Teste

Uma vez que o Arduino está configurado, você pode ligar para ele de qualquer telefone - até do seu avô.
É isso, obrigado por ler. @tamberg
Código
Bitbucket
https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default
Esquemáticos

Processo de manufatura
- Sticks Antitranspirante/Desodorizante: Ciência, História e Insights de Fabrico
- Abridor de Garagem Raspberry Pi com Streaming de Vídeo ao Vivo – Guia Passo a Passo
- Imagem 3D de Alta Resolução de Nanofios Core-Shell GaN/(In,Ga)N em Formato de Lápis via Tomografia Eletrônica
- Construa um Spybot Controlado por Bluetooth com Arduino
- FlickMote: Controle Remoto IR por Gestos para Casa Inteligente
- DIY Arduino TV B-Gone: Controle Remoto Universal para Todas as TVs
- Habilite Chamadas Telefônicas no Arduino UNO com Twilio e Yaler – Projeto Chame Meu Arduino
- Construa um Relógio Mestre LED Personalizado com Alarme – Visível a 12 Metros
- Find Me: Localizador Inteligente de Objetos com Arduino e Bluetooth
- Construindo um Business Case Forte para CMMS: Aumentando Eficiência e ROI da Manutenção