ArduinoYun教程之Arduino環境與Linux環境的橋樑Bridge

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.Processsession

Process庫用來在Linux處理器上啓動一個進程(一般是運行一個Shell命令),它的使用方式相似Shell腳本。less

2.Console異步

Console庫使得可使用Arduino IDE的串口監視器經過來與Yun中的程序交互。例如,你可使用串口監視器來遠程打開或關閉一個照明燈。編程語言

3.FileIO工具

FileIO庫是Linux文件系統的接口,它能夠用來在SD卡上讀寫文件。例如,使用它能夠完成將日誌記錄文件保存到SD卡。網站

4.HttpClientui

這個庫能夠在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人!

相關文章
相關標籤/搜索