Podłączenie ESP8266 do internetu

Nawiązanie połączenia

Aby ESP mogło połączyć się z serwerem należy włączyć kartę WiFi i ustawić ją w odpowiedni tryb, aby to zrobić należy zaimportować pakiet ESP8266WiFi i wywołać metodę mode() w klasie WiFi. Metoda przyjmuje jedną z wartości: WIFI_OFF – brak wifi , WIFI_STA – tryb stacji roboczej – czyli ten o który nam chodzi, WIFI_AP – Access Point, WIFI_AP_STA – tryb mieszany.

#include <ESP8266WiFi.h>

void setup() {
    WiFi.mode(WIFI_STA);
}

Klasa WiFi umożliwia podłączenie się sieci, jej użycie wymaga jednak pewnej ilości nadmiarowego kodu. Znacznie łatwiej jest użyć klasy ESP8266WiFiMulti z pakietu o tej samej nazwie. Obsługuje ona ponowne nawiązywanie utraconego połączenia, czy przełączanie się między różnymi sieciami WiFi. Klasa ta posiada metody addAP i run. Pierwsza pozwala dodać sieć i wymaga podania nazwy sieci i hasła. Metodę tą wywołuje się w metodzie setup(). Bezparametrowa metoda run() zwraca informację o stanie WiFi, w szczególności czy urządzenie jest podłączone do jakiejś sieci. Poniższy kod mruga wbudowaną diodą led jeżeli urządzenie nie ma połączenia z siecią i gasi ją na stałe jeżeli połączenie zostaje nawiązane.

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

ESP8266WiFiMulti WiFiMulti;

void setup() {
    WiFi.mode(WIFI_STA);
    WiFiMulti.addAP("<SSID>", "<Password>");
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop() {
  if (WiFiMulti.run() != WL_CONNECTED) {
    digitalWrite(LED_BUILTIN, LOW);
    delay(300);
    digitalWrite(LED_BUILTIN, HIGH);
    delay(300);
    return;
  }
  delay(500);
}

W miejsce <SSID> należy wstawić nazwę swojej sieci WiFi, a <Password> hasło.

Biblioteka zawiera zawiera klasy WiFiClient oraz Udp do obsługi protokołów warstwy transportu (TCP, UDP), umożliwiające implementację obsługi dowolnego protokołu warstwy aplikacji.

#include <ESP8266WiFi.h>
#include <ESP8266WiFiMulti.h>

#include <WiFiClient.h>

ESP8266WiFiMulti WiFiMulti;

void setup() {
    WiFi.mode(WIFI_STA);
    WiFiMulti.addAP("<SSID>", "<Password>");
}

void loop() {
  if (WiFiMulti.run() != WL_CONNECTED) {
    delay(300);
    return;
  }
  WiFiClient client;
  String host = "<your-dns-name-or-ip>";
  int port = 5000;
  if (!client.connect(host, port)) {
    delay(300);
    return;
  }

  client.println("Hello");
  String response = client.readStringUntil('\n');

  delay(300);
}

W miejsce <your-dns-name-or-ip> należy wstawić adres IP komputera na którym działa aplikacja serwerowa.

Powyższy kod nie wykorzystuje protokołu http i nie zadziała z , wcześniej utworzoną, aplikacją serwerową. Ręczna implementacja tego protokołu jest dość złożona. Na szczęście nie trzeba tego robić.

2 odpowiedzi do “Podłączenie ESP8266 do internetu”

  1. Dzień dobry!
    Skorzystałem z tego artykułu teraz (sty, 2023), zainstalowałem
    Microsoft .NET SDK 6.0.405 (była jeszcze do wyboru 7.0).
    Przy uruchomieniu Twin miałem komunikaty o potrzebie doinstalowania Microsoft ASP.NET Core 2.2.8 i Microsoft ASP.NET Core Runtime – 2.2.8, co zrobiłem.
    Server ruszył, ale wcześniej pojawił się komunikat „… warning NETSDK1138: platforma docelowa „netcoreapp2.2″ nie jest już obsługiwana i w przyszłości nie będzie otrzymywać aktualizacji zabezpieczeń. …”.
    Nie jestem zaznajomiony z .NET i prosiłbym o radę co i jak zmienić w projekcie Twin, żeby pracować na aktualnych wersjach platformy .NET?
    Z góry dziękuję,
    Andrzej Bluszcz

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *