使用Arduino烧录ESP8266(配DHT11/22)失败求助
ESP8266通过Arduino上传代码时连接超时问题
代码编译成功后,尝试通过Arduino向ESP8266上传代码时出现如下错误:
esptool.py v3.0 Serial port /dev/ttyACM0 Connecting........_____....._____....._____....._____....._____....._____.....____ Traceback (most recent call last): File "/home/patrick/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/upload.py", line 66, in <module> esptool.main(cmdline) File "/home/patrick/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 3552, in main esp.connect(args.before, args.connect_attempts) File "/home/patrick/.arduino15/packages/esp8266/hardware/esp8266/3.0.2/tools/esptool/esptool.py", line 529, in connect raise FatalError('Failed to connect to %s: %s' % (self.CHIP_NAME, last_error)) esptool. FatalError: Failed to connect to ESP8266: Timed out waiting for packet header le port série sélectionné n'existe pas ou votre Arduino n'est pas connecté
传输过程中,Arduino的TX、RX指示灯及ESP8266的TX指示灯均在闪烁,硬件连接看起来正常。
接线方式
- Arduino GND → ESP8266 GND
- Arduino 3.3V → ESP8266 VCC
- Arduino RX(引脚0) → ESP8266 TX
- Arduino TX(引脚1) → ESP8266 RX
- Arduino 3.3V → ESP8266 CH_PD/EN
已尝试的解决方案
- 更改上传速率
- 更改CPU频率
- 更改晶振频率
- 调换TX/RX接线
- 更新DHT驱动并适配代码
- 将Arduino IDE中的ESP8266驱动从3.2降级至2.5.1、2.5.0、2.4.9
- 修改upload.py文件第66行及周边代码
此前用树莓派PICO和MicroPython给该ESP8266编程时,设备能正常连接WiFi,因此确定硬件本身无故障。
代码
#include <ESP8266WiFi.h> #include <DHT.h> const char* ssid = "BullFrog"; // Your ssid const char* password = "Pr1on$J3sus"; // Your Password WiFiServer server(80); //Instantiation d'une nouvelle classe DHT // DHT DHT (pin, type, count); // @param pin // pin number that sensor is connected // @param type // type of sensor // @param count // number of sensors DHT DHT(2, 11, 1); double Fahrenheit(double celsius) { return ((double)(9 / 5) * celsius) + 32; } double Kelvin(double celsius) { return celsius + 273.15; } void setup() { Serial.begin(115200); delay(10); Serial.println(); // Connect to WiFi network WiFi.mode(WIFI_STA); Serial.println(); Serial.println(); Serial.print("Tentative de connexion au Wifi nommé "); Serial.println(ssid); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); Serial.print("."); } Serial.println(""); Serial.println("Connexion WiFi établie"); // Start the server server.begin(); Serial.println("Démarrage du serveur web"); // Print the IP address Serial.println(WiFi.localIP()); } void loop() { int err; float temp, humi; if (temp = DHT.readTemperature(false, false)) { Serial.print("Température:"); Serial.print(temp); } else { Serial.println(); Serial.print("Erreur lors de la lecture de la température. No :"); Serial.print(err); Serial.println(); } if (temp = DHT.readHumidity(false)) { Serial.print(" Humidité:"); Serial.print(humi); Serial.println(); } else { Serial.println(); Serial.print("Erreur lors de la lecture de l humidité relative. No :"); Serial.print(err); Serial.println(); } WiFiClient client = server.available(); client.println("HTTP/1.1 200 OK"); client.println("Content-Type: text/html"); client.println("Connection: close"); client.println("Refresh: 5"); client.println(); client.println("<!DOCTYPE html>"); client.println("<html xmlns='http://www.w3.org/1999/xhtml'>"); client.println("<head>\n<meta charset='UTF-8'>"); client.println("<title>ESP8266 Température & Humidité DHT11</title>"); client.println("</head>\n<body>"); client.println("<H2>Capteurs ESP8266 & DHT11</H2>"); client.println("<H3>Humidité / Température</H3>"); client.println("<pre>"); client.print("Humidité (%) : "); client.println((float)humi, 2); client.print("Température (°C) : "); client.println((float)temp, 2); client.print("Température (°F) : "); client.println(Fahrenheit(temp), 2); client.print("Température (°K) : "); client.println(Kelvin(temp), 2); client.println("</pre>"); client.println("<H3>Revenez nous voir!</H3>"); client.print("</body>\n</html>"); // delay(DHT11_RETRY_DELAY); //delay for reread }
目标是使用一款ESP8266套件实现独立运行,参考过相关教程。
内容的提问来源于stack exchange,提问作者Patriboom
相关产品推荐
相关产品推荐

