Buonasera,
ho collegato un ESP8266 NodeMCU ad Arduino per invio di dati via Wifi tramite seriale.
In particolare il collegamento è costituito da 3 cavi:
TX (ESP) -> pin 5 (Arduino)
RX (ESP) -> pin 6 (Arduino)
GND (ESP) -> GND (Arduino)
Tutto funziona correttamente.
Ho però letto che ESP8266 NodeMCU funziona a 3.3 V e che potrei danneggiare il componente, ma non riesco a trovare e capire come dovrei correggere il collegamento ed eventualmente che componente aggiuntivo acquistare per effettuare la conversione.
@gonpezzi, ovviamente in una comunicazione seriale solo in una linea da Arduino a Node hai 5V, l'altra è a 3,3V perchè va dal Node ad Arduino. Ed Arduino 3,3V li sente come HIGH
Con il convertitore hai una cosa più "pulita" mentre con il diodo devi essere sicuro che i 5V vengano abbassati abbastanza per andare sotto i 3,3V ma non troppo
E come è possibile se il diodo non consente il passaggio di alcuna corrente? Non essendoci flusso di corrente, NON c'è variazione nel pin di arduino, a meno che non si superi la tensione di breakdown inversa del diodo, (circa 100V, credo di ricordare), che ovviamente sarebbe dannosa per il nostro arduino.
Dovresti fare qualcos'altro come il seguente.
Penso che sia secondo le foto quello che dovrebbe fare questo modulo.
Saluti.
nid69ita:
Con il convertitore hai una cosa più "pulita" mentre con il diodo devi essere sicuro che i 5V vengano abbassati abbastanza per andare sotto i 3,3V ma non troppo ...
In realtà, se sul pin RX dell'ESP si mette una resistenza di pull-up verso i 3.3V (che normalmente tiene alto il pin) e si mette il diodo, come disegnato, in senso diretto ... quando il TX di Arduino è HIGH, i 5V non passano (diodo polarizzato al contrario) e il pin RX del ESP viene tenuto HIGH dalla pull-up, quando il pin TX di Arduiono diventa LOW, il diodo conduce e il pin RX dell'ESP viene portato LOW anche lui.
Ovviamnete occorre scegliere bene il diodo ... ad esempio un economico BAT82 ha una tensione inversa di 40V ed una caduta di tensione diretta di soli 0.33V (per correnti inferiori al 0.1mA)
Però, onestamente, per quello che costa un level shifterquadruplo (su AliExpress intorno ai 0.15 US$) ... io uso sempre quest'ultimi
gonpezzi:
@ nid69ita,
E come è possibile se il diodo non consente il passaggio di alcuna corrente?
Io ho interpretato la frase di @brunello per l'uso di un diodo per abbassare la tensione dai 5V di Arduino sfruttando la caduta di tensione del diodo.
Non avevo letto bene lo schema di @brunello. Per me il diodo sarebbe su TX di arduino verso RX della node, quindi 5V vengono abbassati dal diodo. E non bastando un diodo 1N4148 ne metterei due.
nid69ita:
Perciò penso lo schema di @brunello sia errato. Per me il diodo sarebbe su TX di arduino verso RX della node, quindi 5V vengono abbassati dal diodo
None, il diodo blocca i 5V provenienti da Arduino quando il TX di Arduino è alto, e porta a massa (diciamo a 0,65V per un diodo normale) il RX dell'ESP quando il TX di Arduino è basso. Si da per scontato (??) che lato RX dell'ESP ci sia una pull-up.
Nello schema #8 di gonpezzi manca appunto il diodo intrinseco nel mos con anodo verso i 3,3V e catodo verso Arduino.
Buongiorno a tutti,
mi fa piacere che ne sia nata una bella discussione e molti confronti.
Ho provato a seguire il consiglio iniziale di gonpezzi, e ho acquistato un convertitore di livello logico 4 canali I2C SPI LLC, mi è arrivato ieri quindi farò delle prove e vi farò sapere.