电源设计技术信息网站

FAQ   订阅电子杂志   English   繁體中文   日本語   한국어

下载中心

TECH INFOArduino入门指南

使用ESP-WROOM-02 Wifi模块作为Arduino MCU

这篇文章来源于DevicePlus.com英语网站的翻译稿。

esp-wroom-02

使用 ESP-WROOM-02 Wifi 模块作为 Arduino MCU

在本教程中,我们将在ESP-WROOM-02上写入Arduino程序,这样就可以使用wifi模块作为Arduino MCU。从现在开始,我们将使用ESP-WROOM-02开发板,这样就可以很容易地对之前的装置中所介绍的ESP – WROOM – 02进行测试了。

 

本次电子设备清单

预计完成时间:60分钟

所需部件:

 

下载 Arduino IDE

首先,为了将ESP-WROOM-02用作Arduino,我们需要确保使用的是Arduino IDE的正确版本。Arduino IDE过去曾在两个不同的网站被发布过:arduino.cc 以及arduino.org。要使用ESP-WROOM-02,请安装arduino.cc所发布的Arduino IDE。(现在这两个网站已经合并在一起了,因此当您访问arduino.org时,将会被重定向到arduino.cc。)

esp-wroom-02

图1:arduino.cc上的Arduino IDE下载页面

在Arduino上添加ESP-WROOM-02

要将ESP-WROOM-02用作Arduino,您需要将ESP-WROOM-02板添加到Arduino IDE。请按照以下步骤将ESP-WROOM-02添加到Arduino IDE:

  1. 1. 启动Arduino IDE
  2. 2. 打开 “文件(File)” → “首选项(Preferences)”
  3. 3. 在“首选项”下的“附加开发板管理器网址(Additional Boards Manager URLs)”中输入以下网址:

URL: http: //arduino.esp8266.com/stable/package_esp8266com_index.json

分布式组件:https: //github.com/esp8266/Arduino

这是一个管理员账户的管理器功能,您可以通过该功能输入描述开发板信息的网址,从而将新的开发板添加到Arduino。

 

esp-wroom-02

图2:Arduino IDE首选项页面

 

  1. 4. 输入网址后,单击“首选项”屏幕右下角的“确定(OK)”,然后将其关闭。接下来,选择“工具(Tools)” →“开发板(Board)” →“开发板管理器(Boards Manager)”。

 

esp-wroom-02

图3:“工具(Tools)” →“开发板(Board)” →“开发板管理器(Boards Manager)”

 

  1. 5. 开发板管理器页面出现时,在搜索字段中输入“ESP 82”。它将显示为“ESP8266”。该ESP8266即是与ESP-WROOM-02相对应的开发板,因此点击“安装(Install)”来添加开发板。

 

esp-wroom-02

图4:开发板管理器页面

 

  1. 6. 安装完成后,重启Arduino,然后再次打开“工具”→“开发板”。如果您看到一组与ESP8266相关的开发板,那就证明成功了!
esp-wroom-02

图5:添加ESP8266

现在准备工作已经完成,让我们来写入一个Arduino程序吧!

 

将程序写入 ESP-WROOM-02

我们可以用与一般Arduino相同的步骤来写入程序。首先,我们使用以下程序来对LED进行测试。将输出设置为ESP-WROOM-02上的引脚13。

 

esp-wroom-02

图6:用于ESP-WROOM-02测试的LED电路

 

void setup() {
pinMode(13, OUTPUT);
}
 
void loop() {
digitalWrite(13, HIGH);
delay(400);
digitalWrite(13, LOW);
delay(400);
}

 

 

 

LED 闪烁了!

 

ESP-WROOM-02的模拟输入

所以,我们成功使LED亮起了。接下来查看一下其他程序。我们可以考虑使用其wifi通信功能来实现多种应用,例如,创建一个可以远程获取数据的设备,以实现远程操控,就像汽车上的无线电控制那样。

我们先来处理来自光学传感器的输入。在Arduino UNO上有模拟输入引脚A0-A4,但是ESP-WROOM-02没有像A0-A4这样的模拟输入引脚。并且没有数字引脚1,3-4,以及 6-11。这些引脚是无法使用的,因为这些引脚通常被用于执行ESP-WROOM-02的一些标准功能,如wifi通信。

ESP-WROOM-02似乎并没有analogRead函数,所以无法使用该功能。那么,我们如何来进行模拟输入呢?我们也许可以使用TOUT引脚上的 “system_adc_read ()”函数来获取模拟值

 

esp-wroom-02

图7:TOUT引脚

但是,这与一般的Arduino模拟引脚略有不同。TOUT引脚可以检测出0V至1V之间的输入值,但是如果直接向TOUT引脚输入3.3V的值可能会损坏电路。而当添加一个光学传感器时,电源电压为3.3V,因此必须进行调整,以使输入TOUT的最大电压值为1V。我们将使用几个电阻器来创建一个分压器电路。

 

esp-wroom-02

图8:所添加的光学传感器

 

esp-wroom-02

图9:电压输出为1V

 

ESP-WROOM-02:用于获取光学传感器值的程序

 

//necessary for analog input with ESP-WROOM-02
extern "C" {
#include "user_interface.h"
}
 
void setup() {
 Serial.begin(115200); //also different from ordinary Arduino
 pinMode(13, OUTPUT);
}
 
//obtain input value from TOUT pin
int getToutValue(){
 int res = system_adc_read(); //get the TOUT value here
 return res;
}
 
void loop() {
 int val= getToutValue();
 Serial.print("value:");
 Serial.println(val);
 
 if(val > 580){
 digitalWrite(13, HIGH);
 delay(400);
 }
 else{
 digitalWrite(13, LOW);
 delay(400);
 }
}

 

 

程序运行时,光学传感器的值将输出到串行监视器。

 

esp-wroom-02

图10:串行监视器中显示的值

analogWrite 函数

在这种情况下,analogRead函数是没有用的,那么analogWrite又如何呢?Arduino UNO具有一个像模拟引脚那样可以输出模拟值的引脚。那么ESP-WROOM-02呢?我们来运行以下程序。

 

ESP-WROOM-02:用于获取光学传感器值的程序

void setup() {
 pinMode(13, OUTPUT);
}
 
void loop() {
 for(int i=0;i<256;i++){
 analogWrite(13, i);
 delay(40);
 }
}

 

 

 

如上面的视频所示,我们可以控制LED的亮度。LED逐渐变亮又逐渐变暗。由此可见,我们确实可以使用analogWrite函数!

DevicePlus 编辑团队
DevicePlus 编辑团队

设备升级版适用于所有热爱电子和机电一体化的人。

分享到社交媒体