1
电子说
这篇文章来源于DevicePlus.com英语网站的翻译稿。
使用 ESP-WROOM-02 Wifi 模块作为 Arduino MCU
在本教程中,我们将在ESP-WROOM-02上写入Arduino程序,这样就可以使用wifi模块作为Arduino MCU。从现在开始,我们将使用ESP-WROOM-02开发板,这样就可以很容易地对之前的装置中所介绍的ESP – WROOM – 02进行测试了。
本次电子设备清单
预计完成时间:60分钟
所需部件:
• ESP-WROOM-02 开发板1,2,3,等
• 面包板
• LED (3 mm 绿色) 1,2,3,等
• 电阻器 220 Ω
• CdS 光学传感器 (5 mm)
下载 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。)
图1:arduino.cc上的Arduino IDE下载页面
在Arduino上添加ESP-WROOM-02
要将ESP-WROOM-02用作Arduino,您需要将ESP-WROOM-02板添加到Arduino IDE。请按照以下步骤将ESP-WROOM-02添加到Arduino IDE:
1. 启动Arduino IDE
2. 打开 “文件(File)” → “首选项(Preferences)”
3. 在“首选项”下的“附加开发板管理器网址(Additional Boards Manager URLs)”中输入以下网址:
URL: http: //arduino.esp8266.com/stable/package_esp8266com_index.json
分布式组件:https: //github.com/esp8266/Arduino
这是一个管理员账户的管理器功能,您可以通过该功能输入描述开发板信息的网址,从而将新的开发板添加到Arduino。
图2:Arduino IDE首选项页面
4. 输入网址后,单击“首选项”屏幕右下角的“确定(OK)”,然后将其关闭。接下来,选择“工具(Tools)” →“开发板(Board)” →“开发板管理器(Boards Manager)”。
图3:“工具(Tools)” →“开发板(Board)” →“开发板管理器(Boards Manager)”
5. 开发板管理器页面出现时,在搜索字段中输入“ESP 82”。它将显示为“ESP8266”。该ESP8266即是与ESP-WROOM-02相对应的开发板,因此点击“安装(Install)”来添加开发板。
图4:开发板管理器页面
6. 安装完成后,重启Arduino,然后再次打开“工具”→“开发板”。如果您看到一组与ESP8266相关的开发板,那就证明成功了!
图5:添加ESP8266
现在准备工作已经完成,让我们来写入一个Arduino程序吧!
将程序写入 ESP-WROOM-02
我们可以用与一般Arduino相同的步骤来写入程序。首先,我们使用以下程序来对LED进行测试。将输出设置为ESP-WROOM-02上的引脚13。
图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 ()”函数来获取模拟值。
图7:TOUT引脚
但是,这与一般的Arduino模拟引脚略有不同。TOUT引脚可以检测出0V至1V之间的输入值,但是如果直接向TOUT引脚输入3.3V的值可能会损坏电路。而当添加一个光学传感器时,电源电压为3.3V,因此必须进行调整,以使输入TOUT的最大电压值为1V。我们将使用几个电阻器来创建一个分压器电路。
图8:所添加的光学传感器
图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); } }
程序运行时,光学传感器的值将输出到串行监视器。
图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函数!
全部0条评论
快来发表一下你的评论吧 !