查看: 175|回复: 1

[进阶教程] ESP-WROOM-32教程:使用Arduino IDE上传程序

[复制链接]
简介

此文章旨在解释如何从DFRobot上传Arduino程序到ESP-WROOM-32模块

我们将介绍将程序上载至模块所需硬件配置的更多详情。您可以在上一篇文章(待翻译:补07)中更详细地了解如何在Arduino IDE中启用对ESP32的支持。

请注意,这是一个ESP32模块,适合集成在电子设计方案中,而不是用于测试/开发的开发板。因此,引脚间距很小,并且需要采用一些特殊的手工焊接技术方可使用。当然,这种间距对于使用非手动焊接程序是足够的。


硬件

为了能够将程序上传到该模块,我们需要一个串行USB转换器,因此我们可以与之通信。我使用了此处显示的那个转换器,它允许我们在3.3V和5V工作电压之间进行切换。

重要须知:ESP32属于3.3V器件,并且WROOM模块不进行任何电压电平转换。因此,如需使用串行USB转换器,工作电压必须为3.3V。否则,ESP32可能会损坏。

我们需要考虑的是,为了能够对ESP32进行编程,GPIO0必须保持低电平[1]。此外,如需器件工作,EN引脚(芯片使能引脚)必须连接到VCC,因为它必须在高电平有效配置下才能运行[2]。

因此,考虑到前述因素,图1显示了能够对ESP-WROOM-32模块进行编程所需的最小配置。为简单起见,该器件的其他引脚未予显示。另请注意,我假设USB连接提供串行USB转换器电源,这是典型情况。


1.png
图1 - ESP-WROOM-32编程所需的最低硬件配置。


请注意,为简单起见,我没有按照此处最佳实践案例进行,比如加入电源旁路电容器以及保持器件以最佳可靠性工作所需的其他重要因素。因此,请勿在最终设计方案中使用此硬件配置,因为它仅适用于与模块的快速交互。

虽然在图中我们将IO0连接到GND,但这种配置仅适用于上传程序。之后,您需要将其与GND断开连接,方便运行上传程序。


代码

此教程的代码非常简单,包含一个定期打印到串行端口的简单“Hello World”消息。因此,我们首先在设置功能中打开一个串行连接,波特率为115200。您可以在此处(https://www.arduino.cc/en/serial/begin)查看关于启动串行连接的更多信息。

接下来,在主循环函数上,我们将打印一个简单的“Hello World”消息。为此,我们可以在Serial对象上调用println方法(https://www.arduino.cc/en/serial/println)。之后,我们通过调用Arduino delay
函数(https://www.arduino.cc/reference/en/language/functions/time/delay/)实现短暂延迟,该函数接收等待的毫秒数作为输入值。


请查看此简单程序的完整源代码。


[AppleScript] 纯文本查看 复制代码
void setup() {
  Serial.begin(115200);
}
void loop() {
  Serial.println("Hello from DFRobot ESP-WROOM-32");
  delay(1000);
}




Arduino IDE配置


为了能够将代码上传到Arduino,我们需要在“工具”菜单中选择合适的上传配置。我们可以使用相同的FireBeetle-ESP32开发板配置,如图2所示。


esp-wroom-32-programming-configuration.png

图2 - Arduino IDE中的ESP32 FireBeetle开发板选择。


选择此开发板并选择分配给Serial-USB转换器的正确COM端口后,只需点击上传按钮即可。现在是时候编译和上传代码了。正确上传后,您应该在IDE控制台上获得类似于图3的输出。

3.png

图3 -成功上传后的消息。


在此之后,关闭模块电源,断开IO0引脚与GND的连接,然后再次打开设备电源。然后,打开Arduino IDE的串行监视器。您应该得到类似于图4的输出,其中我们定义的“Hello World”消息每秒打印一次。

4.png

图4 -“Hello World”程序的输出。


补充说明


在尝试上传程序前,您可以确认您的焊接是否正确完成。如果打开模块电源,连接到串行USB转换器并且IO0与GND断开连接,运行预加载程序并将检测到的WiFi网络打印到串行控制台,如图5所示。

5.png


图5 -预加载程序输出。


此外,如果在IO0连接到GND且先前打开Arduino IDE串行监视器的情况下打开模块电源,您应获得类似于图6的输出,这表示ESP32已准备好获取新程序。

6.png


图6 - 处于编程模式时模块的输出。



参考文献:

注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。
他写了200多篇有关ESP32、ESP8266的有用的教程和项目。

查看更多ESP32/ESP8266教程和项目:
中文版教程 : ESP32教程 合集
英文版教程 : ESP32 tutorial 合集

gada888  版主

发表于 2019-6-25 06:41:03

实用的教程
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
wifi气象站

硬件清单

btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2019 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail