注:对于ESP32开源技术感兴趣的可以加群,我们一起探索交流学习,群号:782473783。群名:ESP32开源技术交流群。
这篇文章的目的是解释如何将一个Arduino程序上传到ESP-WROOM-32模块。
介绍
这篇文章的目的是解释如何一个Arduino程序上传到ESP-WROOM-32模块。
我将更详细地介绍将程序上传到模块所需的硬件配置。您从以前的帖子可以更详细地检查以便就针对ESP32在Arduino IDE的支持。
请注意,这是一个ESP32模块,适合集成在电子设计中,而不是用于测试/开发的开发板。因此,引脚间距非常小,需要一些特殊的手工焊接技能才能使用它。当然,这种间距适用于非手工焊接程序。
硬件
为了能够把程序上传到这个模块,我们需要一个USB串口转换器,所以我们可以和它进行通信。我使用的核心板上有CP2102芯片做串口下载,这使我们能够在3.3V和5V的工作电压之间进行切换。
重要提示: ESP32是一个3.3V的设备,WROOM模块不会进行任何电平转换。因此,要使用的USB串口转换器必须在3.3V下工作。否则,ESP32可能会损坏。
我们需要考虑的一件事是,为了能够编程ESP32,GPIO0必须保持低电平。另外,为了使器件工作,EN引脚(芯片使能引脚)必须连接到VCC,因为它配置工作在高电平有效。
因此,考虑到以上几点,图1显示了能够编程ESP-WROOM-32模块所需的最小配置。为简单起见,器件的其他引脚未示出。另外请注意,我假设串行USB转换器电源是由USB连接提供的,这是典型的使用情况。
图1 - 编程ESP-WROOM-32所需的最低硬件配置。
请注意,为了简单起见,我并没有遵循这里的最佳实践,例如包括电源旁路电容器以及使器件以最佳可靠性工作所需的其他重要方面。所以请不要在最终设计中使用这个硬件配置,因为它只适合与模块快速交互。
尽管在图中我们将IO0连接到GND,但这种配置仅适用于上传程序。之后,您需要将其与GND断开连接,以便上传程序。
代码
本教程的代码将非常简单,包含一个简单的“Hello World”消息,定期打印到串口。因此,我们首先在设置功能中打开一个串口连接,波特率为115200。您可以在这里查看更多关于启动串口连接的信息。
接下来,在主循环函数中,我们将打印一个简单的“Hello World”消息。为此,我们可以 在Serial对象上调用println方法。之后,我们通过调用Arduino 延迟函数来做一个短暂的延迟,该延迟函数接收等待毫秒数的输入。
此简单程序的完整源代码。
void setup()
{
Serial.begin(115200);
}
void loop()
{
Serial.println("Hellofrom DFRobot ESP-WROOM-32");
delay(1000);
}
Arduino IDE配置
为了能够将代码上传到Arduino,我们需要在工具菜单中选择合适的上传配置。我们可以使用与FireBeetle-ESP32板相同的配置,如图2所示。
图2 - Arduino IDE中的ESP32 FireBeetle电路板选择。
选择该板并选择分配给USB串口的正确COM端口后,点击上传按钮。现在编码和上传代码。在正确上传之后,您应该在IDE控制台上得到类似于图3的输出。
图3 - 成功上传后的消息
之后,关闭模块电源,从GND断开IO0引脚并再次打开设备电源。然后,打开Arduino IDE的串口监视器。您应该得到类似于图4的输出,其中我们定义的“Hello World”消息每秒打印一次。
图4 - “Hello World”程序的输出
补充笔记
您可以在尝试上传程序之前确认焊接是否正确完成。如果您打开模块电源,连接到USB串口转换器,IO0与GND断开连接,则应该运行一个预先加载的程序,并将检测到的WiFi网络打印到串行控制台,如图5所示。
图5 - 预加载程序的输出。
另外,如果在IO0连接到GND并且Arduino IDE串行监视器先前打开的情况下打开模块,则应该得到类似于图6的输出,这表示ESP32已准备好获得新程序。
图6 - 处于编程模式时模块的输出。
参考
[1] https://github.com/espressif/arduino-esp32
[2] https://www.espressif.com/sites/default/files/documentation/esp_wroom_32_datasheet_en.pdf