文档章节

ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge

大学霸
 大学霸
发布于 2015/07/02 15:17
字数 2445
阅读 803
收藏 1

ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge

Arduino环境与Linux环境的桥梁——Bridge

在第一章中介绍Arduino Yun硬件的时候提到过,它上面有两个处理器ATmega32U4Atheros 933120IO口和Micro USB口是连接在ATmega32U4上的,而WiFiEthernetSD卡槽和USB口是连接在Atheros上的。如果这两个处理器只能独立工作,那么把他们集成到Yun中也就没有意义了。所以,ATmega32U4Atheros 9331之间是可以通讯的,而这个通讯的主体部分就是Bridge库,它们之间的关系可以用图3.38表示。

3.38  ATmega32U4AtherosBridge之间的关系

什么是Bridge

正如库名Bridge(中文含义为桥)所预示的,它是ATmega(代表Arduino环境)和Atheros9331(代表Linux环境)之间的桥梁。Bridge库允许ATmegaAtheros之间的双向通讯,即可以信息从AtherosATmega也可以从ATmegaAtheros。以Bridge库为基础还衍生出了几个特别的类库,下面分别对他们进行简单地介绍。

1.Process

Process库用来在Linux处理器上启动一个进程(通常是运行一个Shell命令),它的使用方式类似Shell脚本。

2.Console

Console库使得可以使用Arduino IDE的串口监视器通过来与Yun中的程序交互。例如,你可以使用串口监视器来远程打开或关闭一个照明灯。

3.FileIO

FileIO库是Linux文件系统的接口,它可以用来在SD卡上读写文件。例如,使用它可以完成将日志记录文件保存到SD卡。

4.HttpClient

这个库可以在Linux中创建一个HTTP客户端。实质上,HttpClientProcess的扩展,它将一般的CURL命令进行了封装,使得它更容易使用。

5.Mailbox

MailboxLinux环境和Arduino环境之间通讯的一个异步、无会话(sessionless)的接口。

6.YunClientYunServer

YunClient是基于ArduinoHTTP客户端而YunServer是对应的服务器端。这个库是仿照EthernetServer库创建的。

7.Temboo

Temboo库是Temboo的接口,使用它可以很容易地连接到Temboo提供的各种类型的在线工具。例如,在国内比较熟悉的有雅虎天气、Dropbox以及GITHUB等在Temboo中都有对应的接口。

使用Bridge编程

到现在为止,我们接触Yun的时间也不算短了,可以说是将它里里外外翻了个遍。但是我们一直没有感受到它和其他的板子有何区别。在本节中,我们将带大家来使用Yun来获取你当地的天气信息。下面我们就开始吧。

Temboo是什么

有许多读者一定会诧异自己现在可能连写好的代码都看不懂,怎么能写出这么高级的程序呢?其实,这要感谢Temboo了。

Temboo可以说是一个资源库,它集合超过80个网站的100多个API,之后在这些API的基础上创建了超过2000Choreos。这些代码可以被程序员直接使用,大大提高了工作的效率。而我们之所以介绍Temboo,最特别的地方是Arduino Yun正是Temboo公司和Arduino公司合作开发的。所以,TembooArduino 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的代码是针对指定的编程语言生成的,如JavaPHPPython以及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人!


© 著作权归作者所有

大学霸
粉丝 270
博文 908
码字总数 557321
作品 0
东城
程序员
私信 提问
​ArduinoYun教程之ArduinoYun硬件介绍

ArduinoYun教程之ArduinoYun硬件介绍 ArduinoYun的电源插座 Arduino Yun有两排插座,这些插座可以按类型分为三类:电源、数字IO和模拟输入。电源部分主要集中在如图1.7所示的部分。 图1.7 电...

大学霸
2015/06/29
279
0
ArduinoYun教程之Arduino编程环境搭建

ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO、Arduino Yun、Arduino Mega等等。但是...

大学霸
2015/06/30
503
0
ArduinoYun教程之配置Arduino Yun环境

ArduinoYun教程之配置Arduino Yun环境 配置Arduino Yun 无论你使用前面介绍的哪种方式连接Arduino Yun,现在都可以配置你的Arduino Yun了。首先需要的是使用各自对应的方法访问到如图3.18所示...

大学霸
2015/07/01
220
0
ArduinoYun教程之通过网络为Arduino Yun编程

ArduinoYun教程之通过网络为Arduino Yun编程 Arduino Yun的软件部分 通过第一章的介绍后读者就明白了Arduino Yun除了是一个类似其他Arduino的单片机之外,它的另一大组成部分就是运行着一个特...

大学霸
2015/06/30
2.1K
0
做一个Cubieduino如何(有新内容了)?

今天看到一个东西: http://www.oschina.net/question/116701105771 里面有一段文字 pcDuino是一个平台,是LINUX软件和开源硬件的结合,pcDuino赋予创客力量,只有你有创意就可以用pcDuino做出...

cubieboard
2014/08/28
46
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写自定义控件69-代码行数统计

一、前言 代码行数统计主要用来统计项目中的所有文件的代码行数,其中包括空行、注释行、代码行,可以指定过滤拓展名,比如只想统计.cpp的文件,也可以指定文件或者指定目录进行统计。写完这...

飞扬青云
7分钟前
1
0
驰骋工作流引擎-ccflow关于 “ 是否自动计算未来的处理人”的功能变更

关键字:流程未来节点处理人 工作流快速开发平台 工作流流设计 业务流程管理 asp.net 开源工作流 业务背景:一个流程在启动起来后,是可以对一些节点计算出来处理人是谁,流程的走向。对于另...

孟娟
23分钟前
3
0
IT兄弟连 HTML5教程 HTML5表单 HTML表单设计1

表单是PHP程序中最常使用的收集站点访问者信息的数据输入界面。通过表单浏览器获取用户的输入数据,并传送给Web服务器的脚本程序中,以各种不同的方式进行处理。在表单中提供了多种输入方式,...

老码农的一亩三分地
24分钟前
1
0
武者Vue

本文转载于:专业的前端网站➼武者Vue 1 - Introduction2 - The Vue Instance3 - Data & Methods4 - Data Binding5 - Events6 - Event Modifiers7 - Keyboard Events8 - Two-Way Data......

前端老手
30分钟前
3
0
uni app 零基础小白到项目实战

$emit 子组件传给父组件$ref 父组件操作子组件 公用模板 uni-app全局变量的几种实现方法 const websiteUrl = 'http'const now = Date.now || function() { return new Date().getTime......

达达前端小酒馆
40分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部