Salve a tutti, mi scuso ma non so se sono nella sezione inglese o italiana (non sto usando la traduzione automatica) ma nel sito mi spuntano metà cose in italiano e un altra metà in inglese.
Premettiamo che non sono ancora un esperto nel linguaggio Arduino e nella programmazione ma me la cavo.
Volevo parlarvi di questo problema: ho un codice che quando lo vado a caricare nella mia ESP32 non mi da nessun problema, in breve il codice consiste nel creare un piccolo sito web dove l'ESP32 andrà a scrivere i dati di umidità e temperatura presi da un sensore DHT11.
Ecco il codice:
#include <WiFi.h>
#include <DHT.h>
#define DHTPIN 27 // define the pin where the DHT11 sensor is connected
#define DHTTYPE DHT11 // define the type of DHT sensor
#include <WiFiClient.h>
DHT dht(DHTPIN, DHTTYPE); // initialize the DHT sensor
// Network credentials Here
const char* ssid = "ESP32 di Mazy";
const char* password = "mazymazy32";
// Set web server port number to 80
WiFiServer server(80);
// Current time
unsigned long currentTime = millis();
// Previous time
unsigned long previousTime = 0;
// Define timeout time in milliseconds
const long timeoutTime = 2000;
void setup() {
Serial.begin(115200);
WiFi.softAP(ssid,password);
// Print IP address and start web server
Serial.println("");
Serial.println("IP address: ");
Serial.println(WiFi.softAPIP());
server.begin();
}
void loop() {
WiFiClient client = server.available(); // Listen for incoming client
}
void handleRoot() {
float humidity = dht.readHumidity(); // read humidity value from DHT sensor
float temperature = dht.readTemperature(); // read temperature value from DHT sensor
String html = "<html><head><title>ESP32 DHT11 Sensor</title></head><body>"; // create HTML page
html += "<h1>ESP32 DHT11 Sensor</h1>";
html += "<p>Humidity: " + String(humidity) + "%</p>"; // add humidity value to HTML page
html += "<p>Temperature: " + String(temperature) + "°C</p>"; // add temperature value to HTML page
html += "</body></html>";
delay (200);
server.printf ("html");
}
Quando però vado a connettermi al sito web mi da l'errore "ERR_CONNECTION_RESET" dicendomi che la pagina non ha inviato dati.
Sapete gentilmente darmi una soluzione per far si che ciò non accada?
Ok grazie mille per l'esempio che mi hai mandato, ma il codice che avevo prima era in parte giusto? (Solo quando leggeva i dati e li scriveva in un html )
Perché se lo è posso mettere quella parte nel codice che mi hai fornito e risolvere
Un software non si scrive facendo taglia e cuci...
I presunti "tutorial" che si trovano online sono il male assoluto se uno vuole imparare per davvero.
Quando parti da un progetto/esempio già scritto come in questo caso devi prima analizzarlo, capire cosa e come fa e solo quando ti è tutto chiaro inserisci le funzionalità che mancano e di cui hai bisogno.
Questo ovviamente richiede studio ed approfondimenti che vanno oltre il copia e incolla.
Prendiamo l'esempio che ti ho suggerito:
Viene usata la libreria WebServer inclusa nel core (non è quindi necessario installare nessuna libreria esterna)
#include <WebServer.h>
WebServer server(80);
La libreria in questione consente di definire degli "handler" che vengono associati a specifiche richieste da parte del client: http:/192.168.4.1/ la richiesta è '/' http:/192.168.4.1/ledon la richiesta è '/ledon'
// Questa funzione verrà associata nel setup() alla chiamata HTTP /
// ovvero la radice del webserver (es: http://192.168.4.1/)
void handleRoot() {
digitalWrite(led, 1);
server.send(200, "text/plain", "hello from esp32!");
digitalWrite(led, 0);
}
// Questa funzione invece sarà eseguita quando il client
// richiede una risorsa che il server non gestisce
void handleNotFound() {
......
}
// Allo stesso modo, puoi definire altri handlers dove
// vai ad implementare tu quello che il server dovrà fare
void handleDHT() {
// Costruisco a runtime il contenuto della risposta del server
float humidity = dht.readHumidity(); // read humidity value from DHT sensor
float temperature = dht.readTemperature(); // read temperature value from DHT sensor
String html = "<html><head><title>ESP32 DHT11 Sensor</title></head><body>"; // create HTML page
html += "<h1>ESP32 DHT11 Sensor</h1>";
html += "<p>Humidity: " + String(humidity) + "%</p>"; // add humidity value to HTML page
html += "<p>Temperature: " + String(temperature) + "°C</p>"; // add temperature value to HTML page
html += "</body></html>";
// Invio al client la risposta appena costruita
server.send(200, "text/plain", html );
}
void setup() {
....
server.on("/", handleRoot);
server.onNotFound(handleNotFound);
// aggiungo il nuovo handler.
// Se vuoi che questa risposta sia servita quando
// il browser chiama la radice / rimuovi l'handler precedente.
server.on("/dht", handleDHT);
....