Salve,
Sono riuscito ad installare e configurare correttamente un modulo ESP8266.
Il mio obiettivo è quello di utilizzarlo per creare un webserver e mettere in rete alcuni dati.
Al momento sto provando a configurare un buon circuito inviando dati relativi all'umidità dall'ATMEGA dell'Arduino all'ESP8266, attraverso una comunicazione Seriale.
Escludendo problemi di circuito, dal momento che sono abbastanza sicuro sia corretto,
RX e TX dell'Arduino sono collegati a quelli dell'ESP.
Quando però provo a leggere i dati attraverso il browser, il valore rimane a 0, o certe volte diventa un numero fisso, nonostante il webserver funzioni correttamente.
Codice di Arduino:
#define moisture A0
void setup() {
Serial.begin(115200);
pinMode(moisture,OUTPUT);
delay(500);
Serial.println("Sensore umidita attivo");
}
void loop() {
post_data();
}
void post_data() {
Serial.write(analogRead(moisture));
delay(500);
}
Codice dell'ESP:
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <ESP8266WebServer.h>
#include <ESP8266mDNS.h>
#include <SoftwareSerial.h>
/*
Dati relativi al wifi
*/
#ifndef STASSID
#define STASSID "---"
#define STAPSK "---"
#endif
const char* ssid = STASSID;
const char* password = STAPSK;
int data; //Dato ricevuto da arduino
ESP8266WebServer server(80);
void setup() {
//Inizio comunicazione seriale con arduino
Serial.begin(115200);
//Prova di connessione wifi-hotspot
Serial.printf("Mi connetto a %s ...", ssid);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
//Loop finchè non stabilisco la connessione
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.println("provo a connettermi tra mezzo secondo...");
}
//Connessione effettuata - > uscita loop
Serial.println(" connesso con successo!");
//Preparazione pagine webserver modo #1
server.on("/", homePage);
server.on("/moisture", webMoisture);
// ----
//Apertura del server
server.begin();
Serial.printf("Web server aperto, accedi a %s via browser o app (con http-request)", WiFi.localIP().toString().c_str());
}
void loop() {
server.handleClient();
if (Serial.available()>0){
data = Serial.read();
}
}
void homePage() {
server.send(200, "text/html", "<h1>Benvenuto sull'interfaccia del tuo ESP</h1><h2>Al momento sono disponibili le pagine:</h2><p>\"/\" -> questa pagina</p><p>\"/moisture\" -> pagina umidità</p>");
}
//Hompage relativa al metodo 1
void webMoisture() {
String output = "Moisture: " + String(data);
server.send(200, "text/html", output);
}
Se qualcuno riuscisse ad aiutarmi sarebbe molto gradito, grazie.