Sommario:

ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e stampa di temperatura e umidità nel browser: 5 passaggi
ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e stampa di temperatura e umidità nel browser: 5 passaggi

Video: ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e stampa di temperatura e umidità nel browser: 5 passaggi

Video: ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e stampa di temperatura e umidità nel browser: 5 passaggi
Video: How to add a Web Setup Portal to ESP8266 Projects (Soft Access Point) 2024, Luglio
Anonim
ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e temperatura e umidità di stampa nel browser
ESP8266 NodeMCU Access Point (AP) per server Web con sensore di temperatura DT11 e temperatura e umidità di stampa nel browser

Ciao ragazzi nella maggior parte dei progetti usiamo ESP8266 e nella maggior parte dei progetti usiamo ESP8266 come server web, quindi è possibile accedere ai dati su qualsiasi dispositivo tramite wifi accedendo al server Web ospitato da ESP8266 ma l'unico problema è che abbiamo bisogno di un router funzionante per anche questo e il nostro dispositivo devono essere collegati al router e dobbiamo inserire le nostre credenziali wifi nel codice, quindi se cambi wifi, devi cambiare le credenziali nel codice e devi ricaricarlo. Quindi in pratica abbiamo due problemi qui:1- abbiamo bisogno di una connessione wifi per ospitare il webserver (router) 2- ogni volta che la connessione wifi deve essere cambiata dobbiamo inserire le credenziali e ricaricare il codice. Quindi per evitare tutto questo problema quello che possiamo fare è invece di dare un accesso wifi possiamo fare in modo che ESP8266 crei una connessione wifi propria, quindi se ci colleghiamo a quella connessione wifi possiamo accedere al server web di ESP8266. Quindi in pratica ospiteremo un server web con ESP8266 con punto di accesso. Quindi in questo istruibile noi creerà un webserver utilizzando Access Point con ESP8266 e collegheremo un sensore DHT11 e stamperemo temperatura e umidità sulla pagina del webserver.

Passaggio 1: cose di cui hai bisogno

Cose di cui hai bisogno
Cose di cui hai bisogno
Cose di cui hai bisogno
Cose di cui hai bisogno

1x ESP 8266 Nodemcu: 1x DHT11: 1x breadboard:.: Pochi ponticelli:

Passaggio 2: ottenere le librerie DHT11

Ottieni le librerie DHT11
Ottieni le librerie DHT11
Ottieni le librerie DHT11
Ottieni le librerie DHT11

Apri il tuo IDE Arduino e vai su Schizzo> Includi libreria> Gestisci librerie. Dovrebbe aprirsi il Gestore della libreria. Cerca "DHT" nella casella di ricerca e installa la libreria DHT da Adafruit. Dopo aver installato la libreria DHT da Adafruit, digita "Adafruit Unified Sensor" nella casella di ricerca. Scorri fino in fondo per trovare la libreria e installarla. Dopo aver installato le librerie, riavvia il tuo IDE Arduino.

Passaggio 3: connessioni

Connessioni
Connessioni

Il circuito è molto semplice collegare tutto Secondo come mostrato in schmatics

Passaggio 4: codice punto di accesso

Codice del punto di accesso
Codice del punto di accesso

Dai miei istruttori precedenti modificherò il codice del server web di questo istruibile:

E trasformalo nel codice del server web del punto di accesso. Copia il codice fornito di seguito:

#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 digitale connesso al sensore DHT// Decommenta il tipo di sensore in uso://#define DHTTYPE DHT11 // DHT 11#define DHTTYPE DHT22 // DHT 22 (AM2302)//#define DHTTYPE DHT21 // DHT 21 (AM2301)DHT dht(DHTPIN, DHTTYPE);// temperatura e umidità attuali, aggiornate in loop()float t = 0.0; float h = 0.0;// Crea un oggetto AsyncWebServer sulla porta 80AsyncWebServer server(80);// In genere, dovresti usare "unsigned long" per le variabili che contengono time// Il valore diventerà rapidamente troppo grande per un int da memorizzare unsigned long previousMillis = 0; // memorizzerà l'ultima volta che DHT è stato aggiornato // Aggiorna le letture DHT ogni 10 secondi const long interval = 10000; const char index_html PROGMEM = R"rawliteral(ESP8266 DHT Server

Temperatura %TEMPERATURA% °C

Umidità %UMIDITÀ% %)rawliteral";// Sostituisce il segnaposto con valori DHTString processor(const String& var){ //Serial.println(var); if(var == "TEMPERATURE"){ return String(t); } else if(var == "HUMIDITY"){ return String(h); } return String();}void setup(){ // Porta seriale per il debug Serial.begin(115200); dht.begin(); Serial.print("Setting AP (Access Point)…"); // Rimuovere il parametro password, se si desidera che l'AP (Access Point) sia aperto WiFi.softAP(ssid, password); IPAddress IP = WiFi.softAPIP(); Serial.print(" Indirizzo IP AP: "); Serial.println(IP); // Stampa l'indirizzo IP locale ESP8266 Serial.println(WiFi.localIP()); // Instrada per root/pagina web 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, "testo/normale", String(h).c_str()); }); // Avvia il server server.begin();}void loop(){ unsigned long currentMillis = millis(); if (currentMillis - previousMillis >= interval) { // salva l'ultima volta che hai aggiornato i valori DHT previousMillis = currentMillis; // Legge la temperatura come Celsius (il valore predefinito) float newT = dht.readTemperature(); // Leggi la temperatura come Fahrenheit (isFahrenheit = true) //float newT = dht.readTemperature(true); // se la lettura della temperatura non è riuscita, non modificare il valore t if (isnan(newT)) { Serial.println("Failed per leggere dal sensore DHT!"); } else { t = nuovoT; Serial.println(t); } // Leggi l'umidità float newH = dht.readHumidity(); // se la lettura dell'umidità fallisce, non modificare il valore h if (isnan(newH)) { Serial.println("Impossibile leggere dal sensore DHT!"); } else { h = nuovaH; Serial.println(h); } }}Prima di caricare il codice assicurati di inserire le seguenti cose: const char* ssid = "ESP8266"; // qualunque ssid di wifi desidericonst char* password = "password"; //pass per connettersi a ssidSet sopra L'ESP8266 come punto di accesso: Per impostare esp8266 come punto di accesso utilizzeremo il comando softAP come mostrato di seguito; per creare un punto di accesso. WiFi.softAP(ssid, password);Ci sono anche altri parametri opzionali che puoi passare al metodo softAP(). Ecco tutti i parametri: se apri il monitor seriale puoi vedere l'IP del punto di accesso. Che viene fatto seguendo parte del codice. IPAddress IP = WiFi.softAPIP();Serial.print("AP IP address: ");Serial.println(IP);Per impostazione predefinita l'indirizzo IP è: 192.168.4.1

Passaggio 5: Passaggio finale: test

Fase finale: test
Fase finale: test

Dopo aver caricato il codice, apri il tuo cellulare/pc wifi e connettiti al wifi esp8266 (qualunque ssid e password tu abbia inserito nel codice usalo). Dopo la connessione, apri l'IP nel tuo browser che abbiamo ottenuto dal monitor seriale (https://192.168.4.1.) e sarai in grado di vedere la temperatura e l'umidità nel tuo browser come il mio. E non abbiamo usato alcuna rete wifi per farlo, quindi è così che funziona il punto di accesso di esp8266.

Consigliato: