第一步就來測試由 Arduino 來自動發送 Tweet. 以前我對推特沒啥特殊印象, 我覺得跟 facebook 一樣, 就是關注別人在幹啥+期待別人關注自己在幹啥. 但不管發了多少 Tweet 或按了多少讚, 事實上, 人都是孤獨的. 我沒那麼多鳥時間來上 facebook 跟 twitter 啦.
但開始做 Arduino 實驗後, 我就注意到幾本書上提到了 Twitter :
- Arduino 自造指南 (Arduino Workshop) :
第 19 章 project#61 : 建造一個 Arduino Twitter 發送器. - Arduino 完全實戰手冊 (Arduino in Action) :
第 8.3 節 : 發出訊息到 Twitter - Arduino 錦囊妙計第二版 (Arduino Cookbook) :
第 15.12 節 : 傳送 Twitter 訊息
以下是 "Arduino 自造指南" 這本書的作法. 需要的材料就是一塊 Arduino, 一塊 Wiznet5100 乙太網擴充板, 使用 UNO 的話很方便, 兩塊板子疊在一起就行了.
首先要去 Twitter 申請帳號 (自己指定的 Email) :
# http://twitter.com/
然後以帳號密碼登入 Twitter. 接著到下面這個第三方網站, 授權讓我的 Arduino 可以透過它存取我的 Twitter :
# http://arduino-tweet.appspot.com/
這網頁底下有一些關於 Twitter 的限制 : 一分鐘內只能發送一個推文, 而且前後兩筆推文內容不可雷同. 此外, 每一個推文需在 140 字以內.
如果已經登入 Twitter 的話, 點 Step 1 超連結會出現 :
按 "授權應用程式" 就會得到一個 Token (令牌), 將其記錄下來 (Arduino 程式要用) :
如果尚未登入 Twitter, 會出現帳號/郵件+密碼登入框, 請先輸入 Twitter 帳密再按 "授權應用程式" :
這個第三方網站 arduino-tweet 是一個中介的角色, 作為 Arduino 的 proxy server, 在 Arduino 與 Twitter 間建立溝通的橋樑, 溝通的憑藉就是所申請的 Token. 此令牌讓我們不需要提供自己的 Twitter 帳號密碼給此第三方網站, 它就能存取我們的 Arduino 與 Twitter 資料.
點 Step 2 的超連結下載 Arduino 的 Twitter 的函式庫 :
# http://playground.arduino.cc/Code/TwitterLibrary
# http://arduino-tweet.appspot.com/Library-Twitter-1.3.zip
將 Twitter 函式庫解壓縮後是一個 Twitter 資料夾, 將其複製到 "文件/Arduino/Library" 下. 但是要注意, 若在此之前已經打開 Arduino IDE 先編輯好程式, 則編譯將會失敗, 說找不到 Twitter.h 這個函式, 請關掉 IDE 再重開就可以抓到 Twitter.h 函式了 :
這樣便可以開始寫 Arduino 程式了, 這裡將 "Arduino 自造指南" 這本書的 project 61 稍作修飾如下 :
//Arduino Tweeter
#include <SPI.h>
#include <Ethernet.h>
#include <Twitter.h>
byte ip[]={192,168,2,106};
byte mac[]={0x00, 0xAA, 0xBB, 0xCC, 0xDE, 0x02};//指定網路卡 MAC 位址 (隨便設)
Twitter twitter("56122**************************************0Nuv10j");
char msg[] = "Hello World!"; //要傳送的 Tweet
void setup() {
delay(30000);
Ethernet.begin(mac, ip); //乙太網路介面初始化
Serial.begin(9600); //設定 SPI 介面速率
}
void loop() {
Serial.println("connecting ...");
if (twitter.post(msg)) { //傳送 Tweet 給 Twitter
int status = twitter.wait();
if (status == 200) { //傳送成功
Serial.println("OK.");
}
else { //傳送失敗
Serial.print("failed : code ");
Serial.println(status);
}
}
else { //無法連線 Twitter
Serial.println("connection failed.");
}
do {}
while (1);
}
將程式編譯上傳後, 在 Twitter 網頁就會看到 Arduino 推送的訊息 "Hello World!" :
Bingo! 大功告成.
當然這只是初步實驗, 應用方面我們可以使用紅外線感測器, 當偵測到有人經過時就送出推文, 這樣透過 Twitter 就能知道是否有人闖入了.
沒有留言 :
張貼留言