Spisu treści:
2025 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2025-01-13 06:58
Cześć chłopaki w większości projektów używamy ESP8266, a w większości projektów używamy ESP8266 jako serwera WWW, więc dostęp do danych można uzyskać na dowolnym urządzeniu przez Wi-Fi, uzyskując dostęp do serwera WWW obsługiwanego przez ESP8266, ale jedynym problemem jest to, że potrzebujemy działającego routera do to, a nasze urządzenie również musi być podłączone do routera i musimy umieścić nasze dane uwierzytelniające Wi-Fi w kodzie, więc jeśli zmienisz Wi-Fi, musisz zmienić dane uwierzytelniające w kodzie i musisz je ponownie przesłać. Zasadniczo mamy tutaj dwa problemy:1- potrzebujemy połączenia Wi-Fi do obsługi serwera WWW (routera) 2- za każdym razem, gdy połączenie Wi-Fi musi zostać zmienione, musimy wprowadzić dane uwierzytelniające i ponownie przesłać kod. Aby uniknąć tego problemu, możemy zamiast dawać dostęp do Wi-Fi możemy utworzyć ESP8266, aby utworzyć własne połączenie Wi-Fi, więc jeśli połączymy się z tym połączeniem Wi-Fi, będziemy mogli uzyskać dostęp do serwera WWW ESP8266. Więc w zasadzie będziemy hostować serwer WWW z ESP8266 z punktem dostępu. będzie tworzyć serwer sieciowy wykorzystujący Access Point z ESP8266 i podłączymy czujnik DHT11 i wydrukujemy temperaturę i wilgotność na stronie webserwera.
Krok 1: Rzeczy, których potrzebujesz
1x ESP 8266 Nodemcu: 1x DHT11: 1x płytka stykowa:.: Niewiele zworek:
Krok 2: Pobierz biblioteki DHT11
Otwórz swoje Arduino IDE i przejdź do Szkic> Dołącz bibliotekę> Zarządzaj bibliotekami. Menedżer biblioteki powinien się otworzyć. Wyszukaj „DHT” w polu wyszukiwania i zainstaluj bibliotekę DHT z Adafruit. Po zainstalowaniu biblioteki DHT z Adafruit wpisz „Adafruit Unified Sensor” w polu wyszukiwania. Przewiń w dół, aby znaleźć bibliotekę i ją zainstalować. Po zainstalowaniu bibliotek uruchom ponownie Arduino IDE.
Krok 3: Połączenia
Obwód jest bardzo łatwy połącz wszystko zgodnie z rysunkiem schmatics
Krok 4: Kod punktu dostępu
Z moich poprzednich instrukcji zamierzam zmodyfikować kod serwera internetowego tej instrukcji:
I zamień go w kod serwera internetowego punktu dostępu. Skopiuj kod podany poniżej:
#include "Arduino.h"#include "ESP8266WiFi.h"
#include "Hash.h"
#include "ESPAsyncTCP.h"
#include "ESPAsyncWebServer.h"
#include "Adafruit_Sensor.h"
#include "DHT.h"
const char* ssid = "ESP8266";const char* password = "password";#define DHTPIN 5 // Pin cyfrowy podłączony do czujnika DHT// Odkomentuj typ używanego czujnika://#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302)//#define DHTTYPE DHT21 // DHT 21 (AM2301)DHT dht(DHTPIN, DHTTYPE);// aktualna temperatura i wilgotność, zaktualizowane w loop()float t = 0.0; float h = 0.0;// Utwórz obiekt AsyncWebServer na porcie 80AsyncWebServer server(80);// Generalnie powinieneś używać „unsigned long” dla zmiennych, które przechowują czas// Wartość szybko stanie się zbyt duża, aby int mógł przechowywać unsigned long previousMillis = 0; // zapisze ostatnią aktualizację DHT// Aktualizuje odczyty DHT co 10 sekundconst long interval = 10000; const char index_html PROGMEM = R"rawliteral (serwer ESP8266 DHT)
Temperatura % TEMPERATURA % ° C
Wilgotność %WILGOTNOŚĆ% %)rawliteral";// Zastępuje symbol zastępczy wartościami DHTString processor(const String& var){ //Serial.println(var); if(var == "TEMPERATURE"){ return String(t); } else if(var == "WILGOTNOŚĆ"){ return String(h); } return String();}void setup(){ // Port szeregowy do celów debugowania Serial.begin(115200); dht.begin(); Serial.print("Ustawianie AP (Punkt dostępu)…"); // Usuń parametr hasła, jeśli chcesz, aby AP (punkt dostępu) był otwarty WiFi.softAP(ssid, hasło); IPAddress IP = WiFi.softAPIP(); Serial.print(" Adres IP AP: "); Serial.println(IP); // Drukuj lokalny adres IP ESP8266 Serial.println(WiFi.localIP()); // Trasa do katalogu głównego / strony internetowej server.on("/", HTTP_GET, (AsyncWebServerRequest *request){ request->send_P(200, "text/html", index_html, processor); }); server.on("/temperature", HTTP_GET, (AsyncWebServerRequest *request){ request- >send_P(200, "text/plain", String(t).c_str()); }); server.on("/humidity", HTTP_GET, (AsyncWebServerRequest *request){ request->send_P(200, "Zwykły tekst", Ciąg(h).c_str()); }); // Uruchom serwer server.begin();}void loop(){ unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interwał) { // zapisz ostatnią aktualizację wartości DHT previousMillis = currentMillis; // Odczytaj temperaturę w stopniach Celsjusza (domyślnie) float newT = dht.readTemperature(); // Odczytaj temperaturę w stopniach Fahrenheita (isFahrenheit = true) //float newT = dht.readTemperature(true);// jeśli odczyt temperatury nie powiódł się, nie zmieniaj wartości t if (isnan(newT)) { Serial.println("Niepowodzenie czytać z czujnika DHT!"); } else { t = nowyT; Serial.println(t); } // Odczyt wilgotności float newH = dht.readHumidity(); // jeśli odczyt wilgotności nie powiódł się, nie zmieniaj wartości h if (isnan(newH)) { Serial.println("Nie udało się odczytać z czujnika DHT!"); } inny { h = nowyH; Serial.println(h); } }}Zanim wgrasz kod upewnij się, że umieściłeś następujące rzeczy: const char* ssid = "ESP8266"; // dowolny identyfikator sieci Wi-Fi, który chceszconst char* password = "hasło"; //pass, aby połączyć się z powyższym ssidSet ESP8266 jako punkt dostępowy: Aby ustawić esp8266 jako punkt dostępowy, użyjemy polecenia softAP, jak pokazano poniżej; aby utworzyć punkt dostępu. WiFi.softAP(ssid, hasło);Istnieją również inne opcjonalne parametry, które można przekazać do metody softAP(). Oto wszystkie parametry: Jeśli otworzysz monitor szeregowy, zobaczysz adres IP punktu dostępowego. Odbywa się to przez następującą część kodu. IPAddress IP = WiFi.softAPIP();Serial.print("Adres IP AP: ");Serial.println(IP);Domyślny adres IP to: 192.168.4.1
Krok 5: Ostatni krok: Testowanie
Po przesłaniu kodu otwórz swój telefon komórkowy/komputer wifi i połącz się z wifi esp8266 (niezależnie od tego, jaki identyfikator SSid i hasło, które wprowadziłeś w kodzie, skorzystaj z tego). Po połączeniu otwórz adres IP w przeglądarce, który otrzymaliśmy z monitora szeregowego (https://192.168.4.1.) i będziesz mógł zobaczyć temperaturę i wilgotność w przeglądarce jako moje. I nie używaliśmy żadnej sieci Wi-Fi, aby to zrobić, więc tak działa punkt dostępu esp8266.