Arduino 與樹莓派 Raspberry Pi 相比各自有什麼優缺點?

對於一個只有一點 java 基礎的初學者而言哪個更好上手?


因為近兩年內有家裝的需求,考察了市面上的智能家居方案,要麼不靠譜看不上眼,要麼價格高得離譜。想著自己原來也搞過一段時間單片機,Linux 靠著 Google 和 StackOverflow 也能解決一些問題。於是開始嘗試 Arduino 和 RPi 在家居控制方面的各種實踐。總結一些想法給大家作為參考:

  1. RPi 和 Arduino 兩個完全不同運算水平的平台。畢竟 RPi 使用的是一顆運行在 700MHZ 的 ARM11 CPU;而常用的 Arduino UNO 則是一顆在工業控制領域常見的 8-bit ATmega328,最高運行頻率僅 20MHz。
  2. RPi 可以運行完整的操作系統,如 Debian 等常見 Linux 發行版 - RPi Distributions。這意味著你可以使用你熟練的語言(如 Python、Java)和熟悉的庫來進行開發,同時後台運行多個進程也毫無壓力。而 Arduino 作為一款真正傳統意義上的單片機系統,一次只能運行一個你燒進去的程序,功能也相對單一。
  3. RPi 自帶的介面比較全面,USB-host、RJ45、HDMI、SD讀卡器等常用介面都有;而 Arduino 比較單純,與外部設備打交道需要另外採購介面板。
  4. RPi 因為是一個相對完整的「電腦」,其成本肯定比 Arduino 高,目前 B 版在淘寶普遍 280 元左右;而常用的 Arduino UNO 40 元搞定。
  5. RPi 擁有更完整的操作系統,這也意味著每次複電後所需的啟動時間很長,而且還不能保證重啟後你寫的相關服務都能正常啟動(Linux 大拿可能會覺得是我技術渣);但 Arduino 因為用途單一,重啟速度超快,而且重啟結束後立即就在運行你讓它做的事。

綜合考慮後,我的選擇是:

  1. RPi 作為家居中央控制伺服器,負責與互聯網的通信、採樣存儲 Arduino 上報的狀態數據、處理數據量大的工作(如音頻、視頻、圖片相關)、提供 API 給 iOS 及 Android 以方便用手機控制家居。RPi 與 Arduino 間通過乙太網和 Zigbee 進行數據傳輸。
  2. Arduino 負責家居感測器採樣,如光線強度、溫度、人體紅外感應等。有的模塊比較獨立,比如人體感應的夜間走廊燈,單個 Arduino 可以自己實現監控加控制,就不需要上報數據給 RPi 了。需要上報和接收數據的 Arduino ,通過 Zigbee 及乙太網和 RPi 進行通信。

這樣的好處就是投資小,而且把計算任務都放在了 RPi 上,算是物盡其用。


完全是不同的概念了,對於Arduino來講,它是一個單片機,在機器里不會運行現有的通用OS,它更多的就是一個通過setup和loop介面進行執行的特定機器,它的內存也非常的小。而Raspbeery Pi則不同,它有一個非常強的CPU,存儲也很大,可以運行通用的OS,比如Linux,也有著更為強大的標準輸入、輸出介面。

所以它們有著完全不同的用途,Arduino更多的用於簡單的定式操作,而Raspbeer Pi用於在Linux這樣的操作系統上運行應用的環境。


arduino屬於EE專業,樹莓屬於CS專業


樓上都說的太複雜了,(^Д^)
我就舉個栗子。
安卓和功能機有什麼區別?
那就是樹莓派和Arduino之間的區別。


Raspberry Pi有Arduino介面兼容板子賣,一舉兩得。淘寶上還有產品叫PCDuino,1GHzCPU,跑Ubuntu,介面直接兼容Arduino。

Raspberry Pi有自己的操作系統,對Linux熟悉的可以直接上手,介面多,和外圍設備通信也比較方便,USB、LAN、HDMI插上就能用。RPi便於在移動設備上操作,插個無線網卡,手機連上ssh就可以直接操作了。我現在把SD卡里的照片傳輸到移動設備上就用RPi建ftp伺服器實現,在沒有電腦的地方非常方便。還有,Linux上各種問題做好的解決方案非常多。

Arduino的好處:感測器多,但是通訊協議要自己寫。體積小、硬體選擇多樣,便於嵌入式開發。學過C的同學可以看兩個常式就直接寫程序了。缺點:移動設備難以編程。Arduino不像RPi是一個完整的系統,如果有部件不穩定,不知道哪裡會出問題。而且Arduino沒有獨立的操作系統,自己寫程序很蛋疼。


對於新手arduino更容易上手一些,軟體的環境更加友好,代碼也更加簡單。
PI需要linux的操作知識。

如果你只用來做開發板:
arduino目前看,勝在開發更加迅速,各種擴展板和lib更多,和其他程序的通訊也沒什麼障礙。
pi就相對小眾,shield也很難買。

但是pi相當於是內置了一個linux系統,它本身就可以計算圖形之類,日後一些複雜的工作之用一塊PI+arduino就可以完成,不用使用電腦。


關於這個問題,雷科技已經有帖子探討過了:Arduino VS 樹莓派:哪個才是你的菜?

假設你正在尋找一台微型計算機,它能夠驅動一台激光炮塔向彩色氣球射擊——作為一名極客,你可能常會幻想到類似的場景。那麼你很可能已經聽說過Arduino和樹莓派(Raspberry Pi)了,但是卻拿不定主意——到底哪種微型計算機才適合你的個人項目呢?別擔心,本文將為您解答。

區別在哪?

Arduino和樹莓派看起來很相似——它們都是小型的電路板,有一些晶元和管腳在上面——但實際上它們之間的區別可大了,是完全不同的設備。Arduino實際上只是一個微控制器,並不是一台迷你電腦。微控制器只是電腦中的一個部分,與樹莓派相比只能算是一個子集,提供的功能有限。

儘管Arduino可以通過一些小型的類C應用程序進行編程,但它無法運行一個全面完整的操作系統。所以想用Arduino來取代你家裡的媒體中心是不可能的。另一方面,樹莓派就是一台電腦,我想你應該知道我的意思。

強項弱項對比

那麼Arduino就毫無用處了嗎?當然不是——Arduino非常適合於電子產品項目。它包含一組輸入和輸出管腳,常常可以直接同相關的部件連接。可以立刻擼起袖子開干,讓你覺得難以置信的簡單和容易。這使得Arduino非常適合於製作產品原型。

Arduino上運行著Arduino固件程序——這是一組核心基礎軟體,允許Adruino通過USB同電腦通訊,並能使用到電腦上的所有特性。一般來說你不會想去換掉這個固件程序,但這麼做還是可行的。一旦載入了你的應用程序,你可以將Arduino插在任何有電的地方,它就會立刻開始工作——你不需要重啟,也不需要外接一個鍵盤,甚至也不用選擇讓它運行什麼應用程序。Arduino只會做已經給它編程好的事情,並且會立刻去做。

樹莓派則是一台功能完整的迷你電腦。它需要一個操作系統——這是你需要做出選擇的第一件大事,這會極大的影響你之後的體驗。一台完整的電腦所擁有的功能,樹莓派全都有(只是體積變得更小)。存儲空間是通過micro-SD卡來提供的,而內置的乙太網介面則提供了連接到互聯網的能力(Arduino也可以訪問網路,但那需要一些額外的部件)。

樹莓派的核心是一款Broadcom Arm-v6 CPU,它也有內存以及用來驅動HDMI輸出的圖形處理器。你可以外接一個鍵盤和顯示器,載入Linux操作系統。那些非技術人員可能怎麼也想不到這麼小的一塊電路板究竟是如何驅動這一切的。樹莓派是一款體積非常小但功能卻非常強大的平台——非常適合於嵌入式系統,或者那些需要更多互動能力和處理能力的項目。

也就是說,樹莓派相對於簡單的電子產品項目來說要複雜很多。比如,大傢伙的第一個項目都是一些類似LED點燈這樣的東東。在Arduino上,這包括將LED燈和電阻連接到兩個管腳上,然後上傳大概8行代碼,搞定。而對於樹莓派——假設你已經安裝好了一個功能完整的操作系統,而且已經按你希望的方式設置完成——然後你需要安裝一些程序庫來幫助你控制GPIO引腳(那就是你連接其他組件的地方)。殺雞不用牛刀嘛,對不對?

有很多程序庫都可以選擇安裝,這取決於你打算用什麼語言來編程——包括像Scratch這樣的可視化設計工具。最後,在運行程序之前你可能還需要編譯代碼。關鍵是,在樹莓派上你可以做到Arduino能做到的一切——但是更加複雜。

另一個重點是請記住對於電子產品類的項目來說,Arduino是最流行的平台。因此儘管用樹莓派也能完成這些項目,但相關的初學者教程並不會太多,能幫助你的資源很少。最好把樹莓派看做是一種升級版的Arduino,當你準備好解決規模更大,需求更多的項目時再考慮樹莓派吧。

結論就是,樹莓派是一台迷你型電腦,而Arduino不是。要理解的更清楚一點,這裡是一些你可以選擇安裝到樹莓派上的操作系統:
Raspian (基於Debian Linux,默認系統)
Android (還不成熟,但官方支持就要來了)
RiscOS
Plan 9
Xbox Media Center

對於這些操作系統,TechRadar上有一篇很棒的測試和可用性評測的文章。噢,甚至還有個應用商店。

那麼這裡是你可以安裝到Arduino上的操作系統:

OK,你決定選擇哪個了嗎?很好,現在你可以開始看一些樹莓派或是Arduino的教程了。

等等!幹嘛還要選呢?

事實上,兩極世界你都可以擁有:樹莓派只是Arduino的升級版,它更加複雜,而Arduino所能做的事情不如樹莓派多——但是你有考慮過將它們用在一起嗎?下面這個項目——AlaMode——直接將Arduino堆疊在樹莓派上,使它立刻就擁有了Adruino的所有常用功能。

或者,如果你對Python情有獨鍾,那麼將Arduino通過USB連接到你的樹莓派上,然後使用下面這個介面就好了。

希望看完這篇文章後你對Arduino和樹莓派的區別有了更加清楚的認識。


個人淺見,大神輕拍。

就無人機、機器人等應用來說,樹莓派的系統不是實時系統,實現數字控制的時候會有採樣時間不固定的問題,但是它的硬體強大,反而可以實現一些複雜的演算法。不過據說現在有人在做樹莓派的實時的操作系統,不知道進展怎樣。

Arduino的運算能力沒有樹莓派強大,但是好在比較簡單,同時官方有強大的庫和IDE,不需要操作系統就可以玩的轉。

兩者結合的話,樹莓派可以做為上位機運行一些對實時性要求不高的應用比如定位、圖像識別、軌跡規劃之類的,而Arduino可以作為執行機構的控制器,比如實現一點PID什麼的。


節肢動物與哺乳動物的區別


Arduino是單片機,和外設的連接非常原始,基本要你自己寫通訊協議。Raspberry Pi就是個嵌入式OS載體,要高級很多。
我覺得選擇與否,一個很重要的考慮因素是要連接的外設是否是智能設備。有很多外設,不是智能設備,必須通過最簡單的硬體電路通訊,這種就比較適合Arduino;有點外設本身就是智能設備或者支持高級介面,那用Raspberry Pi挺好的。


折騰過的人應該能理解我下面的這句話,Arduino 偏硬體,樹莓派偏軟體。前者需要你和硬體元器件打交道,後者更需要你和代碼打交道。


quora 上有個很好的回答:
What can the Arduino do that the Raspberry Pi can"t and vice-versa?

簡單來說就是,樹莓派是個便宜的 PC,而 Arduino 是個便宜的的微控制器。


網易雲課堂 翁愷老師的arduino初級課程


自然是Arduino好上手,懂點C語言就可以了,比啥51簡單N倍!這回答是不是目前對你來說就夠了?接下來你玩過了,優缺點才有意義


kickstarter上有個項目叫 uudo 還是udo 就是 Arduino + R PI


很多答主都說了這兩個是完全不同的東西。

但是我也看到過在樹莓派上玩控制的,在Arduino上跑深度學習的演算法的。所以這兩塊都承載了Arm晶元的板子,對於有無限想像力的人來說還是有無限的可能的。

  回答題主的問題。題主說自己有一點Java的經驗,那我假設題主沒有C語言的經驗(因為一般C是較為基礎的語言)。那麼我覺得還是要看題主想拿這兩塊板子做什麼。如果你要做一個復古的遊戲機,那你就需要樹莓派,如果你要做控制那麼我更建議你先從Arduino入手。

  兩者各有特點但並沒有所謂的優缺點,因為這兩塊板子有不同的面向對象所以是無法比較的。樹莓派用的是Linux系統,現在在性能方面也在提升,可以說是一款微型電腦,你可以用它來構建一個簡單的物聯網設備原型,用樹莓派來處理感測器所採集的那些數據。但是要用樹莓派來做控制的話可能需要更加高明的Linux能力。當年,本人做了一個帶有視覺的機器人,使用樹莓派來做圖像處理器,然後讓它作為上位機和Arduino通訊再來控制機器人。而當年比賽還有一對直接拿樹莓派來做控制,據本人的觀察,效果是不如拿Arduino控制來的理想的,即便樹莓派也提供了很多GPIO的介面。

  所以請題主根據自己的需求進行取捨。


arduino能做的,如:定時打開電源燒壺開水;根據室內溫度,調整窗帘開關;
pi能做的:搜集各個arduino模塊的狀態信息,上傳到雲端。接受雲端的指令,控制各個arduino模塊。
當然這裡各個arduino模塊也可以用pi實現,不過成本太高了。


樓主莫擔心。

Arduino誕生的緣由,就是有硬體開發背景的老師為藝術類學生設計的實驗(含:開發創新)平台。

Raspberry Pi 貌似是英國那別比較起勁,Element14就是英國的一家小企業吧?!要知道,計算機很多先驅也是英國人,比如破譯德國密碼的Bletchley Circle。人家國情也很特殊,很關注青少年編程(區別於中國的差別化對待)。


我覺得:樓主最好能說明關注的領域。
我很早就在國外建築類雜誌看到用Arduino做互動/設計。沒有人知道所有的玩法,優缺點的體現需要上下文環境才能說清楚。


arduino適合控制,pi適合應用,看看那個PWM數量比較。。pi就是一個汗,別說軟模擬,實時性跟不上。。。。。。。


理論上來說,Arduino能做的事情,樹莓派都能做,畢竟嘛,cpu不是一個數量級的
這兩者在國外,價格也差不多(天朝比較特殊,Arduino各種clone都是白菜價)
但是對於一名極客而言,絕大部分事情都可以用Arduino完成,就是那種,不需要太複雜的業務邏輯,只是單純跟硬體打交道,亮燈啊,接收感測器啊,驅動馬達屏幕等等。由於不涉及linux系統,Arduino的開發要比樹莓派簡單非常之多。
另外最關鍵的一點,Arduino的社群在開源硬體界非常活躍,這也意味著你可以很容易找到你需要的代碼以及設計。當然,樹莓派本身也有不錯的社群,不過在硬體玩法方面還是少於Arduino,需要配置很多參數,不像Arduino這樣接線引庫拿來就用


推薦閱讀:

準確地預測第二天的天氣大概涉及多少變數?對計算的要求到底有多高?
目前較為理想的視頻格式是什麼?
一個裝滿數據的硬碟比一個空硬碟重嗎?數據有重量嗎?
近代有哪些高新科技突破被懷疑是逆向工程(模仿外星人技術)?
多線程有什麼用?

TAG:極客Geek | 計算機 | Arduino | 樹莓派RaspberryPi |