ESP8266 NodemCu - Error " ets Jan 8 2013,rst cause:2, boot mode:(3,7) ets_main.c

Hola Tengo un ESP8266 NodemCu - cuando le subo el archivo json + sketch lo hace perfectamente, pero en el Serial Monitor me aparece la siguiente leyenda " ets Jan 8 2013,rst cause:2, boot mode:(3,7) ets_main.c " Si me pueden ayudar. agradezco mucho, saludos

Este es el código

// Example: storing JSON configuration file in flash file system
//
// Uses ArduinoJson library by Benoit Blanchon.
// https://github.com/bblanchon/ArduinoJson
//
// Created Aug 10, 2015 by Ivan Grokhotkov.
//
// This example code is in the public domain.
#include <ArduinoJson.h>
#include "FS.h"
bool loadConfig() {
 File configFile = SPIFFS.open("/config.json", "r");
 if (!configFile) {
   Serial.println("Failed to open config file");
   return false;
 }
 size_t size = configFile.size();
 if (size > 1024) {
   Serial.println("Config file size is too large");
   return false;
 }
 // Allocate a buffer to store contents of the file.
 std::unique_ptr<char[]> buf(new char[size]);
 // We don't use String here because ArduinoJson library requires the input
 // buffer to be mutable. If you don't use ArduinoJson, you may as well
 // use configFile.readString instead.
 configFile.readBytes(buf.get(), size);
 StaticJsonBuffer<200> jsonBuffer;
 JsonObject& json = jsonBuffer.parseObject(buf.get());
 if (!json.success()) {
   Serial.println("Failed to parse config file");
   return false;
 }
 const char* serverName = json["serverName"];
 const char* accessToken = json["accessToken"];
 // Real world application would store these values in some variables for
 // later use.
 Serial.print("Loaded serverName: ");
 Serial.println(serverName);
 Serial.print("Loaded accessToken: ");
 Serial.println(accessToken);
 return true;
}
bool saveConfig() {
 StaticJsonBuffer<200> jsonBuffer;
 JsonObject& json = jsonBuffer.createObject();
 json["serverName"] = "api.example.com";
 json["accessToken"] = "128du9as8du12eoue8da98h123ueh9h98";
 File configFile = SPIFFS.open("/config.json", "w");
 if (!configFile) {
   Serial.println("Failed to open config file for writing");
   return false;
 }
 json.printTo(configFile);
 return true;
}
void setup() {
 Serial.begin(9600);
 Serial.println("");
 delay(1000);
 Serial.println("Mounting FS...");
 if (!SPIFFS.begin()) {
   Serial.println("Failed to mount file system");
   return;
 }

// if (!saveConfig()) {
  // Serial.println("Failed to save config");
 //} else {
   //Serial.println("Config saved");
 //}
if (!loadConfig()) {
   //Serial.println("Failed to load config");
} else {
   //Serial.println("Config loaded");
}
}
void loop() {
}

Lee las Normas del foro y edita tu post usando etiquetas para postear los códigos.

Lo sacaste de aquí Tutorial #8 ESP8266 – SPIFFS + JSON?

Si correcto, lo saque de ese tutorial

La placa que uso es ESP8266 NodemCu - cuando le subo el archivo json + sketch lo hace perfectamente, pero en el Serial Monitor me aparece la siguiente leyenda " ets Jan 8 2013,rst cause:2, boot mode:(3,7) ets_main.c " sin embargo la placa no esta conectada a ningún circuito externo y me pasa solamente cuando le cargo archivo json, me paso con el ejemplo del video y con otros programas que utilizan json, Por ejemplo al cargar un programa sin json funciona perfecto, Otro dato es que el Serial Monitor solo muestra la leyenda cuando lo seteo en 74880 baudio ("ets Jan 8 2013,rst cause:2, boot mode:(3,7)
"), si lo dejo en 115200 no se lee nada ("lld$$??...." ). Gracias nuevamente. Si se te ocurre algo te lo super agradezco. Mi idea es cargar el api de thingspeak en el modo AP? Si me pueden ayudar. agradezco mucho, saludos?

Te envié privado para que edites tu post incial de acuerdo a las normas. [/color]

El serial esta en 9600 para que lo seteas en 74880?

Serial.begin(9600);

surbyte:
El serial esta en 9600 para que lo seteas en 74880?

Lo que sucede es que en 9600 no se entiende nada en el monitor serial salen todos simbolos, si lo paso a 74880 se puede leer el error mencionado.
Gracias

Sinceramente no puedo creerlo.
Si se fija el Serial en 9600 el monitor Serie debe responder en 9600 no en 74880 que ademas es un valor que jamás he usado porque no esta entre las opciones de terminales RS232. Al menos en Termite que es el que yo uso.
38400
57600
115200

pero jamas 74880 de todos modos no es el caso.

Insisto... Serial.begin(9600) dice a que valor debes leer.

Asi que pasa otra cosa ahi.

He probado, a mi me funciona bien. La librería de JSON tiene que ser versión 5.X la 6 beta no compila con este código.

Asegúrate que lo haces así:

Crea el directorio data con el fichero de json y lo subes con la opción ESP8266 Sketch Data Upload.
Esto crea el sistema de ficheros y mete los ficheros que hayas puesto en el directorio data, pero no compila ni sube el programa, tienes que compilar y subir despues.

Puede ser tambien que el sistema de ficheros este mal. Si quieres 'formatearlo' ejecuta SPIFFS.format(); en el setup, y ejecútalo una vez y vuelve a subir los datos.

saludos

PD. La velocidad de 74880 es la que tiene por defecto el esp8266, durante el arranque suelta los mensajes de que tipo de reset se ha hecho, y que tipo de arranque va a hacer. Esto solo se ve si pones el terminal serie a está velocidad. Por eso yo tambien suelo cambiar en el sketch a esta velocidad, así en el arranque veo todo...

La velocidad de 74880 es la que tiene por defecto el esp8266, durante el arranque suelta los mensajes de que tipo de reset se ha hecho, y que tipo de arranque va a hacer.

NO lo sabía

Estimado harkonnen, Segui tus consejos pero no tuve éxitos.

Te detallo como lo hice:

Librería utilizada ArduinoJson.h (V5.5)

  1. Cargue el archivo config.json que se encuentra dentro de la carpeta "data" con el "ESP8266 Scketch Data Upload"

  2. Luego hice la compilación del programa para subirlo.

  3. y me sigue dando el siguiente error "ets Jan 8 2013,rst cause:2, boot mode:(3,7) ets_main.c"

Probe de formatear la memoria de la placa y me sigue dando el mismo error.

Te pego el codigoque use para formatear

#include "FS.h"

void setup() {
  Serial.begin(9600);
  Serial.println("\nVery basic Spiffs example, writing 10 lines to SPIFFS filesystem, and then read them back");
  SPIFFS.begin();
  // Next lines have to be done ONLY ONCE!!!!!When SPIFFS is formatted ONCE you can comment these lines out!!
  Serial.println("Please wait 30 secs for SPIFFS to be formatted");
  SPIFFS.format();
  Serial.println("Spiffs formatted");
}

void loop() {

  // open file for writing
  File f = SPIFFS.open("/f.txt", "w");
  if (!f) {
      Serial.println("file open failed");
  }
  Serial.println("====== Writing to SPIFFS file =========");
  // write 10 strings to file
  for (int i=1; i<=10; i++){
    f.print("Millis() : ");
    f.println(millis());
    Serial.println(millis());
  }

  f.close();

  // open file for reading
  f = SPIFFS.open("/f.txt", "r");
  if (!f) {
      Serial.println("file open failed");
  }  Serial.println("====== Reading from SPIFFS file =======");
  // write 10 strings to file
  for (int i=1; i<=10; i++){
    String s=f.readStringUntil('\n');
    Serial.print(i);
    Serial.print(":");
    Serial.println(s);
  }

  // wait a few seconds before doing it all over again
  delay(3000);
  
}

Pues no sé que te puede pasar yo tambien estoy usando nodemcu 1.0

He vuelto a compilar, config.json:

{
  "serverName": "api.example.com",
  "accessToken": "128du9as8du12eoue8da98h123ueh9h98"
}

Y esta es la salida:
ets Jan 8 2013,rst cause:2, boot mode:(3,7)
load 0x4010f000, len 1384, room 16
tail 8
chksum 0x2d
csum 0x2d
vbb28d4a3
~ld

Mounting FS...
Loaded serverName: api.example.com
Loaded accessToken: 128du9as8du12eoue8da98h123ueh9h98

En el programa cambié la velocidad a 78880 para ver todos los mensajes.
En negrita es la salida del bootloader y despues la salida del programa que, como puedes ver, monta el sistema de ficheros, abre el archivo y saca los datos...

saludos