顯示具有 Weekly Arduino Learning 標籤的文章。 顯示所有文章
顯示具有 Weekly Arduino Learning 標籤的文章。 顯示所有文章

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 畫質觀看:



2012年5月13日 星期日

Arduino Twitter Poster -- Arduino Twitter Po文機器人

今天早上起床後參考了一下別人的作品後,試著把它實作出來,
感覺不難,主要是 python 相關的週邊函式庫比較麻煩一點。

目前這是 Beta 版本的陽春作品,之後還會加上其他功能,
再看看能不能修改為也能在 Plurk 和 Facebook  po文。

本來打算今天要寫份教學,但是今天是母親節,
所以下週軍中休假再回來寫教學吧!

祝大家母親節快樂!





Marcus.

Page 3 - 利用 Arduino 控制2顆伺服馬達

Page 3 - 利用 Arduino 控制2顆伺服馬達 
             (Control  2  servo  motors  with  an Arduino )

利用 Arduino 控制一顆伺服馬達,很容易,
在官方網站,甚至隨意搜尋都能找到 sample  code 

但同時控制兩顆轉向不同位置,似乎就是很多人頭痛的問題

在單晶片領域中,要同時控制兩顆馬達轉向不同位置,
可以利用軟體方法,也可以利用硬體方法

詳細的內容請上 Arduino 官方網站,點選左上方 playground 進入,
並於左側選單中點選 Interfacing With Hardware,
接著在網頁中搜尋: Servos  ,將會有更多控制多顆伺服馬達的說明


在此我們提供利用 Servo.h 與副程式的軟體方法
來達成同時控制兩顆伺服馬達的需求,source  code 如下:
#include <Servo.h>

Servo servoLeft;          // 宣告左邊伺服馬達
Servo servoRight;         // 宣告右邊伺服馬達

void setup() { 
  servoLeft.attach(10);  // 將 Pin 10 指定為左邊伺服馬達
  servoRight.attach(9);  // 將 Pin  9 指定為右邊伺服馬達
} 

void loop() {       
  initial();        // 馬達位置歸零
  delay(2000);      // 執行後停止兩秒
  
  same_degree();    // 左右伺服馬達同樣各轉30度        
  delay(2000);      // 執行後停止兩秒
  
    initial();        // 馬達位置歸零
  delay(2000);      // 執行後停止兩秒
  
  dif_degree();     // 左伺服馬達轉30度,右伺服馬達轉150度
  delay(2000);      // 執行後停止兩秒
}

/* 以下為副程式宣告 */

void initial(){
  servoLeft.write(0);
  servoRight.write(0);
}

void same_degree() {
  servoLeft.write(30);
  servoRight.write(30);
}

void dif_degree() {
  servoLeft.write(30);
  servoRight.write(150);
}

以上為完整的程式碼


#include <Servo.h>
程式一開始,我們就先宣告引入 Servo.h 檔,
這樣後續的伺服馬達功能宣告、控制,我們才可以正常使用。


Servo servoLeft;          // 宣告左邊伺服馬達
Servo servoRight;         // 宣告右邊伺服馬達
引入 Servo.h 檔後,我們就可以 Servo 宣告左右伺服馬達變數


完成以上步驟後,就只需要按照  Page 2 中提到的程式架構進行功能撰寫,
如此一來伺服馬達就可以依照指定角度進行旋轉了。



以下影片是 Arduino 經由本文中的程式同時控制兩顆馬達同時轉向30度;
與單顆轉向30度,另一顆轉向150度的範例影片。
影片中的紅色板子,是利基科技的教育學習板,
本實驗僅利用教育學習板上的麵包板,並無額外利用其他控制器。:




透過以上的程式與影片說明,希望能讓你學習到如何控制兩顆伺服馬達,
做出更多有趣的作品!


Marcus.

2012年5月12日 星期六

Page 2 - Arduino application 介面介紹與使用

Page 2 - Arduino application 介面快速介紹與使用

經由 Page 1 的硬體初步連接與驅動程式安裝後,
接下來進入 Page  2 :認識 Arduino  application 與使用



於 Page 1 所下載的 Arduino  Software ,
名稱為:Arduino application

Arduino  application  有些玩家會習慣直接稱呼他為 Arduino  IDE,
這也是可以的,畢竟他將編輯區塊與編譯器整合在一起,
在使用上與使用其他的大型 IDE 的觀念大同小異。

在 Page  2 中,除了 Arduino  application 的介面快速介紹外,
也會說明如何利用 sample  code 撰寫第一個 LED 閃爍的程式。



所需材料:


--  Arduino 一片與安裝好驅動程式的電腦一台
-- 至官方網站下載 Arduino application


解壓縮下載的檔案



資料夾內容物一覽






點選資料夾中綠色 icon  Arduino.exe ,啟動 Arduino  application,啟動過程如下圖所示:
啟動完成後介面一覽




由下圖中可以看到各種不同的功能區域

綠色箭頭:選單區塊
黃色箭頭:編譯功能選單區塊
橘色箭頭:檔案名稱(檔案預設名稱為: sketch_日期英文字母
紫色箭頭:顯示已選定的 Target  board 與通訊埠
紅色框框:狀態顯示區塊( 用以顯示編譯成功、失敗與其他訊息



在此針對檔案名稱稍作提醒:

在 Arduino  application 中,若沒有指定檔案名稱時,
預設的檔案名稱會如同以下命名:

sketch_日期英文字母

sketch_ 後方的日期將以電腦時間為主,
而英文字母的部份將會從 a 填至 z ,
用以區分同一天中所建立的不同檔案

各功能選項的詳細說明,請點選右上角的 Help -> Environment,
裡頭有詳細說明  




接下來我們要利用內建的 sample  code 進行我們第一次的實作,
開啟 sample  code 有兩個方法:

1. 點選 Open 鍵


2. 點選 File -> Examples 


我們第一個實驗要測試 Arduino 上的 LED 測試燈是否正常,
以及從 sample  code 瞭解如何撰寫自己的程式

請點選: Examples -> 1. Basics -> Blink



點選後 Arduino  application  會開啟另一個新視窗,檔案名稱命名為: Blink
Blink sample code



/*
  Blink
  Turns on an LED on for one second, then off for one second, repeatedly.
 
  This example code is in the public domain.
 */

void setup() {                
  // initialize the digital pin as an output.
  // Pin 13 has an LED connected on most Arduino boards:
  pinMode(13, OUTPUT);     
}

void loop() {
  digitalWrite(13, HIGH);   // set the LED on
  delay(1000);              // wait for a second
  digitalWrite(13, LOW);    // set the LED off
  delay(1000);              // wait for a second
}

以上是 sample  code 的原始碼,若找不到 sample  code 的人也可以複製貼上


sample  code 中  /*  */  中間所夾的訊息,和 // 後方的訊息都是註解
並不會被編譯器當作是程式碼的一部分,僅是程式的說明


對 Arduino 程式設計而言,程式的主架構如下:

void setup(){
. . .
}

void loop(){
. . .
}





在 setup( ) 區塊中,指定函數或腳位的預設值:

  pinMode(13, OUTPUT); 

利用 pinMode 函數指定第13腳位,並設定為輸出功能





在 loop( ) 區塊中,用來執行設計者想要的功能,並不斷執行下去:

  digitalWrite(13, HIGH); 
  delay(1000);             
  digitalWrite(13, LOW);    
  delay(1000);    

先利用 digitalWrite 函數指定第13腳位輸出為 HIGH,
並持續1秒鐘(1秒鐘 = 1000 ms ),
再利用 digitalWrite 函數指定第13腳位輸出為 LOW,並持續1秒鐘

因為上述的程式片段處於 loop ( ) 中,因此將不斷循環下去,直到電源拔除為止
瞭解程式後,準備下載至 Arduino



下載前必須先檢查硬體選項與通訊埠是否選擇正確
選擇正確的 Arduino 版本



選擇通訊埠


尋找通訊埠:

     若不清楚自己的 Arduino 使用了哪個通訊埠 COM  port,只需要前往裝置管理員
就能看到自己的通訊埠是使用哪一個了





Arduino 版本與 COM  port 設定完畢後,可於 application 視窗右下角看見設定明細





將程式下載至 Arduino 前,我們要先將程式碼進行編譯、驗證,
檢查是否有誤,若沒有任何問題,我們就可以進行下載。
點選左上角Verify進行編譯、驗證



點選左上角Upload



下載過程中 Arduino 上的 TX、RX 燈號應該會不斷閃爍。當停止閃爍時,
位於 Digital Pin 13 下方的 LED 燈就會開始依照程式不斷閃爍,以下影片為執行結果




以上是本週的 Weekly   learnign ,透過上面的介紹,相信你也已經學會怎麼設定、下載程式到
Arduino,祝你有個好的學習成果!


Marcus.



2012年5月6日 星期日

Page 1 : Prepare

Page 1 : Prepare


本系列文章是利用我當兵期間休假所寫得 weekly learning  系列,
文章追求的學習目的是:快速學習

由於是利用我本身的零碎休假時間所寫得文章,因此沒有辦法把很多原理講解的
非常詳細,只需要瞭解基礎的電子電路概念與程式,
並按照本系列文章的教學作一步一步作就保證能完成作品。

廢話不多說,讓我們開始 Page 1 的內容吧!


所需材料:


--  Arduino 一片 ( Diecimila、Duemilanove、UNO 或相容版本 )
--  具有一端 AB 接口 ( AB接口造型為梯形)的 USB 傳輸線
--  Arduino Software



Arduino 一片

具有 AB 接口的 USB 傳輸線



進入 Arduino 下載 Arduino Software



選擇所需的作業系統版本 Arduino Software




上述所需材料都備妥後,將 USB 傳輸線連接好 Arduino 與電腦,
並檢驗電腦端是否有識別到 Arduino 這個新加入的硬體裝置,
以及 Arduino 是否有通電,如下圖:


電腦端:


                           
電腦端顯示已安裝 Arduino 驅動程式


Arduino 端:

Arduino 端的 PWR 電源燈恆亮




Note : 
           若你所採用的 Arduino 是較舊的版本,例如:Diecimila 版,
           請注意電源供應來源的 Jumper 是否有設定好來源,
           USB 設定為指定 USB 供應電源;EXT 設定為指定外接供應電源

Diecimila 版 電源端 Jumper 設定



到這為止,你已經完成了 Page 1 : Prepare ,下一個章節 Page 2 : Setup ,
我們將會說明 Arduino  Software 介面中的各個按鈕與功能說明。


Marcus.

2012年5月5日 星期六

Weekly Arduino learning 系列文章 -- 前言

本網誌和團隊荒廢已久,有很大的責任歸屬是我該負擔的。

從碩班論文初稿、口試、入伍至今,有太多的不得已讓我沒法好好研究、貢獻、教學。最近和人合組了一個 D.I.V.E 的粉絲團後,不但人氣不高,連夥伴都被其他粉絲團吸引走了 XDD

由此可知我自己有多可恥,也多沒有吸引力,更讓我反省我的產出和研究實在太少。有鑑於此,我決定每週至少發表一篇有關於 Arduino 的學習心得,或是教學文章,不論內容的好壞、詳細與否,我都會盡力po上文章。

至於其他領域的文章,我會視情況和餘力也慢慢添增。
也期望各位能給予指教和鞭策,讓我更瞭解各位的學習需求和熱情在什麼地方!

希望這次的系列文章,可以驅策自己,也讓大家一起繼續 Dive  in technology !

Marcus.