热度 22
2014-5-28 17:43
1805 次阅读|
0 个评论
怎样 用你的电话 呼叫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