2010/1/29

Pduino



Arduino是另一個微控制器介面,創造可供選擇的工具來描繪物理的互動。由於這是一個開源硬體計畫,目的是在提供藝術與設計社群一個使用電子介面創作的工具。讓使用者在各種新途徑進行互動,這些新的介面可以被視為與電腦能夠得到自然而然的連結。Arduino包括一個8位元微控制器,並且通過port與電腦進行溝通。這准許連接到現有的軟體套件,例如Pure Data。
Pduino函式庫提供Arduino和Pd物件的溝通能力,這讓我們能夠使用Pd介面控制類比和數位感應器。這涉及到通過感應器所接收到的輸入資料,以及發送資料到控制器並且改變感應器的狀態。為了產生溝通,首先需要連接Arduino板子到你的電腦上(請見:http://arduino.cc/ ,說明如何安裝Arduino板子的驅動和Arduino軟體) 。當你連接Arduino板子之後,你需要上傳Firmata firmaware到Arduino板子上,讓你通過Pd介面獲得感應器資料。接下來,將介紹關於如何上傳Firmata firmaware到Arduino板子裡。

首先,雙擊在Arduino檔案夾中的"arduino"。當你執行Arduino應用程式後,單擊在toolbar上的

" open.png 打開 > Examples > Library Firmata > SimpleAnalogFirmata"
一旦你點擊了SimpleAnalogFirmata,這韌體程式碼將會在你的應用程式裡打開。

在這一章中我們將介紹類比感應器的範例,因此我們將上傳SimpleAnalogFirmata到板子上。對於其他類型的感應器,例如任何數位感應器或伺服器馬達感應器,都在Firmata函式庫底下,根據你的感應器類型,你需要去選擇相關的Firmata。

arduinowindow.png

為了上傳Firmata到你的Arduino板子,首先你需要確定你的Arduino版子類型和你Arduino板子連接的serial port,。



在Arduino應用程式裡點擊 " Tools > Board " ,並選擇你的Arduino版子類型,即如果你擁有的是Arduino Deicimila,請選擇"Arduino Diecimila or Duemilanova w / ATmega168"。 在你設定你的Arduino板子類型之後,設定Arduino板子連接的serial port。單擊 " Tools> Serial Port" ,並選擇正確的Serial Port。


在設定好版子和Serial Port後。在tool bar上,點擊play.png Verify按鍵。
SimpleAnalogFirmata編譯完成後,你將在Arduino應用程式下面收到" Done compiling "的訊息。如果你收到任何錯誤訊息,只需通過上述指示進行修正,並且再次編譯firmata。一旦firmata編譯完成,你可以把它上傳到你的Arduino板子。

為了上傳firmware,首先按下在你的Arduino板子上的重設開關按鈕,它的位置位於板子上,靠近Atmel AVR ATmega晶片的附近。板子的重設開關位置可能會根據不同類型的Arduino板子而有所不同。


按下重設開關後,然後在工具欄中,點擊「upload.png上傳到I/O Board的按鈕」 ,一旦你在Arduino 軟體上看到 "Done uploading."訊息, firmata是成功上傳到Arduino板子裡。關閉Arduino 應用程式,同時保持你的Arduino板子與電腦的連接。

  arduino.png 

在Pure Data裡的[arduino] 物件,將會設定與你剛剛上傳到你的Arduino板子裡的firmata連接。當你在patch裡建立一個[arduino] 物件,需要Pduino 函式庫的所有的抽象將會被載入。這個物件的輸入讓我們可以發送訊息,來開啟電腦和Pd之間的serial port 通信 。由於在一台電腦 上有多個serial port,首先我們必須找出與Arduino板子連接的serial port的編號。只需要發送一個 [devices( 訊息給[arduino] 物件,你可以得到連接到你電腦的裝置清單顯示在主要 Pd視窗上。



 arduino3.png
一旦你確認你已連接你的Arduino板子的電腦,請按一下[devices(訊息盒子,你會得到如下面的類似資訊在主要 Pd視窗內。
[comport]: available serial ports :
                 4 /dev/ttyUSB0




在這種情況下, Arduino板子的連接port /dev/ttyUSB0 並且它的port號碼是4 。因此,為了啟動Arduino - Pd的溝通,與上面的範例有所關系,你送出[open 4(訊息給[arduino] 物件。



  pduino1.png
選擇radio按鍵,來設定有連接到Ardunio板子上的serial port數字選項。這將會打開serial port連接。
關閉serial port連接。
目前的serial port連接。
列出裝置清單。
韌體版本
為serial port編號的初始化數值



如果serial連接是成功打開,Pd 視窗將顯示以下類似類型的訊息。

get_baud_ratebits: 115200.000000
set_baudrate baudbits: 4098
[comport] opened serial line device 4 (/dev/ttyUSB0)



一旦你打開的 serial port連接,你可以從你的Arduino板子立即接收資料。首先你必須使感應器資料通過[arduino] 物件,然後來區分感應器的資料類型。在這下面的例子,我們把重點放在類比輸入感應器;因此 [route] 物件只能讓類比感應器類型輸入。隨後[route] 物件區分類比輸入的資料,以方便你可以用一個單獨的數字盒子接收各個感應器的資料。



  sendsensor_1.png

選擇radio按鍵,來設定有連接到Ardunio板子上的serial port數字選項。這將會打開serial port連接。
關閉serial port連接。
目前的serial port連接。
列出裝置清單。
韌體版本
為serial port編號的初始化數值
讓感應器能夠輸入
區分類比輸入感應器資料
區分類比輸入
CPU友善數值
類比輸入pins




即使沒有任何感應器連接到Arduino的類比pins,然而當你能讓資料流通過[arduino]物件的時候,上面patch 中的類比輸入pins盒子會接收數字的流動。這些簡單的噪音資料,都是由於Arduino板子上空的pins產生。

以下圖片顯示的是使用Arduino板子和基本光敏電阻(photoresistor)感應器連接。使用5V電源、接地和類比輸入 0 pins的線路。在你建立下面的光敏電阻電路後,只需通過阻斷光敏電阻接收光線的數量,你就可以改變在這條電路上的電流數值,並且你可以在上面的 Pd patch裡得到數值變化。



topcurcuit.JPG



pins.JPG





curcuit.JPG 

因為在這條電路上只有一個類比感應器,它是連接到Arduino 的類比輸入 0 pin,如果你連接a0數字盒子輸出到[send]物件,你可以收到不同的感應器數據以及Pd patche。提醒一下,你應該使用相同的目標名稱在這兩個[send] 和 [receive]物件裡。

下面的例子Pd patch 接收到光敏電阻感應器的資料來控制帶通濾波器的振幅數值與中心頻率。



   noise.png

雜音
接收感應器資料

多個聲音信號,這來自感應器訊號。
接收感應器訊號
縮放感應器訊號在0和2000範圍之間。
縮放感應器訊號改變在bandpass過濾器中的中心頻率。
轉換數位為類比



這些都是Pduino函式庫的基本範例,但是arduino-test.pd 包括通過 [arduino] 物件的其他類型的感應器連接。


資料來源:http://en.flossmanuals.net/PureData/Pduino

沒有留言: