這篇文章來源于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函數!
-
led
+關注
關注
242文章
23151瀏覽量
658590 -
mcu
+關注
關注
146文章
17011瀏覽量
350362 -
WIFI
+關注
關注
81文章
5290瀏覽量
203313 -
Arduino
+關注
關注
187文章
6464瀏覽量
186674
發布評論請先 登錄
相關推薦
評論