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人!
ArduinoYun教程之Arduino环境与Linux环境的桥梁Bridge相关推荐
- ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun
ArduinoYun教程之OpenWrt-Yun与CLI配置Arduino Yun OpenWrt-Yun OpenWrt-Yun是基于OpenWrt的一个Linux发行版.有所耳闻的读者应该听说他是 ...
- ArduinoYun教程之ArduinoYun硬件介绍
ArduinoYun教程之ArduinoYun硬件介绍 ArduinoYun的电源插座 Arduino Yun有两排插座,这些插座可以按类型分为三类:电源.数字IO和模拟输入.电源部分主要集中在如图 ...
- ArduinoYun教程之ArduinoYun硬件介绍
2019独角兽企业重金招聘Python工程师标准>>> ArduinoYun教程之ArduinoYun硬件介绍 ArduinoYun的电源插座 Arduino Yun有两排插座,这些 ...
- JDK8下载及安装教程之windows版、linux版
JDK8下载及安装教程之windows版.linux版 JAVA8下载及安装教程之windows版 环境: 下载: 安装: JAVA8下载及安装教程之linux版本 环境: 下载: 安装: JAVA8 ...
- openfire在windows环境和linux环境下的配置
一般很多时候开发人员会用openfire作为消息推送或者即时通讯的服务器,下面主要介绍一下openfire在windows环境和linux环境下的配置. 一.openfire在windows环境下的配 ...
- openfire linux 64,openfire在windows环境和linux环境下的配置
一般很多时候开发人员会用openfire作为消息推送或者即时通讯的服务器,下面主要介绍一下openfire在windows环境和linux环境下的配置. 一.openfire在windows环境下的配 ...
- 小码农UU手把手教你云服务器搭建linux环境,还用什么虚拟机啊
文章目录 linux环境搭建 主要有三种方式 云服务器优点 告诫 购买服务器(我买的是腾讯云) 1. 进入官网 2.登录 3.认证购买 找到自己的IP 设置root密码 小结: 使用 XShell 远 ...
- 黑马程序员Flutter入门教程之Windows系统Android开发环境配置
前置依赖环境 Windows系统要求: Win7及以上 硬盘空间除AndroidStudio外不低于400M 下载Git for windows工具,并且可以运行git命令 git version 配 ...
- linux mv 环境变量,linux环境变量,cp,mv命令,more,less,cat,tail,head,的使用...
linux环境变量,cp,mv命令,more,less,cat,tail,head,的使用 [email protected] ~]# cp /usr/bin/ls /tmp/ [[email p ...
最新文章
- MyBatis-Plus 看这篇就够了
- 综述 | 北斗系统应用趋势分析
- 移动APP开发使用什么样的原型设计工具比较合适?
- 如何看你的信息有没有泄露
- python中tile的用法_python3中numpy函数tile的用法详解
- 2、内核的配置和移植
- 【DP】划分数列(ybtoj DP-2-1)
- Flask爱家租房--房屋管理(获取主页幻灯片展示的房屋基本信息)
- Bootstrap 折叠插件Collapse 选项
- java实现阅读量统计_博客中的阅读量是如何设计的?
- JFinal Template Engine 使用
- python切割音频文件_python3使用pydub切分音频文件
- gels imagej 图片处理_科研论文作图之ImageJ
- 大数据与云计算是什么关系
- c语言常量有哪些分类,c语言常量的正确表示方法有哪些
- 人工智能学习-传教士-15数码-拟合-逻辑推理
- SqlServer2005使用top 100 PERCENT 无法排序的问题
- C++运动会分数统计系统
- 安装cuda后却没有CUDA Samples怎么办?
- arcgis怎么压缩tif文件_使用gdal压缩tif文件