电子与嵌入式系统设计译丛
点击查看第二章
点击查看第三章
面向Arduino用户的树莓派实用指南:物联网应用开发
Raspberry Pi for Arduino Users: Building IoT and Network Applications and Devices
[美] 詹姆斯·R.斯特里克兰(James R. Strickland) 著
梁捷 曹建 胡训强 译
第1章
采 购 清 单
本章将用较短的篇幅介绍开始学习前所要准备的电子元器件。本书中并未涉及很多硬件项目,并且很多软件项目也基于相同的硬件实现。如果你在阅读本书前一直使用Arduino,那么你应该有想要连接到树莓派的项目。阅读更多的类似“点亮7段LED”的教程真的有必要吗?你可能已经很了解Arduino的主要内容,比如ATmega328P、74LVC-245、LED阵列、电阻和连接线等。假设你已经准备好了工具—数字万用表、线切割器和剥皮器、温控焊台等。
如果你的Arduino经验主要是关于连接各种电路板,那么除了购买电子元器件外,你可能还要读一读之前我写过的一本书—《Junk Box Arduino:Ten Projects in Upcycled Electronics》(Apress出版),那本书主要涵盖了在线Arduino教程和基础电子知识方面的内容。在本书中,我假设你已经掌握Arduino和基础电子知识了。
树莓派是低成本、高性能的32位或64位单板计算机,可以运行Linux的一个发布版本(称为Raspbian),也可以运行完整的桌面系统和现代网页浏览器(Chromium)。本书将介绍3B+型树莓派(以1.4GHz运行的四核64位版本)和Zero W型树莓派(以1GHz运行的单核32位版本),它们可以通过USB、HDMI、802.3以太网、蓝牙和WiFi连接现代外设。
1.1 树莓派
你需要一个树莓派—3B+型或者Zero W型,当然,使用3B型树莓派也可以。
1.1.1 3B+型树莓派
3B+型树莓派是目前性能最好的树莓派,如图1-1所示。
3B+型树莓派采用运行频率为1.4GHz的四核、64位的Arm Cortex-A53作为CPU内核,具有容量为1GiB的运行频率为900MHz的RAM,还带有遵循1000BASE-T 802.3的以太网(带宽300Mbit/s)组件、遵循802.11ac协议的2.4GHz的WiFi组件以及4.2版本的蓝牙组件。它在microSD卡上存储数据,并具有1个HDMI接口、1个3.5mm模拟音视频插孔、4个USB 2.0接口、1个1000BASE-T以太网接口以及1个40针GPIO接头(引脚已置入其中),还有分别连接相机和显示器的串行接口。
下面详细介绍树莓派的主要部件。
1.四核处理器
在3B+型树莓派的Broadcom 2837B0芯片中,内置了4个CPU(中央处理器),它们可以一次执行4个线程或进程(以后再讨论)。通常,在多核CPU中,每个CPU有自己的一级(L1)缓存,但同时共享二级(L2)缓存。这意味着,每个CPU有自己独占的容量小却速度快的内存空间(L1缓存),L1缓存不与外部存储器直接通信,而是与L2缓存通信,L2缓存依次由系统RAM更新数据。
缓存用来做什么?设置缓存是为了提高运行速度。从距离CPU远近的角度,主存比缓存更远一点(几毫米),所以与CPU通信必须经过更多的电子器件,每一个阶段都增加了一点延迟。如果CPU中内置了RAM,那么就意味着CPU不必等待系统RAM更新数据。当CPU忙于执行命令时,内置RAM还可以帮助CPU读取下一条命令。当程序不是顺序执行时(跳转命令),这个过程将变得很复杂,考虑并且处理这些有关缓存的工作,是CPU制造商的主要任务。
2. 64位寄存器
每个寄存器(CPU工作过程中,其内部用来存储数据的区域)至少是64位或者8个字节宽(字节只是描述位宽的一种数量表示。在20世纪七八十年代,你可能听说过计算机科学家谈论12位和16位为一字节,但现在字节已被标准化,1字节只为8位)。从技术上来说,这是基本需求,尽管至系统RAM的接口位宽也可能是64位。
结果呢?每个核可以执行64位的单条命令。如果命令是与RAM交换数据,你可以一次移动8位不相关的字节。64位的真正价值是对64位值进行数学运算。如果需要对64位值进行数学运算,而CPU无法处理64位数值,则必须写很多额外的代码来将数值转换为32位,甚至8位,之后才能进行数学运算,然后再把结果转换为64位。执行命令需要时间,那些运行在64位数据上的命令能节省时间。
3. ARM Cortex-A53
ARM Cortex-A53是CPU内核的一种类型。ARM(Acorn RISC Machine)是根据CPU内核定义的一个大家庭,从ARM派生的所有芯片都是为英国剑桥Acorn公司生产的Archi-medes个人计算机所设计的。后来,这些芯片由ARM Holdings公司和剑桥Acorn公司设计,授权给众多芯片制造商生产,包括树莓派系统芯片的制造商Broadcom公司。为了完善Arduino生态圈,Atmel公司(现在叫作Micorchip公司,它是用于Ardunio的ATmeg微控制器的制造商)也开始生产基于ARM的产品。
几乎所有的平板电脑和手机中都装有ARM内核,此外,众多嵌入式设备中也装有ARM内核。ARM内核高效省电,这对于电池寿命至关重要。ARM内核种类繁多。其中,A53基于v8-A架构,有1~4个内核,向下兼容32位内核ARM v7,这无疑是树莓派基金会选择它的原因。与之前的版本相比,它能更好地处理浮点数数学运算,计算能力也更强。A53主要用于平板电脑和手机中。3B+型树莓派中的BCM2837B0还内置了Broadcom VideoCore IV GPU,事实上,GPU拥有比ARM更多的芯片空间,和台式计算机中的GPU完全一样,它也用于图形加速和视频流解码。
4.网络
现在,802.3 1000BASE-T以太网是有线以太网最常见的形式。它在树莓派和五类双绞线之间的传输速度高达300Mbit/s。如果你在过去10年中使用过以太网,那么你可能已经用到了这种1000BASE-T类型的布线(从10BASE-T、100BASE-T发展到1000BASE-T是巨大的进步,相比之下,10BASE-2实在是糟糕透了)。
802.11 ac是目前WiFi的标准。如果有一个802.11ac无线接入点(WAP),理论上传输速度可以达到1.3Gbit/s,尽管树莓派的实际速度只有75~100Mbit/s。我没有这样的WAP,所以不能以个人经验评价它的速度,但可以说它的速度足够快了。
5. GPIO引脚
尽管树莓派上的GPIO引脚的电平严格限制在3.3V,但是具有许多和Arduino上的GPIO引脚相同的功能。如果在树莓派的GPIO接头上用上5V电压,则会损毁芯片本身的内部线路(也可能造成更多的破坏)。它们没有任何保护或限流措施。3B+型树莓派已经在GPIO接头内部焊接好了引脚,这一点十分重要,当你感觉在拥挤的印刷电路板上进行焊接不舒服时,就能体会到这一点。
6.摄像头和显示器串行接口
摄像头和显示器串行接口可以插入排线,连接到官方的树莓派专用摄像头和显示器上。
7. Gibibyte和Gigabyte
JEDEC标准定义了描述内存大小的单位:千字节(KB)为1024B,兆字节(MB)为1024KB,千兆字节(GB)为1024MB。在20世纪90年代,硬盘制造商曾利用十进制的千兆字节(1000MB)代替二进制的千兆字节(1024MB),这种行为存在数字欺骗,导致了诉讼。为了解决这个问题,在ISO80000-13中,ISO/IEC对显式二进制(默认情况下)单元集进行了标准化:kibibyte(KiB)、mebibyte(MiB)、gibibyte(GiB)等。所以,你的microSD卡将以十进制千兆字节出售,其容量标称略带欺骗意味,但你的RAM(感谢JEDEC标准)是按照二进制千兆字节出售。在本书中,我们将使用ISO/IEC标准。
1.1.2 为何购买3B+型树莓派
如果你打算在树莓派上做很多开发,并且价格符合预算,相较于用Zero W型树莓派来实现各种项目,还是建议你选择3B+型树莓派。
在编写本书时,3B+型树莓派才刚刚面世,所以大部分代码原型实际上是在它之前的型号上完成的,只是稍微慢一点。即使如此,更快的速度和更大的RAM也会使编译变得更愉快。
1.1.3 Zero W型树莓派
如果你的预算很紧张,或者你暂时不想花费30多美元购买树莓派,那么你可以选购Zero W型树莓派,如图1-2所示。Zero W型树莓派价格不到3B+型树莓派的一半(大约为10美元),但可以在其上执行本书中的所有项目。我已经测试了这本书中的所有项目,即使你对书中项目做了相应的修改,也都可以在Zero W型树莓派上运行。
Zero W型树莓派是最便宜的一款,内置了蓝牙和802.11n WiFi组件,采用了与之前的型号中相同的BCM2835处理器芯片。BCM2835处理器是一个单核、32位ARM、1GHz主频、带有视频IV GPU的处理器。Zero W型树莓派中装有容量为512MiB、频率为600MHz的内存,这是从原来的树莓派基础上超频得到的,基本稳定。还有一个较早的ARM内核版本ARM11,具有ARMV6架构而不是ARMV8-A。
Zero W型树莓派与3B+型树莓派在外设方面主要存在两个区别—Zero W型树莓派没有1000BASE-T以太网插孔或IC,并且只有一个微型Micro-B型USB(Mini-USB)接口,除此之外它们的外设都相同。
Zero W型树莓派出厂时没有GPIO引脚。这意味着如果你想要普通的GPIO引脚,必须依据电路板上的焊接孔自己焊接。为了后面使用方便,你也可以这样做—将Zero W型树莓派插进一个分线板,并焊接了一个有2×20引脚的分线板,如图1-2左下角所示(这个分线板可以在Adafruit购买:https://www.adafruit.com/product/1979 )。由于接线板上的孔是通孔并且是双面的,我把引脚放在下面,并焊接在板的上面。这让我的Zero W型树莓派和分线板插座直接连接起来,而不需要用到带状电缆。
1.1.4 为何购买Zero W型树莓派
综上所述,Zero W型树莓派价格低廉。如果你想通过本书找到一种有效、便宜的方法来把你的小工具连接到网上,选择Zero W型树莓派是最便宜的。
如果你选择了Zero W型树莓派,可能需要用到一些适配器,而使用3B+型树莓派则不需要。关于适配器我们将在1.1.5节中介绍。
1.1.5 适配器
从图1-2中还可以看到,为了与键盘、鼠标和监视器一起使用,需要为Zero W型树莓派配置适配器。最上面的是一个Mini-HDMI转HDMI的适配器,这可以让你用标准的HDMI电缆连接显示器和Zero W型树莓派。
下面是USB OTG主机电缆,一端连接到Zero W型树莓派的Micro-B OTG插座,另一端是标准的USB的母插座,可用于连接键盘。确保你得到的是OTG电缆,而不是Mini-USB电缆,它们不是同一个连接器。我把键盘连接到OTG电缆上,把鼠标连接到键盘上。
如果你想完成第11章的项目,还需要一个USB集线器和一个microSD转USB的适配器。这些都是常见的器材,比较容易获得。
1.1.6 其他型号的树莓派
3B型树莓派(没有“+”)同样适用于这些项目。其他的树莓派应该也可用。理论上,如果你把一个WiFi网卡插入一个2012年出厂的树莓派,也可以完成本书中的所有项目,但速度会比Zero W型树莓派慢。虽然Zero W型树莓派的处理器和老型号的树莓派的处理器一样,但是它的运行速度更快,并且内存是早期树莓派的两倍,这些应该起作用。
因为我没有在其他的树莓派上测试过书中的项目,所以不能说它们都适用。假设你已经用过Arduino,准备开始学习使用树莓派,这样,你需要购买新的树莓派。此外,第一代的树莓派有一些问题,特别是在机载电源和SD卡的损坏方面,这有时会带来不好的体验。
从2012年起,树莓派变得越来越好。插上USB设备而导致树莓派崩溃(主要因为有电流波动)的日子已经一去不复返了,强烈推荐大家使用树莓派。
还有一点也很重要:在2代树莓派之前,树莓派都有26个GPIO引脚。引脚数量不同,处理器芯片的引脚也不同。如果你使用2代树莓派之前的型号,本书中的电路图将不适用,并且许多当下的树莓派外围设备(包括所有HAT)将不能连接使用。建议至少选用Zero W型树莓派。
1.2 树莓派的GPIO分线板
除了以上设备外,你还需要一个树莓派GPIO分线板,如图1-3所示。当然,如果没有分线板,你也可以选用母转公预制跳线来引出引脚,但不推荐这种做法。我们将使用树莓派上几乎所有的引脚,奇怪的连接状况会带来很大困扰。
GPIO分线板是树莓派的专用器件,能够让你轻松地把树莓派上的GPIO引脚连接到面包板。通常,需要使用一个有40个引脚的电缆将它连接到树莓派。
你可能很想和我一样,使用一个旧的PATA(并口)40引脚电缆和一些引脚来连接GPIO,但不幸的是,它不起作用。通常,PATA20号引脚虽然接上了但并不与电路连接,可我们需要20号引脚连接上电路。这一部分没有很好的替代品,虽然随着树莓派的大量使用,这种连接电缆应该不少见。
分线板有多种走线排列方式。不推荐使用直型板,因为它们把丝带电缆放在面包板的一侧或另一侧,而且经常挡在面包板上。
我在本书撰写时使用了一个分线板。建议使用T型板,如图1-3所示。你可以买到组装好的或是未组装的分线板。对于未组装的分线板,必须把插座和电缆头焊接到分线板上。显然,如果你不想焊接未组装的80个离得很近的引脚,还是买一个组装好的分线板吧。
有一个需要考虑的重要内容—对于现代树莓派,如3B+型树莓派和Zero W型树莓派,需要40个引脚的分线板,而不是26个引脚的,可在分线板的说明文档中看到相关信息。本书使用40个引脚的分线板。
1.3 5V USB微型电源
图1-4显示了为树莓派设计的5V USB微型电源。至少对于项目开发而言,在所有供电方案中,建议使用这一电源。
我用过手机充电器和USB集线器,还有树莓派的其他电源,这些供电方案都是很可靠的。插入错误的键盘时,键盘会无故抖动,停电可能会损坏microSD卡,这些故障现在已经不会出现,而你第一次知道这些故障存在,可能是因为出现了在系统启动时死机或者发出了系统警告等情况。总之,购买一个好的电源是值得的。
其他电源选项
如果拥有一个台式机电源,你可能会尝试用它为树莓派供电。将用于电源供电的Micro-BM(也叫作MicroUSB)连接器插入树莓派,它也应该能工作。我不推荐将电源先连接到面包板上,然后将树莓派的5V供电线连接到面包板。我尝试过这样做,树莓派可以启动并正常运行,但会绕过内置在树莓派供电模块中的保险丝和其他电源保护电路。我的台式电源是改装的PC ATX电源,最大可输出10A。当绕过树莓派供电模块时,如果出现短路,树莓派中没有任何电路可以承受这么大的电流,所以,一定要使用树莓派板载的供电模块。
你可能想从桌面计算机或拥有独立供电的USB集线器为你的树莓派供电。基于上述原因,Adafruit甚至出售能够供电的USB集线器。这一供电方案也能工作。如果根据规范生产且连线正确,USB 1.0和2.0端口最大可以提供500mA电流。对于Zero W型树莓派,这可能就足够了,但不一定适用于其他型号的树莓派。大多数USB电缆不能承载大电流,并且它们的电阻相当高。带有沉重载荷的高电阻电缆会将电压降到5V以下,会使你的树莓派性能下降(老旧的树莓派不会降低性能,而是直接被毁坏)。
你可能还想用iPad的大功率充电器连接一个标准的USB电缆来为树莓派供电。原来我就是这样用的,后来我发现,把万用表跨接在树莓派的5V电路轨道上,也就是在电缆电阻和充电器的输出电压之间,得到的树莓派端的电压略小于4.5V,树莓派供电不足。
对于本书中的项目来说,这些供电方案都可用。建议使用一个专用的树莓派电源,因为它一定会起作用。对于开发项目而言,一个由于供电不足而表现奇怪的树莓派并不是我们所期望的。
1.4 集成电路
1.4.1 ATmega328P-PU
如果熟悉Arduino,你可能会认出图1-5所示的Arduino Uno的核心。这是一个ATmega328P-PU。稍后,我们将用它制作一个Arduino兼容设备,并连接到树莓派的GPIO端口上。
比较ATmega328P-PU与树莓派微控制器之间的规格是很有趣的。ATmega是一个8位AVR RISC微控制器,运行频率为20MHz(按照大多数Arduino的标准,我们使其以16MHz频率运行)。每一个时钟周期内,ATmega执行大约一条命令,并具有SPI、I2C、模数转换器和可编程的UART。它有32KiB的闪存和2KiB的RAM。与树莓派相比,ATmega是一个更小、功能不太强大的计算机。
1.4.2 16MHz TTL时钟振荡器
如图1-6所示是一个16MHz的TTL时钟振荡器,整个振荡器封装在一个外壳中,除了供电元件外,不需要其他外部元件。它将为面包板上的Arduino项目提供时钟信号。
当大多数Arduino使用传统的电容+晶体的方法产生时钟振荡时,我们将使用图1-6所示的一体式封装的时钟振荡器来完成这项工作。这是因为我们将要使用的无焊面包板会给电路增加一定的电容,并且因存在电线长度、制造商、连接点的腐蚀等不确定因素,我们不能确定会增加多少电容。TTL时钟振荡器可以消除这些不确定性,并保证为ATmega运行提供一个16MHz的纯净信号。
图1-6显示了一个“全尺寸”14引脚双列直插版本的时钟振荡器。这些标识是通用的。我从我一大堆时钟振荡器中取出了一个16MHz的14引脚双列直插式TTL振荡器,它工作得很好。下面列出的数据手册就是一个例子。
1.4.3 74LVC245A八进制总线收发器
74LVC245A八进制总线收发器(见图1-7)是一种通常用于驱动电子总线的IC。对于Arduino,我们习惯于把想要的元件通通接入Arduino引脚。
所有ATmega微控制器都是鲁棒的,其引脚有内部保护以及强大的驱动电路。不是所有IC都是这样的。树莓派的GPIO引脚根本没有得到很好的保护,所以任何噪声、过载、过电压都被直接发送回系统芯片。如果系统芯片中引脚的驱动电路被损坏,将是不可修复的。
74LVC245A具有一项附加功能,即能作为一个低电压版本的八进制总线收发器。这意味着其最大工作电压为3.3V,并且其逻辑高电平输出,按照这个最大电压的大百分比输出。但其输入能处理高达6.5V,远远高于传统的5V TTL电平。
我们将使用74LVC245A作为电平转换器。通过使用这个IC将输入电压减少到3.3V左右,就可将5V TTL信号安全地输入树莓派中。你可能会问,3.3V左右输出的74LVC245A怎么能驱动5V的TTL逻辑电路(这里指ATmega328P-PU)?这是一个很好的问题,我将在第12章中回答。也可以参考ATmega数据手册的第386页。
1.5 LED
本书项目中所用到的LED没有特别之处,可以使用任何普通型号的LED(可能亮度低、电流高),但要连接它们,可能需要适当调整原理图。
1.5.1 10段光带
我使用了一对由Kingbright生产的型号为DC10GWA的10段LED光带,因为在之前的其他项目中就使用了它们。其外观如图1-8所示。
你可以使用任何型号的LED 10段光带,只要它们的电流需求不超出树莓派所能提供的最大值(将在第5章中阐述)即可,但是仍要注意安全。一些较大的光带是用LED连接在一起而形成的,使用这种光带需要复用树莓派的引脚,而不是将每个LED都连接一个树莓派引脚。多路复用非常有趣,但是我并不打算在本书中介绍它。Kingbright LED也有内容丰富、易于阅读的数据手册,据说这是很多其他型号的LED所不具备的。我是从Mouser购买的Kingbright LED,但是大多数电子产品供应商都有这种LED或者与之相似的LED。为了清晰起见,我们在这里按照每个LED连接树莓派的一个引脚。它的数据手册可以参见http://www.us.kingbright.com/images/catalog/SPEC/DC10GWA.pdf 。
1.5.2 普通LED
我还使用了一个普通的LED,如图1-9所示。
在第12章中我们将使用它作为工作指示灯。我从Vishay得到了一个关于通用LED的数据手册,但还是无法明确这个LED是哪个厂商生产的。我猜测它的正向电压降大约是2V,并为它选择了一个保守的电阻值,可以使LED足够亮以便于观察。使用普通的LED就能做到以上两点。至于高亮度、颜色多样以及更高级的类型,则没有什么必要。在你的零件抽屉里发现一个LED了吗?就用它吧。它很可能会工作得很好。
这里就不列出供应商了,大多数电子商店中都能买到LED。
1.6 microSD卡
本书所支持的树莓派都使用相同的microSD格式的SDHC/SDXC卡,如图1-10所示。它们是小卡,而不是数码单反相机中最常用的那种标准SD卡。
microSD是指存储卡的物理格式。SDHC和SDXC是指与这些卡通信的电子规范。SDHC(Secure Digital High Capacity,安全数字高容量)表明存储卡的容量介于4GiB和32GiB之间。建议为你的树莓派装备这种存储卡。树莓派也可以和SDXC卡通信,但是在大多数情况下,不需要那么大的容量。如果确实需要大容量,最好把一个USB-SATA适配器插在树莓派上,然后挂载一个小硬盘或者SSD。SD卡的速度很慢,它们并不是为Linux设计的。
为树莓派安装一张8GiB的卡。你也可以暂时用4GiB的卡,但长期使用可能会出现存储空间不足的问题。Linux正常运行需要磁盘空间,它不能在系统空间快满的情况下运行。Class 10卡读取速度快,但在树莓派上,Class 10和其他Class的读取速度并没有太大区别。建议选用正规厂家生产的存储卡。
1.7 USB闪存设备
对于树莓派,一个大小至少为1GiB的U盘,或是一个配有USB读卡器的microSD卡都是可用的。我们将在第11章中使用它们来编写文件。这些闪存设备很容易得到,我使用了一个配有USB读卡器的microSD卡。如图1-11所示为一些USB闪存设备的例子。
1.8 电阻
我们在整个工程中只使用了2种阻值的电阻。即使对于由20个LED构成的阵列,也只需要2种电阻。
如图1-12所示为阻值为220Ω,功率为1W的电阻。它会将通过LED的电流降到10mA。从功率来看,1W的最大功率过高了(即实际工作功率远远小于1W)。我所见过的
电阻的最小功率是,但这仍然过高。对于大部分工程项目,我都用了功率为1W的电
阻,只在第11章和第12章中用到了1/4W的电阻。你还需要一个阻值为10kΩ的电阻,如图1-13所示,它是第12章中将用到的复位上拉电阻。同样,这些电阻也比较容易买到。
1.9 连接线和面包板
连接线是很有用的工具,将各种器件正确连接,这些项目才得以进行。如果你熟悉Arduino,那么你可能有自己最喜欢的一卷连接线。连接线的使用很简单,我有一个连接线盒子(见图1-14),它最主要的优点就是有多种颜色。
连接线的制造商并不重要,实际颜色也不重要,只要能明确线的连接走向就可以。我的连接线是由Elenco制造、从Microcenter购买的。连接线最重要的特性是它必须是22轨距(0.35mm)的,这一尺寸与面包板的连线孔匹配。同时,它必须是单股铜线,而不是多股绞线。为了能够分辨清楚,建议至少准备3种颜色的连接线,一种颜色代表地线,一种颜色代表Vcc供电线,一种颜色代表数据线。最好有更多颜色。
预制的跳线
很多地方都出售预制的跳线。我有线束,但并不使用它们。由于反复使用或坏的操作习惯(请养成从根部拔出接头的好习惯),导线很快就会从引脚接头处断开。有的时候,由于断点位于热塑管下,你并不知道连接线已经损坏了。我曾经因此困惑了好几个小时,并试图找出为什么电路会停止工作。我曾不断尝试使用多种颜色的导线以使连线更加漂亮。这样浪费了很多导线吗?好吧,是的。如果这让你不舒服,你可以购买预制的跳线,但要注意上面提出的问题。面包板
下面我们来讨论面包板。如图1-15所示就是我使用的面包板。
这块面包板没有什么特别的,除了它是一块新板。我发现特别便宜的面包板坏得也很快。价格便宜的面包板上的小插孔比较容易磨损,并且出现磨损时不易被发现。如果电路莫名其妙地停止工作,或根本不工作,这时可能要使用万用表检查和确保面包板小插孔是正常的,并检查各电子器件和连线是否正常。
从价格上就可看出面包板是“爱好”级的还是专业级的。专业面包板起价约为20美元,而且价格在大幅上涨。它们通常也有一个金属底座,这有助于将它们调整到合适的角度。图1-15中所示的是非专业的面包板,所以我要冒一定风险。对于本书中的各种电路,我将用一块旧的、质量更好的面包板搭建电路原型,它仍然可靠。如果你接触Arduino很久了,可能拥有一个质量更好的面包板。如果没有,就要考虑买一个。
1.10 微动开关
你需要一个通常为开状态,支持瞬间动作的微动开关。只有按下开关按钮时,才会闭合电路。如图1-16所示是我采用的微动开关。
我发现用钳子把它的引脚拉直,就可以很容易地把它放进面包板。但这样,它们也很容易从面包板里弹出来。同样,从很多电器商店都能买到微动开关,或类似的能够实现按钮功能的其他原件。
1.11 焊接工具和技巧
看上去你十分需要焊接工具和工具使用技巧。实际上,如果你能找到一个树莓派分线板和一个已经焊接了引出针脚的树莓派,你也可以完成所有项目,不用焊接。但如果要在电子方面有进步,那么焊接是一项必备技能。为了进行焊接,找个好工具吧。我将在第11章简要地介绍焊接工具和技巧。有了工具和技巧,再加上适当的指导,就能创造更多可能。
1.12 关于供货商
你可能已经注意到,我为本章讨论的多数器件都列出了供应商名单。这并不是一个详尽的清单。这些都是我最近用过的供应商,我从他们那里购买电子元器件。
我是美国人,所以选择的大多数供应商都在美国,Newark是我为英国读者提供的。我已经列出了各种各样的供应商,所以理想的情况是,你可以用1~2个订单购买到所需的所有部件。通常(至少在美国)运费比购买它们更贵。举例来说,如果你没有选择Mouser,而从其他渠道订购了LED、电阻器和其他器件(可能售价比Mouser便宜),也不得不多花几美元才能从Mouser买到一个树莓派,但算总的花费的话,就不如大多数器件都从Mouser买,节省的运费可能就足以弥补器件价格差额了。检查一下运费。厘清运费的组成并按照最划算的方式购买至少也是一件快乐的事。
1.13 关于元器件
当我的上一本书出版时,我曾收到一封一位来自印度的先生发来的电子邮件,问我是否可以用ATmega328P-PU代替我在书中所用的ATmega1284P-PU。
我忘记了确切的汇率换算,但结果是他购买ATmega1284P-PU的价格相当于我用50~ 100美元买一个IC芯片。我不敢给他提出建议,因为我在那本书中的建议之一就是“买一个备用,它们是廉价的”。由于汇率问题,实现上一本书中的项目的实际花费可能与我描述的非常不同。
这本书不同,书中许多项目都是围绕软件方面开展的。这也是树莓派和Arduino之间的巨大差异。本书中,我尽量使用能够满足需求的便宜、常用的零件。
1.14 元器件一览
下面简要列出本书中用到的所有元器件,有些人觉得这种概览性的清单更好。
1个树莓派,最好为3B+型树莓派,尽管对大多数项目来说Zero W型树莓派足够了
1个树莓派分线板
1个5V的USB微型电源
1个ATmega328P-PU微控制器
1个16MHz TTL时钟振荡器
1个74LVC245A八进制总线收发器(电平转换器)
2个10段LED光带
1个普通LED
1个microSD卡
若干个220Ω电阻,功率至少为1/4W
1个10kΩ电阻,功率至少为1/4W
连接线
1个无焊面包板
1个微动开关(按钮),支持瞬间动作,通常为开状态
1个microSD到USB适配器,或容量为1GB或更大的U盘
1个拥有独立供电装置的USB集线器(可选)