Oh!Coder

Coding Life

初识Arduino

| Comments

最近了解了一款新玩具,名字叫“Arduino”,因为源自于意大利,所以名字也引用于意大利语,意思是“强壮的朋友”,至于发音,网上常见的有两种,一种是意大利语发音,另一种是美式发音。因为属于音译,不同的发音也因人而异,所以具体的可以自行Google一下,:P

对于这款玩具,基础介绍内容网上已经有很多。这里只是针对自己这几天的了解做一个简单介绍。具体的我想从两方面谈一谈,一方面是软件,另一方面是硬件。

软件方面

因为才接触不久,所以只是对Arduino的开发相关软件做一些介绍。对于非程序员出身的朋友,如果想更好的通过编程控制Arduino,目前了解的有两款辅助软件:

这两款软件都是基于图形化的。对于不熟悉代码的设计人员来说比较适合。具体来说,对于Mind+和Ardublock这两款软件在网易云课堂上专门有两门课程做了讲解。一门叫《Arduino初级课程》,这门课程讲解时使用的是Ardublock。另一门叫《学Arduino玩转电子制作》,这门课程中有几节课用的是Mind+。这两门课程可以作为不熟悉Arduino的人入门学习,特别是初级课程的讲解,讲的还是不错的。

对于了解程序设计的人,写代码可能就不会是一件特别难的事情。那么可以直接使用官方提供的开发工具,名字就叫做Arduino。此款开发工具是使用Java开发的。为什么会使用Java开发呢?因为这款IDE衍生自Wiring,而Wiring又衍生自Processing,Processing的开发是基于Java的,所以就是这样一步步继承过来的。这里有一张图比较清晰的描述了它们之间的关系:

pic

图片来源:oreilly

从图中可以看出,Processing还是蛮强大的。虽然Processing本身使用的是Java,但是如果你写一写Processing的程序,就会发现,其实Processing开发语言的语法并不像Java,而是一种类C语言。这种开发风格一直延续到了Arduino IDE上。当然,Arduino开发本身提供的类库其实就是C/C++语言开发的。Processing的特点是其强大的图形开发,如果把Processing和Arduino进行结合,在软件层面的开发也可以有很大的想像空间。对于软件就先说这么多吧,有兴趣的朋友可以做一些深入的了解。

硬件方面

对于硬件方面,Arduino的入门产品就是一块儿名叫Uno的板子。这块儿板子可以算作是Arduino开发的入门级产品。板子上主要有一些常见的标准接口。例如,一个USB接口、一个电源接口,以及一些数字电路输入/输出接口和模拟电路输入/输出接口等。板子上最重要的部件应该是那块儿AVR单片机了。Arduino使用的这块儿单片机是Atmel生产的。Atmel出品的AVR系列的单片机遵循于8位~32位的RISC指令集标准。AVR处理器共有六个系列,Arduino Uno(R3)上用的是Atmega328,配置稍微好一点的Arduino Leonardo使用的是ATmega2560。对于硬件产品的具体分类,可以查看官方网站

从官网上的产品列表中可以大致看出,Arduino的产品大致分为两类,一类是功能型的基础开发板,另一类是辅助扩展型的板子,俗称“盾板(SHIELDS)”。从我自己理解的角度来说,基础开发板中各个产品的差异主要体现在其用途的不同上。所以对于如何合理的使用这些开发板,需要对这些板子单独做一些了解,才能灵活合理的应用到不同的场景中。

因为Arduino的硬件标准是开源的,任何人都可以获得Arduino的制造电路图,以及所有相关资料,可以免费拿来定制属于自己的Arduino电路板,唯一的限制是需要在你自己制造的电路板上印上Arduino的商标。这里多说一句,对于觉得官方Arduino卖的贵的同学,其实完全可以选择国内的制造商,因为都是按照Arduino官方图纸标准做的,所以基本上都会对Arduino官方的电路板进行兼容。这里我选择的是国内的DFRobot,因为我觉得他们做的产品很全,专注于这方面,而且他们自己也会开发一些兼容Arduino的扩展功能的开发板。不过,我自己也是刚刚使用,到底怎么样,现在就下结论确实为时尚早。除了DFRobot以外,淘宝上还有几家据说口碑还不错的店。例如,OpenJumper奥松机器人ocrobot,等等吧。我自己听人说还可以的就这几家,至于到底怎么样我不知道,所以这里也仅做个参考吧。

说到硬件,又想起一款用来做电路原型设计的软件,名字叫fritzing(主页有YouTube视频,不翻墙会影响网页打开的速度)。这是一款快速设计电路原型的工具软件。也算是Arduino这个圈子中相关的开发软件吧,只不过这款软件面向的是硬件电路板 :) 。

初步来说,了解的就是这些。当然,如果想玩儿转Arduino,最好是学习一下电路,以及AVR单片机开发等方面的知识。学习这些知识,对于产品在电路上的设计,以及代码的优化都将会是有帮助的。

Comments