2012年4月29日 星期日

Arduino Introduction 簡報

我整理了一份介紹 Arduino 的簡報,這份簡報說明什麼是 Arduino、各種 Arduino 板子與相容板、各式各樣的擴充模組與感測器,最後簡介 Arduino 的各式應用,希望可以讓更多朋友知道 Arduino 能做什麼應用。

2012年4月15日 星期日

如何讓 IRRemote 支援 ATmega2560?

要怎麼讓 IRRemote Library 可以支援 ATmega2560 呢?方法是編輯 IRRemoteInt.h,搜尋底下字串:

defined(__AVR_ATmega1280__)

把所有出現的地方改成這樣:

defined(__AVR_ATmega1280__) || defined(__AVR_ATmega2560__)

或是直接用我已經改好的版本:

https://github.com/coopermaa/Arduino-IRremote

除了更新 Library 外,還有一件事要特別注意,當你在使用紅外線發射功能的時候,紅外線發射器必須接到 ATmega2560 的 pin 9 才行。

image
▲ Arduino Uno 或 Duemilanove 的板子: 紅外線發射器要接到 pin 3

image
▲ Arduino Mega 1280 或 Mega 2560 的板子: 紅外線發射器要接到 pin 9

參考資料

Arduino 1.0 的 ArduinoISP 無法運作的解法

Arduino-0022 的 ArduinoISP 我已經用了很久都沒碰到問題,在升級到 Arduino 1.0 後,我發現當我用 Arduino 1.0 上傳 ArduinoISP 後,居然沒辦法燒錄 target board,每次都會出現這個錯誤訊息:

avrdude: stk500_paged_write(): (a) protocol error, expect=0x14, resp=0x64
avrdude: stk500_cmd(): programmer is out of sync

image

如果切回 Arduino-0022 然後重新上傳 ArduinoISP,就又可以燒錄 target board。

比較 Arduino-1.0 和 Arduino-0022 兩個版本的 ArduinoISP,程式碼是一樣的,所以很可能是 Arduino-1.0 的 library 做了什麼改變導致 ArduinoISP 無法正常運作。果然,Issue 661 提到了這個問題,正是因為 Arduino-1.0 HardwareSerial.cpp 把 SERIAL_BUFFER_SIZE 從原來的 128 改成 64,導致 ArduinoISP 發生 buffer overflow。

2012年4月12日 星期四

麵包板 USB 名片卡 (ATtiny45/85)

Frank Zhao 用 ATtiny85 做了一個 USB 名片卡(USB Business Card)。當卡片插到 USB 埠的時侯,它會偵測 Caps lock 有沒有被連續按下三次,一旦偵側到,就會自動把聯絡資訊印到 text editor 的視窗上。底下有示範影片:

現在我們就用 ATtiny45/85 做個麵包板的 USB 名片卡。

所需材料
  • ATtiny85 或 ATTiny45 (ATtiny45/85-20xx 版本,非 ATtiny45/85-10xx 低壓版本)
  • 68 歐姆電阻 2 顆
  • 1k5 或 2k2 歐姆電阻 1 顆
  • 3.6V 穩壓二極體 (Zener diodes)
  • 麵包板和跳線些許
  • USB 連線接
  • USB 名片卡韌體:usbbusinesscard-20120429.zip
  • avrdude-GUI
製作 USB 連接線

首先要做一條可以插到麵包板上的 USB cable,先做剝線,然後把四條線焊接到 pin header。USB Connector 有四條線,pinout 如下:

image

2012年4月11日 星期三

修改 ATtiny85 的時脈 (clock speed)

ATtiny85 的時脈預設是 1 MHz (也就是每秒震盪百萬次),要修改時脈必須調整 Fuse 位元的設定,底下說明怎麼把 ATtiny85 時脈改成 16 MHz。

軟體與材料

你需要準備下列這些材料:

  • Arduino Uno 或 Duemilanove
  • ATtiny85 晶片
  • 麵包板
  • LED 一顆
  • 跳線些許
  • avrdude-GUI
準備工作

請先參考「使用 Arduino 燒錄 ATtiny」這篇先把 Arduino 變成燒錄器,並且連接 Arduino 與 ATtiny。

image

2012年4月10日 星期二

使用 Arduino 燒錄 ATtiny

image

上禮拜六去寶藏巖參加 Openlab Taipei 舉辦的 Our do ino 聚會,跟大家一起學習如何使用 ATtiny85 晶片。本來計劃要用 ATtiny85 搭配 V-USB 製作 USB 名片卡,因為對 ATtiny85 不夠熟悉,中途卡了個關,沒有試成功(PS:可能是 ATtiny85 運作頻率沒設正確)。不過,至少我們學會了怎麼用 Arduino 燒錄 ATTiny。這篇是如何使用 Arduino 燒錄 ATtiny 的記錄。

我們用的是 ATtiny85 晶片,雖然如此,這篇所說的方法對 ATtiny84 (84/44/24), ATtiny85 (85/45/25) 和 ATtiny2313 這些系列的晶片來說應該都適用。

材料

你需要準備下列這些材料:

  • Arduino Uno 或 Duemilanove
  • ATtiny85 晶片
  • 麵包板
  • LED 一顆
  • 跳線些許
安裝 arduino-tiny
  • 下載 arduino-tiny
  • 開啟檔案總管,切到 Arduino sketchbook 資料夾(通常是 "C:\Documents and Settings\username\My Documents\Arduino"
  • 在 sketchbook 資料夾下建立 hardware 資料夾
  • 解開 arduino-tiny 後,把裏面的 tiny 這個資料夾 copy 到 hardware 資料夾
  • 重新啟動 Arduino IDE
  • Tools > Board 選單裏,你應該會看到像下圖一樣多出很多 ATtiny 的板子可供選擇