首页 > 代码库 > 手把手教你智能硬件开发(一) 我选Arduino

手把手教你智能硬件开发(一) 我选Arduino

第1节 我选Arduino

高大上的无人机玩过吗?智能的家庭空气检测仪见过吗?手机控制的电子体重秤、血压仪用过吗?这些“高科技”都属于智能硬件。

作为软件开发者的你,有没有想过自己开发一个智能硬件呢?

也许你会觉得硬件开发的门槛很高,作为小白或者软件开发者难以企及,那么这你就想错了。其实,现在已经有了很多专门为软件开发者设计的智能硬件开发平台。例如现在火爆的树莓派-raspberry pi、英特尔推出的爱迪生-Edison,以及本系列讲重点介绍的Arduino。

技术分享

有了它们,即使你对硬件并不了解,也能开发出软硬件完美结合的智能小硬件。

这些硬件都有个共同的特点,采用主控制板+扩展板+外接硬件的方式工作。

  1. 主控制板:我们讲的平台(树莓派、爱迪生、Arduino),指的就是主控制板,它通常就是一个开发板。你可以把它想象成台式电脑上的主板,只不过这个主板已经焊接上了CPU和内存等最最主要的部件;

  2. 扩展板:主控制板上的针脚是有限的,扩展板可以把一个针脚扩展成多个针脚,让更多的设备与这个针脚连接。它们就好像是电脑主板上延伸出来的一根根USB数据线,把主板上的一个USB接口,转接成了多组不同的USB接口,放在电脑主机的前面和后面;

  3. 外接硬件:按钮开关、传感器等器件通过扩展板与主控制板的针脚相连。它们就好像是台式电脑上的USB接口可以连接的U盘、移动硬盘、USB Wifi等等外接设备;

技术分享

可以想象的到,只要使用对应平台的扩展板,外接硬件可以连接在不同的平台上,正常的使用。所以那些外接的硬件有很高的通用性。

1.1 WHY Arduino

在前面提到的智能硬件开发平台中,我们选择了Arduino, 为什么?

  1. Arduino足够的便宜,一个Arduino开发板不到100块钱(即使是意大利原装板也只要300多人民币),投入的硬件成本很低,可以花很低的代价学习智能硬件开发;

  2. 作为智能硬件的初学者,总希望从最简单的开始,能学到原理,但是又不要有太高的学习门槛,有了基础以后再循序渐进。Arduino开发只需要开发者会基本的C语言就可以了,几乎不需要任何其他的编程、硬件基础;

  3. Arduino的运算能力足够制作一些简单的智能硬件了,而它又更接近一个单片机,很多智能硬件可以用它做功能的验证;

  4. 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类,

  1. 电源引脚。利用电源引脚,可以为外界的扩展板或者硬件提供3.3V(引脚3V3) 5V(引脚5V)的电压,以及接地(引脚GND)的功能;也能通过引脚VIN接受外部提供的电压;

    在MEGA开发板中,电源引脚的位置大致如下,

    技术分享
  2. 模拟引脚。区别于数字引脚只能输出0,1两种状态,模拟引脚可以输出0与1之间的中间状态。开发板有若干个模拟引脚,它们接收或输出模拟量:0~1023

    它们被编成了0~N的数字号码,用A0~AN来表示。例如MEGA开发板上的模拟引脚有16个,就是A0~A15

    技术分享
  3. 数字引脚。只能输出0和1两种状态的引脚。开发板有若干个数字引脚,它们只接收或输出高低电平两个值:HIGH或者LOW。

    它们被编成了0~N的数字号码,用D0~DN来表示。例如MEGA开发板上的数字引脚有54个,就是D0~D53

    技术分享

    这些数字引脚中,有的引脚还可以提供别的复用功能,

    1. PWM(Plus Width Module)。通过控制脉冲信号周期的方式,来调节数字引脚输出的电压大小;

      技术分享
    2. 通信引脚。作为串口输入和输出的接口;

      技术分享

不同的Arduino开发板,它们的引脚位置是不相同的,这里只是用MEGA开发板来做一个示例。目前我们只要知道有这些引脚的存在就可以了。今后要使用到这些引脚的时候,我们再来做详细的介绍。

*关于Arduino UNO开发板的详细介绍请参考官网。

*关于Arduino MEGA开发板的详细介绍请参考官网。

1.3 Arduino扩展板

1.3.1 官方扩展板

Arduino官方目前总共推出了5款扩展板。
分别是,
Arduino Motor Shield

技术分享

Arduino Proto Shield

技术分享

Arduino Ethernet Shield

技术分享

Arduino GSM Shield

技术分享

Arduino WiFi Shield 101

技术分享

1.3.2 第三方扩展板

Arduino是开放平台,有不少的第三方扩展板。根据开发者的需要,扩展出提供不同功能的接口。对于有能力的硬件开发者来说,可以随心所欲的设计适合自己的扩展板。

例如下面这款双L293D芯片的马达扩展板,

技术分享

1.4 外接硬件

Arduino可以外接多种硬件。这些硬件可以,

  1. 直接接到开发板上;

    技术分享
  2. 接到扩展板上,然后通过扩展板连接到主控制板上;

    技术分享

1.4.1 传感型硬件

用来感知、测量某种环境数据的硬件。例如光线传感器、温湿度传感器、超声波探测器、粉尘传感器等等。

1.4.2 控制型硬件

用来发出指令、改变硬件某个特性的硬件。例如开关、直流马达、步进马达、舵机、LED灯等等。


关于这些传感器详细的原理和用法,我们将在以后的章节详细的介绍。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

第1节 我选Arduino

高大上的无人机玩过吗?智能的家庭空气检测仪见过吗?手机控制的电子体重秤、血压仪用过吗?这些“高科技”都属于智能硬件。

作为软件开发者的你,有没有想过自己开发一个智能硬件呢?

也许你会觉得硬件开发的门槛很高,作为小白或者软件开发者难以企及,那么这你就想错了。其实,现在已经有了很多专门为软件开发者设计的智能硬件开发平台。例如现在火爆的树莓派-raspberry pi、英特尔推出的爱迪生-Edison,以及本系列讲重点介绍的Arduino。

技术分享

有了它们,即使你对硬件并不了解,也能开发出软硬件完美结合的智能小硬件。

这些硬件都有个共同的特点,采用主控制板+扩展板+外接硬件的方式工作。

  1. 主控制板:我们讲的平台(树莓派、爱迪生、Arduino),指的就是主控制板,它通常就是一个开发板。你可以把它想象成台式电脑上的主板,只不过这个主板已经焊接上了CPU和内存等最最主要的部件;

  2. 扩展板:主控制板上的针脚是有限的,扩展板可以把一个针脚扩展成多个针脚,让更多的设备与这个针脚连接。它们就好像是电脑主板上延伸出来的一根根USB数据线,把主板上的一个USB接口,转接成了多组不同的USB接口,放在电脑主机的前面和后面;

  3. 外接硬件:按钮开关、传感器等器件通过扩展板与主控制板的针脚相连。它们就好像是台式电脑上的USB接口可以连接的U盘、移动硬盘、USB Wifi等等外接设备;

技术分享

可以想象的到,只要使用对应平台的扩展板,外接硬件可以连接在不同的平台上,正常的使用。所以那些外接的硬件有很高的通用性。

1.1 WHY Arduino

在前面提到的智能硬件开发平台中,我们选择了Arduino, 为什么?

  1. Arduino足够的便宜,一个Arduino开发板不到100块钱(即使是意大利原装板也只要300多人民币),投入的硬件成本很低,可以花很低的代价学习智能硬件开发;

  2. 作为智能硬件的初学者,总希望从最简单的开始,能学到原理,但是又不要有太高的学习门槛,有了基础以后再循序渐进。Arduino开发只需要开发者会基本的C语言就可以了,几乎不需要任何其他的编程、硬件基础;

  3. Arduino的运算能力足够制作一些简单的智能硬件了,而它又更接近一个单片机,很多智能硬件可以用它做功能的验证;

  4. 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类,

  1. 电源引脚。利用电源引脚,可以为外界的扩展板或者硬件提供3.3V(引脚3V3) 5V(引脚5V)的电压,以及接地(引脚GND)的功能;也能通过引脚VIN接受外部提供的电压;

    在MEGA开发板中,电源引脚的位置大致如下,

    技术分享
  2. 模拟引脚。区别于数字引脚只能输出0,1两种状态,模拟引脚可以输出0与1之间的中间状态。开发板有若干个模拟引脚,它们接收或输出模拟量:0~1023

    它们被编成了0~N的数字号码,用A0~AN来表示。例如MEGA开发板上的模拟引脚有16个,就是A0~A15

    技术分享
  3. 数字引脚。只能输出0和1两种状态的引脚。开发板有若干个数字引脚,它们只接收或输出高低电平两个值:HIGH或者LOW。

    它们被编成了0~N的数字号码,用D0~DN来表示。例如MEGA开发板上的数字引脚有54个,就是D0~D53

    技术分享

    这些数字引脚中,有的引脚还可以提供别的复用功能,

    1. PWM(Plus Width Module)。通过控制脉冲信号周期的方式,来调节数字引脚输出的电压大小;

      技术分享
    2. 通信引脚。作为串口输入和输出的接口;

      技术分享

不同的Arduino开发板,它们的引脚位置是不相同的,这里只是用MEGA开发板来做一个示例。目前我们只要知道有这些引脚的存在就可以了。今后要使用到这些引脚的时候,我们再来做详细的介绍。

*关于Arduino UNO开发板的详细介绍请参考官网。

*关于Arduino MEGA开发板的详细介绍请参考官网。

1.3 Arduino扩展板

1.3.1 官方扩展板

Arduino官方目前总共推出了5款扩展板。
分别是,
Arduino Motor Shield

技术分享

Arduino Proto Shield

技术分享

Arduino Ethernet Shield

技术分享

Arduino GSM Shield

技术分享

Arduino WiFi Shield 101

技术分享

1.3.2 第三方扩展板

Arduino是开放平台,有不少的第三方扩展板。根据开发者的需要,扩展出提供不同功能的接口。对于有能力的硬件开发者来说,可以随心所欲的设计适合自己的扩展板。

例如下面这款双L293D芯片的马达扩展板,

技术分享

1.4 外接硬件

Arduino可以外接多种硬件。这些硬件可以,

  1. 直接接到开发板上;

    技术分享
  2. 接到扩展板上,然后通过扩展板连接到主控制板上;

    技术分享

1.4.1 传感型硬件

用来感知、测量某种环境数据的硬件。例如光线传感器、温湿度传感器、超声波探测器、粉尘传感器等等。

1.4.2 控制型硬件

用来发出指令、改变硬件某个特性的硬件。例如开关、直流马达、步进马达、舵机、LED灯等等。


关于这些传感器详细的原理和用法,我们将在以后的章节详细的介绍。


***************************************


本系列课程使用到的Arduino开发板、扩展板以及其他相关的传感器,各位可以根据我们文章中介绍的硬件在淘宝网选购。
您也可以在我们的网店安豆的杂货铺中购买,这些相关硬件都由我们为您把关购买,为大家节省选择的精力与时间。同时也感谢大家对我们这些码农的支持。

最后再次感谢各位读者对安豆的支持,谢谢:)

<script type="text/javascript"> $(function () { $(‘pre.prettyprint code‘).each(function () { var lines = $(this).text().split(‘\n‘).length; var $numbering = $(‘
    ‘).addClass(‘pre-numbering‘).hide(); $(this).addClass(‘has-numbering‘).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($(‘
  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    手把手教你智能硬件开发(一) 我选Arduino