2012年5月27日 星期日

Page 4 - Arduino Twitter PO 文機器人

Page 4 - Arduino Twitter PO 文機器人


如何利用 Arduino 快速的 PO 文,跟朋友們搶頭香呢?
答案是利用 Arduino 與簡單的電子零件、python,
加上預設好的文章就可以『一鍵搞定』!

這個題目的執行流程如下:

1. 首先將撰寫好的 Arduino 以 USB 與電腦連接

2. 利用 python 撰寫一個監聽 serial port 的 script檔,
    持續監聽是否 Arduino 上的按鈕有無被按下

3. 執行結果如下:

  • 若被按下: 透過 twitter API  PO預設字句到 twitter 上
  • 若沒有被按下:Arduino 將持續執行直到按鍵被按下為止



所需材料:

--  Arduino 一片、麵包板一個、按鍵按鈕一個、10k歐姆電阻一個、單心線數條
--  在電腦端安裝好 python 2.7版本
--  Twitter API  key
--  python 相關函式庫:
  1. pyserial ,這個函式庫可以用來監聽 serial port 的觸發事件
  2. simplejsonhttplib2python-oauth2,這三個函式庫要在安裝 python - twitter 之前安裝好
  3. python-twitter ,這是讓我們得以使用 twitter API 發文的函式庫






Arduino 端:

以上材料準備完成後,開始先將 Arduino 的程式與硬體設定完成,
硬體電路,請參考以下圖形連接完成:




硬體線路安裝完成後,將以下程式下載至 Arduino 上,並開啟 Arduino 中內建的 Serial Monitor 觀察電路上的按鈕有無按鍵變化。若沒有任何反應,請檢查電路是否有誤。


int buttonPin = 10; //定義按鈕連接腳位
int val = 0; //按鈕狀態
 
void setup()
{
  pinMode(buttonPin, INPUT); //將按鈕腳位設定為輸入模式
  Serial.begin(9600); //設定 serial 傳輸速率
}
 
void loop()
{
  val = digitalRead(buttonPin); //讀取按鈕狀態
 
  if(val == HIGH) { //如果按鈕被觸發 
    Serial.println("這裡是想PO文在Twitter上的內容"); //將預先設定的字串傳到 serial port
    delay(1000); //延遲等待一秒鐘,避免連續觸發,並可減少機械彈跳造成的錯誤
  }
}

以上步驟若沒有任何問題,那麼 Arduino 端的電路與程式就算完成了,接著換電腦端。




電腦端:


首先到 python 下載 python 2.7 版本安裝至電腦上,
下載頁面:http://www.python.org/download/,請依照電腦系統版本下載適合的安裝檔



安裝完成後,將python設定至環境變數,以便系統執行python 命令時能連結至正確檔案,

1.  在「電腦」上點右鍵,點選「內容」


2.  在 Windows 7 裡,進入內容選項後,還要從左側挑選「進階系統設定」



3.  於「進階」頁面中,進入「環境變數」



4.  「系統變數」欄位中,找到「path」,並點選「編輯」



5.  先按一下鍵盤上的方向鍵「右」,並輸入一個「分號;」

6.  在分號後放填入 python 2.7 的安裝路徑,一般而言,安裝過程中若沒有指定其他安裝路
     徑,python將會安裝在 C:\Python27



安裝完成後,開啟「命令提示字元」,並輸入:python
確認是否有安裝成功


若 python 安裝成功,將會出現上述畫面。對 python 有興趣的人,可以到網路上看看你教學文件,在此將不繁述。離開此畫面,只需要 ctrl + c 即可離開。



安裝好 python 後,我們還有什麼需要安裝、設定呢?


--  Twitter API  key
--  python 相關函式庫




接著我們先來申請一個 Twitter API  key,請至:https://dev.twitter.com/





點選建立一個  app 後,將要求你登入 twitter,登入後將跳轉至申請頁面,
在頁面中所要填選的資料為:作品名稱、作品簡易說明、網址

填選完成後畫面將跳至申請完成後的 API key 資訊頁面


此頁面請保留,不要離開,因為待會填寫資料將會用到





接著將尚未安裝的 python 相關函式庫全部下載、按照順序安裝:


  1. pyserial ,這個函式庫可以用來監聽 serial port 的觸發事件
  2. simplejsonhttplib2python-oauth2,這三個函式庫要在安裝 python - twitter 之前安裝好
  3. python-twitter ,這是讓我們得以使用 twitter API 發文的函式庫

下載解壓縮後,可看到檔案中有一個 setup.py 檔,
記下這個 setup.py 檔的路徑後,請開啟命令提示字元,並輸入 cd 這個指定,
切換至該目錄底下







切換至該目錄底下後,輸入以下命令,將完自動完成安裝

python setup.py install

其他函式庫安裝步驟相同,請自行安裝



安裝完成後,開啟記事本或 其他編輯器(Notepad++),輸入以下程式碼,並儲存副檔名為「. py」 的程式,例如: test.py。但先別急著複製貼上就存檔,還有兩個地方要修改一下

##Import Libraries
import twitter
import serial
import time
 
##Authenticate with Twitter API
api = twitter.Api(consumer_key='your key here', consumer_secret='your key here', access_token_key='your key here', access_token_secret='your here here') 
 
##Configure Serial Port
arduino = serial.Serial('/dev/ttyUSB0', 9600)
 
 
while 1:  ##Infinite Loop
    status = arduino.readline() ##Wait for new line to come across Serial
    api.PostUpdate(status) ##Post message to Twitter
    time.sleep(3600) ##Wait 3600 seconds
    del status    ##Clear status



1. 填入 API  key


api = twitter.Api(consumer_key='your key here', consumer_secret='your key here', access_token_key='your key here', access_token_secret='your here here')

其中上列這行裡的:
  • consumer_key
  • consumer_secret
  • access_token_key
  • access_token_secret
全都在稍早申請 Twitter API key 頁面中,請自行填入




2. 修改 serial port 

arduino = serial.Serial('/dev/ttyUSB0', 9600)

在 Linux 底下可以不必修改太多上面這段程式碼,只需要瞭解 Arduino 佔用了哪一個 port即可。Windows 底下就要將 /dev/ttyUSB0 改為你所使用的 COM  port 。

如何得知所使用的 COM  port ? 打開 Arduino  IDE 後,將 Arduino 透過 USB 接至電腦,
並觀看 IDE 右下角就會顯示 COM  port 是哪一個了




全都完成設定、安裝後,接著就可以執行看看結果如何了。首先打開命令提示字元,並切換到當初儲存 test.py 檔的目錄下,輸入: python  test.py

輸入完成後,python 就開始持續的偵測 serial port 有無被觸發,若有觸發,將會在 Twitter 上PO出你所預設要 PO 出的文字。

以下影片為執行結果,影片觀看過程中若影像為橫的,請挑選 720P 畫質觀看:



沒有留言:

張貼留言