ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge
时间: 2015-07-02来源:OSCHINA
前景提要
ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge
Arduino 环境与 Linux 环境的桥梁—— Bridge
在第一章中介绍 Arduino Yun 硬件的时候提到过,它上面有两个处理器 ATmega32U4 和 Atheros 9331 。 20 个 IO 口和 Micro USB 口是连接在 ATmega32U4 上的,而 WiFi 、 Ethernet 、 SD 卡槽和 USB 口是连接在 Atheros 上的。如果这两个处理器只能独立工作,那么把他们集成到 Yun 中也就没有意义了。所以, ATmega32U4 和 Atheros 9331 之间是可以通讯的,而这个通讯的主体部分就是 Bridge 库,它们之间的关系可以用图 3.38 表示。

图 3.38 ATmega32U4 、 Atheros 与 Bridge 之间的关系
什么是 Bridge
正如库名 Bridge (中文含义为桥)所预示的,它是 ATmega (代表 Arduino 环境)和 Atheros9331 (代表 Linux 环境)之间的桥梁。 Bridge 库允许 ATmega 和 Atheros 之间的双向通讯,即可以信息从 Atheros 到 ATmega 也可以从 ATmega 到 Atheros 。以 Bridge 库为基础还衍生出了几个特别的类库,下面分别对他们进行简单地介绍。
1.Process
Process 库用来在 Linux 处理器上启动一个进程(通常是运行一个 Shell 命令),它的使用方式类似 Shell 脚本。
2.Console
Console 库使得可以使用 Arduino IDE 的串口监视器通过来与 Yun 中的程序交互。例如,你可以使用串口监视器来远程打开或关闭一个照明灯。
3.FileIO
FileIO 库是 Linux 文件系统的接口,它可以用来在 SD 卡上读写文件。例如,使用它可以完成将日志记录文件保存到 SD 卡。
4.HttpClient
这个库可以在 Linux 中创建一个 HTTP 客户端。实质上, HttpClient 是 Process 的扩展,它将一般的 CURL 命令进行了封装,使得它更容易使用。
5.Mailbox
Mailbox 是 Linux 环境和 Arduino 环境之间通讯的一个异步、无会话( sessionless )的接口。
6.YunClient 和 YunServer
YunClient 是基于 Arduino 的 HTTP 客户端而 YunServer 是对应的服务器端。这个库是仿照 EthernetServer 库创建的。
7.Temboo
Temboo 库是 Temboo 的接口,使用它可以很容易地连接到 Temboo 提供的各种类型的在线工具。例如,在国内比较熟悉的有雅虎天气、 Dropbox 以及 GITHUB 等在 Temboo 中都有对应的接口。
使用 Bridge 编程
到现在为止,我们接触 Yun 的时间也不算短了,可以说是将它里里外外翻了个遍。但是我们一直没有感受到它和其他的板子有何区别。在本节中,我们将带大家来使用 Yun 来获取你当地的天气信息。下面我们就开始吧。
Temboo 是什么
有许多读者一定会诧异自己现在可能连写好的代码都看不懂,怎么能写出这么高级的程序呢?其实,这要感谢 Temboo 了。
Temboo 可以说是一个资源库,它集合超过 80 个网站的 100 多个 API ,之后在这些 API 的基础上创建了超过 2000 个 Choreos 。这些代码可以被程序员直接使用,大大提高了工作的效率。而我们之所以介绍 Temboo ,最特别的地方是 Arduino Yun 正是 Temboo 公司和 Arduino 公司合作开发的。所以, Temboo 对 Arduino Yun 的支持力度是非常大的——各个 API 针对 Arduino Yun 的代码都是完整的代码,用户需要做的只是复制、粘贴而已。
2. 在 Temboo 上注册账号
在了解了 Temboo 之后,为了生成符合我们需求的代码,需要在 Temboo 上注册一个账号。这个账号的注册和使用都是免费的(但是有 API 调用次数和流量限制,用户可以按需要购买增值服务)。注册地址为 https://temboo.com/ 。
3. 选择你需要使用的 API
在注册完成后,你就可以开始寻找你想要使用的功能了。我们将要做的是一个天气预报系统,雅虎天气就可以满足我们的需求,所以我们需要在左侧的树状表中找到它,如图 3.39 所示。

图 3.39 雅虎天气
雅虎天气提供了三种获取天气的方式,我们选择基于地址的方式,即 GetWeatherByAddress 。
4. 打开 IoT 模式
在选择了 GetWeatherByAddress 之后,会出现如图 3.40 所示的界面。

图 3.40 GetWeatherByAddress
默认情况下, Choreos 的代码是针对指定的编程语言生成的,如 Java 、 PHP 、 Python 以及 Ruby 。而我们需要的是针对 Arduino Yun 的,这就需要我们打开 IoT 模式,如图 3.41 所示。

图 3.41 IoT 模式
IoT 模式下默认选择的开发板就是 Arduino Yun 。
5. 指定自定义值
在 Temboo 中,大多数 Choreos 都需要指定一个或多个自定义的量来实现对应的需求。由于我们要实现的是针对地址的天气预报,所以在这个 Choreos 中需要正是地址信息,所以我们需要将我们要获取天气信息的地址输入到 INPUT 区域的 Address 中,如图 3.42 所示。

图 3.42 输入指定的地址
6. 生成代码
在输入了你期望的地址之后,你就可以点击右下角的 Run 按钮来生成代码了。在代码成功生成之后将出现在网页的 CODE 区域,如图 3.43 所示。

图 3.43 生成的代码
生成的代码就是可以直接使用的代码了,而且是为你指定的地址量身定制的。
7. 将代码复制到 Arduino IDE
生成的代码可以直接点右下角的 COPY 复制并粘贴到你的 Arduino IDE 中,也可以点击右上角的 Download 下载下来之后使用 Arduino IDE 打开。在将代码的主体部分复制到 Arduino IDE 中之后,我们还需要为程序添加头文件。头文件在网页的 HEADER FILE 区域,如图 3.44 所示。

图 3.44 头文件
在粘贴头文件之前,我们首先需要在 Arduino IDE 中新建一个标签。在 Arduino IDE 的一个 Sketch 中新建标签可以使用快捷键 Ctrl+Shift+N 或者点击 IDE 右上角的 图标,然后在弹出菜单中选择新建标签,如图 3.45 所示。

图 3.45 新建标签
在新建标签的过程中 IDE 要求你输入文件名,这个文件名可以从主体代码的文件包含部分找到,如下为主体代码的文件包含部分: #include <Bridge.h> #include <Temboo.h> #include "TembooAccount.h" // contains Temboo account information, as described below
其中,双引号中间的部分即为头文件的名称。在确定创建文件之前一定要注意文件名需要明确指定后缀,如图 3.46 所示。

图 3.46 新建头文件
在头文件建成以后,就可以将复制的头文件代码粘贴进去了。
7. 上传代码
在完成头文件和主体文件之后,现在就是时候将代码上传到 Yun 中了——连接 Arduino Yun 和电脑、在 Arduino IDE 中选好端口、单击按钮 上传代码。
8. 查看结果
等待 Arduino IDE 显示“上传完成”之后,我们就可以通过串口监视器来查看输出的结果了。串口监视器可以通过组合键 Ctrl+Shift+M 或者单击按钮 打开。打开串口监视器之后,我们就可以看到这个 Sketch 输出的结果了,如图 3.47 所示。

图 3.47 Sketch 的输出结果
这个 Sketch 的输出结果并不是我们熟悉的图形形式,而是以 XML 形式输出的。这样的好处是可以供其他程序非常容易地解析出需要的信息,当然对于不熟悉 XML 的读者来说就不那么友好了。但是,这些内容中确实包含了气象信息的,如下是输出信息的一部分: <yweather:location city="Beijing" region="" country="China"/> <yweather:units temperature="F" distance="mi" pressure="in" speed="mph"/> <yweather:wind chill="75" direction="160" speed="4" /> <yweather:atmosphere humidity="54" visibility="3.11" pressure="29.72" rising="0" /> <yweather:astronomy sunrise="5:57 am" sunset="6:17 pm"/>
这部分显示了这次结果的位置、温度单位、风速以及空气质量等信息。而如下的这条语句则是说明的当前的天气状况: <yweather:condition text="Haze" code="21" temp="75" date="Fri, 19 Sep 2014 1:59 pm CST" />
而下面的 5 条信息则是对未来 5 天的天气预报: <yweather:forecast day="Fri" date="19 Sep 2014" low="60" high="78" text="Partly Cloudy" code="29" /> <yweather:forecast day="Sat" date="20 Sep 2014" low="58" high="84" text="Sunny" code="32" /> <yweather:forecast day="Sun" date="21 Sep 2014" low="61" high="83" text="Mostly Sunny" code="34" /> <yweather:forecast day="Mon" date="22 Sep 2014" low="64" high="80" text="AM Clouds/PM Sun" code="30" /> <yweather:forecast day="Tue" date="23 Sep 2014" low="56" high="70" text="Showers" code="11" />
经过笔者以上的介绍,此时读者应该相信虽然这很让人难以置信,但是这千真万确的是天气预报。而关于如何解析这些 XML 信息则在本书的范畴之内,读者需要参考其他相关书籍。
至此,我们已经成为了 Arduino Yun 真正的主人,并且它非常听话地按照我们的要求完成了天气预报的项目。在接下来的内容中,我们就需要自己动手来实现一些好玩的项目了。不过在此之前,首先要了解一下 Arduino 所用的编程语言与你所熟悉的语言之间的差别。
本文选自: Arduino Yun快速入门教程大学霸内部资料,转载请注明出处,尊重技术尊重IT人!

科技资讯:

科技学院:

科技百科:

科技书籍:

网站大全:

软件大全:

热门排行