作者:陸向陽
以Atmel AVR Mega系列微控器為基礎的Arduino,多少受限於8位元架構,無法擁有更高的運算力與儲存空間,連帶使應用開發無法更高階化發展,而必須尋求其他硬體系統,如此便離開Arduino生態圈,不僅是Arduino生態圈的損失,原有學習、開發等投資也會打折扣。
事實上AVR架構也有32位元版,但沒有16位元版,因為16位元的微控制器,無論是哪個業者都面臨價格不夠低、效能不夠好的尷尬處境,多數業者用8位元發展成本取向應用,用32位元發展效能取向應用。
雖然AVR有32位元版,但環顧市場,32位元微控制器,在2008年後逐漸轉成ARM Cortex-M系列的天下,許多業者專屬的32位元架構微控制器,均面臨市場存續空間的考驗。
因此,Arduino陣營提出另一個升級作法,不使用32位元AVR架構,而是用ARM Cortex-M系列架構,來發展更高階的Arduino系統,此作法於2012年10月22日成形,即所謂的Arduino Due系統板。
Arduino Due簡介
Arduino Due系統板改用Atmel公司的ATSAM3X8E晶片,核心為Cortex-M3,整個晶片提供更高的效能與更大的儲存空間。一般而言,Arduino系統上的AVR晶片,多以8或16MHz時脈在運作,但ATSAM3X8E為84MHz,又是32位元架構,自然比過往版本快上許多。
儲存方面,一般Arduino是16KB或32KB的程式碼儲存空間,部分到256KB,但Due可以到512KB;RAM方面一般是0.5KB~8KB,但Due是96KB;I/O接腳也比較多,達到54-pin,比過往典型14-pin還多。不過,Due缺乏內建的EEPROM,這點比較麻煩,有此需求的話,必須採外接電路設計了。
另一個麻煩是,ATSAM3X8E晶片的I/O接腳只能承受3.3V電壓,無法如過往般承受5V電壓,這點必須注意,強行接入5V電壓會使接腳、甚至晶片損毀。
簡單來說,Due就是給原來的Arduino開發者一個提升硬體效能、資源的捷徑,而不用改換其他系統,但想開發Due用的程式,必須改用Arduino IDE 1.5.x版的開發工具才行,不能再用傳統的Arduino IDE 1.0.x了。
也因為Due效能、資源更好,自然也比較貴了,一般的Arduino Uno Rev3只要20歐元就可以買到,Due需要到36歐元,以上都還不含歐洲加值稅。若在台灣買,以Arduino官網揭露的5家台灣經銷商,不是每家都有賣,也不是每家都賣一樣價錢,有賣的店約標價1,689、1,700、1,890元台幣不等。
除了Due,還能選什麼?
想使用Cortex-M系列的Arduino,目前只有Due可選嗎?短期內答案為「是」,但筆者不排除未來非官方的業者也會推出,另外Arduino官方自己也在2014年5月推出另一款以Cortex-M系列為基礎的Arduino系統板,稱為Arduino Zero,是以Cortex-M0+為基礎的,但目前似乎仍在Beta外部測試階段,好像還沒開賣,Zero的效能、硬體資源比Due少,估計也會比Due便宜,但仍是會比傳統8位元AVR晶片的系統強悍。
如果還是不滿意Due提供的效能,那麼還有兩種選擇,一是換用Intel的伽利略(Galileo)系統板,同時開發工具也要換成Arduino IDE for Intel Galileo,不再是使用Arduino IDE 1.5.x,且晶片架構變成x86,價格拉高到58.9歐元。
或者改用PIC.duino Net、Energia等系統板,但開發工具就更不相容了,只有接腳相容Arduino,表示可持續沿用過往的Arduino Shield功能介面卡而已,或者可以改用其他的IDE工具,但只保證函式庫相容,程式改寫程度大,但即便這樣子,還是比整個改用樹莓派(Raspberry Pi)好,因為樹莓派的硬體仍有獨賣性,開放性低於Arduino,且接腳與Arduino不相容。
小結
已經使用Arduino的人,若期望更高階的開發,還是建議用Due,若嫌Due太貴則稍微等一下Zero,真的都不合,再改用Galileo,還是不合再用只有接腳、函式庫相容的系統板,這些統統不成了,就得換系統,如此才能確保過往的軟體學習、開發等投資,獲得盡可能的價值延續、延伸等保障。
前往上篇:尋求更強悍的Arduino(上):Arduino Yún
- 創客積木M5Stack加入LLM戰局 - 2024/11/29
- MLPerf大語言模型、生成式AI測項觀察 - 2024/11/27
- Sony強力加持!樹莓派發表專屬AI攝影機 - 2024/10/28
2015/09/09
您好~我是arduino的初學者,目前使用arduino mega2560
但是因為中斷函數的I/O針腳不足,而想換arduino due
但是不知道該怎麼處理I/O電壓的問題?
mega2560工作電壓5V而due是3.3v
我有幾個旋轉曾量型編碼器使用電壓是5v~30v
若是使用arduino due不知道該怎麼處理電壓問題?
若編碼器電源使用5v 而A.B.Z相訊號給Arduino也是5v嗎? 怕燒壞了due
另外還有幾個步進馬達驅動器最低的輸入電壓也是5V..換用due只有3.3v
差了那麼多不知道該怎麼解決?
懇請前輩指教~謝謝
2020/03/02
Sam 您好:
比較高階的晶片通常不再使用5V而是使用3.3V、2.5V甚至1.8V運作,連帶其I/O通常也會跟著降低電壓,所以持續用5V是有可能燒壞晶片的,建議仔細查一下晶片的Datasheet,看看是否其I/O輸入的容忍電壓範圍是否足夠容忍5V?但估計不太樂觀。網址在此:https://www.microchip.com/wwwproducts/en/ATsam3x8e
建議輸入時用一般線性降壓即可,壓差不大,變成廢熱消散,就給它廢熱消散,若是輸出則建議用Charge Pump直接倍數升壓,這方面屬於電源電路的設計,可以去閱讀一下相關資料。