[编程开发] 为啥有好多人说Arduino是玩具?

[复制链接]
y007 发表于 2023-10-3 19:12:42|来自:北京 | 显示全部楼层 |阅读模式
我自己用了一下Arduino觉得很适合拿来搞电子制作啊(做产品还是老老实实用单片机吧),而且编程比stm32之类的简单很多,不知道为啥有人会说这么好用的东西是玩具
/*****分割线以下为N年前的看法*******/
我自己没用过Arduino(用51用的比较久所以不太懂Arduino的东西),不过根据我的一点了解,应该是因为Arduino编程极其简单,根本就不用考虑电路的设计,所以才被当成玩具吧。。。。。。。。
全部回复5 显示全部楼层
卡珊德拉 发表于 2023-10-3 19:13:24|来自:北京 | 显示全部楼层
问Arduino是不是玩具,其实是在问应该专注底层还是专注业务?而这个问题其实又是在问,自己对自己的定位是什么?
Arduino这个平台的目标市场应该是创客和教育市场准备的,它几乎屏蔽掉了底层的东西,常用功能都封装成一个抽象的接口直接调用就行了,上手非常容易,又有强大的社区支持,对于没有相关知识背景的人来说很友好。Arduino就是要目标用户专注于业务,而不用去关心单片机底层的那些东西,适合快速搭建产品原型验证想法,或者做一些有趣的小玩意出来玩。
如果要做产品,Arduino并不是个好选择,易用性的代价往往资源上的浪费,成本和性能没有办法做到最优的权衡。在高端一些的嵌入式领域,浪费资源换取研发周期倒是比较常见,这些领域出货量不大对成本并没有那么的敏感,但是到了单片机这里,几分钱的成本也架不住上百万的出货量,Arduino不是最优解,甚至可以说是一个非常糟糕的解。
如果是要学习电子技术学单片机,用Arduino能学到什么呢?C语言程序设计?用Arduino搭建实验平台倒是不错的选择。
与其说Arduino是玩具,不如说Arduino是工具,它帮助我们更快的实现自己的想法而已,怎么选择主要看自己的用途。反正我现在基本不买单片机玩了,搭建开发环境烦死人,建立一个工程烦死人,我就是个搞硬件的业余时间搞点小东西玩玩,我干嘛跟自己过不去搞单片机呢。
eee1573 发表于 2023-10-3 19:13:33|来自:北京 | 显示全部楼层
能把这么复杂的东西变成玩具,真地很不容易!
最开始从51入门、之后搞MSP、ARM、FriendARM等等和使用keil(MDK)、iar等工具、之后搞Arduino、Raspberry Pi的人想说:
"说'Arduino是玩具,和Arduino极其简单'的人,基本是没有搞过Arduino的人,或者是接触Arduino浅尝辄止的人。"
说玩具也对,但可能会误导很多入门的人。
Arduino不是电路板!!!
Arduino只是个开发方法和开发平台!!!
Arduino硬件和软件都是开源的!!!
Arduino可以支持从简单到复杂的很多种板子,从原理上说,是不受MCU限制的。当前已经可以支持包括ARM的STM32,ESP8266,ESP32等板子32位MCU。就是Arduino支持的最低功能的UNO板(atmega328p MCU),也比51板功能强大很多。
Arduino的开发方法是,硬件和软件的开发,都有明显的"搭积木"的方式,不重复"造轮子"。如果有已有"积木",硬件买来用,软件免费下载用; 如果"积木"不够,自己设计硬件或软件,构造新的"积木",再用这些"积木"搭建你的应用系统。
Arduino平台规定了一层硬件抽象层HAL,可以使你更加关注应用逻辑。因为是开源,底层细节源码也可以看到,很优秀的。
Arduino开发方式例子丰富,思路开阔,入门学习容易,原型开发快,成功感强。也可以搞得很深,这与应用领域相关,如3D打印机、四轴飞行器、机器人、智能家居、物联网应用、与树莓派连接等。
从Arduino开始学习,完全可以绕过开始学习的"挫折感期",较轻易进去高层开发阶段,同时也不失底层的开发能力。而开始就学习其它如51、arm和使用iar、mdk等开发工具,可能会阻塞在某个细节上,学习进度慢,挫折感强。

---以下后添加---
(0)利用Arduino的产品板开发方法

在开发实际产品时,不使用官方的现成板,而是自己做板,并加入产品功能模块部分。这等于硬件不遵循Arduino硬件的"搭积木"方式,而是与传统硬件开发一样的。但是,要做与Arduino硬件的"引脚映射",之后不影响软件还是在Arduino上开发。
也就是,硬件遵循传统方式开发,软件继续遵循Arduino方式开发,中间要加个"引脚映射"。
(1) 支持混合语言编程

Arduino平台采用著名的开源gcc编译器,自动支持汇编语言、C语言、C++语言混合编程。
(2) 直接支持面向对象编程思想

Arduino平台可以使你直接就学习到面向对象的编程思路,库中的模块以类或对象形式给你,可以简单地说,面向对象编程就是"搭积木"的过程,让你以"搭积木"的方式去拼装应用,而这就是面向对象的方法。而从51等开始学习,即使语言上支持面向对象,但是还在用面向过程的思路编程。
(3)gcc支持

Arduino平台支持的最低配官方板子是Arduino UNO,第三方插件有支持更低配的ATTiny85八个引脚的MCU,也有支持ARM和ESP等32位机的MCU的插件。UNO板子采用ATMega328P的MCU,它是采用AVR8的内核的8位RISC的CPU,即使是8位CPU,gcc编译器也支持它。而gcc是不支持51的。
gcc支持Arduino!逐渐显现出linux的影子!
(4)麻雀虽小,也有引导

看看Arduino的引导程序bootloader,更显现出linux的影子!其中是汇编与C混合编程的。
(5)看看Arduino的Firmata,更神奇!!!

分布式控制,类似B/S程序结构。可以做到只在上位机编程,多个下位机采用Arduino板,所有下位机"仅仅"安装"一个"相同的Firmata客户端程序(像浏览器!),所有下位机的具体控制应用逻辑都在上位机中编程实现。上位机可以用树莓派或PC机。
(6)Arduino不支持操作系统?

支持!!!
当前的Arduino板不能支持linux os,那是因为硬件资源不够,原理上是支持的。
麻雀就应该有麻雀的心脏,而不是大象的。
Duinos是Arduino的操作系统之一,著名的FreeRTOS也可以用于arduino。而本人更喜欢把QPnano放到Arduino上作为操作系统。
(7)为什么还有那么多人还用51?

-MCS51系列是1980年INTEL设计出的微控制器(MCU),采用复杂指令集(CISC)的51内核,功耗大,这是缺点。
-MCS51系列是最早进入国内的MCU,熟悉的人多。
-MCS51的IP核(知识产权核)便宜,公司可以很便宜购买51的IP核,构造公司自己的MCU或特殊芯片。如韩国的网络控制器芯片W5100,W5200,W5500等就是采用51核。
-MCS51功耗大,导致抗干扰强,缺点?也是优点。在要求可靠性高而计算能力不高的情况下,采用51时,抗干扰设计不用考虑太多,与低功耗MCU对比,抗干扰部分更好设计。这是一些应用者考虑比较多的因素之一。
-MCS51计算能力大约是AVR8(Arduino UNO板子用)的十分之一。如果需要性能更强大的,可以选用ARM作为内核的Arduino板子,或80x86内核的Arduino板子。
(8)支持平台

Arduino开发工具支持macOS,linux,windows。
说实在的,当前,我在用micropython,python,和AI相关东西,和分析linux内核。
感谢技术给我的乐趣!
以下,嵌入式系统工匠坊ESCW(内含Arduino仿真学习,和QP仿真、QP分解 可运行学习例子)
<a href="http://link.zhihu.com/?target=https%3A//weidian.com/s/259792644%3Fwfr%3Dc%26ifr%3Dshopdetail%26source%3Dshop%26sfr%3Dapp" class=" external" target="_blank" rel="nofollow noreferrer">https://weidian.com/s/259792644?wfr=c&ifr=shopdetail&source=shop&sfr=app
技术博客园(内含11个QP分析文章,等等)

hyper99 - 博客园
zhengshi_zhang 发表于 2023-10-3 19:13:52|来自:北京 | 显示全部楼层
谢谢邀请,直接说,arduino并不简单,任何东西对一部分人来说是产品,对另一部分人来说是玩具。不用举例,贫穷会限制想象力。
我开始也是认为其太简单,后来深入学习发现其思想太值钱了。
工程师中有相当多的人陷入技术思维,市场用的东西不一定是你花费十年研究造出得世界一等品,造出来怕是被某些克隆巨头分分秒秒实现。
简单受众群更高,另外就是其自适应 可变性 模块化 标准化 分分钟能做出你的想法 组合功能实现demo和样板,这很关键,不然就没有ppt造车的说法。
ppt都行,硬件demo都出来了,不是更高大上。
以上内容隐含一种商业模式,欢迎深入挖掘。
阿博科技 发表于 2023-10-3 19:14:49|来自:北京 | 显示全部楼层
之前写过一篇,说明这个问题:关于使用Arduino做开发的二三理解-Arduino中文社区 - Powered by Discuz!
这里再做些补充,讨论这事的前置条件:
我们是在讨论arduino的软件还是硬件部分?

arduino硬件部分,只是一个最小系统,是用作评估,或者搭建原型用的,如果你把他当作是玩具,也是没问题的。
几乎所有的单片机开发板,你都可以把他当作是“玩具”,因为从硬件构成上讲,和arduino开发板没有区别。
通常实际量产的产品,都是要重新画pcb的,肯定是还有很多外围电路。
arduino软件部分,本质是一个C++编程框架,因为现在已经是一个事实标准,所以github已经将其列为了一门语言。讨论这部分是不是玩具,是可以的。
现在可以开始我们的讨论了,我们先看看这个观点,看是谁提出的,然后猜测一下他们为什么这样说:
1.软件工程师

如果是个软件工程师,通常他对硬件开发一知半解;
初学者可能还没分清arduino和单片机的关系。再次重申,Arduino是一个C++单片机编程框架,你可以用他开发多种 系列/型号 的单片机,常见的如:AVR\STM32\MSP430\ESP8266。
由于对硬件本质的不了解,或者较少的硬件开发经验,软件工程师对框架中的近似黑箱的运作没有把握。对于这种不确定,软件工程师说,"这是个玩具",也是情有可原。
但请注意,经过10多年的发展,现在的arduino已经是一个成熟的框架,bug已经很少了,软件稳定性已经很高。相信没有人敢说,自己写了一两个月的程序,比一群人精心维护了10年的程序好。
2.硬件工程师

程序仅仅是硬件开发过程中的一部分,电子电路更为重要,或者说更为玄学。对于一个有经验的程序猿来说,在开发工具的帮助下,软件bug太好定位了。但对于电路上的bug,往往都要经过分析测试,才能确定并修正,而且其过程会消耗更多的时间。而要让一个硬件更为稳定,是需要极其丰富的软硬件开发经验的。通常做软件的人都不具备这样的想法和素质,因为对软件bug来说,就是发布一个补丁或者升级包的事,而对硬件开发来说,可能是数万甚至数百万的损失。
硬件工程师,站在鄙视链高点,俯视着使用arduino轻松实现功能的用户:“这只是个玩具”。
这么想来,也是没毛病的,因为大多数用户,仅仅停留在"实现功能",确实只是到玩具级别。
但这些所谓的“玩具项目”,如果用STM32或者其他单片机厂家API开发,仍然会是个“玩具项目”,因为目标仍然是"实现功能",开发者仍然是那个开发者。
一个项目或者作品是否只是”玩具“,看的其实的是 开发者能力 和 项目目标 ,和是否用arduino本身无关。
3.杠精

杠精最喜欢的方式,就是关公战秦琼,举例说明下:
“这个汽车太垃圾啊,防弹性能肯定不如坦克”
“这个洗碗液太垃圾啦,清洁能力完全不如漂白液”
“arduino太辣鸡啦,性能完全不如树莓派”

以上回答是从arduino本身来解释“玩具”这个误解的。
这里再从其他方便补充下可能照成这种“误解”的原因。
1.arduino的发展
arduino设计之初是给非专业人士使用的,国外国内都是如此,2007年时,国内最早使用arduino的一批人,是艺术院校师生。大家都是自学编程,毫无章法,目的就是实现需求,程序上肯定是没有专业程序猿写的流畅。这批使用者可能造成了错误的既有印象。
2.硬件行业的发展
arduino,或者说各种嵌入式开发框架,在某种程度上,是硬件性能过剩的产物。诚然使用arduino会消耗更多的ram和flash,但对于大部分项目需求,单片机的性能都是有盈余的。对于非大批量生产的设备,节约开发成本和时间比节省几毛钱的硬件更重要。

有时候,我也不明白,9012了,咋还有人想不通呢?
丰鹰 发表于 2023-10-3 19:15:43|来自:北京 | 显示全部楼层
这个问题要从很多方面去考虑...但是我可以先下结论在前面
时至今日,arduino已经成为Github最多的开源硬件项目框架(ESP8266+328P)



(作为国内比较早玩arduino的人..也曾经在某大学教过学生arduino..分享一下这么多年来arduino的变化,我ArduinoCN和极客工坊ID zzz)

最早的最早,国内大学只有51的课程(虽然现在也有不少),那个时候arduino刚刚出现,知道的人也比较少,那个时候,硬件圈子确实有些人听闻arduino简单就觉得是玩具。因为上手难度极低,几乎稍微了解一点硬件和掌握C语言就能轻松上手,所以业界大多持鄙视态度,毕竟人家花费了很多努力写自己的库,arduino一上来新手2天会用了还不用自己写,很不服。

后来,国外好玩的项目越来越多,人们逐渐发现这些项目都是用arduino做的,因为开发周期短,二次开发难度低,容易推广,开始逐渐走入主流视野,这个时候一些公司开始做arduino的开发教程。

  • OpenJumper  ArduinoCN创始人-奈何酱的公司
  • OCrobot 极客工坊创始人-弘毅酱的公司
  • DFrobot 知名Arduino开发套件品牌-合并蘑菇云创客空间,亚洲出货量较多
  • Seeeeeeeed  知名Arduino以及硬件公司-欧美出货量较多

然而真正到了arduino普遍应用的第一个现象级产品,我觉得是3D打印机,在3D打印机最红火的时候,90%的3D打印机主控板都是Arduino。因为太好用了,也不需要很丰富的嵌入式经验就能重新设计属于自己的主控板,开发周期极短,于是成为了3D打印机的主流主控板。
此时,中美两开花,Arduino的春天,到了。随着ESP8266的发布,中美程序猿联合发力,将arduino语言完美应用到了ESP8266上,此后一发不可收拾。随着智能家居的兴起。有无数的智能家居领域的产品使用ESP8266和arduino进行开发,此时是arduino商业化应用的起点。

再往后,便是大学,随着arduino的应用领域越来越广,从开源项目到产品,各种开发板层出不穷,大学的领导者们也开始意识到,51早就应该被淘汰,再加上学生们大多有C语言程序的基础,开始采购arduino学习套件,并且开始推广arduino课程。这个时候,我们的朋友,ArduinoCN中文社区创始人,奈何先生,做出了巨大的贡献,写出了第一本可以被应用为大学教材的Arduino开发系统学习指导书 -Arduino程序设计基础



随后,随着多方面的努力,现在,越来越多的大学开设了Arduino相关的专业课程,后来我也有机会在工作地的某大学执教了一段时间arduino,在上课过程中,我发现学生们学习很快,上手很容易,哪怕没有硬件基础也能很快设计出属于自己的项目,所以在我看来,arduino是非常适合学生作为单片机和电子世界入门的引路人(小学生也能学会,还能顺便学学C语言编程)

时至今日,9102年,我已经很少很少听到有人说Arduino是玩具了,因为当一件事情从末流走向主流,带来的必将是Maker和教育的革命,51早就应该被淘汰,被Arduino各方面碾压,可是你听过51是玩具么?没有,因为年代过于久远,那时候人们学习单片机都是51入门。现在51在GAYhub上已经踪迹难寻。
无论曾经的人如何评价arduino的玩具地位,但是现在,不可否认,arduino已经占领了整个开源硬件圈,并且在国内高校,逐渐替代51的传统教材,并且能做到让学生们更容易上手,和做出属于自己的项目

快速回帖

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则