簡體   English   中英

錯誤:為板級通用 esp8266、Arduino UNO 編譯

[英]Error: compiling for board generic esp8266, Arduino UNO

我正在嘗試將我有一段時間的 ESP8266-01 連接到我的 Arduino UNO r3。 使用 ESP8266 對我來說是新的。 我用這個網站作為參考。

我的連接如下:

Arduino -> ESP8266
TX -> RX
RX -> TX
5V -> Resistor -> VCC, CH_PD
GND -> GND

我正在嘗試進行快速測試以連接到 ESP8266

void setup() {
  // put your setup code here, to run once:
Serial2.begin(9600);
Serial.begin(115200);
}

void loop() {
  while(Serial2.available()) Serial.write(Serial2.read());
  while(Serial.available()) Serial2.write(Serial.read());

}

我收到此錯誤:

Arduino: 1.6.9 (Windows 7), Board: "Generic ESP8266 Module, 80 MHz, 40MHz, DIO, 115200, 512K (64K SPIFFS), ck, Disabled, None"

C:\Program Files (x86)\Arduino\arduino-builder -dump-prefs -logger=machine -hardware "C:\Program Files (x86)\Arduino\hardware" -hardware "C:\Users\Lappy\AppData\Local\Arduino15\packages" -tools "C:\Program Files (x86)\Arduino\tools-builder" -tools "C:\Program Files (x86)\Arduino\hardware\tools\avr" -tools "C:\Users\Lappy\AppData\Local\Arduino15\packages" -built-in-libraries "C:\Program Files (x86)\Arduino\libraries" -libraries "C:\Users\Lappy\Documents\Arduino\libraries" -fqbn=esp8266:esp8266:generic:CpuFrequency=80,FlashFreq=40,FlashMode=dio,UploadSpeed=115200,FlashSize=512K64,ResetMethod=ck,Debug=Disabled,DebugLevel=None____ -vid-pid=0X2341_0X0043 -ide-version=10609 -build-path "C:\Users\Lappy\AppData\Local\Temp\build020cff5e75da0458cfe8ecc88a163002.tmp" -warnings=none -prefs=build.warn_data_percentage=75 -verbose "C:\Users\Lappy\Box Sync\Arduino\wifi_door_opener\wifi_door_opener.ino"

Board generic (platform esp8266, package esp8266) is unknown

Error compiling for board Generic ESP8266 Module.
  • 您遇到的錯誤似乎是嘗試為 ESP8266 構建(看起來您沒有在 Arduino IDE 中安裝 ESP8266 內核)。
  • 您的代碼和描述表明您實際上是在嘗試為 UNO 構建,以便 UNO 可以與 ESP 進行通信。 在這種情況下,您希望將 UNO 設置為板,而不是 ESP8266。

另一個問題,但不是您遇到的問題(YET),是您的接線說:

5V -> 電阻 -> VCC, CH_PD

這真的讓我嚇壞了! :)

可能沒問題,你提到了一個我現在無法檢查的網站,但似乎你試圖通過使用單個電阻將電壓從 5v 降低到 3.3v。 對於會產生高度可變負載的設備來說,這似乎非常不可靠(意味着 ESP 可能會看到從 5v 到遠低於 3.3v 的任何電壓)。

哦,非常相似,這個:

TX -> RX

接收 -> 發送

似乎也是個壞主意,我假設 UNO 數據線是 5v? ESP 預計 3.3v,炒它的可能性很大:)

您使用 Serial2.begin 和 Serial.begin 但 Arduino Uno R3 只有一個 UART(數字引腳 0 和 1)! 相比之下,您所指的鏈接適用於具有 4 個 UART 的 Arduino Mega。 因此,在這種情況下,您需要將 2 個引腳定義為 SoftwareSerial 並包含這樣的庫:

#include <SoftwareSerial.h>
SoftwareSerial ESP8266(2,3)
void setup(){
    do something;
}

這使您的 Arduino 的數字引腳 2 成為另一個 Rx 引腳,而數字引腳 3 也是另一個 Tx 引腳。

並且(正如 cranphin 已經提到的)你需要檢查你的接線。 Arduino Uno 工作電壓為 5V,但 ESP8266 工作電壓為 3.3V(3.0V - 3.6V,您可以 在數據表中的文檔中看到)!

所以你需要做的是:

您可以為 ESP8266 使用外部 3.3V 電源,也可以從 Arduino Uno 上取下 5V 引腳並將其轉換為 3.3V(分壓器,LD1117V33,...)。 有些人將 ESP8266 直接連接到 Arduino 的 3.3V 引腳,但在我的情況下它不起作用。 不過你可以試試...

並且您需要考慮 Arduino 通過 5V 上的 UART 引腳發送。 因此請確保在 ESP8266 的接收線中添加分壓器(例如 4.7kohm 和 10kohm)。 ESP8266 在他的 Tx 線上發送 3.3V 電壓,Arduino 將其識別為邏輯高電平。 所以不需要保護。

這是我的接線解決方案:

在此處輸入圖片說明

並且:

您需要在Arduino IDE 中選擇正確的設置。 您的錯誤看起來像您選擇了

通用 ESP8266 模塊

但是您需要選擇您的 Arduino Uno。 因此,轉到Tools --> 開發Board --> Arduino/Genuino Uno並確保使用正確的端口。

有趣的信息:

可以將草圖直接上傳到 ESP8266,但因此您需要更多布線,這並不容易..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM