題:
面向初學者的嵌入式編程:Arduino還是Raspberry Pi?
Matthias Braun
2012-12-09 19:27:20 UTC
view on stackexchange narkive permalink

我是計算機科學專業的學生,並且渴望擴展我對嵌入式編程和電氣工程的了解。

我已經在 here中閱讀了使用諸如Arduino微控制器是一個很好的入門方法。

我主要是Java和Python程序員,但是有一些C ++經驗。此外,我玩過ArchLinux。

我想做的一個小項目是通過Arduino / Pi上的Wi-Fi控制一些燈泡

從我看過的書中,Pi和Arduino都是面向學生的,但我想不出哪一種更適合像我這樣的人,他們想要了解計算機在低層的工作方式。

作為一個初學者,我會遇到很多問題,因此,一個龐大且有用的社區(我聽說Pi有)是一個很大的優勢。

因此,哪個社區更適合自學初學者:Arduino還是Raspberry Pi?

預先感謝。

編輯:

從您的許多不錯的答案以及這些值得一看的 文章我來到了以下

結論

  1. 我選擇Arduino作為嵌入式編程的切入點,因為它是比Pi更簡單的系統,使我可以更輕鬆地接近金屬。

  2. 更深入地學習是有價值的:我可能會研究 AVR或稍後使用 mbed微控制器以了解有關計算底層細節的更多信息。

  3. 這兩種設備都允許我在沒有操作系統的情況下進行編程,因此這是我想要的(一開始)。

  4. 我還找到了 項目,它們使用一個Pi來控制Arduino。我發現這很吸引人,因為兩種設備的價格都很便宜,而且我喜歡使用可以在Pi上運行的Linux的功能。

  5. 此外,我還找到了這本書應該可以幫助我在嘗試Arduino的同時學習更多有關電氣工程的知識。

  6. 使用Arduino進行燈泡項目似乎很困難。但是沒關係。我確定我可以想到其他激勵性項目,也可以在這裡這裡獲得靈感。

  7. ol>

    謝謝大家為您的答案。

Arduino更簡單。我建議這對於“自學初學者”來說是一個更好的起點。 Arduino目前擁有更大的插件製造商社區,例如用於“屏蔽”(插入式子板)。 Pi物有所值,但我認為與許多Arduino變體相比,Pi的底層接口(GPIO數量,I2C等)更少。如果您對低級的東西不感興趣,我會使用Pi。
六 答案:
Dave Tweed
2012-12-09 20:49:10 UTC
view on stackexchange narkive permalink

如果您真的想“了解計算機如何在低水平運行”,那麼可以說Arduino和Raspberry Pi都不適合。這兩個平台(它們的硬件和軟件)都是專門為隱藏底層細節而設計的,以便使不需要關心那些細節的人們容易

相反,我建議選擇具有相對“乾淨”指令集架構的CPU系列,並學習如何使用彙編語言對其進行編程。例如,我在PDP-11小型計算機上做了很多早期編碼,該計算機具有非常乾淨的16位體系結構。有人告訴我TI MSP430系列非常相似。在現代的8位系列中,可以說AVR比PIC乾淨一些。或者您可以去老學校看看M68K甚至Z80。

所以,這實際上取決於您的實際目標:您要創建嵌入式應用程序還是要學習?處理器本身?

如果您想從前者開始,然後再轉移到後者,也許您應該現在就從Arduino開始,然後再遷移到對底層AVR處理器進行編程。

之所以提出此建議,部分是因為您建議的應用程序的簡單性質,部分是由於遷移路徑。在Pi上遷移到低級編程要困難得多。它基於復雜的SoC,而要使其正常運行,它需要大量的軟件“基礎結構”。使用AVR,如果您願意,可以輕鬆地編程到“裸機”。

謝謝,我想開始創建嵌入式應用程序,也許以後再研究處理器。
您可以毫無問題地對Pi裸機進行編程,無需了解任何基礎結構。只需忽略視頻,音頻和網絡,您就會擁有一塊帶有大量RAM的快速ARM芯片,該芯片可以從SD卡中加載。或者,將引導加載程序放在SD卡上,然後使用串行端口將應用程序下載到RAM。
對於刻錄和崩潰的裸機開發,帶有Arduino的Arduino隨時可以啟動引導加載程序,並且啟動要求大大簡化了(例如,將其作為ATMEGA開發板使用)
Wouter van Ooijen
2012-12-09 22:38:44 UTC
view on stackexchange narkive permalink

Arduino可以與Arduino SDE一起使用,後者以“隱藏”方式提供某些功能,但它也可以與普通彙編器,C或C ++(以及可能與許多其他語言一起使用)似乎不太常見)。有各種各樣的稱為屏蔽的附加板,在大多數情況下,其支持軟件與Arduino SDE集成在一起。組合多個盾牌可能很棘手。以太網是可能的,但這擴展了功能。 USB主機堆棧超出了AFAIK的支持範圍。

最初的Arduino包含AVR芯片,但也有基於PIC和LPC(ARM)芯片的替代品。

Raspberry Pi是經過設計的成為運行縮小版Linux的單板計算機。因此,可以使用多種語言(從彙編程序到Python,以及介於兩者之間的所有語言,包括C和C ++)進行編程。它可以是USB主機,因此添加USB WiFi加密狗應該沒有問題。 Pi PCB有一個IO連接器,上面有一些可用的引腳,您可以從Linux應用程序訪問這些引腳,但感覺有點笨拙。

儘管它不是設計用於這種情況的。這樣,對Raspberry Pi裸機(=沒有任何操作系統)進行編程就沒有問題。現在,您可以直接,快速地訪問IO引腳,但是您失去了運行Liunux驅動程序的能力,因此添加WiFi將很困難。到目前為止,AFAIK的RaPi硬件擴展(帶有隨附的軟件庫)沒有Arduino的擴展,但是我的直覺是這可能會改變。

總的來說,我會說您都不會出錯,但是如果您真的想要WiFi,我建議您將RaPi與Linux配合使用。

Raspberry Pi的缺點之一是缺少官方文檔。它主要是絕密的Broadcom專有產品,只有凡人無法接觸。如果需要ARM速度,那麼還有其他平台的裸機工作文檔要好得多,與Raspberry Pi相比,它們便宜且易於獲得。另一方面,與來自Texas Instruments,STmicro或Freescale的各種廉價ARM套件相比,Raspberry Pi更接近於“真實計算機”。
AFAIK缺少視頻和音頻部分的文檔(但是我讀到這些部分的驅動程序現在是開源的,因此,如果要使用這些部分,至少有某種形式的文檔。)如果您假裝這些部分不存在,您需要花很多錢(RAM和CPU能力)。誰在乎您是否不想在典型的微控制器應用程序中使用其他東西?我不需要成熟的圖形引擎。如果我需要一個像素級的接口,那就在那裡。
與普通的嵌入式設備相比,不僅是音頻和視頻,而且pi的GPIO文檔非常稀疏。
使用可用的文檔,使用GPIO沒什麼問題。有沒有發現問題?
nemik
2012-12-11 05:19:30 UTC
view on stackexchange narkive permalink

在我看來,這可以歸結為:您要在OS還是在硬件本身上編程(某種程度上是自己製作OS)?

使用RaspberryPi,您的工作就差不多了使用Debian Linux。很好,Linux真的很有用。如果您了解了這一點,則可以繼續使用其他PC,服務器等。如果您熟悉Python,因為它很容易在Pi上進行操作,那麼您可能會再次使用Python進行編程。

另一方面,如果您想了解編寫很小,便宜和低功耗的東西的感覺,請嘗試使用Arduino。您所有的代碼都在那塊小芯片上運行,您甚至可以將它從板上移除(如果是DIP芯片),然後將其放在麵包板上,​​親自了解一下,使一台基本的小型計算機正常工作所需的硬件數量。至少對我來說這真是太神奇了。您編寫的所有內容都將在該芯片本身上運行,因此整個“ OS”將成為您的小運行循環。 Arduino IDE /語言很好入門,但是以後了解C / C ++將會非常有用。如果您真的在這一點上投入使用,則可以在其他微控制器(例如ARM Cortex M芯片或TI的MSP430)上輕鬆使用C技能,以實現真正的低功耗。

我建議您使用Arduino。如果您更想學習EE和嵌入式語言,則主要是因為為EE部件製作自己的電路非常容易。您不能很容易地將Raspberry Pi的芯片移到自己的板上,也很難與硬件打交道。也幾乎是一個Linux系統。那時只需啟動一個VM並在那裡學習Linux。

Chris Stratton
2012-12-10 04:37:30 UTC
view on stackexchange narkive permalink

什麼才是真正合適的取決於任務的細節。

如果您需要wifi,您可能會發現Raspberry Pi是更具成本效益的解決方案,因為您可以使用便宜的wifi加密狗。 。

但是,pi有一些複雜性-在軟件方面,儘管您具有Linux配置方面的經驗,並且在電源方面也有限制-一些wifi加密狗可以直接使用,而其他的則可以需要電源集線器或繞多保險絲焊接旁路。

在Arduino路徑上,除非獲得實現完整網絡堆棧並模擬串行通道的wifi適配器,否則最終將使用您的大部分可用內存可用於網絡實施;人們可以這樣做,但它可能會非常適合。

作為一個觀點,這兩個平台都不是真正適合此任務的平台-pi似乎更像是一個玩具,它具有功率限制,懸空的SD卡安裝和保留的文檔比作為嵌入式構建塊的理想選擇更合適,並且Arduino的價格上幾乎沒有板載資源。就是說,雖然有很長的歷史,將數字I / O入侵基於linux的wifi路由器,但並沒有很多比它更優越的替代方案。

>
SimonBarker
2012-12-11 01:36:05 UTC
view on stackexchange narkive permalink

我建議使用mbed處理器。在C ++中,它在高級抽象(入門)之間取得了很好的平衡,然後您可以下降到C並以較低的級別開始使用。

一旦您適應並熟悉了速度中斷,定時和讀取信息(模擬和數字),然後向下移動到簡單的PIC。我喜歡16F886,它將使您更好地了解寄存器級別的實際情況。使用Hi-Tech C編譯器作為起點,除非您確實願意,否則無需進行彙編。

有了PIC,您就可以開始擔心功耗,程序大小,內存,時序延遲。

您可以從那裡移回mbed或arduino等更大的處理器,因為您知道自己對內部情況有更好的了解。

Manuel Joaquín
2014-11-18 04:54:57 UTC
view on stackexchange narkive permalink

我從Arduino開始,當我了解它的工作原理後,我轉到了Pic,可以說它成功了。我使用Arduino做了一些華麗的項目,這很容易,因為在網絡上您有很多代碼示例。 Raspberry pi仍在增長,沒有像Arduino那樣多的幫助。因此,我認為,我建議您從Arduino開始,並在達到一定水平後,轉向微控制器。

我沒有看發布的時間,它只是出現在建議的主題中,我只想提供幫助。


該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...