Hello,大家好。2022春节前和同事聊天的时候聊到了硬件方面的知识,同事说他们大学的时候参加电子竞赛时用的是一款叫Arduino的板子进行开发的,他还说学校里组织的竞赛都是用的Arduino。我立刻起了兴趣,于是上网找了一些关于Arduino的文章,看完以后我的兴趣是越来越浓了。以前在写程序的时候一直想能够造一些东西出来,但是苦于自己的方向是后端,所以做出来的东西均是服务相关的产品。然而,Arduino一下子让我这名后端工程师豁然开朗,各种未来的黑科技在我脑中冒了出来,于是我打算深入了解一下Arduino啦。
首先,万里之行始于足下,我需要了解Arduino到底是什么,它是由什么组成的。简单来说,它是一个物理硬件,包括一个电路板和不同的电子元件组合起来。
上面这个图,是Arduino各元件的中文解释。大概可以看得出USB接口是可以和计算机进行交互的,DC插头是交流电入口,两边的端口负责外置元件的供电和控制信号,最长的那个芯片肯定是这款板子的大脑。上面的指示灯可以帮助我们来确认各种状态。接下来,让我们先从它的大脑-ATMEGA328P说起吧!但是在说之前,我先声明下本人并不是硬件工程师,以下总结的皆是本人通过学习和探究所得的。如有不对,一定是看的网站写的不对!
Q:ATMEGA328P是啥?
A:可以先看下面的参考文献链接。它是一个ATMEL公司研发的8位(8-bit)的精简指令(RISC)为基础的单片机,它结合着32KB大的可同时读写的ISP闪存,同时包括了1024B EEPROM,2KB SRAM等等。
Q:
什么是单片机?
A:单片机就是一个微信的CPU。单片机也叫单片微控制器。
Q:
单片机能用来做什么?
A:通过把程序烧录到芯片里面,通过控制不同的外围电路实现不同产品的功能。
Q:
你刚才说的那些ISP,EEPROM,SRAM都是干什么的?
A:其实这些东西在刚学Arduino时并不需要了解的,因为之后的学习中会涉及到背后的原理,到时候自然就会碰到这些概念。不过可以先提一下,这些涉及到硬件上的存储以及代码的刷新等功能。
Q:
我看网络上很多单片机都有提到51单片机和STM单片机和AVR单片机。这些有什么区别么?
A:
首先我们要明白的是,单片机是一种技术,他们的功能都和其内部的芯片息息相关。所以,这三种单片机的区别你可以暂时理解为,他们的制造商不同,采用的规格不同,所以功能上有些许的差异。
Q:
什么是芯片?
A:芯片是由电路板和集成电路组合起来的。
Q:
什么是电路板,什么是集成电路呢?
A:电路板就是那种绿油油的板子,电路板使用来走电路用的。集成电路是由各种电子元件按照一定规格组合起来的电路器件。将制作好的集成电路压在走好线的电路板上就形成了一个芯片。
Q:
所以说,51单片机和STM单片机和AVR单片机的区别主要在厂商制作芯片的不同而不同啦?
A:是的,没错。如果想了解芯片之间的不同的话,就需要去了解芯片中的微处理架构和指令架构了。这些知识更深有点偏底层了,会越讲越深。这里就举个例子,像刚才说的RISC就是适合于移动办公的指令集架构。一般移动设备使用这个芯片。相对于精简指令集还有个对应的指令集叫CISC(复杂指令集),复杂指令集多应用于桌面系统。
我们说完了Arduino的大脑之后,再接着说说它的心脏-晶振。在上图中没有标明晶振,晶振其实就是USB转串口芯片的下面的那个银色标有T16.000的元件。因为晶振给芯片提供了时钟信号,所以说晶振是芯片的心脏。
Q:什么是晶振?
A:晶振就是以石英石为原料的元件,它能提供时钟信号。
Q:
为什么晶振能够提供时钟信号呢?
A:因为晶振可以产生固定频率的振动哈。因为有了频率振动所以就有了时间的功能。这样芯片就能将时钟作为时间的参考。
Q:
频率是什么?
A:频率的定义是在单位时间内物体重复运动的次数。这是个物理概念哈。晶振在通电以后,会产生固定的频率振动。
Q:
晶振为什么会产生振动的频率?
A:这其实跟石英晶体的物理特性有关,石英晶体有一种特性,如果在它上面施加压力,响应施力的方向就会产生一定的点位。相反的,如果施加电场,就会使晶体发生形变。如果施加的是交变电场,晶体就会产生机械振动,机械形变振动又会产生交变电场,尽管这种交变电场的电压极其微弱,但其振动频率是十分稳定的。当外加交变电压的频率与晶片的固有频率(与切割后的晶片尺寸有关,晶体愈薄,切割难度越大,谐振频率越高)相等时,机械振动的幅度将急剧增加,这种现象称为“压电谐振”。就是因为压电谐振才会产生振动的。可以看看下面的参考文献,我引用了一段bilibili的视频,从视频里你能清楚的看到晶振发生震动的细节。
接下来,我们再看看为它提供能量的电源吧。Arduino一共有三个可供电源接入的地方。一个是DC插头,一个是USB接口,一个是GND+VIN排针脚处。DC插头适配的是直径为2.1mm插头的电源,USB接口外接的是PC,外接电池可以插入GND+VIN针脚。
Q:安全电压是多少?
A:官方说推荐输入电压是6-20V,极限输入电压是7-12V。也就是说,电路板可以安全的接6-20V的外部电源,但是如果你低于7V或者超过12V就会出现问题,低的话电路会不稳,高的话稳压器会过热,会烧坏电路板的。
Q:
当有电流瞬时保障时有什么保护措施么?
A:目前,在板子上有一个可以防止USB瞬间电流过大的保护器,就是图中的自恢复保险丝。他可以防止USB带来的过流电流烧毁板子。至于DC的保护应该在变压器上做的吧?如果是直接接引脚的话,应该没有保护吧?这块还不太确定,等之后确定了再回来补充吧。
最后,让我们再说说板子上的两个种端口,一个是模拟端口,一个是数字端口。数字端口中包括14个接口,模拟端口中包括5个接口。顾名思义,数字端口就是用来通信数字信号的,模拟端口就是通信模拟信号的,哈。
Q:模拟信号和数字信号的区别是什么?
A:如果你在百度直接搜索的话一定会找到类似“模拟信号:时间连续,幅值连续。数字信号:时间离散,幅值离散。”这样的回答。这样的回答真的是太抽象了,一点不适合人类的理解。根据我的学习,模拟信号就是真实世界物理物体振动产生的,人类为了记录这些信号起先是通过将这些振动转换在黑胶唱片上的(通过一些物理的手段,因为传递了振动,所以可以通过针刻在黑胶盘上),这种记录形式能够记录模拟信号。更多知识可以看看下边的参考文献。然而,因为技术的发展,通过更紧密的仪器慢慢的就能收集到更多的信号了,但是物理上很难找到极为精密的介质,所以科学家们将模拟信号转换成了数字信号,模拟信号通过采样,量化手段转换成了只有1和0来表示的信号,就叫做数字信号。希望我这么说大家能够明白了。具体里面的细节我可以以后再说,但这已经跟这个文章的主题没有关系了。
Q:
那能说说这两个端口都是干什么的么?
A:模拟端口(A1到A5)用来接收外部元件传过来的模拟信号的。数字端口中的(引脚3、5、6、9、10、11)即可以当数字信号输入输出,又可以当模拟信号的输出。其它引脚都可以输入输出。
到这里,我们就对Arduino关键的元件进行了说明,Arduino有了大脑,心脏,动力,输入输出,就能够转起来了。
参考文献: