怎样 用你的电话 呼叫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加一个以太网插板,并如图连接温度传感器。更多关于TMP36传感器的内容,参见:
http://learn.adafruit.com/tmp36-temperature-sensor/using-a-temp-sensor
如果你想添加其他(数字)传感器,记住,一些引脚已被太网插板用了。
步骤2:安装Yaler库
在https://yaler.net/arduino上按照步骤安装库文件。
完成后,注册https://yaler.net/申请一个免费试用账户,并记下中继域名(不需要密钥)
步骤3:Arduino编译
下载 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
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号码
注册
首先,在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:打一个测试电话
(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