《Arduino实战》——1.2 Arduino硬件

本节书摘来自异步社区《Arduino实战》一书中的第1章,第1.2节,作者 【美】Martin Evans , Joshua Noble , Jordan Hochenbaum ,译者 况琪,更多章节内容可以访问云栖社区“异步社区”公众号查看。

1.2 Arduino硬件

Arduino有很多个版本,但所有的Arduino都基于一片Atmel的8位AVR精简指令集(RISC)微处理器。第一款Arduino基于ATmega8,它具有16 MHz主频和8 KB Flash存储空间,之后的Arduino NG plus和Diecimila(意大利语的10 000)使用了具有16 KB Flash存储空间的ATmega168。最近的Arduino版本Duemilanove和Uno使用了具有32 KB Flash存储空间的ATmega328,并支持在USB和外接直流电源间自动切换。对于需要更多存储和I/O的项目,还可以选用具有128 KB Flash存储空间的Arduino Mega1280和更新的具有256 KB Flash存储空间的Arduino Mega2560。

这块电路板有14个数字引脚,每个都可以被独立的设置为输入或者输出,还有6个模拟输入引脚。此外,有6个数字引脚可以通过编程提供脉宽调制(PWM)模拟输出功能。它还支持多种通信协议,包括串口、串行外设接口(SPI)总线以及I2C/TWI总线等。而每块电路板上都包含的基本功能是一个在线串行编程(ICSP)插座和一个复位按钮。

注意

扩展板(Shield)是一种专门的电路板,用以扩展Arduino的功能,它们可以一层一层地堆叠起来,从而添加更多的功能。

下面就来了解一下几种比较常见的Arduino电路板,就从Arduino Uno开始吧。

1.2.1 Arduino Uno

“大餐准备好了”——这是2010年9月25日,Arduino Uno(意大利语“一”的意思)和它的“大哥”Arduino Mega2560发布时的博客标题。Arduino Uno的引脚与先前的Arduino(包括Duemilanove和更早的Diecimila)保持兼容。

Uno与先前的版本相比,最主要的区别是用一片ATmega8U2微控制器代替了之前版本中过时的FTDI芯片,这片ATmega8U2已经被编程为USB到串口的转换器。ATmega8U2还可以重新编程,从而使Arduino看起来像其他的USB设备,比如鼠标、键盘或者游戏摇杆。另外一个区别是板上配备了一个更加可靠的3.3 V电压,这有助于提高一些在先前出现过问题的扩展板的稳定性。关于这部分完整的技术说明请参见附录C。

图1-1展示了Arduino Uno电路板的布局和引脚。


screenshot

Uno是一片良好的通用型的Arduino,它搭载了供电自动切换电路和经过稳压的板上3.3 V电压,它是Arduino项目开发入门的首选!

1.2.2 Arduino Duemilanove

Duemilanove(意大利语“2009”的意思)是已生产的最流行的Arduino电路板之一,已取代了它之前的版本Arduino Diecimila。但现在,它又被更新的Arduino Uno所取代。Duemilanove的特色是使用了供电自动切换电路,自动选择从USB还是从外部电源供电。它还使用了ATmega328处理器,但2009年3月之前的版本采用的仍然是ATmega168。它的引脚布局和运算能力与Uno相同,只是它使用FTDI芯片实现USB转串口通信。

如果你打算买一片新的Arduino,那就应该选择Arduino Uno。如果你已经有一片Duemilanove,并且需要更稳定的3.3 V电压或者想做一些基于ATmega8U2的高级编程,那么可以考虑将其升级为Uno。

1.2.3 Arduino Ethernet

Arduino Ethernet是一个与Uno一起发布的低功耗版的Arduino。与其他版本的Arduino相比,它的主要区别在于其电路板上有一个用于连接以太网的RJ45接口以及一个microSD读卡器。Arduino Ethernet没有板载USB转串口驱动芯片,但它有一个6针的接口,可以连接到一条FTDI串口线或者其他USB到串口转接板,从而提供一条通信链路,以便给电路板编程。它还可以用一个可选的以太网供电(POE)模块供电,这使得Arduino Ethernet可以从一条5类以太网双绞线取电。

将Arduino Ethernet用于远程监控和数据记录站是很理想的,它可以将数据通过板载的microSD读卡器记录到卡上,通过有线方式连接到以太网并从中获得供电。

1.2.4 Arduino Mega

作为Arduino家族的老大哥,Mega使用了一个更大的表面贴装微处理器ATmega1280。Mega曾与Uno一起升级,现在它采用的微处理器是ATmega2560,与最初的128 KB Flash存储空间的版本相比,新版本具有256 KB的Flash存储空间。

与标准的Arduino相比,Mega显著提高了输入输出的功能,由于具有更大的存储器,它可以被理想地应用于一些较大的项目,比如控制大量的LED,需要大量的I/O或者需要多个硬件串口的项目。Arduino Mega有4个硬件串口。这块电路板有54个数字输入输出引脚,其中的14个可以提供脉宽调制(PWM)模拟输出,另外还有16个模拟输入引脚。在通信方面,它具有多达4个硬件串口。另外SPI通信和I2C/TWI设备也都是可以支持的。这块电路板还有ICSP插座和一个复位按键。一片ATmega8U2替代了之前版本采用的FTDI芯片,完成了USB串口的通信。

Mega与现有的绝大部分扩展板都是兼容的,但在购买新的扩展板时最好还是确认一下其是否能与Mega兼容。当你对额外的输入输出引脚和更大的存储有明确需求的时候,可以考虑购买Maga。完整的技术指标请见附录C。

图1-2展示了Mega的引脚和电路板布局。


screenshot

下面让我们来了解几款更专用化的Arduino。

1.2.5 另外几种Arduino电路板

为了适应特定的需求,Arduino的原始设计被重新打包成不同的形式,从而使Arduino产生了许多变种。让我们一起来了解其中的两个——LilyPad和Nano。

1.LilyPad Arduino

LilyPad Arduino由SparkFun电子和Leah Buechley设计,它是可穿戴类应用设计的绝佳选择,你可以将你的作品穿在身上,大摇大摆地走起猫步。它设计了很大的连接焊盘以便于缝制,它还有一系列的可缝制的附件,其中包括光线传感器、蜂鸣器、三色LED、温度传感器、电子针线包和加速度计等。这个低功耗版的Arduino甚至是可以洗涤的!只要别忘了在洗之前先把电池拆下来。

LilyPad与其他Arduino最主要的区别是它具有较慢的8 MHz的处理速度,而其他的Arduino通常是16 MHz的。还有一点需要注意:它的输入电压绝不能超过5.5 V。图1-3就是LilyPad Arduino的实物图。


screenshot

2.Arduino Nano

如果你作品的尺寸是受限的,那Arduino Nano会是一个正确的选择。它由Gravitech设计并制造,3.0版本的Nano(搭载ATmega328处理器)还有一个板载的MiniUSB接口,它是一个适合用在面包板上的紧凑型的Arduino。

Nano在功能性上与Duemilanove类似,但它有两个额外的模拟输入引脚。给这块电路板供电可以通过USB接口,也可以通过板上两个分立的引脚:30号引脚可以接受未经稳压的6 V至20 V的电压,27号引脚可以接受整流后的5.5 V供电。电路板会自动选择电压较高的供电用做自己的电源。

这块电路板尺寸较小,这使其成为了尺寸受限的应用项目的理想选择。

1.2.6 复制品的冲击

从一开始,Arduino就一直被认为是一种开源硬件。用户可以免费获得它的设计资料,下载它的计算机辅助设计(CAD)文件,生产并销售基于它的硬件产品。这导致Arduino出现了大量的复制品和仿制品,许多制造商按照原始的规格加以修改,就制成了一个仿制品。

Arduino这个名字是一个注册商标,这防止了其衍生品继续使用Arduino这个名字,除非得到了Arduino团队的授权。

1.Seeeduino(没错,有3个e)

如果你喜欢红色,就选这块电路板吧。它由中国深圳的Seeed Studio设计并制造,它基于Diecimila这款早期的Arduino设计,有搭载ATmega168和搭载ATmega328微处理器的两种型号可供选购。它选用不显眼的表面贴装器件,红色的电路板是它的特征。

这片电路板兼容Diecimila的引脚布局和外形尺寸。改进包括自动感应USB和外部供电,还在板上提供了更好的供电电路。

2.Seeeduino Film

相对于LilyPad基于织物的架构,Seeeduino Film则在可穿戴技术上采用了不同的思路。这是一个柔性的Arduino复制品,当然它也可以被用于数据记录项目中。它采用了表面贴装的ATmega168和柔性印刷电路板。相比于传统的扩展板,它的扩展模块被其制造商称为帧(frame)。目前它只有一种扩展模块,包括了一个气压计、32 MB的Flash存储器和一个三轴加速度计,这对入门来说已经绰绰有余了。

3.Boarduino

Boarduino是一个小型的电路板,与Nano 3.0类似,但它只以散件形式销售,所以需要用户有一定的焊接技巧。Boarduino由Adafruit Industries制造,它被设计成可以直接插在免焊接的面包板上。该套件使用ATmega328作为控制器,有两种版本可供选择,一种是带USB接口的,另一种带一个串口连接器,需要再配一根串口线才能使用。

4.Sippino

来自SpikenzieLabs的Sippino是一种微型的Arduino兼容型复制品。它也像Boarduino一样以散件形式销售,因此也需要用户掌握焊接技巧。Sippino使用ATmega328,不过它也可以使用ATmega168。所有的数字和模拟输入输出引脚都被引出并排成一行,所以它可以直接插到免焊接的面包板上。你还需要一条FTDI的USB转串口电缆来为它刷写程序。

5.eBay

大量的Arduino仿制型电路板在eBay上销售,它们大部分是Duemilanove的复制品。对于所有的仿制品,你都需要注意:确保它采用了一个ATmega328微处理器,并且板上的插座与你的扩展板是相匹配的。

我在eBay上订购的第一片Arduino上的插座是公头的,而不是母头的,这使得它难以接插扩展板。我不得不又购买了一些特制的跳线来将其连接到面包板。虽然这对我们入门来说已经足够了,但你最好能反复确认一下自己要买的东西是不是真的是自己想要的东西,从而尽可能地避免此类错误。

1.2.7 获取一片Arduino

如果你打算购买用于入门的第一片Arduino,我们推荐你买Uno,它具有出色的USB连接器和更好的板载供电电源。

Arduino Uno可以从很多在线零售商那里买到。在美国最大的3家是SparkFun Electronics(www.sparkfun.com)、Adafruit Industries(http://adafruit.com )和Maker Shed(http://makershed.com/ )。在英国有SK Pang Electronics(http://skpang.co.uk )和oomlout(http://oomlout.co.uk )。在Arduino的官方网站上,还有一份全球范围内经销商的列表(http://arduino.cc/en/Main/Buy )。

当你拥有一片Arduino之后,你就可以将它连接到计算机,然后设置你的开发环境了。

### 回答1: Arduino ESP32的主频设置可通过修改代码来实现。ESP32的主频默认为240MHz。 在Arduino IDE中,打开您的ESP32项目并打开主代码文件。在setup()函数中,您可以添加以下代码行来更改主频: ``` #include <esp32-hal-cpu.h> ``` 然后,您可以使用下述代码设置主频为不同的值(以MHz为单位): ``` // 设置主频为80MHz setCpuFrequencyMhz(80); // 设置主频为160MHz setCpuFrequencyMhz(160); // 设置主频为240MHz setCpuFrequencyMhz(240); ``` 您可以根据您的需求选择合适的主频设置。然后,重新编译并上传代码到ESP32开发板,代码将在运行时设置相应的主频。 请注意,更高的主频可能会导致更高的功耗和温度,因此在设置更高的主频之前,请确保您的硬件可以承受相应的要求。同时,某些外设(如SPI)可能对主频有限制,因此在更改主频之前,请参考ESP32的数据手册和外设文档以获取更多信息。 ### 回答2: Arduino ESP32是一款功能强大的开源微控制器,它的主频(即主频率)是其运行时的时钟频率。在Arduino开发环境中,我们可以通过编写代码来设置ESP32的主频。 要设置ESP32的主频,我们需要使用Arduino的内置函数和库。首先,我们需要包含ESP32的库文件,这可以在代码的顶部添加以下语句来实现: #include <esp32-hal-cpu.h> 接下来,我们可以使用如下语句来设置ESP32的主频: setCpuFrequencyMhz(frequency); 其中,frequency是我们想要设置的主频值,以MHz为单位。常见的主频值包括80、160和240等。 举个例子,如果我们想将ESP32的主频设置为160MHz,我们可以使用如下代码: #include <esp32-hal-cpu.h> void setup() { setCpuFrequencyMhz(160); // 其他的Arduino初始化代码 } void loop() { // 主循环代码 } 在这个例子中,我们在setup函数中调用setCpuFrequencyMhz函数,并将主频设置为160MHz。然后,我们再编写其他必要的初始化代码。最后,我们在loop函数中编写主循环代码。 通过设置ESP32的主频,我们可以调整其运行速度和功耗。较高的主频会提高运行速度,但也会增加功耗。因此,我们需要根据项目的需求和硬件的限制来选择合适的主频值。 ### 回答3: Arduino ESP32是一款功能强大的微控制器,可以通过设置来调整其主频。 首先,我们需要了解ESP32的主频是由内核频率和外设频率两部分组成的。内核频率可以设置为80MHz或160MHz,而外设频率可以设置为40MHz或80MHz。 要设置ESP32的主频,我们可以使用Arduino IDE提供的工具和库。 首先,我们需要在Arduino IDE中打开我们的ESP32项目。 然后,我们可以使用WiFi.setAutoConnect()函数来设置内核频率。可以通过将参数设置为true来将内核频率设置为160MHz,或将其设置为false来将内核频率设置为80MHz。例如,WiFi.setAutoConnect(true)将使内核频率设置为160MHz。 接下来,我们可以使用WiFi.setMode()函数来设置外设频率。我们可以将参数设置为WIFI_MODE_STA来设置外设频率为80MHz,或将其设置为WIFI_MODE_NULL来设置外设频率为40MHz。例如,WiFi.setMode(WIFI_MODE_STA)将使外设频率设置为80MHz。 最后,我们可以使用WiFi.begin()函数来开始连接WiFi网络并启动ESP32。在此过程中,ESP32将按照我们之前设置的主频进行操作。 通过上述步骤,我们就可以根据我们的需求设置Arduino ESP32的主频。设置一个较高的主频可以提高其性能,但也可能会增加功耗。因此,在进行主频设置时,我们需要根据具体的应用场景和需求来进行权衡和选择。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值