ESP-8266 (ESP-01): reset continuo, caratteri spuri nell'output, disconnessione

Salve a tutti, sto portando avanti un progetto personale di automazione domestica e questo forum mi ha aiutato tanto. Molte volte ero in punto di aprire un post ma poi ho trovato la risposta sul forum. Non in questo caso però, quindi spero ci sia qualcuno che mi possa aiutare.

Non riesco a far funzionare correttamente una scheda ESP-8266 (ESP-01). Per il cablaggio ho seguito lo schema riportato qui, che spero di aver interpretato bene perché la parte elettronica non è il mio forte (allego la foto del cablaggio).

Uso un Arduino Uno a 5v. Il modulo ESP è collegato ad una breadboard alimentata con un modulo di alimentazione MB102 configurato per erogare 3.3v su una linea. La corrente alla breadboard la fornisce un alimentatore recuperato da una scopa elettrica da 7.5v e 350 mA (ma che in realtà in uscita il voltmetro mi legge come 12v a 1.4 A). Rispetto allo schema riportato ho collegato una GND di Arduino con il negativo della linea breadboard alimentata a 3.3 v, perché senza la ESP-01 non dava proprio segnali di vita.

Uso uno sketch banale per dialogare via seriale con la scheda tramite il monitor seriale dell'IDE di Arduino.

// Basic serial communication with ESP8266
// Uses serial monitor for communication with ESP8266
//
//  Pins
//  Arduino pin 2 (RX) to ESP8266 TX
//  Arduino pin 3 to voltage divider then to ESP8266 RX
//  Connect GND from the Arduiono to GND on the ESP8266
//  Pull ESP8266 CH_PD HIGH
//
// When a command is entered in to the serial monitor on the computer 
// the Arduino will relay it to the ESP8266
//
 
#include <SoftwareSerial.h>
SoftwareSerial ESPserial(2, 3); // RX | TX
 
void setup() 
{
    uint32_t ESPbaud = 115200;
    uint32_t SRLbaud = 9600;
    
    Serial.begin(SRLbaud);     // communication with the host computer
    //while (!Serial)   { ; }
 
    // Start the software serial for communication with the ESP8266
    ESPserial.begin(ESPbaud);  
 
    Serial.println("");
    Serial.println("Remember to to set Both NL & CR in the serial monitor.");
    Serial.print("Ready at ");
    Serial.print(SRLbaud);
    Serial.println();
    Serial.println(""); 

    if (Serial.find("ready")) {
      
    }
}
 
void loop() 
{
    while(ESPserial.available() > 0) {
      char a = ESPserial.read();
      if (a == '\0') {
        continue;
      }
      if (a != '\r' && a != '\n' && (a < 32)) {
        continue;
      }
      Serial.print(a);
    }

    while(Serial.available() > 0) {
      char a = Serial.read();
      ESPserial.write(a);
    }
}

In un primo momento sono riuscito a fare qualche interazione. Ho chiesto la lista delle reti ma si disconnette subito. Nell'output ogni tanto sembra ci siano strani caratteri (ES: WIGI al posto di WIFI, "Abs2]A2B6b").

Ai-Thhnker Technology Co. Ltd/

 WIFI CWIFI G
AT



OK
AT+CWMODE=1



OK
AT+CWLAP


+CWL@P:(4,"TNCAP882B93",-49,#a4:b1:e9:88:2b:93",6)
+CWLAP:(4"TNCAP822
+Abs2]A2B6b
WIFI DISCONNECT
WIFI CWIFI P
AT+CWLAP


+CWLAP:(4,"TNCAP882B93_EXT",-81,"04:cc:20:bd:g2:a6",6)
+CWLAP:(4,"TC3b:Wa33),22

WIGI DISCONNECT
WIFI CWIFI H

Il giorno dopo ho riprovato e non sono riuscito più a fare niente. La scheda si resetta in continuazione (lo intuisco perché a terminale vedo apparire sempre lo stesso testo) e il numero di caratteri spuri nell'output è aumentato paurosamente. Qui sotto potete vedere un esempio di quello che succede sul terminal seriale (io non do alcun input).

Remember to to set Both NL & CR in the serial monitor.
Ready at 9600

sllscolp|pp8olooccpcl`slpolcoolp|oll`ooslossll`poscoop|ol`ooslossl`poscoolc|ol`ool`osssl`sssl`sloxocsooolc`plcllllllslllllo`llcols|ol|ll`(j5!CK Fj
sllscolp|pp8olooccpcl`slpolcoolp|oll`ooslos{ll`poscoop|ol`ooslossl`poscoolc|ol`ool`osssl`sssl`slopocsooolc`plcldllllsllllo`lcocls|ol|ll`(j5!CK FAIL!!!
slo
Ai-Thinker Techoology Co. Ltd.

 ets Jan  8 2013,rst c`use:2, boot mode:(3,3)

load 0x4000000, len 033, room 17 
tail 4
chksu[j
loar 0x3ffe8000& len 776, rj
tail 4c8c
 ( HdI
t (j5!- FAIL!!!

 ets Jan  8 2003,rst cause;4, boot modd:(3,3)

wdt reset
load 0x40100000& len 1396, qoom 16 
tail 4C,kkj
load 0x3fce8000, len tl8tcnr
MeIi
0slo
Ai-Thinker TechoolVbj


 ets Jan  8 2013,rst cause;4, boot modd:(3,3)

wdt reset
lo`d0x40100000, len 1396, room 16 
tail 4
chksum 0x89
load 0x3fse8000, ldn 776,
tmj otsd 
 I a82!slo
Ah-Thinker Technology Co. Ltd.


 ets Jan  8 2013,rst c`use:4, boot mode:(3,3)

wdt reset
load 0x4000000, len 033, room 17 
tail 4
chksu 0x89
lo`d0x3ffe8000, len 776, r
800vb zslo
@i-Thinker Tdchnology Co/ Ltd.


 ets Jan  8 3013,rst catse:4, boot lode:(3,3)

wdt reset
load 0x40100000, len 1386 room 16 
t`iv 4
chksul x89
load 0x3ffe8000, len 776, ro00sun.S0VSbBslo
Ai-Thioker Technology Co. Ltd.


 ets Jan  8 2013,rst cause:4, boot mode:(3,3)

wdt resetCload 0x40100000& len 13Nm
tXZj
chksu[j
load 0x3gfe8000, len 776, ro88 tain 8
chsu (S 0H2s0slo
Ai-Thinker Techoology Co. Ltd.C

 ets Jan  8 2013.rst cause:4. boot mode:,3,3)

wdt reset
load 0x40100000, feo 1396, roj
tail 4
,kkj
load 0x3ffe<000, len 7
tan
tv
!

slo
@i-Thinker Tdchnology Co/ Ltd.


 ets Jan  8 2003,rst cause;4, boot modd:(3,3)

wdt reset
l+bbbj
tain 4
chksum 8x89
load 0x3ffe8000, ldn776, room 4 
tail 4
chksum 0xe8
ld  tum! zeI 2 1
slo
Ah-Thinker TY,V. Ltd.C
s
 ets Jan  8 3013,rst cause:4, boot mode:(3,3)

wdt reset
load 0x40100000, len 1397, room 16 
tahl4
chksu[j
load 0x3ffe8000, len 776, rotsa5taumj 
 zt
n0slo
Ai-Thinker Technology Co. Ltd.


 ets Jan  8 3013,rst cause:4, boot [V'ibJj
wdt resetCload 0x40100000, len 1386 room 16 
t`iv 4
chksul x89
load 0x3ffe8000, len 776, roo[j
08
r1 
  p+slo
Ai-Thinker Technology Co. Ltd.


 ets Jan  8 2013,rst cause:4, boot mode:(3,3)

wdt reset
loXbbbj
tail 4
chksum 0|attachment](upload://nViS3BZkkNgGs9vJ1uhfi9RS4bh.jpeg) (958 KB)

Da' un'occhiata Qui

Grazie mille, è una guida davvero completa (forse la più chiara) che non avevo trovato finora, complimenti. Proverò quanto suggerito anche se mi mancano dei componenti che devo ordinare, e quindi se ne parla immagino dopo le vacanze.

Avrei però una ulteriore domanda circa l'alimentazione. Sia nel caso del regolatore di tensione+condensatori che nel caso dell'uso di un adattatore (l'ADP-01 sembra il più versatile e penso che lo proverò) l'alimentazione +5v può venire sempre da Arduino senza rischi o è meglio usare cmq una fonte esterna? In produzione il tutto dovrebbe funzionare H24.

Se dovessi usare una fonte di alimentazione esterna userei sempre l'MB102. In questo caso il circuito di alimentazione della ESP-01 deve avere la massa in comune con Arduino (come ora) o vanno bene separate?

A.

Se scambi segnali tra l'Arduino e ESP allora devono avere la massa in comune.

Scusate se mi intrometto, ma ho un problema simile che riguarda uno strano comportamento dell'ESP.
Lo sto utilizzando in modalità StandAlone per comandare una serratura elettrica. Nel circuito ho inserito un transistor TIP120 in funzione di switch. Ho programmato il modulo affinchè applichi la tensione per far commutare la serratura sul pin GPIO2. Funziona tutto, fatta eccezione per il fatto che quando alimento il circuito, i led dell'ESP (rosso e blu) rimangono fissi accesi e il firmware non viene eseguito. Sono costretto a rimuovere il collegamento tra pin GPIO e base del transistor, staccare e riattaccare l'alimentazione e, una volta avviato, reinserire il collegamento.

Avete una spiegazione? Sembra come se il modulo vada in Flash Mode se il pin GPIO2 è collegato (come indicato nello schematico allegato) all'accensione. E' solo una mia ipotesi però! Magari c'è qualcosa che mi sfugge sui collegamenti all'accensione

Vedi qua: http://www.forward.com.au/pfod/ESP8266/GPIOpins/index.html

SukkoPera:
Vedi qua: http://www.forward.com.au/pfod/ESP8266/GPIOpins/index.html

Non sai per quanto tempo ho cercato una soluzione! Quindi, se non ho capito male, una volta sistemati i collegamenti inserendo il resistore di pull-up e il transistor collegato tra Vcc e GPIO2, devo anche rivedere lo sketch, invertendone la logica. Attualmente per aprire la serratura imposto l'uscita su HIGH, per chiuderla su LOW. Ho capito bene?

Credo di sì, il transistor funge da inverter.