Spisu treści:

ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków

Wideo: ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków

Wideo: ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce: 5 kroków
Wideo: Kurs ESP8266: Prosty Sewer WWW (Access Point) 2024, Listopad
Anonim
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce
ESP8266 NodeMCU Access Point (AP) dla serwera WWW z czujnikiem temperatury DT11 i drukowaniem temperatury i wilgotności w przeglądarce

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

Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz
Rzeczy, których potrzebujesz

1x ESP 8266 Nodemcu: 1x DHT11: 1x płytka stykowa:.: Niewiele zworek:

Krok 2: Pobierz biblioteki DHT11

Pobierz biblioteki DHT11
Pobierz biblioteki DHT11
Pobierz biblioteki DHT11
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

Znajomości
Znajomości

Obwód jest bardzo łatwy połącz wszystko zgodnie z rysunkiem schmatics

Krok 4: Kod punktu dostępu

Kod punktu dostępu
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

Ostatni krok: testowanie
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.

Zalecana: