在第一章中介紹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(中文含義爲橋)所預示的,它是ATmega(表明Arduino環境)和Atheros9331(表明Linux環境)之間的橋樑。Bridge庫容許ATmega和Atheros之間的雙向通信,便可以信息從Atheros到ATmega也能夠從ATmega到Atheros。以Bridge庫爲基礎還衍生出了幾個特別的類庫,下面分別對他們進行簡單地介紹。服務器
1.Processsession
Process庫用來在Linux處理器上啓動一個進程(一般是運行一個Shell命令),它的使用方式相似Shell腳本。less
2.Console異步
Console庫使得可使用Arduino IDE的串口監視器經過來與Yun中的程序交互。例如,你可使用串口監視器來遠程打開或關閉一個照明燈。編程語言
3.FileIO工具
FileIO庫是Linux文件系統的接口,它能夠用來在SD卡上讀寫文件。例如,使用它能夠完成將日誌記錄文件保存到SD卡。網站
4.HttpClientui
這個庫能夠在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中都有對應的接口。
到如今爲止,咱們接觸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人!