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

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人!

时间: 2024-08-29 14:41:16

ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge的相关文章

ArduinoYun教程之Arduino编程环境搭建

ArduinoYun教程之Arduino编程环境搭建 Arduino编程环境搭建 通常,我们所说的Arduino一般是指我们可以实实在在看到的一块开发板,他可以是Arduino UNO.Arduino Yun.Arduino Mega等等.但是从严格意义上来说,Arduino这个名字不仅代表着开发板,而且涉及硬件.软件.开发团队.设计原理以及用户群体的互助精神.这是Arduino与其他开发板的不同之处.在本章,我们将主要介绍如何在Windows和Linux操作系统上搭建Arduino的编程环境.

ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun

ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun OpenWrt-Yun OpenWrt-Yun是基于OpenWrt的一个Linux发行版.有所耳闻的读者应该听说他是一个使用在路由器上的操作系统.其实准确地说OpenWrt是一个嵌入式Linux发型版,它可以安装在各种嵌入式芯片中,如Arduino Yun.在本节中,将为大家介绍OpenWrt-Yun系统相关的知识. 使用SSH连接Arduino Yun SSH是Secure Shell的缩写,它是建立在应用层和

ArduinoYun教程之ArduinoYun硬件介绍

?ArduinoYun教程之ArduinoYun硬件介绍 ArduinoYun的电源插座 Arduino Yun有两排插座,这些插座能够按类型分为三类:电源.数字IO和模拟输入.电源部分主要集中在如图1.7所看到的的部分. 图1.7  电源集中部分 还有两个在如图1.8所看到的的位置. 图1.8  电源部分 以下我们介绍相应图中的各个名称及其含义: q  3个GND:接地.他们尽管分布在不同的位置,可是功能都一样: q  Vin:电源输入,通过它能够为整个板子供电,类似MicroUSB的供电功能

教你如何在Kali Linux 环境下设置蜜罐?

导读 Pentbox是一个包含了许多可以使渗透测试工作变得简单流程化的工具的安全套件.它是用Ruby编写并且面向GNU/Linux,同时也支持Windows.MacOS和其它任何安装有Ruby的系统.在这篇短文中我们将讲解如何在Kali Linux环境下设置蜜罐. 如果你还不知道什么是蜜罐(Honeypot),蜜罐是一种计算机安全机制,其设置用来发现.转移.或者以某种方式,抵消对信息系统的非授权尝试. 下载Pentbox: 在你的终端中简单的键入下面的命令来下载 pentbox-1.8. [em

Hadoop伪分布环境搭建——Linux环境配置

hadoop最近可以说是相当火,也勾起了我的兴趣,所以打算学习一下.想要学习hadoop肯定要先学会在自己的电脑上搭建一个hadoop伪分布环境.伪分布模式安装步骤的第一步就是要配置Linux环境.我自己的Linux是Ubuntu系统,不过只要是Linux系统,都大同小异,配置步骤基本没啥区别. 首先,需要进行本地网络配置.我们需要在linux系统下新增一个网络连接,自己设定好ip(ipv4)地址,子网掩码和网官.下图是我的设置: 接下来,还需要在window本地连接上也设置windows下的i

Windows环境 和 Linux环境下搭建Qt开发环境

原文链接:  http://blog.csdn.net/duxinfeng2010/article/details/8227548 此处仅适用windows下安装: 1.解压缩MinGW-gcc440_1.zip.将解压后的文件夹复制至C盘根目录下. 2.安装qt-creator-win-opensource-2.5.2. 3.安装qt-win-opensource-4.7.3-mingw.不要更改默认安装目录. 4.打开QT creator,菜单-->工具-->选项-->构建和运行(左

Linux环境安装ssh2扩展模块

环境:Linux环境(Centos or RedHat) 1.确认环境已安装php-5 # rpm -qa|grep php-5php-5.3.3-48.el6_8.x86_64 2.安装ssh2所依赖的rpm包如下图灰色部分显示,安装顺序可以按照灰色部分显示安装的时间顺序进行安装: rpm命令: 查询命令:rpm -qa|grep xxx 安装命令:rpm -ivh xxx.rpm 删除已安装的rpm:rpm -e xxx                (xxx:要删除的已安装的rpm名) 注

linux环境基于python语言docx转pdf

windows平台因借助win32com具有多种方法将word转为pdf,但linux环境不具备此环境,win32com包也将import失败,那该如何做呢? # -*- coding: utf-8 -*- """ linux platform word to pdf """ import subprocess import os try: from comtypes import client except ImportError: clien

从零教你在Linux环境下(ubuntu)如何编译hadoop2.4

问题导读: 1.如果获取hadoop src  maven包?2.编译hadoop需要装哪些软件?3.如何编译hadoop2.4?扩展:编译hadoop为何安装这些软件? 本文链接 http://www.aboutyun.com/thread-8130-1-1.html 一.首先下载hadoop源码包下载的方式还是比较多的1.svn的方式svn下载首先需要安装SVN,如果想尝试使用svn,可以参考源码管理.获取网络源码工具:TortoiseSVN使用手册,hadoop的svn下载地址点此2.压缩