比写代码还酷的,可能就是摆弄这玩意了!

2017 年 12 月 25 日 图灵教育 图小鹿整理

程序员群体大概都有点创客梦吧,别人的青春很迷茫,咱们却沉迷代码无心恋爱......别人觉得世界很大,想出去看看,咱们或许觉得 0 和 1 的世界更为神秘。要说程序员们那些神秘的爱好,宅在家里摆弄板子是不是得算上一个呢!


先来看一波知乎宅男的镇板子利器——

@雷电法工特斯拉  一个DEBUG神器

@米西  俄罗斯方块


@阿古 音乐盒子,戳它眼睛会出声,吹屁股会出声,给他喝水会出声,倾斜会出声,摔地上会出声,一起来就是一个打击乐器。

@余梓琪   一个微型四轴Multiwii的固件,适合室内飞行

(以上图片及作品都来自知乎用户,想具体了解的可以点击链接查看并私信作者https://www.zhihu.com/question/29441922)

                

一个很小的盒子,里面装有一块电路板、一个插入式电源组、几个 LED 灯、一些电阻、跳线,以及一块免焊面包板。打开盒子,你就可以用里边的东西做出任何你想实现的东西。这不是潘朵拉的魔盒,更不是 IT 狂人中装着 Internet 的小匣子,它是一个创造力之盒。而且无论是谁,只要花大约 15 美元,就可以成就创客的梦想。那么,What's in the box? 答案就是一块 Arduino 板。

自 2005 年推出以来,Arduino 已经成为世界上最成功的开源硬件项目之一(有些人可能对此持有异议)。Arduino 团队公开其设计之后,包括意大利、巴西、中国、荷兰、印度和美国在内的很多国家,都在生产基于这种设计的开发板。无论是谁,只要花大约 15 美元,就能买到一块功能齐全的 Arduino 兼容开发板。人们可以自由下载并使用完全免费的 Arduino 开发环境。

接下来进一步深入了解一下今天的主角—— Arduino。

 什么是Arduino?

Arduino是一款便捷灵活、方便上手的开源电子原型平台,包含硬件(各种型号的Arduino板)和软件(Arduino IDE),由一个欧洲开发团队于 2005 年冬季开发。其成员包括Massimo Banzi、David Cuartielles、Tom Igoe、Gianluca Martino、David Mellis和Nicholas Zambetti等。

它构建于开放原始码 simple I/O 介面版,并且具有使用类似 Java、C 语言的Processing/Wiring 开发环境。它包含两个主要的部分:硬件部分是可以用来做电路连接的 Arduino 电路板;另外一个则是 Arduino IDE,你计算机中的程序开发环境。只要在 IDE 中编写程序代码,将程序上传到Arduino电路板后,程序便会告诉 Arduino 电路板要做些什么了。

Arduino能通过各种各样的传感器来感知环境,通过控制灯光、马达和其他的装置来反馈、影响环境。板子上的微控制器可以通过Arduino的编程语言来编写程序,编译成二进制文件,烧录进微控制器。对Arduino的编程是通过 Arduino编程语言 (基于 Wiring)和 Arduino 开发环境(基于 Processing)来实现的。基于 Arduino 的项目,可以只包含 Arduino,也可以包含 Arduino 和其他一些在PC上运行的软件,他们之间进行通信 (比如 Flash、Processing、MaxMSP)来实现。

  Arduino实物展示

表 1-2~表 1-5 展示了几种常见的 Arduino 开发板,其中包括了新老版本,但并不包括所有 Arduino 类型,因为一些新型开发板以及现有开发板的更新版本会定期推出。图 1-1 展示了各种 Arduino 开发板在外形与应用程序上的多样性。

从外形来看,Arduino 并不很大,其基线板大小约为 2.1 in×2.7 in(53.3 mm×68.6 mm),一般配有物理引脚,用于支持扩展板。图 1-1 展示了两种 Arduino 开发板,旁边有直尺便于比较大小。图 1-2 展示了一个安装在免焊面包板上的 Nano 开发板。

图 1-1:Arduino 开发板的相对大小

图 1-2:安装在免焊面包板上的 Arduino Nano

表1-2:Arudino开发板的基线布局

表1-3:Arduino Mega开发板的布局

表1-4:Arduino小型开发板

表1-5:Arduino特别版

  Arduino兼容设备

除了 Arduino.cc 设计或认可的各种开发板之外,还有许多设备与 Arduino 在硬件或软件上兼容。这些设备之所以能与 Arduino 兼容是因为,它们内部都集成了 Arduino Bootloader(或者类似的 Bootloader)。我们可以在 Arduino IDE 的下拉列表中选择合适且相互兼容的 Arudino 开发板,然后在 Arduino IDE 中为它们编写程序。

硬件兼容设备

对于 Arduino 硬件兼容设备,其上各种 I/O 引脚的排列布局方式与现有 Arduino 相同。一般而言,在硬件兼容开发板上,我们也可以使用为官方 Arduino 开发板制作的各种扩展板与插件模块。

大多数情形下,硬件兼容开发板看上去与 Arduino 开发板非常类似,但其上没有官方 Arduino Logo 与丝印图形。而其他一些硬件兼容产品则看上去与标准的 Arduino 开发板完全不同,但它们采用了相同的排列布局方式提供引脚插口,这样用户就可以在其上使用标准的 Arduino 扩展板。还有一些硬件兼容产品配有额外的连接器,比如 SainSmart Uno 就带有额外的连接器,用于支持 I/O 功能。表 1-6 列出了几种常见的 Arduino 克隆板与兼容板。此外还有许多与 Arduino 相兼容的开发板,它们都是类似的,表中列出的这些可以让你有大致的了解。

表1-6:Arduino硬件兼容设备(请注意,Diavolino 是一个套件,需要用户自己组装。

软件兼容设备

除了硬件兼容设备之外,还有许多 Arduino 软件兼容开发板可以使用。这些开发板使用 Arduino 的 Bootloader 与开发环境,但实体大小与 Arduino 完全不同。软件兼容设备可以借助 Arduino 开发工具进行编程,但可能采用不同的 I/O 引脚排列布局,或者使用一些其他类型的连接器,用以取代旧 Arduino 开发板的引脚插口。对于基于 AVR 微控制器并嵌入一些较大设备或系统的定制电路板,如果微控制器中安装有 Arduino Bootloader,我们也会将其归入软件兼容设备之列。

Arduino 的核心是处理器与预安装的 Bootloader。从这一定义上看,最简单的 Arduino 只有一个最基本的 ATmega AVR IC,其中装有 Arduino 固件,并且能够与免焊面包板和 Arduino 开发环境一起使用。你可以从多种渠道购买带有预载 Bootloader 代码的 AVR MCU IC,或者也可以自己动手制作。

有意思的是,从是否使用标准 I/O 连接器布局来看,一些 Arduino 官方开发板也不是硬件兼容的,比如 Mini、Micro、Nano、LilyPad、Esplora。它们不能直接与常见的扩展板一起使用,但仍然是 Arduino 开发板,并且都被 Arduino IDE 支持。

Adafruit Industries 推出的 Boarduino 就是一种 Arduino 软件兼容设备,它被设计安装在标准的免焊面包板上,很像一块全尺寸的 40-pinIC。Boarduino 有两种版本可用,DC 版本与 USB 版本。其中,DC 版本不带有板载 USB 芯片,为它编程时需要使用外部 USB 适配器。另一个软件兼容开发板的例子是 Circuit Monkey 出品的 Dragonfly 开发板,它使用标准的 Molex 连接器,代替 Arduino 常用的引脚与插口。Dragonfly 主要用于高振动环境,比如无人机(UAV)与机器人。

Raspduino 被设计用来安装在 Raspberry Pi 板上,在功能上等同于一个 Arduino Leonardo。这样形成的组合体大致等同于 Arduino Yún,但并不完全相同。每种设置各有优劣,表 1-7 列出了几种常见的 Arduino 软件兼容开发板。

表1-7:Arduino软件兼容设备

上面这些只是各种可用软件兼容开发板的一小部分。由于 AVR 微控制器很容易被集成到电子设计中,因此它广泛见于大量应用。借助 Arduino Bootloader 固件,对设备进行编程变得非常简单,设计也充满了无限可能。

 Arduino 几种可能的应用场景
  • 真实世界监控

    • 自动天气监测站

    • 闪电探测器

    • 太阳能电池板太阳追踪系统

    • 背景辐射监测

    • 野生动物自动检测仪

    • 家用或商用安全系统

  • 小型控制

    • 小型机器人

    • 火箭模型

    • 飞机模型

    • 四旋翼无人飞行器

    • 制造小型机床的简易 CNC

  • 小型自动化控制

    • 自动化温室

    • 自动化水族箱

    • 实验室梭式机器人

    • 精密温控箱

    • 自动电子测试系统

  • 艺术表演

    • 动态灯光控制

    • 动态声音控制

    • 运动结构

    • 观众互动作品

看到这些关于 Arduino 的介绍,以及本文开头的作品,小伙伴们的手是不是痒痒了? 或者你本来买过板子还不知道怎么玩? 今天小鹿为大家介绍的内容整理自我们的新书《Arduino 技术指南》。作者从从 20 世纪 80 年代早期开始就接触 Arduino —— 它致力于激发人们的创造力。

它面向热衷捣鼓东西的人,而不论你有没有技术背景。但是程序员等理工男们,或许是Arduino 的头号粉丝吧! 所以郑重把这本书介绍给大家:

 作者简介

John M. Hughes

嵌入式系统工程师,在电子学、嵌入式系统及软件、航天系统和科学应用开发等领域拥有30余年的从业经验。 曾负责为凤凰号火星探测器开发表面成像软件。他所在的一个小组还开发了新型合成外差激光干涉仪,用于校正韦伯太空望远镜镜片的位置控制。 另著有《电子工程师必读:元器件与技术》,为没有电子学专业背景的爱好者和创客系统介绍电子学中的硬件、元件、工具和技术。

本书内容

第 1 章简单介绍各种 Arduino 开发板的历史;还介绍 Arduino 开发板中使用的 AVR 微控制器,讨论 Arduino 软件兼容产品与硬件兼容产品的不同。

第 2 章的主题是 Atmel AVR 微控制器,概述了一个真正复杂的设备是如何构成的。当然,这里只对最重要的部分做快速浏览,包括定时器逻辑、模拟比较器、模拟输入、SPI 接口,以及芯片上其他主要子系统。

第3 章进一步讲解 Arduino 开发板上使用的各种 AVR 微控制器,包括 ATmega168/328、 ATmega1280/2560、ATmega32U4。这一章内容以第 2 章内容为基础,添加了更多底层细节,比如内部架构、电气特性、芯片引脚布局等。

第 4 章讲解各种 Arduino 开发板的物理特性与接口功能,包括 USB 接口类型、印制电路板(PCB)大小、开发板引脚布局图等。

第 5 章讲解 Arduino 编程环境,这是真正使其与众不同的地方。这一章还介绍 Arduino 程序的定义,以及如何使用 C 与 C++ 语言编写 Arduino 程序;同时,还介绍 Arduino BootLoader 与 main() 函数,讲解如何下载 Arduino 源代码。通过阅读这些源代码,你可以了解隐藏在其表面之下的底层工作原理。

第 6 章介绍 AVR-GCC 工具链,以及在不使用 Arduino IDE 的前提下,为 Arduino 开发板编程的技术。其中,还涉及与“生成文件”(makefiles)有关的内容,并简单介绍汇编语言编程。最后介绍将代码上传到 AVR 的各种工具。

第 7 章的讲解重点是 Arduino IDE 自带的各种标准库。Arduino IDE 本身提供了大量标准库,并且不断添加更多库。如果想了解某个特定传感器或特定操作是否有现成的库模块,那么这一章是个不错的起点。

第 8 章介绍适用于 Arduino 的各种扩展板,包括各种常见类型,比如闪存、原型、输入 / 输出、以太网、蓝牙、ZigBee、伺服控制、步进电机控制、LED 显示屏、LCD 显示器等。这一章也包含使用多重扩展板的内容,还提供许多提示与技巧,帮你最大限度地挖掘扩展板的潜力。

第 9 章介绍一些可以与 Arduino 开发板配合使用的附加组件,包括各种传感器、继电器模块、小键盘,以及其他一些非特定于 Arduino 但能很好与其配合工作的器件。此外,还提供许多所讨论的电子元器件的引脚布局与电路图。

第 10 章专门介绍如何自己动手制作扩展板,因为找到满足我们需要的扩展板有时并非易事。此外,还讲解如何在没有 Arduino 类型电路板的情形下使用 AVR 微控制器,并且仍能使用 Arduino IDE。

第 11~13 章介绍几个电子设计项目,通过这些项目可以进一步了解 AVR 微控制器与 Arduino 扩展板的功能。这些电子项目也展示了如何将 Arduino 应用于各种情形,而并非只演示如何制作电路板或设备。当然,只要愿意,你完全可以自己动手制作这些电子项目,并以此为起点制作自己的项目。介绍每个示例项目时,都包括工作原理、电路图、详细元件列表、PCB 布局设计(若需要),以及运行所需软件的概述。

第 11 章介绍如何制作一个基本的信号发生器,测试电子电路中会经常用到它。通过这个信号发生器,你可以产生具有各种占空比的脉冲,输出一个系列脉冲响应触发脉冲输入,生成正弦波,也可以产生可编程脉冲模式。

第 12 章讲解如何设计与制作一个智能调温器,它很适合与家中的 HVAC(加热、通风、空调)系统一起使用。学过这一章就不用再购买现成的调温器了,因为你完全可以自己动手制作一个,并让它完全根据你的设想工作。在这一章中,我不仅教你如何集成温度传感器(特点是包含多个温度与湿度传感器),还会教你如何使用 HVAC 系统的风机营造一个舒适的环境,并且不会有因运行压缩机或点亮加热器而产生的费用。

第 13 章将了解如何制作一个自动的模型火箭发射器,它带有可编程定序器与自动系统检测功能。即使手上没有模型火箭,也建议你认真学习本项目中使用的一些技术,因为这些技术可以用在多种对执行顺序有严格要求的控制过程中,比如工厂里的生产线、实验室中的自动材料搬运设备。

目录

第1章 Arduino家族  1

1.1 Arduino简史  1

1.2 Arduino设备类型  2

1.3 Arduino实物展示  3

1.4 Arduino兼容设备  6

1.5 Arduino命名约定  8

1.6 使用Arduino可以实现的目的  9

1.7 更多信息  11

第2章 AVR微控制器  12

2.1 背景  12

2.2 内部架构  13

2.3 内部存储器  16

2.4 外围功能  16

2.5 模拟比较器  19

2.6 模数转换器  20

2.7 串行I/O  21

2.8 中断  24

2.9 看门狗定时器  26

2.10 电气特性  26

2.11 更多信息  27

第3章 Arduino专用AVR微控制器  28

3.1 ATmega168/328  29

3.2 ATmega1280/ATmega2560  35

3.3 ATmega32U4  44

3.4 熔丝位  53

3.5 更多信息  55

第4章 Arduino技术细节  56

4.1 Arduino特性与功能  56

4.2 ArduinoUSB 接口  57

4.3 Arduino物理大小  59

4.4 Arduino引脚布局  66

4.5  更多信息  78

第5章 对Arduino与AVR微控制器编程  79

5.1 微控制器交叉编译  80

5.2 BootLoader  81

5.3 Arduino IDE环境  83

5.4 使用Arduino IDE进行交叉编译  86

5.5 库  98

5.6 Arduino源代码  103

第6章 不使用Arduino IDE编程  105

6.1 IDE替换方案  105

6.2 AVR工具链  108

6.3 从零开始构建C或C++程序  118

6.4 AVR汇编语言  120

6.5 上传AVR可执行代码  126

6.6 小结  133

第7章 Arduino库  134

7.1 库组件  134

7.2 第三方库  179

第8章 扩展板  182

8.1 扩展板的电气特性  183

8.2 扩展板的物理特性  184

8.3 堆叠扩展板  186

8.4 常用Arduino扩展板  186

8.5 非常见Arduino扩展板  230

8.6 资源  231

第9章 模块与I/O组件  233

9.1 模块  234

9.2 Grove模块  260

9.3 传感器与模块介绍  261

9.4 传感器  262

9.5 通信  279

9.6 输出设备与元件  281

9.7 用户输入  288

9.8 用户输出  289

9.9 支持功能  291

9.10 连接  294

9.11 供应商资源  297

9.12 小结  297

第10章 自己动手制作元件  299

10.1 准备工作  301

10.2 制作扩展板  305

10.3 制作GreenShield扩展板  309

10.4 制作与Arduino兼容的PCB  334

10.5 Switchinator  335

10.6 资源  356

第11章 项目:可编程信号发生器  358

11.1 项目目标  360

11.2 定义与规划  360

11.3 设计  362

11.4 搭建原型  366

11.5 软件  370

11.6 最终组装  382

11.7 最终测试与结束  386

11.8 削减开支  387

11.9 成本明细  388

11.10 资源  389

第12章 项目:智能调温器  390

12.1 背景  390

12.2 项目目标  395

12.3 定义与规划  395

12.4 设计  396

12.5 原型  406

12.6 软件  410

12.7 最终版本  413

12.8 成本明细  417

12.9 后续步骤  417

12.10 资源  418

第13章 模型火箭发射器:设计研究  419

13.1 概览  419

13.2 设计周期  420

13.3 目标  421

13.4 选择与定义功能需求  423

13.5 进行初步设计  426

13.6 原型  432

13.7 最终设计  433

13.8 成本分析  443


扫一扫,京东购



福利时间

本期送出 5 本赠书。玩过 Arduino 的小伙伴来说说你都用它做过哪些东西?或者你在使用中遇到过哪些技术实现上的困难?

没使用过的小伙伴你们是因为什么而了解到 Arduino 的呢?或者你想用 Arduino 实现哪些创意呢?

欢迎小伙伴们畅所欲言,精选留言选出 5 位小伙伴获得赠书,截止日期 2017 年 12 月 27 日。

PS:圣诞节快乐!


点击阅读原文查看更多电子电气类图书

登录查看更多
0

相关内容

Arduino 是一个开源的控制平台,其简单的输入输出接口和控制命令简化了元器件的控制,使工程师可以迅速将电子控制应用到其它领域中。
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
【精通OpenCV 4】Mastering OpenCV 4 - Third Edition 随书代码
专知会员服务
36+阅读 · 2019年11月13日
TensorFlow与PyTorch之争,哪个框架最适合深度学习
Python开发者
5+阅读 · 2019年9月18日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
那个学Python的同龄人,也许已经抛弃了你
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
你见过马化腾17年前写的代码吗?
互联网it观察
5+阅读 · 2017年7月3日
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年12月19日
q-Space Novelty Detection with Variational Autoencoders
Phrase-Based & Neural Unsupervised Machine Translation
Arxiv
8+阅读 · 2018年5月17日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
9+阅读 · 2018年2月4日
Arxiv
3+阅读 · 2017年12月18日
VIP会员
相关VIP内容
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
115+阅读 · 2020年5月10日
算法与数据结构Python,369页pdf
专知会员服务
160+阅读 · 2020年3月4日
【经典书】Python计算机视觉编程,中文版,363页pdf
专知会员服务
136+阅读 · 2020年2月16日
【书籍推荐】简洁的Python编程(Clean Python),附274页pdf
专知会员服务
173+阅读 · 2020年1月1日
【新书】Python中的经典计算机科学问题,224页PDF
专知会员服务
51+阅读 · 2019年12月31日
【精通OpenCV 4】Mastering OpenCV 4 - Third Edition 随书代码
专知会员服务
36+阅读 · 2019年11月13日
相关资讯
TensorFlow与PyTorch之争,哪个框架最适合深度学习
Python开发者
5+阅读 · 2019年9月18日
手把手教你用Python做一个哄女友神器,小白可上手
网易智能菌
5+阅读 · 2019年6月15日
我的if else代码纯净无暇,一个字也不能简化
机器之心
3+阅读 · 2018年12月28日
那个学Python的同龄人,也许已经抛弃了你
Python为啥这么牛?
Python程序员
3+阅读 · 2018年3月30日
为什么你应该学 Python ?
计算机与网络安全
4+阅读 · 2018年3月24日
实战 | 40行代码实现人脸识别
七月在线实验室
3+阅读 · 2018年3月7日
可怕,40 行代码的人脸识别实践
51CTO博客
3+阅读 · 2017年7月22日
你见过马化腾17年前写的代码吗?
互联网it观察
5+阅读 · 2017年7月3日
相关论文
Talking-Heads Attention
Arxiv
15+阅读 · 2020年3月5日
Factor Graph Attention
Arxiv
6+阅读 · 2019年4月11日
Arxiv
3+阅读 · 2018年12月19日
q-Space Novelty Detection with Variational Autoencoders
Phrase-Based & Neural Unsupervised Machine Translation
Arxiv
8+阅读 · 2018年5月17日
Arxiv
7+阅读 · 2018年3月22日
Arxiv
9+阅读 · 2018年2月4日
Arxiv
3+阅读 · 2017年12月18日
Top
微信扫码咨询专知VIP会员