
发生的事情是每个人都在等待了这么长时间,以及他们谈论了这么多-新的ESP32模块开始被广泛销售并推向了人们。 今天,我们将从一个不习惯使用Arduino并创建用于家庭自动化或只是为了娱乐和自学的小项目的非专业用户的角度讨论这些模块。
真的有用吗? Arduino IDE中这些模块的支持是什么? 付出更多是值得的,还是让自己局限于已经熟悉的ESP8266更好? 我们将尝试一起回答所有这些问题,在本文的结尾,我将提供指向ESP32与Arduino的真正体现的链接-用于ESP32平台的免费版
Arduino Mega Server的发行版。
技术指标
我不会在这里详细介绍ESP32的规格,您可以在Internet上轻松找到它们:每个审阅者都认为在ESP32审阅开始时带一份规格表是他的责任。 我只能说它们给人留下了深刻的印象,如果您认真认真地处理此问题,则可以花费一年多的时间研究该模块的所有功能并进行试验。
让我们将这些问题留给专业人员(或认为自己是这样的专业人员),并专注于问题的实际方面,这是凡人都能理解和理解的。
发行价
让我们从价格开始。 目前,中文在线商店中的ESP32模块的价格为350卢布,带线束和USB接口的电路板版本为500卢布。 对于ESP8266模块,这分别是100卢布和160卢布。 如您所见,尽管绝对值很小,但相差超过三倍,如果需要,每个绝对值都可以在微控制器上花费350-500卢布。 相比之下,在同一中国的Arduino Mega 2560售价为600卢布,而在俄罗斯约为1000卢布(加上以太网屏蔽的成本)。
剩下的只是找出是否值得付出比ESP8266高三倍的价格,以及我们将为此付出多少。 (展望未来,我认为这绝对是值得的。)
Arduino IDE中的支持
为了对模块进行操作,您必须首先在Arduino IDE中获得其支持。 目前,在Arduino IDE中对ESP32的支持尚处于初始阶段,但相当不错且可行。 那些害怕在这里遇到无法克服的困难的人不必担心-主要功能运行良好,与其他控制器上的工作相比,您很可能不会注意到任何区别。
使用设备驱动程序,情况会稍差一些,但这当然是暂时的现象。 该模块是如此流行,以至于不可避免地会在不久的将来出现对任何外围设备的支持。
将ESP32支持添加到Arduino IDE
现在,有关在Arduino IDE中安装ESP32支持的一些实用信息。 互联网上充斥着有关此主题的说明,您也可以在其中找到大量的说明。 我只注意到所有指令都分为“旧”和“新”,其中“旧”提到了Python,“新”提到了GIT。 自然,您需要以新手为指导。
在许多说明中,最好的(可以是足够的)称为模块制造商的官方说明。
github.com/espressif/arduino-esp32我建议使用。 唯一需要注意的是:GIT是可选的,您只需下载分发包并将其解压缩到所需目录即可。
注意事项 以下所有内容都适用于在Windows 7 64位下安装,因为我在上面进行了所有实验,因此在其他操作系统中,路径可能与所示的路径不同。分发文件必须位于文件夹中
C:\Users\User\Documents\Arduino\hardware\espressif\esp32
其中C:是Windows驱动器的名称,而User是操作系统中用户的名称(两者可能与指定的名称不同)。
ESP32的明显安装点
许多用户抱怨对他们没有任何帮助,并且没有显示Arduino IDE中的ESP32支持。 事情是这样的:由于仅开发ESP32驱动程序,因此系统目录位置的顺序已稍有更改。 必须指定Arduino IDE设置中草图位置的文件夹
C:\Users\User\Documents\Arduino
(对驱动器和用户名进行相同的修改),并且分发文件应位于制造商建议的此文件夹内。 如果不考虑这一点,那么将不会出现在Arduino IDE中对ESP32的支持,并且没有任何效果。
Arduino IDE版本
您经常会听到ESP32支持仅在最新版本的Arduino IDE中可用,并非如此-ESP32在较早版本中运行良好,例如,ESP32的Arduino Mega Server发行版是在1.6.5 r2版本中开发的。
ESP32的好处
现在,我们来讨论一下ESP32较其前身ESP8266的优势。 我不会再谈处理器能力和RAM等显而易见的事情,我只能说,您需要努力将ESP32完全加载到DIY和家庭自动化任务上。
别针
他的前任ESP8266模块的致命弱点是(过去是)非常少的结论。 在使用诸如Arduino Mega和Arduino Due之类的控制器及其数十个数字和模拟引脚工作之后,ESP8266的使用令人困惑:GPIO的数量实际上是一个,这极大地限制了该模块在实际项目中的使用。

ESP32,即使不是完全没有,也没有这个缺点。 可用引脚的数量已大大增加,并且还出现了许多模拟输入。 13个结论可以称为完全免费并且可以使用。
GPIO 2, 4, 12, 14, 13, 15, 16, 17, 25, 25, 27, 32, 33
如有必要,可以添加功能受限且只能在输入下使用的功能
GPIO 34, 35, 36, 39
如果您牺牲了某些功能并且在特定项目中不使用串行,SPI或I2C,则可以在此数字上再添加8个引脚
GPIO 1, 3, 5, 18, 19, 21, 22, 23
好吧,可以使用另外6个用于内部闪存的引脚(例如,如果连接外部SD卡)
GPIO 6, 7, 8, 9, 10, 11
如您所见,没有与ESP8266的比较-新模块在可能的连接数量上看起来不错,并且在每个引脚都很昂贵的实际项目中非常有价值。
工作速度
我已经提到过一个功能强大的处理器,现在需要说几句有关网络运行速度的信息。 我发现很难说这与什么相关,可能与功能强大的处理器,也许与网络堆栈的优化有关,但是在Arduino Mega Server控制下的ESP32模块显示出创纪录的网络性能。

用大量的CSS和JavaScript代码以及大量的图形加载页面仅需一秒钟-比任何其他经过测试的控制器(包括具有W5100和W5500以太网接口的有线控制器)都快。
关于Arduino Mega Server,这消除了图形和任何JavaScript库在大小和数量上的所有使用限制。
其他优点
ESP32是一款非常高科技的设备,仅列出可用功能的清单可能会占用一页以上的内容,而列出优点和功能并附带注释将占用整本书的全部内容。 因此,我将仅限于此,以免使文章混乱,并提供一些在Arduino环境中使用ESP32代码的示例。
程式码范例
非易失性存储器
这就是我们所说的Arduino Mega的EEPROM。 ESP32本身没有这种内存,但是此模块具有其类似物和相应的库供其使用。 该存储器称为“ NVS”(非易失性存储)。
但是对我们来说没有什么区别-您可以以相同的方式保存值,然后在关闭然后再打开控制器后读取它们。
用法示例。 我们连接库:
#include <Preferences.h>
创建一个prefs对象
Preferences prefs;
我们使用标识符(例如“ nvs”)初始化存储库:
prefs.begin("nvs", false);
false表示选择读/写模式,在这种情况下,是读和写。 我们将字节保存为“ addr”名称:
prefs.putUChar("addr", 65);
我们读取保存的字节:
byte b = prefs.getUChar("addr", 0);
以相同的方式,您可以保存和读取任何其他数据类型的值。 现在删除存储。
prefs.remove("nvs");
如果您看的话,它甚至比在Arduino控制器上使用标准的非易失性EEPROM存储器还要容易。
AnalogWrite()
另一个会使新手困惑的创新是ESP32中缺少熟悉的AnalogWrite()函数。 刚开始时,这是非常不寻常的,但实际上,此功能只是被功能更强大的功能所代替。
考虑一个例子。 让我们从连接相应的库开始,尽管从字面意义上不能将其称为库,而是一个专门的文件,其中描述了必要的功能。 事实是,并非所有功能都直接存在于Arduino IDE中,某些功能在目录中的文件中可用
...\Documents\Arduino\hardware\espressif\esp32\cores\esp32
在这种情况下,我们对使用PWM和LED的文件感兴趣,我们将其与以下指令连接:
#include "esp32-hal-ledc.h"
接下来,我们需要设置通道号(0),PWM频率(例如50 Hz)和分辨率(8位)。
ledcSetup(0, 50, 8);
通道号的设置范围为0到15,分辨率为1到16位。 如果选择8位分辨率,则控制PWM的数据范围将在0到255之间。
接下来,我们需要将通道(0)绑定到某个GPIO引脚,在这种情况下为引脚22:
ledcAttachPin(22, 0);
而且,您一定不要忘记以通常的方式将22nd引脚配置为输出。
pinMode(22, OUTPUT);
就是这样,现在我们可以控制例如LED的亮度,仅指示通道号和从0到255范围内的PWM(亮度)值。
ledcWrite(0, 50);
其他ESP32代码示例
Arduino Mega Server发行版是本文末尾的链接,除了功能齐全的系统外,它是广泛的结构化代码集合,这些代码经过测试和验证可在ESP32模块上使用。 您可以将其用作教程来进入ESP32下的编程主题。
工作稳定
用于ESP8266的Arduino Mega Server已经确认了几个月的正常运行时间,并且演示了绝对稳定的操作,我没有理由认为ESP32模块可能存在任何稳定性问题。 至少在为ESP32创建AMS发行版的整个过程中,我都没有观察到模块的单一故障或未经授权的重启。 一切工作都非常清楚和可预测。
适用于ESP32的Arduino Mega Server
这是AMS生态系统的另一个代表,其中包括控制器和开发板Arduino Mega,Due,101,M0,AMS Home,ESP8266,Sonoff,ESP32,OLIMEX ESP32-EVB等。由于ESP32模块具有强大的处理器和快速的网络操作, Arduino Mega Server界面包含大量图形和脚本,这根本不影响其速度-页面几乎立即加载。

一切都稳定且可预测地工作,未检测到系统或模块的故障或行为不足。 以下是AMS下载日志,您可以从中找到有关系统的一些详细信息。

模块的温度由内置温度传感器测量,范围从启动时的摄氏50度到运行期间的55度。 在运行期间,模块的电流消耗约为130 mA。
前景展望
您无需成为专门专家即可预测,像雨后的蘑菇一样,各种格式,功能多样的ESP32板上的板将开始出现。 这是OLIMEX
ESP32-EVB的最初标志之一,这是一个非常有趣的开发板,在不久的将来,它将发布专用的发行套件Arduino Mega Server。

结论
实际上,关于新的ESP32模块及其与Arduino的配合,我只能说一下。 他给人留下了非常积极的印象,至少与我一起工作对我来说是非常愉快和有趣的。 缺少支持传感器和外围设备的库会稍微破坏画面,但这只是暂时现象,很快一切都会好起来的。
您可以
在官方网站的
下载页面上
下载 ESP32的Arduino Mega Server分发套件,相关文档很快就会出现在此处,现在您可以使用分发套件中readme.txt文件中的简要说明。