给Arduino打电话 — Twilio云通讯

Home / 博客 / 给Arduino打电话 — Twilio云通讯

Arduino_Call

怎样 用你的电话 呼叫Arduino,用Twilio和Yaler.net就可以做到!

Twilio是一个网页服务器,可以把所有的消息都转移到电话中。这是一个用于电话通讯的REST API,托管于云服务器。基于这样的环境,当有人呼叫Arduino预先设好的电话号时,Twilio向Arduino请求一个新的voice.xml文件。响应内容读给呼叫人Alice,一端发向语音识别引擎的Twilio的文本的语音。

Yaler.net 能使网页访问防火墙后的嵌入式设备,NAT或者一个移动网络路由。这就使Twilio在Arduino上访问voice.xml文件,Arduino处于一个内部网络,因此它没有自己的公共IP地址(另:我是Yaler的创建者之一)

这里的演示使用一个温度传感器,其实任意传感器都行。一个真实的产品实例是Canary(现在叫Birdi)烟雾侦测器,业主可以打电话询问电池是不是还有电。

 

在一个更抽象的层面,这个教程展示了,在一个开放的物联网,模块化的云服务可以随意的融合到 建立新颖、简单且可靠的解决方案中。为了HTTP和Webhooks 的胜利!让我们开始…

 

材料

– Arduino Uno (e.g. https://www.adafruit.com/products/50)
– USB 标准 A-B线 (e.g. http://www.adafruit.com/products/62)
– Arduino 以太网插板 (e.g. http://www.adafruit.com/products/201)
– 网线 (e.g. http://www.adafruit.com/products/995)
– 模拟温度传感器 (e.g. https://www.adafruit.com/products/165)
– 面包板用线 (e.g. http://www.adafruit.com/products/153)
– 面包板 (e.g. http://www.adafruit.com/products/64)

步骤1  给传感器布线

Arduino_Call2

 

给Arduino加一个以太网插板,并如图连接温度传感器。更多关于TMP36传感器的内容,参见:

http://learn.adafruit.com/tmp36-temperature-sensor/using-a-temp-sensor

如果你想添加其他(数字)传感器,记住,一些引脚已被太网插板用了。

步骤2:安装Yaler库

 

Arduino_Call3

 

https://yaler.net/arduino上按照步骤安装库文件。

完成后,注册https://yaler.net/申请一个免费试用账户,并记下中继域名(不需要密钥)

步骤3:Arduino编译

Arduino_Call4

 

下载 TwilioYalerWebService Arduino 源代码

https://bitbucket.org/tamberg/iotworkshop/raw/default/Arduino/TwilioYalerWebService/TwilioYalerWebService.ino?at=default

打开Arduino代码

程序执行了一个非常简单的Web server,侦听进来的HTTP请求。一旦一个请求过来,程序就会用一个XML文件应答。服务器不要求 URL 路径是/ 或者是/voice.xml

更改MAC地址

确保Arduino代码中的MAC地址是唯一的。特别是如果很多Arduino在同一个局域网工作。一个简单得到唯一地址的方式是,查到你电脑的MAC,然后在最后以为上加1。

键入你的中继域名

用不着用 EthernetServer server(80) 创建本地服务器;我们通过Yaler接转try.yaler.net,如下行:

YalerEthernetServer server(“try.yaler.net”, 80, “RELAY_DOMAIN”);

RELAY_DOMAIN 换成你的中继域名,例如 gsiot-ffmq-ttd5 类型:

YalerEthernetServer server(“try.yaler.net”, 80, “gsiot-ffmq-ttd5”);

注意你也可以使用本地服务器,如果你知道怎样配置端口,在有本地防火墙时怎样给来的HTTP请求开一个入口。重要的是Twilio可以从云平台访问Arduino。

保存更改并上传

保存所有的更改,并将程序上传至Arduino。让USB线连接到你的电脑,打开串口调试工具看一下调试输出。

步骤4:访问Arduino

Arduino_Call5

 

用任意浏览器访问Arduino

Yaler 库让你的 Arduino (带有XML文件) 在公共网络http://RELAY_DOMAIN.try.yaler.net/上是可行的,用于转发域 gsiot-ffmq-ttd5 ,URL是 http://gsiot-ffmq-ttd5.try.yaler.net/

或者,使其在Twilio上更好看:ttp://gsiot-ffmq-ttd5.try.yaler.net/voice.xml

检查XML文档

XML文档的内容告诉Twilio怎样应答一个来电。你甚至可以选择文字转语音。这里是Alice。Twilio的XML格式被叫做TwiML。详见: https://www.twilio.com/docs/api/twiml

注意,应答文字包涵准确的温度。让你的传感器升温,在你的Web浏览器上按F5刷新一下。

错误排查

如果你得到一个空白页面或是错误,请先检查你的以太网线是否插紧,并检查 https://yaler.net/browser 的特定调试。

 

步骤5:建立一个Twilio号码

Arduino_Call6

 

Arduino_Call7Arduino_Call8

 

注册

首先,在https://www.twilio.com/上获得一个Twilio账号。

购买一个电话号码

为了接到电话,你需要一个号码,没多少钱。

登录,导航至Numbers,并选择Twilio Numbers子菜单可以看到 Manage Numbers标签点击Buy a number (购买号码)按钮,选择Voice 勾选框点击Search,然后选择一个号码并点击Buy购买。

配置voice.xml Webhook URL

在 Manage Numbers标签中,点击你购买的号码。

设置Response URL http://RELAY_DOMAIN.try.yaler.net/voice.xml,并确保POST被选择,例如用于Yaler 中继域名gsiot-ffmq-ttd5设置应答URL给http://gsiot-ffmq-ttd5.try.yaler.net/voice.xml

 

步骤6:打一个测试电话

Arduino_Call9

 

(Phone picture by flickr.com user William Gantz, licensed under CC BY-ND)

一旦Arduino弄好,你就可以接到电话了! 甚至你的爷爷都可以做到!

感谢阅读!

@tamberg

 

Translated by Katrina from:http://www.instructables.com/id/Call-my-Arduino/?ALLSTEPS