簡體   English   中英

將我的 ESP32 連接到 AWS IoT 時無法連接到 Wifi

[英]failing to connect to Wifi while connecting my ESP32 to AWS IoT

昨晚我試圖用一些假數據將我的 ESP32 連接到 AWS,但它沒有連接,因為它顯示我的 IP 地址為 0。我確實在 2 天前從我的 ESP 向 AWS 發送了一些假數據,它工作並上傳了我的數據到 AWS IoT Core 成功。 我在 2.4GHz 網絡上。 但現在它沒有上傳我的數據。 這可能是什么無法連接到我的 wifi 問題? 為什么會這樣?? 為什么在最初確實在 AWS 雲上上傳數據時突然沒有上傳。 我需要做一些調整還是我的 ESP32 出了故障?


#include <WiFiClientSecure.h>
#include <PubSubClient.h> 

const char* ssid = "Mechatron";
const char* password = "IoTworld";

const char* awsEndpoint = "a8o60o3sv2p1u5-ats.iot.us-east-1.amazonaws.com"; 

// xxxxxxxxxx-certificate.pem.crt
const char* certificate_pem_crt = \

"-----BEGIN CERTIFICATE-----\n" \
"FIIDWTCCAkGgAwIBAgIUMAH+oQhNNicbXAXujxiVFPYVYA8wDQYJKoZIhvcNAQEL\n" \
"BQAwTTFLMEkGA1UECwxCQW1hem9uIFdlYiBTZXJ2aWNlcyBPPUFtYXpvbi5jb20g\n" \
"SW5jLiBMPVNlYXR0bGUgU1Q9V2FzaGluZ3RvbiBDPVVTMB4XDTIyMDUxNzA2MTM0\n" \
"NFoXDTQ5MTIzMTIzNTk1OVowHjEcMBoGA1UEAwwTQVdTIElvVCBDZXJ0aWZpY2F0\n" \
"ZTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALTDfScg36QoISlzxf8y\n" \
"ta2Bggc5dB8XnGAZOLQN8OdroUHdcJDp7RQQ2VeOOCzXq/QU4rN4ygag6x0dacky\n" \
"TIn39jFKDA9JKVPYfdxKbIHCjjgQJtvAf4em10eKThgewQhkVD9QFIgqIAxbqvq4\n" \
"6jA9O+LEHpb0bxPJy27OwiSLIM0IOoIzMULT9rifqNmFUd0PTMr7Ce14YibON47i\n" \
"l/WDzwtnrDdPt6zPNRE45E43PAX7pB/qMhyJrSHoDVjwJV/8ktSnlZ9AViLFL4pu\n" \
"sIOALGx+0obyAadqOTMiD5gK4cVd43vZ9Pv31KsZPeIGL3ofYqBU888W1dcOC2qX\n" \
"fCECAwEAAaNgMF4wHwYDVR0jBBgwFoAUK7f8+C6ZW2vBKKNf6Ivh6VdnbRAwHQYD\n" \
"VR0OBBYEFKGplO5nt63sDAuMKB7opvHsRq/5MAwGA1UdEwEB/wQCMAAwDgYDVR0P\n" \
"AQH/BAQDAgeAMA0GCSqGSIb3DQEBCwUAA4IBAQDDFpp/SMvYyL6wqkWnrd8hfb0g\n" \
"QSx7WM+FS5i/PjiRYSj3Ems6epm+wZBFqZyBRXS7imgXqPRpy7l5RPX0atHArF2O\n" \
"6NVVpIsgZcg6nBKkWv9/NrICm0Vg/pFSe+cUPQzE2B3txeiurLFlQbHmkLneQbfy\n" \
"EY1eGqEUmXXNCdefr9EDFeqGt+Iq3OaqybeZDZFbnl8eEOhR3DfOE8d6Nd8Igoql\n" \
"Sh6u917emTu+JJCWJckg7K0BSZguyZUV6NoBvx+GJVeZ5VSmi9mehbhmJHRi7Nv1\n" \
"5x3N3T9QdbM5Yrjl3TvwovVEqgMcspux/HMAMDVnuNaDqTx9JY+ulG7JKMfD\n" \
"-----END CERTIFICATE-----\n";

// xxxxxxxxxx-private.pem.key
const char* private_pem_key = \

"-----BEGIN RSA PRIVATE KEY-----\n" \
"HIIEogIBAAKCAQEAtMN9JyDfpCghKXPF/zK1rYGCBzl0HxecYBk4tA3w52uhQd1w\n" \
"kOntFBDZV444LNer9BTis3jKBqDrHR1pyTJMiff2MUoMD0kpU9h93EpsgcKOOBAm\n" \
"28B/h6bXR4pOGB7BCGRUP1AUiCogDFuq+rjqMD074sQelvRvE8nLbs7CJIsgzQg6\n" \
"gjMxQtP2uJ+o2YVR3Q9MyvsJ7XhiJs43juKX9YPPC2esN0+3rM81ETjkTjc8Bfuk\n" \
"H+oyHImtIegNWPAlX/yS1KeVn0BWIsUvim6wg4AsbH7ShvIBp2o5MyIPmArhxV3j\n" \
"e9n0+/fUqxk94gYveh9ioFTzzxbV1w4Lapd8IQIDAQABAoIBADSroZP9KC0U5FTH\n" \
"vzGU/QsJaXHhc8x7fL0jnDoatc84tUwT0fDnuITYQ/wXHJc0YI5GZ6gT0goMaXWa\n" \
"VHCjj1nEPqAuC0WI89nSgxnlNai5n+cGDcyKUp6cJq5ZxleQ3n4rfcDU/KaQX7Y6\n" \
"H5/esZ5MuV5h9ufVYWhKrFQlOryasALN3qprTD+dvfPYB8nezDmSuTKul6WnBABu\n" \
"rT1HF3IhZiJEjnNI8nZB8W/ACAM2FKzbQaFrdDQ7Y96L9KXAsvVLYFsHJBre59da\n" \
"bebIuHwZTG+/2AINKApIMtBnlLCmhPM+/QQR7k+E/y9JrWK4qDudoBlDR9PCMJPI\n" \
"6tkfvIECgYEA4F0x5nhGh+qsGiUwhBq+LD3czCYjMBfhJQoThyGiNWnvSbgJk+AN\n" \
"d0UBQjR25fkpYpYjevM/2GKZ0q3RQsl5wtGeaissksvnI5Yd61hCHL8VVYN1FXZQ\n" \
"lq+PX+kEFtDrvn3OX8xZD6mYHwgThTEvVKBQorut1Gsxat40m1c2FvUCgYEAzkB2\n" \
"Um0aJv/dP/khxPKY8uOHMOLxPMRXgvAUDsBq5h8kOqHWM+fWLRyQm27PMCit3UIo\n" \
"Zv5foXqqke2aV1qEiDoX8XNvObWZuWILr9s2/XLioLx5EJXevET2c0n6TBspJN1V\n" \
"Kw7cWJfu5wU/5OzRIZOyR3gSrWYfDxaJcw0gHP0CgYB9hKW+Aduzfh36IoQZ47ww\n" \
"lAtKSqu05CcYyaJTHwXYTAOKgmMZT2c5Kmmh2CgMUHBOrx/6UMuPCtpzerpvWre7\n" \
"vfmZ+71cAqa0ye7DEwUpf903keuWrjI3ms/gIEEhYpAAafFitre8g2yPL7177iBE\n" \
"f8ucvtJo2+8xkk5r+UZRYQKBgCr6E62pPkHSHvAtoXPAeU5jStBM+aeH4hROol9K\n" \
"iPXal1oATvoR3PcZdKhuto16bIAmQPT1HEgxn0k5EWgSXHtmX4bYXtzPknCmlXjX\n" \
"XOYDAmYr364tDHR+ijwLtjQVlMUxuYV3W0K6pfVNirrQ/eLZO9TYmEu5c89ZCtsG\n" \
"aSKhAoGAUqv1Hfc3d100lLQV8yABqcJ7MPDYjb23su7i3WTNET8hA8yjM6WeQfMq\n" \
"ZbuDy7CndfdvYUcb/Dr8YapeSfYIKYC5ydGzILVan3XVcAFKbiQ1ea67OP0ZBevA\n" \
"0zVObTehKJiyunTpRxCigtTRR+YVAgYeM5Ej9XxhlwYkwxX+g3o=\n" \
"-----END RSA PRIVATE KEY-----\n";

/* root CA can be downloaded in:
  https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem
*/
const char* rootCA = \
"-----BEGIN CERTIFICATE-----\n" \
"MIIDQTCCAimgAwIBAgITBmyfz5m/jAo54vB4ikPmljZbyjANBgkqhkiG9w0BAQsF\n" \
"ADA5MQswCQYDVQQGEwJVUzEPMA0GA1UEChMGQW1hem9uMRkwFwYDVQQDExBBbWF6\n" \
"b24gUm9vdCBDQSAxMB4XDTE1MDUyNjAwMDAwMFoXDTM4MDExNzAwMDAwMFowOTEL\n" \
"MAkGA1UEBhMCVVMxDzANBgNVBAoTBkFtYXpvbjEZMBcGA1UEAxMQQW1hem9uIFJv\n" \
"b3QgQ0EgMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALJ4gHHKeNXj\n" \
"ca9HgFB0fW7Y14h29Jlo91ghYPl0hAEvrAIthtOgQ3pOsqTQNroBvo3bSMgHFzZM\n" \
"9O6II8c+6zf1tRn4SWiw3te5djgdYZ6k/oI2peVKVuRF4fn9tBb6dNqcmzU5L/qw\n" \
"IFAGbHrQgLKm+a/sRxmPUDgH3KKHOVj4utWp+UhnMJbulHheb4mjUcAwhmahRWa6\n" \
"VOujw5H5SNz/0egwLX0tdHA114gk957EWW67c4cX8jJGKLhD+rcdqsq08p8kDi1L\n" \
"93FcXmn/6pUCyziKrlA4b9v7LWIbxcceVOF34GfID5yHI9Y/QCB/IIDEgEw+OyQm\n" \
"jgSubJrIqg0CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC\n" \
"AYYwHQYDVR0OBBYEFIQYzIU07LwMlJQuCFmcx7IQTgoIMA0GCSqGSIb3DQEBCwUA\n" \
"A4IBAQCY8jdaQZChGsV2USggNiMOruYou6r4lK5IpDB/G/wkjUu0yKGX9rbxenDI\n" \
"U5PMCCjjmCXPI6T53iHTfIUJrU6adTrCC2qJeHZERxhlbI1Bjjt/msv0tadQ1wUs\n" \
"N+gDS63pYaACbvXy8MWy7Vu33PqUXHeeE6V/Uq2V8viTO96LXFvKWlJbYK8U90vv\n" \
"o/ufQJVtMVT8QtPHRh8jrdkPSHCa2XV4cdFyQzR1bldZwgJcJmApzyMZFo6IQ6XU\n" \
"5MsI+yMRQ+gDKXJioaldXgjUkK642M4UwtBV8ob2xJNDd2ZhwLnoQdeXeGADbkpy\n" \
"rqXRfboQnoZsG4q5WTP468SQvvf5\n" \
"-----END CERTIFICATE-----\n";

WiFiClientSecure wiFiClient;
void msgReceived(char* topic, byte* payload, unsigned int len);
PubSubClient pubSubClient(awsEndpoint, 8883, msgReceived, wiFiClient); 

void setup()
{
  Serial.begin(115200); delay(50); Serial.println();
  Serial.println("ESP32 AWS IoT Example");
  Serial.printf("SDK version: %s\n", ESP.getSdkVersion());

  Serial.print("Connecting to "); Serial.print(ssid);
  WiFi.begin(ssid, password);
  WiFi.waitForConnectResult();
  Serial.print(", WiFi connected, IP address: "); Serial.println(WiFi.localIP());

  wiFiClient.setCACert(rootCA);
  wiFiClient.setCertificate(certificate_pem_crt);
  wiFiClient.setPrivateKey(private_pem_key);
}

unsigned long lastPublish;
int msgCount;

void loop()
{
  pubSubCheckConnect();
  
  if (millis() - lastPublish > 10000)
  {
    String msg = String("Hello from ESP32: ") + ++msgCount;
    boolean rc = pubSubClient.publish("outTopic", msg.c_str()); 
    Serial.print("Published, rc="); Serial.print( (rc ? "OK: " : "FAILED: ") );
    Serial.println(msg);
    lastPublish = millis();
  }
}

void msgReceived(char* topic, byte* payload, unsigned int length)
{
  Serial.print("Message received on "); Serial.print(topic); Serial.print(": ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
}

void pubSubCheckConnect()
{
  if ( ! pubSubClient.connected())
  {
    Serial.print("PubSubClient connecting to: "); Serial.print(awsEndpoint);
    while ( ! pubSubClient.connected())
    {
      Serial.print(".");
      pubSubClient.connect("ESPthingXXXX");
      delay(1000);
    }
    Serial.println(" connected");
    pubSubClient.subscribe("inTopic");
  }
  pubSubClient.loop();
}

連接到 WiFi 失敗,但您的代碼盲目地繼續運行,沒有檢查故障。 您需要查看waitForConnectResult()的返回碼以查看與 WiFi 的連接是否成功。 似乎您使用的是用於 ESP32 的舊版本 Arduino 內核,所以也許這份文檔會有所幫助

if (WiFi.waitForConnectResult() == WL_CONNECTED) {
  Serial.print(", WiFi connected, IP address: "); Serial.println(WiFi.localIP());
} else {
  Serial.println(", failed to connect to WiFi");
}

暫無
暫無

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

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