【问题标题】:Error: compiling for board generic esp8266, Arduino UNO错误:为板通用 esp8266、Arduino UNO 编译
【发布时间】:2020-07-29 02:28:51
【问题描述】:

我正在尝试将我使用了一段时间的 ESP8266-01 连接到我的 Arduino UNO r3。使用 ESP8266 对我来说是新的。我用这个site 作为参考。

我的连接如下:

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.

【问题讨论】:

    标签: arduino esp8266


    【解决方案1】:
    • 您得到的错误似乎是由于尝试为 ESP8266 构建(而且您似乎没有在 Arduino IDE 中安装 ESP8266 内核)。
    • 您的代码和描述表明您实际上是在尝试为 UNO 构建,以便 UNO 可以与 ESP 通信。在这种情况下,您希望将 UNO 设置为开发板,而不是 ESP8266。

    另一个问题,但不是您遇到的问题(YET),是您的接线显示:

    5V -> 电阻 -> VCC, CH_PD

    这真的把我吓坏了! :)

    可能没问题,您提到了一个我现在无法检查的网站,但您似乎试图通过使用单个电阻器将电压从 5v 降低到 3.3v。对于会产生高度可变负载的设备(这意味着 ESP 可能会看到从 5v 到远低于 3.3v 的任何电压),这似乎非常不可靠。

    哦,非常相似,这个:

    发送 -> 接收

    接收 -> 发送

    似乎也是个坏主意,我假设 UNO 数据线是 5v? ESP 预计 3.3v,油炸的可能性很大 :)

    【讨论】:

      【解决方案2】:

      您使用 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,如您所见 here under documentation in the datasheet)!

      那么你需要做什么:

      您可以为 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,但因此您需要更多的接线,这并不容易..

      【讨论】:

      • 似乎您的图表有错误,在 arduino 一侧必须是 D0 和 D1(Rx 和 Tx),因为他只想将 esp 连接到 arduino。我注意到更改 D2 和 D3 的代码,但也许这是不可能的(基本)范围。
      猜你喜欢
      • 2023-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 2021-07-25
      相关资源
      最近更新 更多