我是潘,曾經是個工程師。這是為 Ardui.Co 製作的 「Arduino 公開課」 系列的入門教程。Arduino 版本很多,我們一直使用的 Uno 只是其一。雖然 Uno 兼容性好、易上手,但有點老舊了。現在我們將介紹一下,其他功能更強大的版本。有任何疑問請在評論區提出,我會逐一回答。

Arduino 版本有多少?先看看官方文檔的羅列:

綠色是標準規格的開發板,紅色是微型化的版本,橙色是套件。但不止這些,Arduino 是一個開源的平台,這意味著其電路、程序、庫都是公用的,可以被複制再開發。實際上,現在延伸出來的版本已經遠遠超過上面羅列的數量。我們用的比較多的是 Uno、Leonardo、Mega2560、Yun、101 以及其微型化版本,Micro、Pro Mini等。

1、簡單即美的 Uno

我們一直使用的 Arduino Uno 目前已經發展到第三版(R3),但它不僅僅是一塊適合入門學習的開發板。我認為 Uno 最能代表Arduino 的哲學,簡單、兼容、庫非常成熟,可以輕鬆獲得擴展,足以滿足絕大部分的開發需求。

它的姐妹版本是 Pro Mini,同樣基於 ATMega328 系列控制晶元,功能、埠 映射 與 Uno 完全一模一樣,但尺寸只有1/4。

Pro Mini 不包含USB 轉串口模塊,因此寫程序需要一個轉換器。目前常見的有 PL2303、CH340、CP2012 等轉換模塊。刷機方法也很簡單,除了兩條電源線,模塊的 TX 接 Pro Mini 的 RX、RX 接TX 即可。IDE 中同樣使用 Uno 開發板來刷。順便提醒一下,Pro Mini 有5.0V 和 3.3V 兩個版本,需要注意輸入電壓。

開發流程中,一般使用 Uno 來開發原型。設計完成後,再用 Pro Mini 實現成品的小型化。

2、無所適從的 Leonardo

Arduino Leonardo 常常被宣傳為 Uno 的升級替代品,價格相近但功能更強大。但我看來它並非是一個優先的選擇。

不同於 Uno,Leonardo 直接使用了 ATmega32u4 的 USB 通信功能,取消了USB 轉串口晶元。這使得Leonardo不僅可以作為一個虛擬的(CDC)串列/ COM埠,還可以作為滑鼠或者鍵盤連接到計算機。其次 Leonardo 提供了4 個外部中斷,而 Uno 只提供了2個。

但是,Leonardo 在這兩點的設計上卻存在很多矛盾之處。首先,其4路中斷埠分別為: D0、D1、D2、D3。但D0、D1 是USB轉串口的介面,而 D2 和 D3 是 I2C 介面(後面課程會詳細介紹)。

Arduino 開發過程中,USB轉串口幾乎每次都要用到的,而且如果經常要到串口監測數據,因此D0、D1 就會被一直佔用。I2C 是非常重要的擴展埠,後面的課程會講到,不少感測器、模塊都需要它,D2、D3 也會被佔用了。

因此要在 Leonardo 上同時使用 USB轉串口、I2C、外部中斷3個功能是沒辦法用硬體實現,只能軟體模擬。我們一般把中斷改為軟體的模式,因為最容易實現,不過,響應速度、精確度和CPU效率都會收到影響。而 Uno 則不存在這個問題。

再如,SPI (後面課程會詳細介紹)與 ICSP 復用,會導致擴展盾上所有的 SPI 部件都無法使用硬體SPI。

Leonardo 的優點有 PWM 埠數量翻了一倍,模擬輸入增加到7個等,但這些在 Uno 上都可以通過 I2C 來擴展實現。另外,實現小型化時,Uno 衍生出來的 Pro Mini 價格也遠低於 Leonardo 的 Mrico。

何況 Uno 使用的 ATmega328P 晶元,直插封裝常見且價格便宜, DIY 各類系統非常便利 ,而 Leonardo 使用的 ATmega32u4 晶元,只有 BGA 和 PLCC 封裝,DIY 難度陡增。

總的來說,初學不建議使用Leonardo。

3、功能強大的 Mega2560

Mega2560 應該是目前功能最強大的開發板,一共54個IO埠,其中包含 16 路模擬輸入、15個支持PWM、6路外部中斷,相比之下Uno只有14個IO埠、6路模擬輸入、6個PWM和2路中斷。而且Mega2560 同時支持多大 4 路串口,同時,ROM 增加至 256 KB、SRAM 達 8 KB,均遠大於Uno。

Mega2560提供強大的兼容性,支持Uno的擴展盾或模塊均支持Mega2560。不過,Mega2560供電與Uno 一樣薄弱,如果感測器多,建議採用外部供電的模式。

我認為,Mage2560價格比較昂貴,不過,由於兼容性好,如果希望一步到位,也不失為一個選擇。

4、英特爾來戰 Arduino/Genuino 101

最初 Arduino 都是基於 AVR 架構的控制晶元,如 ATMage328P 等。但101不同,它是基於Intel? Curie? 模塊。該模塊包含了兩個內核,一個x86 (Quark)和一個32位ARC 架構內核,兩個內核的主頻均為32MHz。英特爾工具鏈可橫跨兩個內核優化編譯用戶的程序設計,從而完成極具挑戰性的開發任務,具體請參與官方文檔。

埠方面,101配備了14路數字輸入/輸出引腳(其中4路可用於脈衝寬度調製(PWM)輸出)、6路模擬輸入,最厲害的是所有埠都支持外部中斷!其工作電壓和輸入/輸出(I/O)電壓為3.3V (穩壓晶元最大可提供 1500mA 電流),但所有的引腳都具有5V過壓保護。另外,101 還內置了 Bluetooth LE 和 6軸加速計/陀螺儀。 軟體方面,除了 Timer 等庫,101絕大部分程序和庫,都與UNO 兼容。

101 價格比較貴,雖然支持 Intel 為其設計的實時操作系統,並內置了6軸感測器和低功耗藍牙,但前者對初學者來說意義不大,後者也可以通過外界模塊實現。如果不是土豪,還是建議購買 Uno 。


推薦閱讀:
相关文章