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 如下:
完成後的 USB cable 如下:
▲ 圖片來源:Code an Life
連接 ATtiny45/85
參考底下麵包板電路連接 ATtiny45/85 的線路:
▲ 圖片來源:Code and Life
註:上圖左下角 reset pin 上的 4k7 歐姆電阻可省略,另外 ATTiny45/85 晶片上有一點的地方就是第 1 pin,亦即 Reset pin。
電路圖如下:
把 Arduino 變成燒錄器
我們要用 Arduino 來燒錄 ATtiny 晶片,所以必須先把 Arduino 變成燒錄器 (In-System Programmer, ISP),方法是:
- 啟動 Arduino IDE
- 打開 File > Examples > ArduinoISP 這支程式
- 注意:如果你用的是 Arduino 1.0,你必須先修改 ArduinoISP 的程式,把 heartbeat() function 的 delay(40) 改成 delay(20)。詳情請見這篇的說明。
- 到 Tools > Board 選擇你的 Arduino 板子,例如 Uno 或 Duemilanove
- 上傳 ArduinoISP 程式
連接 Arduino 與 Attiny
照下圖連接 Arduino 與 ATtiny:
接腳連線說明:
- ATtiny Pin 4 接到 Gnd
- ATtiny Pin 8 接到 +5V
- ATtiny Pin 1 (Reset Pin) 接到 Arduino Pin 10
- ATtiny Pin 5 接到 Arduino Pin 11
- ATtiny Pin 6 接到 Arduino Pin 12
- ATtiny Pin 7 接到 Arduino Pin 13
實物照片:
燒錄 USB 名片卡程式
參考下圖設定 avrdude-GUI:
其中:
● avrdude.exe File: 設定 avrdude.exe 所在的位置,例如 "C:\arduino-1.0\hardware\tools\avr\bin\avrdude.exe"
● Programmer: 選擇 "Atmel STK500 Version 1.x firmware (stk500v1)
● Port: 設定 Arduino 連接的 Serial Port,我 Arduino 接在 COM5,所以選 COM5
● Device: 選擇 "ATtiny85 (t85)" 或 "ATTiny45 (t45)"
● Command line Option: 設定為 -b 19200
● Flash: 指定韌體檔的位置,ATTiny85 請用 businesscard85.hex,ATTiny45 請用 businesscard45.hex。
接著 "Erase – Write – Verify " 把程式燒錄到 ATtiny45/85 晶片上。
調整時脈
還有一件事,記得把 ATtiny45/85 時脈改成 16 MHz,不然不會動。時脈的調整方法一樣是用 avrdude-GUI,在 Fuse 欄將 hFuse 設定為 D4,lFuse 設定為 C1,接著按下 Fuse 旁的 Write 鈕,這樣就會把 ATtiny45/85 的時脈改成 16 MHz:
測試
先拔掉 Arduino 的電源,然後把剝過線的 USB cable 接到電腦上,這時候「裝置管理員」視窗裏會多出一個「USB 人性化介面裝置」:
如果有的話,應該就沒問題的了。接著開個記事本或任何文字編輯器,然後按 3 下 Caps Lock 按鍵,名片卡上的聯絡資訊就會自動印出囉。
修改名片資料
現在名片卡上是 Frank Zhao 的資料,如果你要修改名片資料,請打開 main.c 到主迴圈修改 puts_P() 這行:
while (1) // main loop, do forever
{
…
puts_P(PSTR("Frank Zhao\n\nEmail: contact@frank-zhao.com\n…"));
blink_count = 0; // reset
…
}
然後請到官網下載最新版 WinAVR,並按照指示安裝,接著重新編譯程式:
make clean
make
編譯好的 businesscard.hex 會放在 output 資料夾裏。重新用 Arduino 燒錄到 ATtiny45/85 晶片上就行了。假如你用的是 MAC 沒辦法用 WinAVR,也許可以試試 CrossPack 。
cool!我也想來玩玩不過這顆IC好像不好找?
回覆刪除我手上這顆是 Openlab Taipei 朋友買的
回覆刪除他好像是在淘寶上買的
您好,請問ATTINY85是否可以使用藍芽模組呢?
回覆刪除謝謝!您的文章是受益良多!
不管是 8051/AVR/PIC,只要有 UART 介面應該都可以跟藍芽模組連接
回覆刪除可惜 Attiny85 剛好沒有 UART... :(
不過,Attiny85 有 USI (Universal Serial Interface),也許你可以參考一下,網路上有人說照著 AVR306 Application Note 做,也可以把 USI 當成 UART 用,:
http://www.atmel.com/Images/doc4300.pdf