Problema con ESP8266 e USB-TTL

Se qualcuno si chiede come mai questo qui apre più di un Topic o Post è perchè mi sono fatto una bella scorta di Schede,Sensori,Moduli, etc, per lavorare e creare più progetti..

Quindi tralasciando le premesse ho comprato una USB-TTL e ho montato su una ESP-01, ho provato a caricare il blink per pura prova ma dà errore durante il caricamento.

Mentre sto caricando lo sketch arrivato quasi al termine il led blu della esp lampeggia ma quando il caricamento si completa il led si spegne e mi dà questo seguente errore

error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
trying to connect
	flush start
	setting serial port timeouts to 1 ms
	setting serial port timeouts to 1000 ms
	flush complete
	espcomm_send_command: sending command header
	espcomm_send_command: sending command payload
	espcomm_send_command: receiving 2013 bytes of data
	read 0, requested 1
error: failed reading byte
warning: espcomm_send_command: cant receive slip payload data
warning: espcomm_sync failed
error: espcomm_open failed
error: espcomm_upload_mem failed
error: espcomm_upload_mem failed

Da quanto posso capire questo errore deriva dal Flash della esp che sarà impostato male,documentandomi questa esp dovrebbe avere 1M/byte di memoria quindi ho fatto molte prove tramite IDE settando diversi Flash ma senza risultato...

Questi sono i settaggi che ho impostato nell'IDE :

Scheda : "Generic ESP8266 Module"

Flash Mode : " DIO "

Flash Frequency : " 40 MHz "

CPU Frequency : " 80 MHz "

Flash Size : (ho provato da " 512K(64 SNIPPFS) fino 1M(64 SNIPPFS) " )

Debug Port : " Disabled "

Debug Livel : " Nessuno "

Reset Metod : ck

Uload Speed : " 115200 "

Programmatore : " USBtinyISP "

Secondo voi dove ho sbagliato??

Quell'adattatore USB non programma perchè non ha lo switch che collega il GPIO0 al GND

questo ce l'ha

immaginavo leggendo il tuo blog che era un problema con la GPlOO... cercherò di acquistarlo ma appena ho tempo lo programmo con uno dei tuoi esempi del blog...

Puoi sempre modificare quello che hai.
Ci saldi due fili che vanno a uno switch

si può fare, quindi vedo sulla USB-TTL quali sono i pin della esp GPlOO e GND e saldo i due fili dello swich in corrispondenza dietro lo spinotto...giusto?

giusto

Sempre grazie

ho saldato lo switch... correggimi se sbaglio

tengo premuto il pulsante, inserisco la usb-ttl con la esp8266 nel computer dopo qualche secondo lascio il pulsante e posso caricare uno sketch???

cicciozuc:
tengo premuto il pulsante, inserisco la usb-ttl con la esp8266 nel computer dopo qualche secondo lascio il pulsante e posso caricare uno sketch???

OK facendo così mi carica lo sketch, funziona.. Però ho una domanda:

se carico una web server per accendere due relè su quale pin della esp devo collegare l'uscita dei relè, GPIO0 e GPIO2 sono Output ?

Se gli ingressi del relè non vanno verso il Ground, uno qualsiasi dei due, altrimenti è meglio il GPIO2

brunello22:
Se gli ingressi del relè non vanno verso il Ground, uno qualsiasi dei due, altrimenti è meglio il GPIO2

capito

Ho caricato un webserver sulla esp apro il seriale e si connette rilasciandomi l'indirizzo IP, ma quando apro una pagina web con l'indirizzo che mi ha dato la pagina risulta non funzionante e sulla seriale ricevo questo

GET / HTTP/1.1
invalid request
new client

Sai cosa cè di sbagliato?

#include <ESP8266WiFi.h>

const char* ssid = "00000000000";
const char* password = "111111111";

// Create an instance of the server
// specify the port to listen on as an argument
WiFiServer server(80);

void setup() {
  Serial.begin(115200);
  delay(10);

  // prepare GPIO2
  pinMode(2, OUTPUT);
  digitalWrite(2, 0);
  
  // Connect to WiFi network
  Serial.println();
  Serial.println();
  Serial.print("Connecting to ");
  Serial.println(ssid);
  
  WiFi.begin(ssid, password);
  
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");
  }
  Serial.println("");
  Serial.println("WiFi connected");
  
  // Start the server
  server.begin();
  Serial.println("Server started");

  // Print the IP address
  Serial.println(WiFi.localIP());
}

void loop() {
  // Check if a client has connected
  WiFiClient client = server.available();
  if (!client) {
    return;
  }
  
  // Wait until the client sends some data
  Serial.println("new client");
  while(!client.available()){
    delay(1);
  }
  
  // Read the first line of the request
  String req = client.readStringUntil('\r');
  Serial.println(req);
  client.flush();
  
  // Match the request
  int val;
  if (req.indexOf("/gpio/0") != -1)
    val = 0;
  else if (req.indexOf("/gpio/1") != -1)
    val = 1;
  else {
    Serial.println("invalid request");
    client.stop();
    return;
  }

  // Set GPIO2 according to the request
  digitalWrite(2, val);
  
  client.flush();

  // Prepare the response
  String s = "HTTP/1.1 200 OK\r\nContent-Type: text/html\r\n\r\n<!DOCTYPE HTML>\r\n<html>\r\nGPIO is now ";
  s += (val)?"high":"low";
  s += "</html>\n";

  // Send the response to the client
  client.print(s);
  delay(1);
  Serial.println("Client disonnected");

  // The client will actually be disconnected 
  // when the function returns and 'client' object is detroyed
}

Mi sembra che nell’ssid Devi mettere il nome del tuo modem e nella password sempre quella del modem

Mattia1989:
Mi sembra che nell’ssid Devi mettere il nome del tuo modem e nella password sempre quella del modem

Quello lo ha sicuramente fatto, altrimenti neanche si connetteva ... ::slight_smile:
Per ragioni di sicurezza, nel codice che ha pubblicato ha messo dei caratteri a caso.

Guglielmo

piccolo trick.... per chi serve :slight_smile:
nella stessa cartella del file .ino del progetto inserite un file chiamato ad esempio pswMioProgetto.h
nel quale vengono inserite le varie chavi

#define SECRET_SSID "NETGEAR"
#define SECRET_PASS "AmnDfc014Gght"
#define SECRET_TOKEN "123456682:AAEWW_feUBgdd4V46ag4HCFHK8UExToU"

e così via

poi nel file di programma si inserisce l'include di questo file

#include "pswMioProgetto.h"    //<-- file con le password
#include <ESPTelegramBOT.h>
// Comment this line in "ESPTelegramBOT.h" if you don't want debug messages
// #define DEBUG_BOT 

const char* ssid = SECRET_SSID;      // <-- password inserite nel file .h
const char* password = SECRET_PASS;

così non c'è più bisogno di modificare nulla per la pubblicazione...
:wink:

buona, non ci avevo pensato, io quelle cose me le sono parametrizzate su file.txt
idea rubata, ti devo un caffe'