Verbinden Sie Ihren ESP8266 mit jedem verfügbaren Wi-Fi-Netzwerk
Der ESP8266 ist ein von Espressif Systems . als WiFi-Modul Mikrocontroller kann zur Durchführung verschiedener WiFi-bezogener Aktivitäten mit Anwendungen in der Heimautomation und darüber hinaus verwendet werden. Je nach Preis und Ausstattung gibt es viele Arten von ESP8266-Modulen – aber alle sind in der IoT Welt unglaublich nützlich.
Unabhängig von der IoT Anwendung, die Sie entwickelt haben, gibt es zwei Möglichkeiten, Ihren ESP8266 mit der Cloud zu verbinden. Zunächst können Sie Ihre WLAN-Zugangsdaten in die Firmware des ESP8266 , um die erforderliche Verbindung herzustellen und mit dem Senden von Daten zu beginnen. Eine zweite Möglichkeit – die wir im Folgenden Schritt für Schritt behandeln – besteht darin, einen eigenen Zugangspunkt in das Board einzubauen und so eine universelle Firmware zu erstellen, die mit nur einem Knopfdruck eine Verbindung zu jedem verfügbaren Netzwerk herstellt.
Anforderungen
- ESP8266-Modul
- Arduino IDE 1.8.2 oder höher
- ConfigManager-Bibliothek
- PubSubClient-Bibliothek
- Ubidots Konto
Schritt 1. Hardware-Setup
Hinweis : Das Ubidots -Team hat einige Änderungen an der ConfigManager-Bibliothek vorgenommen, um eine Routine zu implementieren, die den AP-Modus durch einfaches Drücken einer externen Reset- Taste startet.
Abhängig vom gewählten ESP8266-Modul müssen Sie möglicherweise den Reset-Pin mithilfe dieser Bibliotheksversion . Die Standard-Tasteneinstellungen sind der PIN 5 ; Wenn Sie eine NodeMCU D1 verbinden .
Schritt 2. Richten Sie die Arduino IDE mit Ihrem Gerät ein
Bevor Sie ein ESP8266 -Gerät verwenden, müssen Sie die Platinen in der Arduino IDE installieren. Befolgen Sie die nachstehenden Schritte, um das Board zusammenzustellen.
Wenn Sie es noch nicht getan haben, laden Sie zunächst die Arduino IDE .
- Öffnen Sie die Arduino-IDE. Wählen Sie „Dateien -> Einstellungen“ und geben Sie die URL unter dem „Zusätzliche Board Manager-URLs“ . Sie können mehrere URLs hinzufügen und diese durch Kommas trennen.
http://arduino.esp8266.com/stable/package_esp8266com_index.json
HINWEIS : Wenn Sie ein Mac-Benutzer , enthalten Arduino und Datei andere Dropdown-Funktionen als Windows-Benutzer. Sie müssen außerdem den folgenden Treiber , um Firmware auf Ihre NodeMCU hochzuladen.
2. Öffnen Sie den Boards Manager über Tools -> Board -> Boards Manager und installieren Sie die ESP8266-Plattform. Um das richtige Gerät zu finden, suchen Sie in der Suchleiste ESP8266
3. Wählen Sie das ESP8266-Modul , das Sie verwenden. In diesem Fall haben wir uns für den Einsatz des NodeMCU 1.0 (ESP-12 Modul) . Um das Board auszuwählen, gehen Sie zu Extras > Board > Board auswählen .
Um mit der NodeMCU zu kommunizieren, müssen wir außerdem den Port com auswählen. Gehen Sie zu Extras -> Port und wählen Sie den entsprechenden PORT für Ihr Gerät aus.
Damit alles schnell und reibungslos läuft, stellen wir sicher, dass die Upload-Geschwindigkeit auf 115200 optimiert ist Gehen Sie zu Extras -> Upload-Geschwindigkeit -> 115200.
4. Gehen Sie zu GitHub und laden Sie die ConfigManager-Bibliothek . Klicken Sie auf die grüne Schaltfläche „ Klonen oder herunterladen “ und wählen Sie „ ZIP herunterladen “.
5. Gehen Sie nun zurück in die Arduino IDE und klicken Sie auf Sketch -> Include Library -> Add .ZIP Library .
6. Wählen Sie die .ZIP-Datei von ConfigManager und dann „ Akzeptieren “ oder „ Auswählen “.
Bei Erfolg wird in der Arduino IDE die folgende Meldung angezeigt: „ Bibliothek zu Ihrer Bibliothek hinzugefügt. Aktivieren Sie das Menü „Bibliothek einschließen“. “
7. Gehen Sie als Nächstes zu Sketch/Programm -> Bibliothek einbinden -> Bibliotheksmanager und installieren Sie die PubSubClient -Bibliothek. Um die richtige Bibliothek zu finden, suchen Sie in der Suchleiste nach PubSubClient
8. Starten Sie nun die Arduino IDE vor dem Hochladen neu.
9. Sobald Sie die ESP8266-Plattform und die erforderlichen Bibliotheken installiert haben, installieren Sie den Arduino ESP8266-Dateisystem-Uploader . Installationsschritte des Repositorys und kehren Sie zu dieser Anleitung zurück.
10. Nachdem Ihr Uploader installiert ist, erstellen Sie eine neue Skizze zum Arbeiten und speichern Sie sie. Unser Beispiel heißt AP_ESP8266 :
11. Gehen Sie als Nächstes in das Skizzenverzeichnis und erstellen Sie einen neuen Ordner mit dem Namen „data“ .
12. Sobald das Verzeichnis erstellt ist, laden Sie diese HTML-Datei und hängen Sie sie an das Verzeichnis an. Diese Datei wird im Dateisystem verwendet.
13. Als nächstes müssen wir die Datei in das Flash-Dateisystem ESP8266 hochladen. Stellen Sie zunächst sicher, dass Sie einen Board-Port ausgewählt und Serial Monitor geschlossen .
14. Wählen Sie Tools > ESP8266 Sketch Data Upload, um mit dem Hochladen von Dateien in das ESP8266-Flash-Dateisystem zu beginnen.
Wenn Sie fertig sind, sollte in der IDE-Statusleiste „SPIFFS Image Uploaded“ :
15.Fügen Sie nun den folgenden Code in die Arduino IDE . Weisen Sie nach dem Einfügen die gewünschten Geräte- und Variablenbezeichnungen sowie Ihren eindeutigen Ubidots -TOKEN zu. Ubidots nicht kennen hier, wie Sie einen erhalten
Kopieren Sie den folgenden Code und fügen Sie ihn in die Arduino IDE ein, einschließlich Ihres spezifischen Geräts und der variablen Parameter.
#enthalten<ESP8266WiFi.h> #enthalten<ConfigManager.h> #enthalten<PubSubClient.h> /******* Konstanten definieren **********/ namespace{ const char * AP_NAME = " Ubidots Access Point"; // Weist Ihren Access Point-Namen zu const char * MQTT_SERVER = "things. ubidots .com"; const char * TOKEN = "...."; // Weist Ihr Ubidots TOKEN zu const char * DEVICE_LABEL = "my-device"; // Weist Ihr Gerätelabel zu const char * VARIABLE_LABEL = "my-variable"; // Weist Ihr Variablenlabel zu int SENSOR = A0; } char topic[150]; char Nutzlast[50]; String clientMac = ""; unsigned char mac[6]; struct Config { char name[20]; bool aktiviert; int8 Stunde; } config; /******* Eine globale Instanz initialisieren **********/ WiFiClient espClient; PubSubClient-Client(espClient); ConfigManager configManager; /***************Hilfsfunktionen ********************/ void callback(char* topic, byte* payload, unsigned int length){ } void reconnect() { while (!client.connected()){ Serial.print("Versuch einer MQTT-Verbindung..."); // Verbindungsversuch if (client.connect(clientMac.c_str(), TOKEN, NULL)) { Serial.println("connected"); brechen; } else { configManager.reset(); Serial.print("failed, rc="); Serial.print(client.state()); Serial.println("versuchen Sie es in 3 Sekunden erneut"); for(uint8_t Blink=0; Blink<=3; Blink++){ digitalWrite(LED, LOW); Verzögerung (500); digitalWrite(LED, HIGH); Verzögerung (500); } } } } String macToStr(const uint8_t* mac) { String result; for (int i = 0; i < 6; ++i) { result += String(mac[i], 16); if (i < 5)result += ':'; } Ergebnis zurückgeben; } /********* Hauptfunktionen *************/ void setup() { Serial.begin(115200); /* PINs als Ein-/Ausgabe deklarieren */ pinMode(SENSOR, INPUT); pinMode(PIN_RESET, INPUT); pinMode(LED, AUSGANG); /* WLAN-MAC-Adresse als MQTT-Clientnamen zuweisen */ WiFi.macAddress(mac); clientMac += macToStr(mac); /* Access Point-Konfiguration */ configManager.setAPName(AP_NAME); configManager.addParameter("name", config.name, 20); configManager.addParameter("enabled", &config.enabled); configManager.addParameter("hour", &config.hour); configManager.begin(config); /* Set Legt die Serverdetails fest */ client.setServer(MQTT_SERVER, 1883); client.setCallback(callback); /* Themenanforderung erstellen */ sprintf(topic, "%s%s", "/v1.6/devices/", DEVICE_LABEL); } void loop() { configManager.reset(); configManager.loop(); /* MQTT-Client-Wiederverbindung */ if (!client.connected()) { reconnect(); } /* Sensorablesung */ int value = analogRead(SENSOR); /* Nutzlastanforderung erstellen */ sprintf(payload, "{\"%s\": %d}", VARIABLE_LABEL, value); /* Sensorwert auf Ubidots veröffentlichen */ client.publish(topic, payload); client.loop(); Verzögerung (5000); }
Überprüfen Sie nach der Eingabe Ihrer Parameter den Code in der Arduino IDE. Klicken Sie dazu auf das Häkchen- Symbol in der oberen linken Ecke Ihrer Arduino-IDE.
Laden Sie dann Ihren Code in Ihre NodeMCU . Wählen Sie das mit dem Pfeil nach rechts neben dem Häkchen.
Sobald der Code hochgeladen ist, wird in der Arduino IDE die folgende Meldung angezeigt:
Ihr ESP8266-Modul ist jetzt bereit, durch einfaches Drücken der Taste eine Verbindung mit jedem verfügbaren Netzwerk herzustellen!
17. Um den Verbindungsstatus zu überprüfen, öffnen Sie den seriellen Monitor auf Ihrem seriellen Monitor Starting Access Point angezeigt wird
18. Nachdem der Access Point erstellt wurde, können Sie von Ihrem Telefon aus eine Verbindung herstellen. Wählen Sie unter Wi-Fi-Netzwerke Ubidots Access Point :
Sobald die Verbindung hergestellt ist, werden Sie auf die Seite unten weitergeleitet. Geben Sie Ihre WLAN-Parameter ein und klicken Sie auf Speichern .
19. Um zu überprüfen, ob die Verbindung hergestellt ist, gehen Sie zum seriellen Monitor:
Kehren Sie nun zu Ihren Ubidots -Konten zurück, um die von Ihrem neuen Gerät empfangenen Daten anzuzeigen:
Ergebnisse
Wenn Sie dieser Anleitung folgen, richten Sie einen Access Point ein, der Ihr Gerät mit jedem verfügbaren Netzwerk verbindet, ohne die Anmeldeinformationen in der Firmware festzulegen – und erstellen so eine universelle Firmware, die überall verwendet werden kann!