出处: http://bbs.dfrobot.com.cn/thread-793-1-1.html

为什么Arduino独占鳌头并站稳脚跟?







每个月,我都会在《Make》杂志上发表几篇社论形式的专栏文章。我写这些文章的目的是让您思考,从而激起讨论与辩论,没准儿还会让您发火。我第一篇专栏文章叫做“为什么Arduino在市场上独占鳌头并站稳脚跟?”。



大约一周后,一家大型芯片公司代表将路过我这儿,他会向我展示一种“类Arduino平台”,也被称作“Arduino杀手”。诸如此类的事情已经屡见不鲜,大概每月都会有某公司或某个人想制造出Arduino的替代品。多年来我对Arduino的报导已经帮助Arduino成功走进了制造者中,因此他们常常联系我。此外,在Adafruit工作时,我每天都用到Arduino。在我看来,Arduino在电子爱好者和设计师中的影响力极其深远,可能都不亚于早些年代个人电脑所带来的影响(例如家酿计算机俱乐部等等)。市场上的Arduino数量超过10万,据我估计,如果你把衍生产品中的Arduino也算在内就更多了(到2011年2月,大约就有15万)。我预测在接下来的5到10年里,每所学校都会使用Arduino来教授电子学和交互式系统原理。



大多时候,这些Arduino竞争者的市场情况调查会议是以良好祝愿来结束的,一旦他们企图重挫Arduino,那么他们将需要考虑一系列后果,这也是为何他们通常不会真正打击Arduino的原因。关于Arduino的辉煌历史,已经有一些文章进行介绍了,而我想重点谈谈Arduino似乎能永远立于不败之地的原因。

但是,断言某事物将成为事实标准是冒险的,也言之过早,不是吗?断言某事物成为大赢家也必然会引发争论,但不必在意这些,因为现在新的评论系统很管用,可以避免争论。在我看来,Arduino是开发板领域的大赢家,我会告诉您为什么我这么说,并且就Arduino始终能够在市场站稳脚跟的原因进行解析。如果您正期待制造一款Arduino的替代产品,我会为您报导。下列是有关Arduino的介绍,对您而言就如同一份食谱,我们一块来烹饪吧!



Arduino 是什么?



我们先看看Arduino团队如何为其定义的:

Arduino是一个开放源码电子原型平台,拥有灵活、易用的硬件和软件。Arduino专为设计师,工艺美术人员,业余爱好者,以及对开发互动装置或互动式开发环境感兴趣的人而设的。

Arduino可以接收来自各种传感器的输入信号从而检测出运行环境,并通过控制光源,电机以及其他驱动器来影响其周围环境。板上的微控制器编程使用Arduino编程语言(基于Wiring)和Arduino开发环境(以Processing为基础)。Arduino可以独立运行,也可以与计算机上运行的软件(例如,Flash,Processing,MaxMSP)进行通信。

Arduino硬件电路板可以自行焊接组装,也可以购买已经组装好的,软件则可以从Arduino网站免费下载使用。您可以根据开源许可获得硬件参考设计(CAD文件),并自由地修改使其适应您的需求。

Arduino的定义仍然有点模糊,这也正是Arduino的优势所在。Arduino是人们连接各种任务的粘合剂。要给Arduino下一个最准确的定义,最好用一些实例来描述。

  • 您想当咖啡煮好时,咖啡壶就发出“吱吱”声提醒您吗?
  • 您想当邮箱有新邮件时,电话会发出警报通知您吗?
  • 想要一件闪闪发光的绒毛玩具吗?
  • 想要一款具备语音和酒水配送功能的X教授蒸汽朋克风格轮椅吗?
  • 想要一套按下快捷键就可以进行实验测试蜂音器吗?
  • 想为您的儿子自制一个《银河战士》手臂炮吗?
  • 想自制一个心率监测器,将每次骑脚踏车的记录存进存储卡吗?
  • 想过自制一个能在地面上绘图,能在雪中驰骋的机器人吗?

Arduino都可以为您实现。



对于不了解电子产品或微控制器的人来说,这听上去很酷,很有趣,并且会想加入这个俱乐部。这是小孩子想制作的东西,您甚至可以哄他们在此过程中学一些知识。这些项目产生于科幻小说故事,这些小装置出现在日志里。其共同之处在于这些是幻想,是一些梦寐以求的东西。但是现在,这些绝妙的点子真的被实现了,及时您不是工程师,也完全可以自制。



这是个了不起的大事,因为工程师往往为其他工程师设计开发平台,而不是为艺术家,怪咖,或者为了分享一个想法而简单地将东西连接起来的小孩子们。Arduino团队不是由“硬蕊”电子工程师组成,而是由设计师,教师,艺术家,以及我所知道的所有“技术嬉皮士”组成(嬉皮士在这儿是一种称赞,我希望没有冒犯他们)。Arduino的主要基地在意大利,每年我都会看到文章讲述意大利人努力寻找“属于自己的Google”,而事实上他们已经有了,那就是Arduino,他们尚未意识到这一点。



看看Arduino项目的实例,你将发现制造者们对于这些电子产品“是什么”更加感兴趣,而不是制作方法。这些Arduino发烧友常常表示Arduino并没有教授基本的电子产品,“呸,这哪是真正的电子产品啊,”他们说,“太容易了!”是的,的确如此。如果您是个艺术家或设计人员,在不使用Arduino情况下,想让发光二极管闪烁,或者电机转动,那么祝您好运了。当然,如果您愿意花钱并且带着您厚重的电子产品技术教材来展示一番,这也未尝不可。但是对于那儿的其他人而言,他们不过是想用发光二级管来装饰火人节服装而已。



对于一些传统微控制器社区是如何看待Arduino这一问题,我认为最佳的例子就是AVR Freaks,该官方网站专注于AVR处理器(同样用于Arduino)。您会想AVR Freaks社区可能会喜爱Arduino,因为Arduino能够将AVR微控制器带给大众。然而,该网站的很多人并不喜欢这些非工程师们制造的所有古怪玩意儿,因为这些会破坏了他们的等级制度。我最喜欢引用一句话(我希望把这句话印在T恤上)。



“Arduino编程语言,小孩都能看懂,用一次就上瘾”—— ArnoldB,AVRfreaks网站



事实上,这种错误的态度却推动Arduino粉丝去建立自己的社区,帮助了Arduino建立一个兼收并蓄,而非高高在上的社区。



Arduino是简单,但不是过于简单。它围绕这些观点来建立,即学生使用Arduino去实现目的:接收传感器信号,获得一些代码,再利用这些信号和代码。或许甚至不会写代码,那他们剪切粘贴代码后就可以开始。Arduino是热粘结剂,而非精确的焊接。因此没有人会被切掉一只手,也不会有实验室被烧毁。Arduino团队成员之一会教授工艺美术人员和设计者如何使用。每天,Arduino在学习,教授,和共享代码的工程中不断建立和完善。这些工艺美术人员和设计者正在Macs系统上使用Processing语言并修改。(Processing是Arduino的老大哥)



说到此处,Arduino就像是一个热情,没有界限,艺术氛围浓厚的集会。这就是Arduino成为“自己动手做”成功典范的原因吗?不仅仅如此,我们来了解更多具体信息。



集成开发环境——运行在Macs, Linux, and Win操作系统上



运行在Mac, Win, and Linux上的集成开发环境完全开放源代码。集成开发环境是指如何对以Processing为基础的Arduino进行编程。(Processing是一种图形程序设计语言,深受设计人员所喜欢的开发系统),已经出现了很长时间。它不仅仅可以在windows系统上使用,还能在Macs和Linux上使用,如果您想达到兼容的效果,这点就显得很重要。Processing编程环境基于提供强有力支持的后端,开放源代码,gcc工具链,并被包装在Java里,所以易携带,也能查找和纠正错误。应用集成开发环境人群里不乏精英,这些人能够保持其功能不断强大。想让那些古怪的人使用您的开发平台来制做一些精巧的玩意儿吗?那就在Macs和Linux系统上无缝运行Arduino集成开发环境吧!



实际运行在Macs, Linux, and Win操作系统上的驱动程序



和集成开发环境一样,使用Arduino开发板的驱动程序也能在Mac,Win, Linux操作系统中运行,FTDI驱动程序正常运行即可。如果坚持使用串口,那么一个易于理解(但反应缓慢)的界面是一个不错的选择。当然,HID(人机接口设备)和定制的设备是很棒的,功能也很全面,而且速度更快,但是串行接口芯片运行时,能够被用来调试及编程,并且很容易通过插槽进入诸如,Java, Python, Perl, C, NET, BASIC, Delphi, MAX/MSP, and PureData, Processing等软件工具中。



程序库——简单任务,复杂任务轻松搞定



大量的封装库被用来完成复杂的任务,例如写入SD记忆卡,写入液晶显示屏驱动程序,解析GPS。也有一些程序库用来做简单的事情,比如转动插脚或按键消抖。如果有10个芯片,我们就得将UART安装代码写10次,坦白说,这让人厌烦。如果调用Serial.begin(9600)函数来处理寄存器数据的话,那就容易多了。



轻量型,直接运行在硬件底层上



使用一款经认证的,易于理解的编译器(我们甚至可以说avr-gcc是AVR默认或标准的编译器),代码能直接运行在硬件底层 上。其编译方式与NET 语言及BASIC语言不同。该编译器运行快,体积小,重量轻,并且您能使用HEX(十六进制)文件为成批的新芯片进行编程。

传感器

Arduino真正腾飞的原因是其能够实现将模拟输入转换为数字输入,换言之,您可以将光线,温度,声音,或者市场上已有的任何低成本的传感器信号输入,Arduino都能识别。对于数字传感器,Arduino支持 SPI( 高速同步串行口)和I2C总线。这一功能覆盖市场上99%的传感器。使用其他开发平台是不易实现的——想想如果把一块Beagleboard(伟大的产品)和Arduino绑在一起,仅仅是为了获得传感器的数据,那真是太奇怪了!



简单,但不至于太简单



传统开发板往往过于复杂,有很多附件,例如液晶显示屏,按钮,发光二级管,7段数码管等等。开发板展示了其一切功能。Arduino板上显示的功能数量是绝对最小值,如果要实现功能扩展,只需增加Shield(盾)。Arduino Shield有成百上千,从液晶显示屏到无线上网技术,但要增加多少Shield由用户自己定。扩展Shield的功能也容易,对于制作扩展Shield功能的人还会有商业上的刺激。



非芯片制造商制造



Arduino开发板不是由芯片制造商设计的。为什么强调这点呢?因为芯片制造商为了突出自己的产品与众不同,他们常常会添加一些奇怪的东西。而Arduino强调微控器间的共同性而不是差异性。这就意味着Arduino是一个绝佳的初学者平台,只要在Arduino板上可以做的事情,您在其他任何的微控制器上都可以做。这一基本特征将伴随您很长时间。



低成本

您只需30美元就能购买一个Arduino板。不久后,也许花20美元就能买到。我们发现,芯片制造商们开始意识到制定合理的定价策略极为重要,但尽管如此,我们还要花超过50美元,甚至100美元以上才能买到他们的开发板。



开放源代码

Arduino开放源代码允许用户复制,并可以用于商业用途。我认为开源并不是Arduino成功的最大原因,因此我把这点放在最后来说。但这并不意味着开源无足轻重。不用花钱或请人就可获得所需的产品。Arduino是开源硬件,所以公司和学校不需要Per-seat(每客户)许可证就能使用,还没有运行中断或软件永久消失的风险。如果您想扩展产品功能,花点时间将代码添加进去就行。随着更多人在公司或企业持有股份或所有权,他们对此更为谨慎。现在还有人去争论开源软件是不是一个好主意吗?



以上就是Arduino在众多开发板中独占鳌头的原因,至少我这样认为。没有其他平台可以完全做到以上几点。有一些平台做得很接近了(例如Netduino,一个很好的平台填补了某些空白市场),但这些平台还有很多方面需要完善。也许您同意我的看法,正在脑子里对以上几点一一核对,也许您急不可耐准备回应FPGA会如何更加出色。不管怎样,如果还没有做到以上几点,那么您的平台就还没准备好与Arduino竞争。(特别是打算自称“Arduino.杀手”的平台),



Arduino为何能在市场上站稳脚跟?



其中的门槛不是因为经济上的原因,而是思维方式上的。需要有魄力,更要避免自视甚高。芯片制造商通常需要展示其产品,不会在意其产品能否在Mac系统上运行,甚至不会在意要编写大量的软件,程序库,和集成开发环境。历来这种开发平台是由芯片公司建立的。我们看到一些大的厂商涌入市场,想用硬件补贴模式来击垮Arduino,但是如果Arduino 保持高品质和强大的功能,那么这些打击行为将起不了作用。



除此之外,让Arduino立于不败之地?Arduino社区。怎样能使10万多人集体跳槽?显然不可能。要想赶超Arduino,您需要开发类似Arduino的新产品,支持Arduino的Shield和附件,还要写入大量代码(这是很多芯片公司讨厌做的)。而Arduino团队真正想实现的是:支持多系统平台的的软件,海量程序库,有效的驱动程序,操作简单,成本低,以及开源。Arduino团队成员对技术痴迷狂热,期待看到实现这些理想的其他平台,这是他们一直在玩的游戏。我想,这种理想的平台也是我们所想要的,无论其名字是否叫Arduino。





如果您想击败Arduino团队,需要一次大的飞跃,做到Arduino已经做到的。对广大用户而言,最佳平台就是在市场上独占鳌头并站稳脚跟的平台。



Arduino国王万岁!

为什么Arduino独占鳌头并站稳脚跟?的更多相关文章

  1. java设计师初入职场,如何站稳脚跟

    本文内容一共由3部分展开 a:新人如何快速融入团队 b:如何在职场中提升自己影响力 c:如何规进行职业规划 a:如何快速融入团队   能在层层选拔下进入公司,说明你工作的能力还是得到公司的认可,不过这 ...

  2. [转帖]从Intel和ARM争霸,谈芯片前世今生

    从Intel和ARM争霸,谈芯片前世今生 http://www.itpub.net/2019/07/24/2476/ 长文预警, 写的非常好.. 我尽量写得轻松一些,因为其实这个话题很有趣,仔细探究起 ...

  3. ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus

    ASP.NET Linux部署(2) - MS Owin + WebApi + Mono + Jexus 本文承接我的上一篇博文: ASP.NET 5 Linux部署,那篇文章主要是针对最新的ASP. ...

  4. Java模块化规范之争(转载)

    经过近20年的发展,Java语言已成为今日世界上最成功.使用的开发者人数最多的语言之一,Java世界中无数商业的或开源的组织.技术和产品共同构成了一个无比庞大的生态系统. 与大多数开发人员的普遍认知不 ...

  5. 生活中的OO智慧——大话面向对象五大原则

    世间万物,以俗眼观纷纷各异,以道眼观种种是常.面向对象思想不仅是编程的智慧,同样也是人生的智慧.通过生活去领悟面向对象的智慧,以面向对象的智慧来指导生活. (部分图片取自How I explained ...

  6. 滴滴与Uber的竞争分析

    滴滴与Uber的竞争分析 随着互联网时代的到来,智能手机的普及,互联网不再是一个完全虚拟的东西,它开始慢慢地融入到我们的生活中来.这些年我们可以明显地感受到我们的生活方式在一天天发生着变化,我们也逐渐 ...

  7. 使用HTML5新支持的搭建WebRtc环境来作为视频通讯

    发现如果再重新设计这块的话,又会有不同的思路.对于可定位能力,我们可以全息日志采集,将每个用户在整个系统的走向异步的抓取下来,再同步到专门的日志分析系统,在这个系统中可以根据用户号码.订单号进行过滤分 ...

  8. 运用requirejs的异步加载方式

    很容易让人以为是权重出问题了,但就我自己多个项目动画导出的经验来看,大 我们说程序员核心能力有以下几点:自学能力,解决问题的能力,团队合作能力.自学可以让我们在这个日新月异的时代不被淘汰;解决问题可以 ...

  9. 一位资深开发的个人经历 【转自百度贴吧 java吧 原标题 4年java 3年产品 现在又开始做android了】

    楼主2007年从一家天津的三流大学毕业.毕业前报了一个职位培训,毕业后可以推荐工作.因为推荐的公司都是北京的,所以就来北京了. 找了一个月工作,没有找到要我的,就在出租屋里宅了起来,打着考研的旗号,又 ...

随机推荐

  1. 【2018集训队互测】【XSY3372】取石子

    题目来源:2018集训队互测 Round17 T2 题意: 题解: 显然我是不可能想出来的……但是觉得这题题解太神了就来搬(chao)一下……Orzpyz! 显然不会无解…… 为了方便计算石子个数,在 ...

  2. 训练1-Z

    有一头母牛,它每年年初生一头小母牛.每头小母牛从第四个年头开始,每年年初也生一头小母牛.请编程实现在第n年的时候,共有多少头母牛? Input 输入数据由多个测试实例组成,每个测试实例占一行,包括一个 ...

  3. Mac python3 环境下 完善pdf转jpg脚本

    由于样本图片数据都是保存在pdf里,想拿到样本必须先把图片从pdf中提取出来,算是数据清洗中的一点小小的积累吧. 这里不得不吐槽一下公司存储图片的机制,业务员把jpg格式的照片放到word里,然后用工 ...

  4. JavaScript(DOM编程二)

    文档加载完毕之后,在Window.onload方法中创建元素节点,添加到DOM文档中 代码演示: <html> <head lang="en"> <m ...

  5. Codeforces Round #136 (Div. 1) B. Little Elephant and Array

    B. Little Elephant and Array time limit per test 4 seconds memory limit per test 256 megabytes input ...

  6. Android网络编程(十)Retrofit2后篇[注解]

    G相关文章 Android网络编程(一)HTTP协议原理 Android网络编程(二)HttpClient与HttpURLConnection Android网络编程(三)Volley用法全解析 An ...

  7. AS常见的错误

    导入的项目使用的gradle版本和本地的要一致,不然会提示类似"Minimum supported Gradle version is 3.3. Current version is 2.1 ...

  8. wpf获取webbroswer的两个方法

    //跳转前的地址 private void WebBrowser_BeforeNavigate2(object pDisp, ref object URL, ref object Flags, ref ...

  9. USACO 1.4 Arithmetic Progressions

    Arithmetic Progressions An arithmetic progression is a sequence of the form a, a+b, a+2b, ..., a+nb ...

  10. 流式计算新贵Kafka Stream设计详解--转

    原文地址:https://mp.weixin.qq.com/s?__biz=MzA5NzkxMzg1Nw==&mid=2653162822&idx=1&sn=8c4611436 ...