Connessione seriale Arduino mega - NodeMCU

Salve, vorrei esporvi un semplice problema, il collegamento seriale arduino - nodemcu.

Su google ci sono migliaia di pagine a riguardo, ma tutte dicono la stessa cosa:

"Ma si, che cosa importa se sono due tensioni differenti, tu collega come sempre rx-tx e avverrà un miracolo funzionando tutto senza problemi"...

Ma cosi non è. Non funziona, o meglio, funziona solo NodeMcu -> arduino, nel verso contrario nulla, non riceve nessun dato. Suppongo sia appunto per le due tensioni diverse di lavoro.
Ho provato anche con delle resistenze, o una serie di diodi, e niente.

Scartata l'idea dell'utilizzo dell'I2C stavo quasi pensando di creare un mio protocollo di fortuna "a semafori", ma prima di addentrarmi in questa impresa volevo sentire voi, se ci fosse una soluzione a una cosa al quanto banale...

Idee?

se non sbaglio da qualche parte ho letto che devi usare la libreria softwareserial e non una delle seriali della mega....

il problema alla lunga lo dovresti avere sulla node in quanto il pin tx di arduino gli da sempre 5V invece di 3,3 quindi è su questo che dovresti mettere il partitore di tensione

Grazie per la tua risposta, avevo già provato una cosa simile con software serial, tuttavia non ero riuscito.
Ci riproverò applicando anche il partitore sul TX del mega.

Da qualche parte dicono di collegare oltre al classico gnd-gnd anche vin-vin... È una cosa sensata? Secondo me si incendia tutto :smiley:

Una cosa è certa, che l'ESP8266 NON è 5V tolerant e, un ampia discussione sull'argomento, con tanto di misure e spiegazioni, la trovate QUI e QUI ... quindi, sicuramente, sul pin RX del ESP8266 NON debbono arrivare i 5V.

Il tutto si riassume in:

astrobeed:
... La soluzione più semplice è sempre il classico partitore 10k+18k per ridurre da 5V a 3.3V in modo da non far proprio lavorare i diodi di clamping, cosa che crea sempre problemi se si arriva a questa condizione.
Stendiamo un velo pietoso su cosa succede quando si connettono i GPIO del ESP direttamente ad Arduino.

Detto questo, in teoria, dovrebbe funzionare anche con le seriali hardware della MEGA, anche se spesso, per qualche motivo di logica interna, le "vere" seriali si sono dimostrate più "sorde" (... parlo in relazione ai "livelli" dei segnali) di quelle "virtuali" create con la SoftwareSerial (vedete il caso dei moduli BT HC-05 collegati sulla seriale hardware della UNO che a volte funzionano ed altre no).

Guglielmo

Grazie mille anche a te, spero di non aver fatto danni utilizzando fin ora la connessione diretta :o
Ancora si accende e pare funzionare quindi credo mi sia andata bene.
Proverò con il partitore, Se lo faccio 220-110 dovrebbe andare bene uguale credo... Si ottiene sempre 3.3 V ma sicuramente una corrente maggiore che non credo causerebbe problemi.

Mentre sul TX del nodemcu faccio il collegamento diretto?

Anche con il partitore non ha funzionato, ho verificato e c’erano 3V…

Ma seriale hw o software ?

Entrambi

Ciao daniele, non so se ho capito bene il tuo problema, ma tieni presente che ti rispondo da uno che in possesso ha l’esp8266-01 con firmware at.
Allora, come ti dicevano giustamente, non capisco perchè ma le seriali hw della mega danno problemi, lato server pare funzionare bene, lato client arriva solo una parte della risposta. Utilizzando la seriale software funziona correttamente (anche se ho problemi di perdite dati facendo comunicare due esp tra di loro su due arduino diversi, un client e un server).
Ma ripeto, non è che non ricevevo nulla, ricevevo incompleto. Quindi non so se sia il problema del tuo caso.
Un problema di comunicazione per modificare il baudrate e settarlo a 9600, caricando uno sketch vuoto e inviando i comandi at (e in questo caso non ricevevo nulla) lo ho risolto mettendo diretto (senza passare per il level shifter) il tx dell’esp con il rx dell’arduino. (Googolando avevo letto che questo si poteva fare tranquillamente essendo il pin dell’esp a 3.3 e l’arduino lo rileva tranquillamente come livello alto).
P.s. Ne ho montato uno su un arduino uno al posto della ethernet shield, e son settimane che lavora correttamente come server. (Da browser e da app ricevo sempre la risposta corretta) Ma se provo ad accederci tramite un altro esp utilizzandolo come client, non sempre ricevo la risposta completa.

Risolto, più banale di quel che pensavo.

Il compilatore non restituisce "Warning" da soli, li presenta solo se ci sono anche "errori" che impediscono la compilazione. (passatemi l'improprietà dei termini utilizzati :grin: )

Risolvendo un errore di compilazione ho notato che c'era un conflitto tra librerie, autonomamente ha selezionato la "softwareserial" per arduino, e non quella per ESP.

Eliminando quella per arduino ha selezionato l'altra e ha funzionato tutto magicamente al primo colpo.