Problema Comunicazione Seriale tra Arduino UNO e ESP8266

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.

Buonasera,
essendo il tuo primo post, nel rispetto del regolamento della sezione Italiana del forum (… punto 13, primo capoverso), ti chiedo cortesemente di presentarti IN QUESTO THREAD (spiegando bene quali conoscenze hai di elettronica e di programmazione ... possibilmente evitando di scrivere solo una riga di saluto) e di leggere con molta attenzione tutto il su citato REGOLAMENTO ... Grazie. :slight_smile:

Guglielmo

P.S.: Ti ricordo che, purtroppo, fino a quando non sarà fatta la presentazione nell’apposito thread, nessuno ti potrà rispondere, quindi ti consiglio di farla al più presto. :wink: