鄙視Arduino及其開發者的人是一種什麼心態?
我所在協會的人為了推廣STM32,做了一堂課專門說明STM8,還有51等等都是垃圾,只有STM32才是主流,尤其說Arduino是弱智,是傻逼,然而我認為,學習Arduino最後也是會走到庫和底層開發的,不會不如一開始學STM32的人,所以應該怎麼看待這種行為?
----------------------------------------------------------------------------------------------
4-13小更新Arduino for STM32 : )
GitHub - rogerclarkmelbourne/Arduino_STM32: Arduino STM32. Hardware files to support STM32 boards, on Arduino IDE 1.6.5 including LeafLabs Maple and other generic STM32F103 boards. There is also Alpha suppory for GD32F103 based boards----------------------------------------------------------------------------------------------
答主都沒有提到一個很重要問題……
Arduino不是一類單片機,而是一個platform,換句話說,(在表現形式上)類似於Linux一樣,支持X86,也支持ARM。
Arduino覆蓋的範圍很廣……從價格低廉的八腳單片機到數十塊的AVR,性能派的STM32(對的……他們在打自己的臉)到上天的CortexA系列都有Arduino的涉足……
還有麻煩的要死的wifi soc ESP8266亦或是另外一款MTK7688……哦對忘了...還有X86平台的伽利略,愛迪生和居里....當然,很多人說Arduino是玩具級...這也是思想不正確的...確實有採用Arduino的商業項目(當然,並不是特別廣泛)。很多公司招聘也會提到會Arduino是一個優勢。但是其核心就是"避免重複造輪子"(如下面某答主所說),一個東西,如果別人造過了,為何自己還要再來一遍?不去把時間放在更加有意義的事情上?這個觀點已經在軟體行業廣泛應用,舉幾個例子,Facebook所採用的引擎是開源的,大規模商業化,nginx與Taobao Edition Nginx(淘寶還寫了gitbook描述用法)這個就不用提了,亦或是Apple開源Swift與Mticrosoft大量開源其編譯器。這股開源之風也在吹向硬體……不過需要時間罷了,Arduino也就是這股開源之風的領導者。
開源是信仰~
Arduino本質上是一個快速原型平台,可以在短時間製作一個原型判斷你的想法是否正確。舉個例子,我想做一個基於AVR的PWM直接合成MP3播放器,最好還有個TFT全彩屏幕和幾個按鍵,順便屏幕上還能顯示一下頻譜。思考一下...如果你用AVR Studio從頭寫需要多久.....但是如果基於Arduino完成,需要的只是三個庫,和少於100行代碼+一個上午(關於TFT,這裡默認你採用了存在SD卡里的樣式表)。之後,你可以選擇性的重構你覺得低效的部分,由於很多代碼都是GNU/GPL協議,或是更加優惠的MIT,你可以直接製作成小產品,拿去賣(雖然我並不喜歡這麼做。
但是我也提到了...畢竟只是一個快速原型平台,如果只停留在此,肯定時候不夠的。需要更加底層的知識,所以可以先從用開始。之後再逐漸看底層代碼,了解之前所用函數的具體實現。STM32也是世界運用最廣泛的單片機之一,雖然貴成狗,但是...人家畢竟牛逼...而且普及度高...學學沒壞處~
STM8主打低成本...就像拿小米5和三星 S7 Edge比較,然後吐槽說小米你個垃圾一樣...STM8可以在比51性能高的多情況下,提供比51低得多的售價,主打低功耗/低成本市場。畢竟你家電飯煲(一般的...一般的...)不需要400DMIPS的性能,畢竟...我還可以說,STM32你個辣雞,你看我i7多強......
Arduino能發展到現在,因為……一直有蛋疼的老外,在做移植……而不是蛋疼的社員吐槽隔壁腦殘
這種社……退了吧……自己創一個Arduino編程社玩玩arduino做產品不行的 (不含開發板教學套件)這麼多冗餘代碼,AVR成本那麼高,做產品要效率 成本 和 盡量少的程序資源,處理能力。arduino都不行的!科班同學玩arduino會把自己玩壞的,了解一下即可。因為你要工作要吃飯,學下STM32能養活自己,然後好好學下各類系統 ucos rtos linux 還有更多半導體公司新出的晶元。網路協議等。如果是不愁吃穿業餘電子愛好arduino確實好選擇!目測正經公司的產品沒arduino什麼事!arduino用著市場淘汰的單片機做成的積木我想到就是廠家最後的掙扎。再賣不動有業餘愛好者買單!如果科班同學依然相信arduino前景,就好像有人看到你走到懸崖邊上告誡你不能再走了,但是你礙於面子,或者因為自己懶惰不承認現實,哪怕心理懷疑自己還是大踏步跳進山崖!學電子絕對不是學一門語言一個晶元一個平台就OK了。不同場景的產品要考慮性能,成本,標準來選擇用什麼晶元從而用啥語言!有人可以用arduino來做視頻編解碼呀,來做視頻流媒體嗎?大夥手上的手機裡面哪個晶元用arduino了?沒有,哪怕最簡單物聯網家居,都會用集成度很好的新片,你們看AVR體積,誰敢用!在汽車對功耗苛刻要求,能滿足?或許有人覺得我對arduino了解不夠,它不等於AVR.,我接觸它的時候就是AVR現在兼容更多晶元了吧,但是還是不看好,兼容Stm32我說它為啥要去兼容STM32呢,製造更多冗餘代碼還是製造更多配置麻煩,STM32就有完整一套庫函數了嘛,並且是原廠的,也不用你操作寄存器,我有個疑問就是上了arduino還能加RTOS UCOS進去嗎? 還有疑問2,不了解硬體特定場景怎麼編程,比如做汽車OBD通信的時候。最後一句奉勸科班同學趕緊棄暗投明。不是科班的不以電子為生的業餘愛好者們祝玩得愉快。
這個想法我以前也有,不光是我,我身邊很多電子專業的同學也有相同的想法。但現在已經改變了。
給你介紹下我的經歷吧。
當初在學校的時候,我是測控專業,但卻基本學的是自動化的課程,所以首先接觸的單片機就是51單片機,而且最先學習的是彙編。那時候學彙編的不多呀,懂的就更不多了,大家入門51也多半從C語言來做了,還有多少人是學彙編?所以就覺得特別牛。後來當然也學了STM32,STM32從名字上就很高端,32位單片機,ARM架構,全都是很新很時髦的東西。學生嘛,其實並不是以功能強大或者能否解決實際的問題來考慮一個技術是否高端,有用。相反學生考慮的一個技術是否高端一般有幾個標準。
1、技術的新舊。舊的低端,新的高端。
2、會使用的人數。會的人多低端,會的人少高端。3、熟悉程度。聽的多的低端,聽的少的高端。當時畢業了,機緣巧合就進了國內做Arduino周邊模塊數一數二的公司。剛知道Arduino的時候,確實如題主的那些同學一樣,覺得Arduino低端。主要表現為:
1、所有操作使用庫,基本不會涉及寄存器。全部是軟體編程,根本沒有硬體,寫個eerom居然連時序都不需要自己寫?那用Arduino的人豈不是連個驅動都不會寫?
2、所有模塊都有教程,不用看datasheet,不用看時序圖,也不用自己畫PCB插上就能用。逗我呢?用這東西也能叫電子專業的學生?
3、一些獲取數據的方式非常奇葩,串口讀數據居然要寫在循環里?不是浪費CPU時間嗎,代碼效率如此低下,兼職太LOW。
工作已經2、3年了,雖然只在那個公司待了1年,現在想想,其實說Arduino不好的,LOW的人大多是硬體出身的工程師。他們其實是不了解Arduino的,或者說他們其實只了解硬體,是不了解軟體的。
說白了Arduino其實是給做軟體的人用的。Arduino使用C++,面向對象的編程方式,很多硬體工程師永遠也不會接觸。所以其實他們體會不了Arduino的好,但滿眼都是Arduino在硬體上的不好。
為了兼容,無論任何Arduino的擴展板都必須做成一樣的介面,大小也就被限制死了,而且很多時候擴展板並沒有發揮出上面搭載模塊的所有功能。有時候由於庫的局限性,大部分使用者也只能使用庫提供的有限的功能。這些在嵌入式或者電子專業的從業者看來都是不可忍受的。所以Arduino會有一個很LOW的映像。
Arduino確實有不好的地方,從電路嵌入式上來說他為了軟體和硬體上的兼容性,捨棄太多性能,而且做的太全貌似使得專業的學生有種"這樣就好了?」的感覺。另外由於模塊要兼容性以及面向人群的不同,模塊普遍偏貴。
但Arduino其實有更多的優點。太晚了,就不打太多了。有興趣可以看看我的專欄文章。那麼,什麼是Arduino? - 閑扯創客 - 知乎專欄工具是什麼不重要,重要的是你用它做了什麼
一句話,目的不一樣。
一般電子專業的人,都是**學習**單片機。而使用Arduino的人,都是**使用**單片機。
電子專業的學生,無論水平如何,清一色都是使用stm32的(51不考慮)。在未來中,就可以使用stm32這類晶元,畫板子,量產,壓榨所有性能,減小成本。
使用Arduino的人,就是,先做出來再說,有模塊就買模塊,其他都無所謂:-D謝沒人邀,我站在類似題主說的協會的人的角度來說一些自己的看法吧。有點離題。
說實話以前我也瞧不起Arduino,後來我接觸的項目多了才發現,我不是瞧不起Arduino,我是瞧不起一些用Arduino亂裝逼但是做不出什麼東西來的人。愛屋及烏,大概也會恨屋及烏吧。我們這裡的創客,也是非常喜歡用Arduino,但是實際上他們並沒有玩出什麼水平來。我目睹過他們舉辦的Arduino比賽,我沒去,但是其他的同學去了。他們回來跟我說的是,氣憤。為這個比賽侮辱了電子電路而感到氣憤。他們的比賽雖說也是創意開發,但是實際上比賽期間基礎的電阻電容都沒有,更別說電烙鐵這些焊接設備。所有東西一律用模塊。美其名曰怕使用者受傷。其次,比賽就比賽吧,認真做事情多好,比賽期間搞什麼座談會,早上帶什麼一起打太極!?這是比賽啊還是郊遊啊!?最後比賽評比也不是看作品是看PPT評分的。這樣的人這樣的組織只會把浮躁的風氣帶到各個領域。所以我怕,怕用Arduino的人放鬆了對自己的要求。底層驅動不會寫,元器件特性不理解,甚至到最後連好好做東西都做不到了。應該說我不是鄙視Arduino,我是對自己沒有信心,害怕更加便捷的開發會降低我的綜合能力。我想通了這點之後,我也無所謂了,如果做東西時候Arduino能快速搭建原型,我看著也是挺開心的。單片機雖有性能之分,但是我認為沒有好壞之分,再老的c51,在合適的場合里能發揮作用就是好的。即便是幾乎只能在學校里看到的8086,只要能玩出情懷來,也會比stm32更加精彩!
我現在也是我們學校某協會的相關人員,在單片機推廣這方面,我也是不會推廣Arduino的。或許是出於綜合能力培養的考慮吧,能用c51、msp430、avr、nxp、stm8、stm32做項目也好,做產品也好,搞比賽也罷,不管從是原理圖設計、PCB layout、資料收集和資源整合能力、底層驅動能力、整體的工程設計思維來說我認為從中獲得的提高相對Arduino來說均是全面的碾壓。以上。不就是這樣么,做硬體的鄙視做軟體的,做軟體的又鄙視做硬體的。比如高票答主是赤裸裸的鄙視做硬體的,而且還概念不明。
都是套路。看回答我怎麼感覺arduino的人在鄙視STM32?stm32開發速度是可以追上arduino的,而能追上畢竟是靠多年開發經驗,對底層 匯流排 演算法的透徹和某個方面的專精不是一個玩arduino能比得了的。玩玩當然arduino好了,但是你是想當巨人還是永遠站在巨人肩膀上?當你要進入一個新的領域,還沒巨人存在,你能快速成為巨人?還是等待一個巨人長大給你站?沒有貶義,這是兩個層面的問題。
arduino這種東西玩玩還是挺好的,僅限於玩玩而已。我覺得你要是真想做一個有點深度的東西,建議搞一搞德州儀器的德爾菲諾這些,比如玩玩矢量電機控制啊,把永磁無刷的那種小電機調教成PMSM,蠻有意思的。當然還有一個可以玩的是zynq,主要使用FPGA做信號處理和IO路由實在是太舒服了。
哈哈。這些人自己打自己臉。avr藉助arduino火了怎麼長時間,uno,due,nano,什麼的層出不窮。ide更新頻率高,重要的是github多少大神在貢獻代碼?全世界最有影響力的微控制器!
8位單片機用多線程庫有沒有?scoop和protothreads隨便挑有沒有?u8g庫幾乎支持所有12864連oled都支持了。marlin固件開源3d列印離線控制有沒有?grbl庫8位單片機3軸聯動,算上驅動不到40塊。開源飛控就更不多說了。還有多的數不清的高質量庫,tinygps,姿態感測器,等等。其他平台可以嗎?
就是這個lowB的arduino被其他廠家抄來抄去。stm32的maple怎麼回事?msp430 的energia怎麼回事?特么的連事常式序裡面的模擬輸入量都原封不動抄錯少了4倍。界面換個顏色其他都一樣。energia還惡趣味在聲明裡說自己和arduino沒關係。 visual studio直接支持arduino拓展和斷點調試。就連matlab都和arduino有一腿。去搜索國外文獻,arduino一個關鍵字就能釣出一堆sci,ei.這要是玩具我也認了,怕的是人家玩一玩這些個玩具,就把某些人飯碗砸了………… 現在情況是自己在國內寫的一手爛代碼,就是發到github也沒人看。看到人家用arduino搞出點成績比其他平台快,然後就開始酸葡萄。然後開始以複雜為榮,以底層為美。恨不得蓋房子時候砍木材的斧頭用的鋼都是自己用高爐煉的。 這都不是事兒! 求別一口一個玩具/小孩玩的/8位單片機不行(之前看到有人噴arduino,說到現在才知道arduino是一塊很垃圾的8位單片機,首先arduino不是只一塊板子,其次用了這麼長時間才知道是8位啊卧槽?) 說這麼多,其實就一點。覺得arduino是玩具的,別慫,獨立移植marlin固件去其他平台試試。 看看github上一堆堆的arduino代碼,再看看自己寫過什麼做過什麼。arduino生態的各類庫的代碼質量真的可以甩廣大的所謂單片機優越感開發者幾條街。。。
我在實際的生產工程項目已經開始用ESP8266的arduino開發了,優秀的各類網路庫至少縮短了我4/5的開發時間。我們的需求只是想點亮一盞燈,而不是學習一款單片機。少逼逼,show me your code!
==很多人還停留在arduino=AVR的膚淺認識,arduino現在可以說是硬體認可度很高的一套標準API ,讓開發人員的專註於程序的業務邏輯,而不是在糾結於配置單片機的某個寄存器浪費生命!有些人恨不得連STM和51的c compiler都消失,誰用了c51的庫誰就是low比,必須notepad全程背誦data sheet和instruction set,手擼千行ASM,什麼AD/DA/點陣屏幕/各路感測器全都爛熟於心才叫真的勇士。
當年我們老師也是像這樣瞧不起51和STM的,說當年他們用單板機,比你們單片機不知道高到哪裡去了,連彙編都沒有,全程手工輸入機器碼,一堆0001111010101輸進去,錯了一個字元就得重新來,然後看了一眼我們,嘆了口氣,唉,現在的孩子們,哪吃過這些苦去。
當年我四舅母也這麼說本科時的我來著,說你們大學生連沒有空調都受不了,我當年讀大學時夏天一周才能洗三次澡,一個月生活費才幾十塊錢,畢業論文全部都是手寫的,你看看你,買個筆記本就幾千塊錢,每周都陪女朋友逛街買衣服化妝品,寫個論文打打字就夠了,唉,這幫年輕人……
有的老人就是這樣,年輕人站在更新更高的平台上發展,吃不了我當年的底層枯燥的苦,他心裡就不舒服,非要把自己當初吃過的苦「哇」地一聲熱熱乎乎全倒出來,奪大的優越感似的,「唉,一代不如一代了!」也曾記得,十幾年前讀大學時候,某學長在演講時信誓旦旦的說,未來屬於ARM!單片機必須死!
也曾記得,六七年前,和主任一起喝酒,談笑風生,然後告訴我,數電有什麼可乾的,模電才是未來。
也曾記得,三四年前,某號稱高科技公司老總一起吃飯,一臉嫌棄的說除了fpga其它都是異端!
也曾記得,半年前在某工控龍頭企業提貨,銷售一臉媚笑的說工控才是王道。其它都不行。
每當這種時候,我總是想起這張圖片

因為你們還太年輕,玩的東西太少,體會不到開源硬體的優勢。看你用到了協會這個詞,應該也是一群入門不久的湊一起玩玩吧。那我們就不從商業應用,僅從業餘愛好來講吧。相較於軟體開發,硬體開發要考慮的因素還是要多很多的,所以開源的硬體平台搞出來的東西問題是多一些。選擇arduino這些開源硬體平台做東西,多數情況下都會在平台集成度、器件模塊選型、軟體效率、功耗等等很多方面做出妥協。畢竟不像單純的軟體開發,主要也就系統架構開發平台有那麼幾種區別。但是很多時候,即使做出了這麼多的妥協,相較於節省下的時間精力也是值得的。我想搞個3D印表機,想搞個簡單的遠程控制,用arduino或者其他開源平台連裝帶調半天都不用,要是從主控選型到PCB全都最優化設計,指不定搞到後年馬月去了。年輕的時候有大把的時間搗鼓著玩,費點時間也是值得的,但是越往後就越發現最值錢的還是時間,最有價值的還是開發效率。進一步講,就算要求高的東西從平台到軟體都要重新搞,那參考一下開源代碼也是事半功倍的。有橋不過何必摸石頭呢?
最後,啥時候STM32變得這麼高大上了?單片機這種東西選一個型號入入門,後面需要用啥型號上手也就是分分鐘的事,第一次聽說搞嵌入式的抱著一個型號弔死。就算你以後真的在嵌入式的路子上走遠了,偶爾玩玩arduino也是很正常的,反到只會用STM32系列那才搞笑了。
我覺得這個問題和另一個問題很像。↓↓↓使用 Python 會降低程序員的編程能力嗎? http://www.zhihu.com/question/19900260 ↑↑↑說到底,arduino提供的是一個便捷開發的平台,一套API,所謂用STM32和arduino開發的差別就是在於庫。而且事實上,大多數單片機的項目的核心都不在於寄存器的控制,時序的計算這樣底層的問題,那麼為什麼還要自己去造輪子呢?還是說那些輪子你都從GitHub上找?那又和直接用arduino平台有多大差別呢。。。
面向人群不同
兩者各有優點缺點想鄙視另一種的人最好先玩通了兩種兩種都玩溜了水平提高了就沒什麼好不好的了這個話題不就相當於『PHP是全世界最好的語言』這句話一樣嗎?純屬是哪來撕逼的么,,嗯,其實也好理解,在專業人士的眼裡確實會有那麼一點鄙視arduino的,畢竟有些人天天那一個玩具和真正做開發的東西比較,還BB的很帶勁,確實有點讓人不爽,(沒有鄙視arduino哦)相反,我很支持arduino,為啥呢,在一些相對簡單的項目中,為了在最短的時間內,完成更多,更強大的功能,arduino確實的完美的選擇。沒有那塊板子能做到這一步,創業公司,智能家居就很喜歡這貨,做起來分分鐘一個產品就出來了。但是,缺點也有,就像python一樣,寫起來那叫一個酸爽,各種封裝,各種抽象,媽的,寫的我都不想回去寫c了,,但是效率啊,效率,搞嵌入式有很多項目對效率要求很高的。這方面arduino是不可能完成的所以,就不難理解有些極端的人公開鄙視arduno了,就像寫彙編的人鄙視寫python的一樣,但是我有點不同,為啥要讚美stm32呢???這貨除了有個庫支持著,還有什麼優點是碾壓別的mcu的?論價格51笑而不語,論性能a8 什麼的就不BB了,甩他幾條街,等哪天別的晶元也弄個庫出來,他還B什麼呢???最後,用什麼晶元不應該是依項目情況而定嗎??
中國需要類似Arduino的原創,而不是克隆板子。
Arduino/Maple/raspberry-pi/microbit適合原型開發,理論驗證,定製的工程項目。
STM32/LPC/KL/STM8/MSP430/AVR適合電子產品設計。按照成本和特性表選購。珍惜STM8/AVR這些架構吧,日後越來越少了。我準備收藏這些開發板。十年後看能夠轉手賣么?為完成國家自然科學基金重大科學儀器項目,學化學的我使用arduino做儀器。為什麼說我是傻X?
arduino能讓我這個除了接電線啥也不會的前端也能折騰做硬體.也算是功德一件了
推薦閱讀:
※作為一名開發者我現在什麼都會,什麼都不精,怎麼辦?
※想自己做個Android直播推流APP練下手,有什麼可供個人開發者使用的推流鏈接嗎?
※作為App開發者,是否看好WP10?為什麼?
※參加第二屆前端開發者年度大會是個什麼樣的體驗?
※參加2017年5月20日北京首屆VueConf大會是個什麼樣的體驗?
