第1章 重新认识Tinkercad
第1章的标题之所以叫做“重新认识Tinkercad”,是因为Tinkercad在大众普遍认知中是一款3D建模软件。而本书介绍的内容并不是用Tinkercad来创建三维模型,而是用它来仿真Arduino编程,这个领域可能大家了解比较少,所以需要“重新”认识一下它。
1.1 开源硬件的开创者Arduino
在开始正式的内容之前,先简单说一下Arduino。
相比于2010年、2011年本人开始写国内第一本中文Arduino图书的时候,我想现在已经不用再单独介绍什么是Arduino了(如果你还不太了解Arduino,建议先阅读本人之前出版的一系列Arduino图书)。经过这些年的培训和宣传活动,Arduino基本已经成为科技创新作品制作的必选硬件平台。每年本人在不同的科技创新比赛当中,都能见到大量用Arduino制作的作品。
对于Arduino的出现,之前的出版物中本人提到了它的偶然性。在本人的《Arduino开发实战指南》一书中有一段关于Arduino历史的介绍,其中第一句话就是“说到Arduino的起源似乎有点令人感觉无心插柳柳成荫”。其实Arduino的出现也有其必然性,本书就通过简单梳理电子科技、集成电路、微处理器的发展,说说它的必然性。
1.1.1 集成电路
这段科技史我们跳过电子管、晶体管的部分,直接从集成电路的出现开始。
1958年,美国德克萨斯仪器公司宣布一种集成的振荡器问世,首次把晶体管和电阻、电容等器件集成在一块硅片上,构成了一个基本完整的单芯片功能电路。1961年,美国仙童公司宣布制造出了一种集成的触发器。从此,集成电路获得了飞速发展。
数字集成电路从小规模、中规模到大规模,甚至是超大规模,集成度越来越高。与此同时,在模拟集成电路方面,设计师与生产商在一小片硅片上集成了许许多多的晶体管电路,硅片由塑料外壳封装,外部的金属引脚与芯片内部硅片上的细小引线相连。集成电路的发明开创了集电子器件与某些电子元件于一体的新局面,使传统电子器件的概念发生了变化,同时也让电子设备的体积和性能不断变化,使得过去的中小型计算机甚至是大型计算机得以小型化或微型化,而性能却在成倍地提高。
1946年2月14日诞生的世界上第一台电子计算机ENIAC占地170平方米,重达30吨,耗电功率约150千瓦,每秒只能进行5000次运算。而现在随随便便一部手机每秒都能运行几十亿次,且尺寸只有手掌大小。
摩尔定律
摩尔定律是Intel创始人之一戈登?摩尔(Gordon Moore)提出来的。其核心内容为:当价格不变时,集成电路上可容纳的元器件的数目,每隔18~24个月便会增加一倍,性能也将提升一倍。换言之,每一美元所能买到的电脑性能,将每隔18~24个月翻一倍以上。这一定律揭示了信息技术进步的速度。
1.1.2 微处理器
如果打开20世纪80、90年代的录音机、录像机或是CD机,你会发现里面的电路板都很大,有可能还不止一块,而且电路板上密密麻麻都是集成电路和电子元器件。相比而言,现在的电视盒、路由器等电子设备都很空,在一个不大的电路板上也只有两到三个较大的芯片和一些外围电子元件。这种变化一方面得益于集成电路加工工艺的发展,另一方面是由于设备功能的实现由硬件完成慢慢变成了由微处理器中的软件来进行。
微处理器也是集成电路的一种,它是一种能运行程序的集成电路。20世纪80年代中期,大多数电子产品都是由十分复杂且巧妙的逻辑电路构成,所以在制造这些电子产品的时候会使用大量的逻辑电路芯片(本书中也会介绍一些)。不过从20世纪70年代开始,就已经有芯片厂家开始通过在产品中嵌入微处理器来减少芯片的使用数量了,到了20世纪80年代,随着微处理器性能的提升和技术的完善,越来越多的工程师意识到如果在设备中使用微处理器,不仅可以提高设备的性能,而且能够降低制造成本,关键是还能减少开发成本和更新维护的费用。
在未使用微处理器之前,设备的开发需要非常专业的电子工程师才能完成,而且维护更新也需要熟练的工人进行;使用微处理器之后,设备的开发就被分成了硬件设计和微处理器编程两部分,硬件设计还是需要专业的工程师来实现,但微处理器编程部分则不需要专业的电子工程师,同时设备的维护和更新也可以让廉价的劳动力通过更换程序存储器件来解决(早期的芯片只能写一次程序,如果程序有问题则需要换一个芯片)。
第一款微处理器Intel 4004
Intel 4004微处理器是世界上第一款商用计算机微处理器。片内集成了2250个晶体管,晶体管之间的距离是10μm,能够处理4bit的数据,每秒运算6万次,运行频率为108kHz,成本不到100美元,1971年11月15日发布。英特尔公司首席执行官戈登?摩尔将4004称为“人类历史上*具革新性的产品之一”。
Intel*初的主业实际是存储器芯片,在4004诞生之前,由于受到日本半导体公司的冲击,Intel已经处于破产的边缘。这个时候,一家日本计算器公司Busicom找到了Intel,愿意花60000美元让Intel帮他们的Busicom 141-PF打印式计算器设计12个芯片,并且拿出了他们的设计图纸,一套6种极其复杂的芯片设计方案。
Intel工程师霍夫更改了芯片设计方案,只用4个芯片就实现了同样的功能。这四个芯片就是4001(动态内存DRAM)、4002(只读存储器ROM)、4003(寄存器芯片)以及4004,用这4个芯片就可以架构出一台微型计算机系统。不过由于制造工艺的问题,4004迟迟无法交货。当时的计算器市场有点像今天的手机市场,美国公司基本上退出了竞争,留下来的日本公司都在打价格战,在这种市场环境下,延迟交货对产品来说是非常致命的。于是当Intel完成4004芯片的设计和样品的生产时,Busicom公司要求Intel补偿,Intel同意了,退还了部分费用,但是附加了一个条件:允许Intel在除计算器芯片市场之外的其他市场上自由出售4004芯片(之前这个芯片的所有权归日本公司)。Busicom公司答应了,至此,Intel公司完成了从单一的存储器制造商向微处理器制造商的转型。
1.1.3 单片机
虽然微处理器的出现简化了电子产品的设计过程,但硬件设计依然比较复杂。这主要是因为要想让微处理器有效地实现各种功能,必须在其外围增加许多信号处理芯片以及其他辅助芯片,比如译码芯片、数据存储芯片、时钟芯片等。
到了20世纪90年代,由于硅处理与芯片制造技术的进步,厂家可以在一个芯片中集成更多的电路。以前需要多个外部芯片才能实现的功能,现在可以集成到一个芯片中完成,比如与其他芯片通信的串行端口、监测模拟信号的模数转换等。为了将这种芯片与微处理器进行区分,大家将这种芯片称为单片机,你也可以将其看成一种集成化的微控制器。
单片机的出现让更多的消费电子产品,包括儿童玩具开始使用芯片控制,让它们更加智能化,比如家里程序化控制的洗衣机,现在只需要选择对应的模式,洗衣机就会顺序开展浸泡、漂洗和甩干等工作,中间不需要人为干预;再比如家里的空调,会检测当前的室内温度,并与用户设定的温度值进行对比,在制冷模式下,当室内温度低于设定的温度时就会停止空调的制冷工作。
可以说单片机的出现让真实的物理世界和虚拟的电子信息世界联系在一起,为物联网时代的到来奠定了硬件基础。台式机或笔记本电脑的功能非常强大,可以同时处理很多事情,比如可以在处理文档的时候,同时播放音乐;可以在播放或编辑视频的时候,同时下载文件。但如果不借助其他包含单片机的电子设备,要让台式机或笔记本电脑与真实的世界联系并不容易。
1.1.4 开源硬件Arduino
单片机与台式机或笔记本电脑是两种不同的发展路线。单片机的应用场景通常比较简单,往往不需要太强的计算能力,但应用场景千变万化,而且对价格非常敏感。这就造成市面上单片机的种类越来越多,而每种单片机都有自己的一套开发环境和开发工具,学习任何一种单片机都需要先学会使用对应的开发环境和开发工具,同时针对所使用单片机的具体型号,还要熟悉其对应的数据手册。如果要学习另一种新的单片机类型,则要重复这个过程。
这其实给单片机的学习使用带来了一定的门槛,因为很多人即便知道自己要实现什么功能,但学习对应的开发环境和开发工具还是有一些难度的。尽管很多厂家都针对自己的单片机产品推出了简单易用的开发板,但所谓的简单易用也需要用户对电子技术、数字逻辑、接口地址、寄存器操作等内容有一定的了解。
Arduino从诞生之初就是针对完全零基础的使用者,这里的零基础只是说他们对于硬件知识零基础,但应该都有一定的编程素养,这些使用者是之前各个单片机生产厂家忽略的用户,事实上这个用户群体相当庞大,因为在计算机软件产业的发展过程中一直都在培养这样的人。这些用户需要一款相对“傻瓜”一些的标准化开发板,而Arduino提供了一个这样的产品,对于硬件工程师来说,这种标准化让Arduino在使用上少了一些选择,但这些选择对于零基础的使用者来说也许正是一种困扰。少了这些选择之后,使用者可以把注意力完全放在表现自己的想法和创意上。
属于开源硬件的Arduino,其标准化的开发板也是开源的。在标准化的硬件基础之上,Arduino通过网络社区的形式,汇集了大量用户的应用实例。由于Arduino基于知识共享的CC协议设计,所以这些实例的所有资料都是开源的,包括结构件、电路图、材料清单,以及控制代码等,任何人都能够使用和改进。参考这些实例,用户能够很快地完成自己的电子作品。可以说Arduino是开源硬件的开创者和推广者。
1.2 功能强大的Tinkercad
说完了Arduino,我们把目光拉回到本书的主角Tinkercad。
本人第一次使用Tinkercad是在2013年翻译《解析3D打印机:3D打印机的科学与艺术》(Practical 3D Printers:The Science and Art of 3D Printing)这本书的时候,当时书中介绍了这款基于WebGL的网络建模工具,我也动手试了试,界面非常简洁,使用起来也很方便,之后就一直留意着它的变化。
2017年,Tinkercad集成了Circuits编辑器的时候确实让我眼前一亮,不过由于时间问题,一直没有时间具体地用一用,在我的潜意识里也一直认为这个编辑器只是能用虚拟的方式展示编程的效果,就像一个可视化的程序解释器。不过当我在2019年使用它的图形化编程建模功能时(当时正在找一些JavaScript代码编程3D建模的内容),顺便又看了一下Circuits的功能,才发现自己对于Tinkercad Circuits的认识是完全错误的,当时就有了写这本书的想法。下面就跟着我“重新”认识一下Tinkercad吧。
1.2.1 Tinkercad简介
Tinkercad是美国著名的Autodesk公司目前主打教育领域的设计软件,其主要功能是三维建模设计,旨在让用户能够简单轻松地实现三维建模。不同于其他专业建模软件,Tinkercad不强调功能全面,而是更注重快速简单地搭建模型,通过组合各种不同的基本体,使用者可以快速构建出自己的模型。因此,Tinkercad非常适合三维建模的初学者。
围绕三维建模的功能,Tinkercad提供了很多开源硬件与机器人部件的模型,其中就包括Arduino控制板,如图1.1所示。使用者在建模界面中能够很方便地找到它们,并利用这些模型辅助自己快速完成模型设计或是验证自己的设计是否合适。比如想要设计一个舵机的支架,只需要选取舵机的模型,然后在自己的模型上相应地减去这个舵机模型就可以了。
图1.1 Tinkercad中包含的部分开源硬
展开