有了Arduino基本認知後,這篇帶大家認識最常見的Uno rev3硬體周邊與使用須知,我們也會使用這塊控制板來作為這個系列的主軸,所以基本的功能區塊要有一定的熟悉度才算OK的。
1.Arduino Uno 硬體介紹
如同先前所提到的,其實Arduino有很多種的相容板,每塊板在硬體設計上可能會有些許的不同,但其實大家只要記住既然是相容的話,在使用官方所提供的IDE開發時,它所對應的數位或類比腳位都應該是相同的,也就是說其實你不用去管它的內部硬體怎麼設計的,如果你開發過程中發現周邊腳位對應時怎麼怪怪的,第1件是檢查你的外部電路有沒有接錯外,第2件事就是…….檢查你的程式碼吧~(笑),下面是常Arduino Uno Rev3的基本功能圖。
△ Uno 基本功能區塊(圖片取自arduino.cc)
功能上大致可以分成4個區塊,1-數位+PWM接腳區,2-類比輸入接腳區,3-電源接腳區,4-電源輸入與資料傳輸區,JIMI哥接著就來介紹每區的用法。
⊗數位+PWM接腳區
△ 數位與PWM接腳區 (圖片取自arduino.cc)
在Arduino Uno這塊控制板的數位接腳預設是提供14隻數位腳位,編號為0-13,可以輸出PWM的為編號3、5、6、9、10、11共6隻,編號0、1則是與UART傳輸RX/TX腳位共用,可能有些朋友對於{共用腳位}這個概念比較模糊,也或者認為幹嘛共用,腳位每個功能分開不是在設計上更清楚嗎?
JIMI哥這邊解釋一下為什麼會有這種現象發生,其實在單晶片的產品應用來說,其實腳位數目跟成本價格有關,MCU廠商通常會將一個同一核心的設計成多種封裝來更符合不同應用的情境,假設有些人需要腳位功能5隻就好,當然不需要去選擇64腳位的封裝的,浪費了不必要的成本,是吧! 順便來提一下Uno的MCU核心是Atmega328p,猜猜它有幾種封裝?答案是4種(https://www.microchip.com/wwwproducts/en/ATmega328),uno板選擇的是28Pin PDIP封裝的,原因是因為如果手殘不小心搞快壞掉時,方便好維修(笑),只要起子加聶子就可以換一顆新的。各位朋友如果有買過Uno相容板的,應該也有看過所謂【Uno SMD版】、【超值行家版】等,其實就是把28PDIP封裝換成 TQFP或 MLF封裝,價格可以更便宜,使用起來一模一樣,只差壞掉需要用焊槍重新焊上即可,所以會焊接的朋友可以考慮這個版本。
回到共用這個議題, 所以共用的意思就是可以根據使用者的選擇決定這隻腳位該做為什麼用途,提高腳位的使用率。
還有一個需要提醒初學者小地方就是關於編號0與編號1的UART腳位,因為這兩隻腳位線路除了接到排針外,也同時接到了USB轉UART的晶片,在實務使用上如果可以避開這兩支的話,請盡量避開,因為UART在程式除錯階段可以輸出相關的訊息到電腦畫面,可以加速我們程式開發的時間(不然就只能靠LED顯示來判斷囉!),JIMI哥是建議初學者先避開這兩隻會比較好。
⊗類比輸入接腳區
△ 類比輸入接腳區 (圖片取自arduino.cc)
這區就是用來讀取類比電壓的腳位,編號為A0-A5共6支,類比電壓讀取在感測器應用相當廣,像是紅外線、光敏電阻、水位感測器等等,arduino的類比電壓讀取是10bit,也就是說可以細分為1024的等分,如操作電壓是5v時,一等分的電壓就是5v/1024=0.0048v,精度算是不錯。
這邊提一個問題,就是Arduino Uno有類比輸出嗎? 其實在IDE內就有內建的函式庫可以有類比輸出的,但是它的做法比較特別,並不是常見的DAC(digital-analog-converter)架構,而是利用PWM數位輸出去模擬類比電壓,例如PWM Duty =90% 時,而MCU操作電壓是5V時,就可以模擬出類似4.5V的類比電壓了。
小提醒: A0-A5雖然預設是類比電壓輸入功能,其實它也是可以當作是數位輸入輸出腳位的(如果你覺得預設的那些腳位不夠就把它拿來用吧!)
⊗電源輸出接腳區
△ 電源輸出接腳區 (圖片取自arduino.cc)
Uno提供了常用的電源接腳5V和3.3V供電給周邊電路或感測模組使用。 IOREF是與5V相連,目的是作為IO腳位電壓的參考基準;AREF 就是類比訊號輸入的參考電壓,預設是5V,不過如果你想要提高類比輸入的精度時,可以考慮更精準的外部參考電壓或連接到3.3V等,這部分就需要透過軟體方式設定修改,電路再進行連接。
⊗電源輸入與程式傳輸
△ 電源輸入與USB傳輸區 (圖片取自arduino.cc)
Arduino Uno的電源輸入可以採用兩種方式,一個是透過DC-JACK 7-12V的DC電壓,另一個就是USB連接器的5V連接,JIMI哥的建議是如果是做簡單的學習實驗,並沒有電流比較大的負載實驗(如馬達驅動等),可以先直接使用USB連接線直接連接電腦就好,因為一般電腦的USB連接PORT就有500mA的負載能力,應付輕載的實驗應該是綽綽有餘的。
DC JACK的連接除了可以連接9V電池外,也可以接到12V的Adatper,建議都至少有1A左有的驅動能力較佳。當然USB電源連接也可以接常見的USB外接電源。
一般的單晶片如果要進行寫好的程式傳輸,通常得透過特定燒錄器與燒錄腳位(Arduino Uno控制板有保留的,有發現嗎?),將程式檔燒錄進晶片中。但在Arduino的平台中,則可以透過官方的IDE以所謂[韌體上傳]的方式進行,是因為各位朋友所購買的Arduino控制板中的ATmega328P已經被預先燒錄好Bootloader(啟動程式)在裡面,所以只要透過官方的IDE complier好後,直接透過Uno板內建USB轉TTL的晶片的傳入單晶片核心中,這樣就可以省去燒錄器成本與大大降低學習的門檻。
2.總結
以上就是Arduino Uno這塊板子的基本介紹,JIMI哥建議大家有耐心的把這篇文章看完,有個印象即可,日後在電路連接上如果有一些疑問可以再回來複習,這樣學習效果會更好。