當前位置: 華文星空 > 心靈

新手想玩硬體,買微控制器還是樹莓派好?

2018-10-22心靈

這個問題本人應該比較有發言權了 :D

先說一下我自己的經歷,我從大二開始入門微控制器,硬體至今做了有五六年了,目前也是Arduino中文社群的版主;然後差不多大四的時候開始對Linux和作業系統感興趣,研究生從EE轉到了CS方向;目前剛剛畢業,在某綠廠AI實驗室做深度學習演算法方面的研究工作。

所以不管是Arduino還是樹莓派,我都算玩得比較徹底了哈哈,下面先介紹一下軟硬體開發的區別和聯系,然後會給出學習建議~

先上幾個視訊:

迷你巡線機器人QBot https://www.zhihu.com/video/1106524922083545088 改進磁懸浮裝置 https://www.zhihu.com/video/1106525232017489920

也自己設計過 「樹莓派」 單板↓

接下來回答題主的問題:新手想玩硬體,買微控制器還是樹莓派好?

這個問題其實還不是很準確,題主首先要知道 「玩硬體」 是個什麽概念,硬體是個太寬泛的定義,實際上任何技術都是多少和硬體相關的(哪怕是純演算法工程師,也要考慮硬體架構才能設計出最優演算法)。

我想樓主想說的應該是 嵌入式硬體開發

在嵌入式開發中,具體分下來:底層可以到模擬電路(射頻、電源等),數位邏輯電路(FPGA、CPLD等);上層一點有組譯開發(比如Bootloader,純硬體相關);再上層一點有Kernel驅動開發(連線硬體和軟體);再往上就是作業系統層級了,各種APP套用軟體就在這一層;繼續往上抽象,就是軟體框架和演算法層面了。

所以我們來看看,Arduino的開發其實屬於Kernel那一層,也就是裸機程式,而樹莓派則一般在作業系統那一層(不考慮驅動開發),這樣題主應該就知道他們的本質區別了。

抽象的層級越高,要實作某個功能會越來越容易,但是相應的自由度會越低。這麽說題主可能還是不太直觀,給題主看幾個我之前做的計畫:

這是我之前的一個回答,這個回答中我介紹了制作迷你機器人的過程,其中就有從第一代用純Arduino實作,到最新款的用純APP實作的效果:

不知道題主看完覺得對哪個機器人最感興趣?如果是前兩個的話,那麽Arduino適合你,對於這種玩具類的設計Arduino有天然的優勢,那就是數不清的開源硬體庫;而如果題主覺得最後那個手機實作的機器人比較有趣的話,那麽可能更適合做APP開發,不論是樹莓派的Linux還是Android和ios也好。

當然如果題主不想限制自己的知識邊界,那麽軟硬體結合的技術棧才是王道(小孩子才做選擇,你全都要 :D)。

比如上面連結回答中我也提到了,那個Vector機器人其實就執行了作業系統的,允許我們直接用python編程來實作一些功能,但我想實作用它來控制智慧家居,而它卻沒有給我提供相關介面怎麽辦? 如果沒有底層硬體和驅動的支持,我們的自由度就只限於SDK的範疇了 。這也是我決定自己重新從硬體開始設計那個機器人的初衷。

對於我自己的經歷經驗來說,我最早是從學習51微控制器開始入門電子設計的(大一學完了C語言),當時用51就是制作一些電子鐘,簡單的小車之類的;然後偶然中的必然遇上了Arduino,才感覺開源硬體世界向我開啟了大門,沈迷於當創客無法自拔;使用Arduino很長一段時間之後,已經熟悉到可以自己設計Arduino板卡、編寫Bootloader,這時候才觸及Arduino作為8位元微控制器的天花板,也就是效能,所以又轉而開始學習STM32,上面的那個磁懸浮就是基於STM32的,對於這樣需要執行復雜控制演算法的計畫來說,Arduino已經力不從心;DIY到了一定程度,肯定會想追求更專業的作品,於是你需要開始思考產品化中的技術:PCB設計、結構設計、工業設計、軟體封裝...用做產品的思路和技術去玩計畫,這才是創客的最高境界。

說了這麽多,對於題主有幾點建議:

1.從Arduino入手,找幾個開源計畫熟悉開發流程,最重要的是培養興趣和成就感

2.用什麽硬體平台以及工具取決於你想做什麽東西,沒有萬能的工具

3.不要局限自己的知識邊界,沒有人說玩微控制器就不能用樹莓派了,電子世界其樂無窮,進一寸有一寸的歡喜 :D

長期搞各種腦洞計畫,大家不嫌棄的話也可以點上面關註一下~非週期性更新計畫

順便微博@ _稚暉

我的其他回答: