前言:
各個Arduino產品其實都是對Arduino最小系統的各種功能擴展與集成,萬變不離其宗,如果自己會做Arduino最小系統了,就可以很方便地定製出特殊功能的專用Arduino。另外,相信通過這篇文章,大家也會改變「Arduino就是買來的一塊控制板」的印象。
我們就用市面上最常見的ATmega8晶片來介紹怎樣自己搭建一個最小系統。先來看一下晶片實物圖(見圖1),這是一個標準DIP封裝的ATmega8。
圖1 DIP封裝的ATmega8
然後我們再看一下DIP封裝的ATmega8晶片的引腳圖(見圖2),每個引腳對應的是Arduino的哪個埠,圖上也已經標出。
圖2 ATmega8晶片引腳及與Arduino埠的對應關係
硬體連接
一個最小系統,我們只需要一個16MHz晶體振盪器與兩個22pF電容,按照如圖3所示的樣子連接9、10引腳即可,大家可以參照在麵包板上的實物連接來看。
最小系統的硬體部分其實就這麼簡單,但是Arduino之所以叫做Arduino,並不單單是硬體,一定要有配套的軟體,我們現在就用Arduino 1.0.1 IDE把Bootloader下載進這個最小的硬體系統。
圖3 Arduino最小系統連接方法
通過下載器下載程序
下載器使用USBTINYISP,ICSP接口的1號口接D12,3號口接D13,5號口接RESET,2號口接VCC,3號口接D11,6號口接GND,如圖4所示。
圖4 Arduino最小系統與USBTINYISP下載器連接
先把USB線接上,給USBTINYISP安裝驅動後,我們點擊進入Arduino 1.0.1 IDE,「板卡」選擇「Arduino NG or olderw/ATmega8」,
「編程器」選擇USBTINYSIP,點擊「燒寫Bootloader」,就可以看到下載器的BUSY燈開始亮,過不到1分鐘後,Bootloader就下載好了,如圖5所示。
然後我們打開官方例子裡的BLINK代碼,如圖6所示,也就是讓D13引腳輸出1s高電平,然後輸出1s低電平,循環往復,如果D13引腳接上一個LED,就會有閃爍的效果。
圖6 打開官方例子裡的BLINK代碼
這裡很關鍵,編譯程序後,選擇「文件」里的「使用編程器下載」,如圖7所示。下載好以後,給D13引腳接上一個LED,就可以看到LED在閃爍了。
圖7 編譯程序後,選擇「使用編程器下載」
通過串口下載程序
除了使用編程器下載,我們也可以對下載好Bootloader的最小系統通過串口下載,但是因為麵包板電路的電器環境比較差,無法使用高速通信的Bootloader,所以如果要進行下面的最小系統實驗,我們需要更換0022版本的IDE。
首先,按照上面的步驟重新給ATmega8晶片刷0022 IDE的ArduinoNG控制板的Bootloader(此Bootloader速度慢一些,但是容易實現手工復位下載程序)。
我們給D13引腳串聯一個220Ω的電阻和一顆LED(用作指示燈);給RST引腳串聯一個10kΩ電阻,接VCC;同時再給RST引腳接一個按鈕,按鈕另一端接GND,用來做手工復位。實物連接如圖8所示。
圖8 在麵包板上連接電阻、LED和按鈕
然後,我們把USB TO TTL的VCC接最小系統麵包板上的VCC,GND接GND,TX接D0,RX接D1,如圖9所示。
圖9 Arduino最小系統與USB TO TTL連接
運行Arduino 0022 IDE,「板卡」選擇「Arduino NG or olderw/ATmega8」,選好識別出來的埠號,同樣選擇BLINK程序例子,編譯,下載。
請注意,下載時有一個最關鍵的步驟,那就是在點擊下載按鈕後(見圖10),要立刻手工按一下麵包板上的復位按鈕,程序才可以正常下載。下載好以後,我們就可以看到LED在閃爍了。
圖10 點擊下載按鈕後,要立刻按一下麵包板上的復位按鈕,程序才可以正常下載。
Arduino最小系統只是一個系統運行的最低要求,其他可以根據自己的實際需要進行擴展,做出來自己個性化的Arduino。