第1节 我选Arduino
高大上的无人机玩过吗?智能的家庭空气检测仪见过吗?手机控制的电子体重秤、血压仪用过吗?这些“高科技”都属于智能硬件。
作为软件开发者的你,有没有想过自己开发一个智能硬件呢?
也许你会觉得硬件开发的门槛很高,作为小白或者软件开发者难以企及,那么这你就想错了。其实,现在已经有了很多专门为软件开发者设计的智能硬件开发平台。例如现在火爆的树莓派-raspberry pi、英特尔推出的爱迪生-Edison,以及本系列讲重点介绍的Arduino。
有了它们,即使你对硬件并不了解,也能开发出软硬件完美结合的智能小硬件。
这些硬件都有个共同的特点,采用主控制板+扩展板+外接硬件的方式工作。
主控制板:我们讲的平台(树莓派、爱迪生、Arduino),指的就是主控制板,它通常就是一个开发板。你可以把它想象成台式电脑上的主板,只不过这个主板已经焊接上了CPU和内存等最最主要的部件;
扩展板:主控制板上的针脚是有限的,扩展板可以把一个针脚扩展成多个针脚,让更多的设备与这个针脚连接。它们就好像是电脑主板上延伸出来的一根根USB数据线,把主板上的一个USB接口,转接成了多组不同的USB接口,放在电脑主机的前面和后面;
这里介绍下“针脚”的概念,主控板上对外提供的连线接口都是适合线头插入的凹槽,称为针脚。
- 外接硬件:按钮开关、传感器等器件通过扩展板与主控制板的针脚相连。它们就好像是台式电脑上的USB接口可以连接的U盘、移动硬盘、USB Wifi等等外接设备;
可以想象的到,只要使用对应平台的扩展板,外接硬件可以连接在不同的平台上,正常的使用。所以那些外接的硬件有很高的通用性。
1.1 WHY Arduino
在前面提到的智能硬件开发平台中,我们选择了Arduino, 为什么?
Arduino足够的便宜,一个Arduino开发板不到100块钱(即使是意大利原装板也只要300多人民币),投入的硬件成本很低,可以花很低的代价学习智能硬件开发;
作为智能硬件的初学者,总希望从最简单的开始,能学到原理,但是又不要有太高的学习门槛,有了基础以后再循序渐进。Arduino开发只需要开发者会基本的
C语言
就可以了,几乎不需要任何其他的编程、硬件基础;Arduino的运算能力足够制作一些简单的智能硬件了,而它又更接近一个单片机,很多智能硬件可以用它做功能的验证;
Arduino是软硬件开源的,有很多的技术资料可以参考,有庞大的社区支持,可以找到很多志同道合的人交流、快速进步;
所以,我们选择这个性价比最高的的平台来开始智能硬件开发之旅。
1.2 Arduino开发板
Arduino开发板根据体积和性能,分为了多个子系列。
其中最常见、用来做入门学习的有两种,UNO和MEGA。
这两个开发板的功能几乎一样,MEGA使用的主控制芯片性能要高一些,针脚多一些,可以同时连接的外接硬件就要多一些。
相比之下,UNO配置低一些,价格也便宜一些。
MEFGA配置高一些,价格比UNO贵二十块人民币左右(意大利原版之间相比贵二十美元左右)。
我们使用Arduino开发板主要是用来学习,可能会同时要加装各种外接设备,MEGA开发板对此更有优势。
UNO接口太少,假如要做个四驱小车,一旦使用了四个马达后,基本就不能再添加其他硬件外设了。
另外,UNO的串口控制器只有一个串口,假如你还要使用其他串口设备的时候,调试起来就比较吃力了。例如做蓝牙小车,调试时噩梦就来了:因为Uno只有一个串口,要提供给蓝牙和USB共用。你得先拔下蓝牙模块的连接线才能部署程序到开发板;部署完成后,再插上蓝牙连接线才能开始测试。
如果出于批量生产成本考虑要使用UNO开发板也没有问题,可以先在MEGA上完成开发,最后在UNO上做性能测试,只要使用的硬件接口不大于UNO开发板提供的接口就行了。
基于以上这些分析,我们的建议是选Arduino的MEGA开发板。
学习硬件开发的一个很大门槛就是要记住许多复杂的寄存器地址。Arduino的之所以被认为是给软件开发者设计的硬件,就在于它简化了硬件上的多种接口,把它们抽象成一个个可以直接控制的引脚位置。软件开发者编程时只需要对这几类引脚做操作就可以了。
Arduino开发板上的引脚数量,根据开发板的类型是不同的。例如,UNO有20多根引脚,MEGA有70多根引脚。这些引脚都有自己的名字。
这些引脚可以被分成3类,
电源引脚。利用电源引脚,可以为外界的扩展板或者硬件提供3.3V(引脚3V3) 5V(引脚5V)的电压,以及接地(引脚GND)的功能;也能通过引脚VIN接受外部提供的电压;
在MEGA开发板中,电源引脚的位置大致如下,
模拟引脚。区别于数字引脚只能输出0,1两种状态,模拟引脚可以输出0与1之间的中间状态。开发板有若干个模拟引脚,它们接收模拟量:
0~1023
,输出模拟量:’0-255’。
输入输出范围不同应该是硬件设备的精度造成的。它们被编成了
0~N
的数字号码,用A0~AN
来表示。例如MEGA开发板上的模拟引脚有16个,就是A0~A15
。数字引脚。只能输出0和1两种状态的引脚。开发板有若干个数字引脚,它们只接收或输出高低电平两个值:HIGH或者LOW。
它们被编成了
0~N
的数字号码,用D0~DN
来表示。例如MEGA开发板上的数字引脚有54个,就是D0~D53
。这些数字引脚中,有的引脚还可以提供别的复用功能,
PWM(Plus Width Module)。通过控制脉冲信号周期的方式,来调节数字引脚输出的电压大小;
通信引脚。作为串口输入和输出的接口;
不同的Arduino开发板,它们的引脚位置是不相同的,这里只是用MEGA开发板来做一个示例。目前我们只要知道有这些引脚的存在就可以了。今后要使用到这些引脚的时候,我们再来做详细的介绍。
*关于Arduino UNO开发板的详细介绍请参考官网。
*关于Arduino MEGA开发板的详细介绍请参考官网。
1.3 Arduino扩展板
1.3.1 官方扩展板
Arduino官方目前总共推出了5款扩展板。
分别是,
Arduino Motor Shield
1.3.2 第三方扩展板
Arduino是开放平台,有不少的第三方扩展板。根据开发者的需要,扩展出提供不同功能的接口。对于有能力的硬件开发者来说,可以随心所欲的设计适合自己的扩展板。
例如下面这款双L293D芯片的马达扩展板,
1.4 外接硬件
Arduino可以外接多种硬件。这些硬件可以,
直接接到开发板上;
接到扩展板上,然后通过扩展板连接到主控制板上;
1.4.1 传感型硬件
用来感知、测量某种环境数据的硬件。例如光线传感器、温湿度传感器、超声波探测器、粉尘传感器等等。
1.4.2 控制型硬件
用来发出指令、改变硬件某个特性的硬件。例如开关、直流马达、步进马达、舵机、LED灯等等。
关于这些传感器详细的原理和用法,我们将在以后的章节详细的介绍。
/*******************************************************************/
本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店跟我学Arduino编程中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。
最后再次感谢各位读者对安豆
的支持,谢谢:)
/*******************************************************************/