新手想玩硬體,買單片機還是樹莓派好呢?會一點點c?
玩硬體是個大坑,我上大學的時候,看到那種編程的雙足機器人,覺得炫酷的不得了,就開始找攻略。
網上說先從做四驅車開始,我買了樹莓派及其各種配件大禮包,總共花了1200多,照著視頻一步一步做完。
然後我就感覺我行了,牛逼了,準備著手開始做雙足,買了好多舵機,裝舵機的架子又花了,還自學soildworks做外殼。
玩了半個月,啥也沒玩出來,小兩千的一大箱子硬體在角落吃灰,我那一學期都沒吃過一頓好的。
結論:哪個便宜玩哪個,等發現自己真的喜歡了,入門了,懂行了,就自然明白了。不然就像我這種失敗例子一樣,每天都看著那一箱電路板,回憶著那半年吃糠咽菜的生活,在淺色的床單上哭泣。
其實我想說一句,單片機,嵌入式板子什麼的都不算的,關鍵是得有調試,測試工具啊,一個基本100M示波器得一兩千塊錢吧。
硬體的正確打開方式很關鍵,所謂差之毫厘,錯之千里。有些回答上來就貶低c51,有些回答就回答arduino。有些為8051辯護,卻又不答不到點子上。
單純地貶低8051,或者單純說arm,都不在點子上。
首先,玩硬體是一件燒錢燒腦燒時間的事情,並不是買一塊8051或者arm開發板就完事了。以前,玩硬體的叫發燒友。歷史上,國內叫發燒友的,硬體還真能算是第一個。
其次,你玩硬體的目的是什麼?是學一門技術,還是玩玩而已。
如果是玩玩而已,在高中/大學混個獎,其實在淘寶上買個什麼機器人、自動小車套件,就可以了。
如果真的是對硬體感興趣,想學門技術,請耐住性子,開始還真不必買什麼板子。proteus就可以了。玩硬體不是拿個起子捅收音機,那是野路子。雖然有效,但是不正宗。
從電路分析、模擬電路開始,公式+proteus驗證。
數字電路也是一樣,公式+multisim。有朋友說,數電用FPGA,非常同意。不過時間可以放在方向確定之後。
這之後,差不多可以搭建一個最小系統了。用8051也可以,用cortex m3也可以。
之後,再在某個應用方向上擴展功能。到工廠去,到一線去。
這中間的路,遠非你想像那樣簡單。
硬體不重要,反正到了一定階段,你總會「發燒的」。
重要的是玩法,推薦幾個:單片機的雜誌和期刊,單片機的會議論文集:嵌入式系統及單片機國際學術交流會論文集。
當然,如果有經濟能力的話,花個幾千塊,可以體驗一把。其實也沒有什麼好體驗的。就當放個大煙花一樣,就是看個熱鬧,看個稀奇,看個新鮮,看個好玩。
放煙花的時候,並沒有什麼意思。
真正有意思的時間段,是動了買煙花那個念頭、挑煙花、一直到點煙花那一剎那。
這倆完全不是一類東西,有啥好比較/選擇的。還有樓上推薦 51/AVR 的怕不是傳統工科學出來的……如果你是自學,做 DIY 項目,不打算涉及工程的話 51/AVR 這種沒免費開發環境(其實有,不過國內傳統沒人用),沒開源社區的商業產品有啥好學的。網上隨便下一個不知啥年代的 Unicode 都不支持的盜版「Keil 礦ision」來寫莫名其妙的類 C 語言(一萬個私有擴展語法),而且能找到的示例代碼風格普遍一團糟(搞電子的寫代碼就這個尿性),這種東西真打算讓初學者看?能寫出東西?
關鍵問題:
- 你要做一個什麼東西?
- 你有沒有模電數電基礎?
好像大家對我鄙視傳統幾大單片機意見很多。我不給新手推薦這些是因為:
- 新手和 DIY 用戶並不關注硬體成本(幾毛錢和幾塊錢那個成本)
- 他們並不需要維護現有工業產品
- 就他們現有的知識而言,傳統單片機的學習曲線較為陡峭
第三點可以展開說一下。比如一個人會標準 C 語言,懂模電數電基礎,那麼他去寫 Arduino 只需要學習唯一一個 language extension:PROGMEM(而且這個東西早期是不會用到的)。如果他連電路基礎都沒有,沒事我們有模擬器 circuits.io 隨你玩,不怕燒真硬體。如果他去寫 51 單片機,首先他要面臨那麼多寄存器到底是個什麼東西的困惑,然後他會迷失在諸多大大小小的學習板上面(不開玩笑,這樣的人我見過不少,有個普遍的認知是板子越大功能越牛逼)。如果他沒有電路基礎呢,那就得去找 SPICE 模擬來學習了,或者多燒幾片 51 嘛,反正便宜。後者的學習曲線是更為陡峭的。
==========
下面看到一個推薦在低功耗硬體上寫 JS 的,讓我寫 JS 我寧願寫 51
玩硬體有兩種:
一種是自己做數字電路,請出門右轉 FPGA 或者左轉 Verilog。自己動手才能學得快記得牢。像是 51AVR 這種成型的硬體,你根本沒法 DIY,你想加指令,改寄存器?沒戲。
第二種就是拿微機做其它設備。這個不一定非得單片機,只有必須用單片機的情況下才用單片機,誰不想省事嘛。
現在絕大多數智能家居、物聯網設備都是 ARM 的。所以你如果要玩物聯網,趕最近這波潮流,買個樹莓派再合適不過。
樹莓派上可以刷系統,刷完之後可以面向 OS 編程,省不少事。並且你的選擇也多了,什麼 Python 啊、Node 啊,不一定非得用 C。用了樹莓派,你的技能樹和絕大多數開發/運維是相同的,你能找到的社區、生態,比單片機好到不知道哪裡去了。
運行 Node 的硬體都玩到天上去了:Node.js on a satellite means anyone can be a space programmer - Reaktor.com。我想你應該不會造出來什麼比衛星還複雜的硬體,不過它連衛星都能勝任的話,應該符合你的需求。
最後就是成本,一塊樹莓派 Zero 一百多一點,3B 是一百六十多。3.5 寸 LCD 一百多一點,7 寸的 200 多一點(你手機屏幕尺寸也不到 6 寸)。或者你可以買個 HDMI 和 VGA 的轉接線,到你公司或者實驗室隨便找個顯示器。有些人的雙標真是 6 ,好像 51AVR 就不需要顯示設備似的。
這麼多貶低51的。。51怎麼你們了。。。
玩兒硬體,難道不是先買個示波器?(逃
至於選51還是樹莓派的話,我覺得題主是不是不太了解這兩個東西?如果是這個樣的話建議先做一個大概的了解。因為這兩個東西不是那麼太搭邊兒,要掌握的知識不同,難點不同,爽點也不同。其實我覺著arduino用來入門會比較好玩。
有許多示常式序,你可以通過自己改編來實現不同的功能。更可以通過購買相對應的馬達之類的做點好玩的小東西。
而且arduino用的是c,而且不難,通過看示常式序很容易掌握甚至可以購買更多的模塊來實現更多的功能。反對直接用raspberry上手。玩,
那就樹莓派有錢難買我開心只要砸錢,樹莓派會讓你玩得很開心單片機也可以玩,但是門檻比較高如果一定要玩MCU那我推薦Arduino
越簡單的東西越難所以從樹莓派入門吧並且如果要買樹莓派就不要買那些亂七八糟的派省的那些錢總會在適當的時候花回來並且多出的性能對於新手來講沒什麼用處不要和我談成本
我們一不做產品二不缺錢
學習成本才是最大的成本大概就是這樣吧買單片機要先折騰硬體,搞清楚最小系統外圍電路,畫原理圖PCB,焊板子,然後從點燈程序開始寫…當然了 你也可以移植常式,不過如果你基礎不夠好,很可能移植失敗,那就應該直接買現成的開發板。在另一個回答下面看到 題主想做的是多足機器人和無線控制,多足機器人動作部分是你發揮的主要內容,自然要自己動手寫,說簡單的話也簡單,主要是控制舵機旋轉方向和動作先後順序。當然了 如果想讓機器人動作行雲流水 那還是要下一定功夫的。無線遙控可以移植程序,一般控制無線模塊的代碼都比較長,如果你沒興趣讀下來,移植是更好的選擇。你可以參考一些開發板的設計,選擇相同的無線模塊,放置在相同的IO口下面,這樣可以大大降低移植難度。至於選擇什麼型號的單片機,我還是推薦51單片機,很多回答中說51的優勢是成本低,其實並不是…現在很多一兩塊錢的單片機比51功能強大多了。51單片機對於初學者的優勢在於:可以清楚的看到操作外圍電路的每一個步驟。如果你的單片機帶SPI介面,向外發數據只需要將數據寫到相應寄存器,而51由於沒有相關的介面,需要用通用IO口模擬這個介面的行為,向外發數據的每一個動作,每一次電平跳變都可以在程序中看到,這對初學者搞清電路板工作原理有很大的幫助。至於樹莓派 我也沒玩過,其實樹莓派本身就是一個強大的單片機,有人給你做好了電路板,移植好了操作系統,你需要在操作系統上寫寫應用程序。如此可以更充分的利用單片機的性能。當然靈活性就大打折扣了,因為你不需要的功能全在上面,又不能拆…你需要的可能沒有,要外加擴展。我記得樹莓派是沒有WIFI的 你要無線通信,還得給機器人背個無線路由器 …有個回答裡面直接鄙視了一下電子工程師的程序,說我們寫的程序沒法看,是不是這樣我也不知道,但我覺得至少開發板的常式寫的還都挺清楚的,這也是電子寫的啊。我自己寫程序的時候通常不寫注釋,這不是個好習慣,增加了別人讀程序的難度。有時候會自創一些數據處理的演算法,別人看上去就更匪夷所思了。學習了verilog和FPGA以後,更注重節省步驟,代碼就更難讓別人理解了…好在我現在的工作不需要寫代碼。
目前湊合能說是一個單片機職業開發者了,應該能答一下這個題了。
開始之前,看到上面有好幾個答主吐槽了51,雖然「Keil 礦ision」這個梗我也是笑了很久,但是強行貶低任何一個仍舊大規模應用的東西的做法我並不贊同。
先看看答主的意思吧,想要玩硬體。但是很有意思的是你說的單片機多數時間更像是偏向於底層的軟體開發,並不是硬體開發。既然我是搞單片機的,那就從單片機的角度先給你一些參考,得益於極高的性價比,目前市場上的主流之一是stm32系列,不管是m3內核的還是m4內核的,應用都非常廣泛。至於被一致吐槽的51,這個確實在被慢慢淘汰,但是也不能說一無是處,畢竟一個被各大高校拿來當教材的單片機必然有它的可取之處。因為我開始階段也都是自學,該踩過的坑都踩過,在我看來,51最大的優勢是它的結構相對簡單,寄存器很少,甚至達到了可以全部記住的地步。但是同時,51也有足夠的能讓你理解單片機是什麼東西,能幹什麼的能力,定時器,中斷,還有串口,這些做單片機逃不開的東西它都是有的。另外,51的內部資源是非常有限的,如何利用有限的資源,達到更好的效果,這個鍛煉的是一種能力。雖然現在更強的單片機讓這種不浪費每一個位元組的態度已經變的沒那麼重要了,但是真的等到需要用到的時候,你會感謝以前學到的一些能力。如果你真的想深入到非常底層的東西,比如代碼真實的運行軌跡,怎麼實現的中斷跳轉,甚至怎麼實現一個操作系統,51還算合適,僅僅因為它還不是那麼複雜,而且各大高校的教材是非常多的。但是為了應用的話,51就只能用來學習一些基本概念了。推薦淺嘗輒止就可以了。應用的話,一個更加主流的方案可以讓你遇到問題更加容易解決,畢竟你遇到的BUG,可能其他人早就解決了。個人推薦stm32系列,無非因為便宜。而stm32選用庫開發是大勢所趨,寄存器的概念和操作希望你在開始之前就已經搞懂了。至於樹莓派,它很強,但是強也意味著複雜。用它的話基本逃不開linux,社區資源足夠的話,你可以有很多教程,但是如果遇到社區所沒有的硬體設備需要驅動,那麼就會很麻煩,你需要學習linux的驅動開發。而如果有的話則會變得非常簡單。總結來說,單片機更適合一些底層控制,而樹莓派用來做伺服器或者處理中心更合適。時間有限,隨便寫點,到此為止。如果是想做「有一點程序控制的硬體」,並且有可能量產(對量產成本敏感),那麼用傳統的單片機比如51、義隆系列、STM系列。
如果是想業餘時間做點有趣的硬體玩玩,那麼用arduino,價格不高,方案豐富,編程簡單,投入低。
樹莓派實際上是一台PC,不列入討論。
單片機也有開發套裝, 樹莓派和Arduino本來就是以開發套形式出現的.
我接觸80C51那些已經是很久以前了, 不知道現在開發是否方便一點.
至少樹莓派和Arduino都是有比較簡單的開發語言的. 比起51的C或者彙編而言相對簡單. 而且網路和視頻也比較方便.
你有一塊給樹莓派用的HDMI顯示器嗎?我是說專用!你有class10的卡嗎?你知道樹莓派的配件很貴嗎?我不推薦題主用樹莓派玩硬體除非你不是窮學生而且就是想要arm7的板子!相比起來,單片機一片電子市場報價5塊,LED1塊錢十個,不知道便宜了多少錢。可以說樹莓派就是個電子芭比娃娃,你以為很便宜,那不過是你的錯覺!會一點c語言的話我個人推薦買arduino,不會超過50的售價,可以使用一切單片機的零件,好學。做個比較的話,樹莓派是個貴得多,還很多餘的東西,適合落灰,單片機和arduino適合學電子
大家為啥非要爭個你死我活呢
用過51/STM32/Arduino UNO/ATTINY85(DigiSpark)/ESP8266/OrangePI(類樹莓派)寫過HelloWorld(即點亮一顆LED),簡要對比下特點,供題主選擇
51:
優點:結構簡單,工業化使用時間長,資料齊全
缺點:沒有板載adc,pwm需要使用定時器模擬,基本上干點啥都需要擴展外圍電路;計算能力有點捉急
補充:比較新的51已經有了pwm和adc口
STM32:
優點:片上資源豐富,該有的都有了;處理器性能強大;工業使用也有一段時間了,資料也很豐富齊全
缺點:實在找不到啥缺點,非要說的話,開發環境配置比其他的複雜算不?
Arduino UNO:
優點:開發環境配置簡單,片上帶adc,arduino有各種庫存在,有開發效率加成;
缺點:IO口數量有點少;片上資源,性能上與STM32差了不止一個數量級
ATTINY85(DigiSpark):
優點:使用arduino開發,USB支持(模擬鍵盤,加密狗等玩法),IO口支持adc/pwm/i2c/spi等都支持,用來玩足夠了;價格偏移
缺點:ram太小,io口就6個
ESP8266:
優點:原生WIFI支持,刷nodemcu固件後可以用lua開發,或者直接使用arduino開發,IO口支持adc/pwm/常見的匯流排等,尤其適合IoT
缺點:資料豐富程度不及51或stm32
樹莓派/OrangePI等:
優點:資料相對豐富,ram足夠(高達數百到上千兆,跟單片機幾百位元組到幾兆位元組相比,高了幾個數量級),可以買到支持rj45或者wifi的版本用來做IoT(實際上,xxxPI更適合作為IoT設備的中心節點而不是直接控制硬體)
缺點:非實時系統,價格相對較貴
部分參數對比:
備註:esp8266 ram為64K instruction RAM,96K data RAM
關於片上資源說法比較粗略且不嚴謹,詳細差別可以參考各晶元的選型手冊
關於示波器/屏幕的問題:取決於需求而不是控制器。
關於開發板:我個人都是直接上手最小系統板,從開發板上手容易導致只會用開發板,容易知其然不知其所以然,拿到最小系統容易蒙圈;自己搭外圍電路是一種樂趣,自己搭建外圍電路,換其它種類的單片機很方便
總結下:不說需求就選型就是開玩笑。先定需求,要不要wifi,需不需要i2c/spi匯流排,需不需要串口,代碼規模大概多大,io口需要幾個,預算多少。以上需求確定後,基本上就選出來了。
51這種都是垃圾,推薦這種的一看就是學校里教出來的,DIY直接上arduino才對,然後轉stm32即可,樹莓派什麼的還是算了,我買的樹莓派在旁邊吃灰呢,和單片機不是一個類型的
新手必推arduino啊。。。淘寶上arduino nano才十幾塊錢,已經夠玩出幾十種花樣了,而且超級好上手。Arduino nano在官網上已經停了,但是淘寶賣的質量絕對不差,高精尖的實驗室都用它。工作了才開始學習硬體,arduino試了兩三天時間就上手了,意外的是竟然因為設計硬體給工作帶來了好多樂趣。
至於有人提到的必須要買個示波器,因為興趣開始學習的話,不妨用instructables推薦的方法,直接用arduino搭一個示波器出來。
Arduino - Oscilloscope (poor Man"s Oscilloscope)
Arduino Oscilloscope
除了硬體的話,又喜歡編程,估計可以玩樹莓派了,樹莓派的教學資源比arduino要多得多,甚至官網上有很多專門為小孩子寫的教程。假想自己以後有小孩子了,肯定給ta來個樹莓派玩。。。
謝邀!真誠建議從51開始吧!簡單易學資料多,開發板60元人民幣某寶到處都是,理解原理後可以升級到樹莓派,arm開發板中性價比較高,資料齊全上手也快,然後有餘力還有閑錢我就私心推薦ZYNQ了,涵蓋知識面更廣挑戰更大。我的推薦也是自己的進階路徑,希望能幫到你,同時關注其他答主的精彩分享後做出你自己的決定吧!
樹莓派 Raspberry PI
Raspberry PI Zero(上圖)
它其實就是個微型主機,GPIO介面和相應的拓展板數量少開發較為不便(linux不能算實時操作系統)網上看到有意思的項目主要集中在DIY Gameboy之類。作為只能硬體的核心來說,性能有些overkill了,帶來的最大的問題是耗電。
51單片機/stm32系
Teensy 3.2 32bit stm board
這類的硬體一般功能強大針對專業選手,學習曲線相對比較陡峭,需要有一定的專業經驗比如數模轉換、通信介面、寄存器等,本人至今未敢嘗試(主要是因為目前遇到的一些需求用arduino已經足夠)一般在需要實時大運算量的項目中應用較多,比如機器人、無人機飛控等領域。
Arduino系列
Arduino UNO R3
終於輪到大名鼎鼎的UNO登場了!(不是那個吼到額頭爆青筋的UNO牌)綜合易學易用、可拓展性和硬體成本首推arduino系列!既然題主有C的開發經驗,arduino ide封裝了一整套極易使用的API,5分鐘上手,擁有極其強大的社區資源,想做什麼項目google一下,基本有人做過或者有很多現成的庫可以利用。萬能的淘寶上一塊UNO板子只用一頓午飯的錢,不小心燒掉一塊(玩硬體的日常)也不心疼。
貼點本人接觸過的有意思arduino項目
touch board PCB by bare conductive transforms tactile interayouku.com視頻Bare Conductive Touch board 導電油墨控制板
RAMPS for Arduino Mega 2560 3D印表機控制拓展板
不要祈求別人告訴你答案,上面發的這些產品我都摸過做過,沒有對的產品,只有合適你項目的產品。找個自己想做的項目Dive in,打開新世界的大門吧!
玩硬體的話。。。
不應該從555和放大器開始嗎,收個20M的模擬示波器,擰擰旋鈕找手感買把好烙鐵我是大一入的430(TI送板子,ccs),
然後做電賽搞得stm32(f407,IDE用的前面有答主提到的 Keil 礦vision5),大二上課學了學stc的51,沒啥感覺了。後來就是教學弟學妹們玩Arduino,項目需要玩了一陣樹莓派,搞搞FPGA(也玩了幾天zynq,棄了)。學各種可編程器件的路挺詭異的,
個人觀點就是51可以跳過了,便宜點買個寨版arduino可以做不少好東西找找如何做到軟體操縱硬體的感覺;然後上stm32這個級別的跑裸奔(無操作系統),可以上彩屏等高級外設了(這個時候就需要花不少錢了,我自己搞的f407開發板用了IPS屏,舒服)再往後的話其實可以不用樹莓派,試試飛思卡爾i.mx/ti的bbb,或者國產的全志arm核處理器,這些家的晶元有零售,自己做好了可以開pcb。不過我不是很喜歡這種跑系統的,沒深入研究。
遂改學習FPGA,小規模的還能玩玩,帶arm核的FPGA就很貴了(學校有n款板子,但都沒有什麼資料),而且一般也要跑OS一個人不容易玩轉。我以後主要是想做硬體類的,所主要精力放在電路/pcb/測試/焊接等等方面上,從stm32開始就是自己畫pcb做開發板,關於編程的部分就沒有再深入。還有一些專項類的mcu也可以嘗試,ti的cc系列或nordic的nrf51822系列都是結合無線的mcu,對物聯網有興趣可以嘗試一下這類。
學什麼還是主要看要做什麼,打算最近買塊j3160的小板子玩玩,搞個hifi播放器推薦閱讀:
※如何理解「程序=演算法+數據結構」這句話?
※上海交通大學 ACM 的 Dreadnought 隊伍怎麼這麼強?
※編程是什麼?如何從零開始學習?
※如何快速地在每個函數入口處加入相同的語句?
※自學python,目標是web開發,請問我現在應該怎樣學習最合理?
TAG:DIY | 編程 | 硬體 | 單片機 | 樹莓派RaspberryPi |