8000 ESP8266 Crashing! · Issue #9097 · esp8266/Arduino · GitHub
[go: up one dir, main page]

Skip to content
ESP8266 Crashing! #9097
Open
Open
@e-caliskan

Description

@e-caliskan

Platform

  • Hardware: ESP-12
  • Core Version: ??
  • Development Env: Arduino IDE
  • Operating System: Windows

Settings in IDE

  • Module: Generic ESP8266 Module
  • Flash Mode: DOUT
  • Flash Size: 1MB
  • lwip Variant: v2 Lower Memory
  • Reset Method: dtr(aka nodemcu)
  • Flash Frequency: 40Mhz
  • CPU Frequency: 80Mhz
  • Upload Using: SERIAL
  • Upload Speed: 921600

Problem Description

what's the problem? please help

#include "config.h"

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

  pinMode(TRIGGER_PIN, INPUT);
  pinMode(wifiLed, OUTPUT);
  pinMode(relayPin, OUTPUT);
  pinMode(webSocketLed, OUTPUT);

  digitalWrite(wifiLed, HIGH);
  digitalWrite(relayPin, LOW);
  digitalWrite(webSocketLed, LOW);

  // Bağlantı denemesi
  // WiFi.begin("mezopotamya", "password");
  WiFi.begin();

  // Bağlantı sağlanana kadar bekleyin
  int baglantiDenemesi = 0;
  while (WiFi.status() != WL_CONNECTED)
  {
    wifiLedUpdate();
    delay(1000);
    Serial.println("Bağlanılamadı. ");
    // startWiFiManager();
    if (baglantiDenemesi > 30)
    {
      baglantiDenemesi = 0;
      Serial.println("Bağlantı başarısız. WiFi Manager başlatılıyor...");
      // ESP.eraseConfig();
      delay(200);
      startWiFiManager();
      break;
    }
    baglantiDenemesi++;
  }
  Serial.println("Bağlantı başarılı!");

  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
}

void loop()
{
  if (WiFi.status() != WL_CONNECTED)
  {
    digitalWrite(wifiLed, HIGH);
    Serial.println("WiFi connection lost. Reconnecting...");
    wifiReconnect();
  }
  else
  {
    digitalWrite(wifiLed, LOW);
  }
  // Programın ana döngüsü
  resetButton();

  if (!client.connected())
  {
    reconnect();
  }

  if (client.connected() && onlineBildirimZamani + 10000 < millis())
  {
    Serial.println("Online oldugu mesaji gonderiliyor...");
    client.publish("home/kombi/available", "online");
    onlineBildirimZamani = millis();
  }

  client.loop();
  // delay(1000);
  if (yeniVeri)
  {
    yeniVeri = false;
    // Control the relay based on temperature comparison
    if (sonDurum == 1 && veriGuncelmi() && digitalRead(relayPin) == LOW)
    {
      sonAcilma = zaman();
      // Kombiyi aç
      digitalWrite(relayPin, HIGH);
      Serial.println("Kombi opened");
      client.publish("home/kombi", "1");
    }

    else if (sonDurum == 0)
    {
      sonKapanma = zaman();
      // Kombiyi kapat
      digitalWrite(relayPin, LOW);
      Serial.println("Kombi closed");
      client.publish("home/kombi", "0");
    }
  }

  if (!veriGuncelmi())
  {
    if (digitalRead(relayPin) == HIGH)
    {
      sonKapanma = zaman();
      // Kombiyi kapat
      digitalWrite(relayPin, LOW);
      Serial.println("Kombi closed");
      client.publish("home/kombi", "0");
    }
  }
}
#include <ESP8266WiFi.h>
#include <DNSServer.h>
#include <ESP8266WebServer.h>
#include <WiFiManager.h>

#include <PubSubClient.h>
#include <ArduinoJson.h>

const char *mqtt_server = "192.168.0.19";
const char *mqtt_username = "mqtt_user";
const char *mqtt_password = "12345";
const char *topic = "home/kombi/set";

float mevcutSicaklik = 0.0;
unsigned int sonDurum = 0;
float istenilenSicaklik = 0.0;
float tolerasDegeri = 0.0;
int maxCalisacakSure = 0;
long sonAcilma = 0;
long sonKapanma = 0;
int sonVeriOkunmaZamani = 0;
int verininGecerlilikSuresi = 60;
unsigned int onlineBildirimZamani = 0;
bool yeniVeri = false;

const int relayPin = 4;     // 4 numaralı pin
const int wifiLed = 2;      // 4 numaralı pin
const int webSocketLed = 5; // 4 numaralı pin

WiFiClient espClient;
PubSubClient client(espClient);

#define TRIGGER_PIN 0


void wifiLedUpdate()
{
    if (WiFi.status() == WL_CONNECTED)
    {
        Serial.println("\nwifiLed LOW");
        digitalWrite(wifiLed, LOW);
    }
    else
    {
        Serial.println("\nwifiLed HIGH");
        digitalWrite(wifiLed, HIGH);
    }
}

int zaman()
{
    return millis() / 1000;
}

void startWiFiManager()
{
    WiFiManager wm;
    Serial.println("WiFi Manager ile bağlantı sağlandı!");
    wm.setConfigPortalTimeout(30); // auto close configportal after n seconds
    bool res;
    res = wm.autoConnect(); // auto generated AP name from chipid
    if (!res)
    {
        Serial.println("Failed to connect or hit timeout. Restarting");
        ESP.restart();
    }
    else
    {
        // if you get here you have connected to the WiFi
        Serial.println("connected...yeey :)");
    }
}

void reconnect()
{
    int mqtt_baglanti_deneme_sayisi = 0;
    while (!client.connected())
    {
        if (mqtt_baglanti_deneme_sayisi > 5)
        {
            ESP.reset();
        }

        mqtt_baglanti_deneme_sayisi++;
        Serial.print("Attempting MQTT connection...");

        if (client.connect("ESP8266Client", mqtt_username, mqtt_password))
        {
            digitalWrite(webSocketLed, HIGH);
            Serial.println("Connected to MQTT broker");
            client.subscribe(topic);
        }
        else
        {
            digitalWrite(webSocketLed, LOW);
            Serial.print("Failed, rc=");
            Serial.print(client.state());
            Serial.println(" Retrying in 5 seconds");
            delay(5000);
        }
    }
}

void callback(char *topic, byte *payload, unsigned int length)
{
    Serial.println("Message arrived in topic: " + String(topic));

    // Mesajı bir String'e çevir
    String message = "";
    for (unsigned int i = 0; i < length; i++)
    {
        message += (char)payload[i];
    }

    Serial.println("Message: " + message);

    // "home/kombi/set" konusundaki mesajları kontrol et
    if (String(topic) == "home/kombi/set")
    {
        yeniVeri = true;
        if (message == "1")
        {
            sonVeriOkunmaZamani = zaman();
            sonDurum = 1;
        }
        else if (message == "0")
        {
            sonVeriOkunmaZamani = zaman();
            sonDurum = 0;
        }
    }
}

// void callback(char *topic, byte *payload, unsigned int length)
// {
//     Serial.println("Message received for topic: " + String(topic));
//     Serial.println(int(payload));

//     // // Parse JSON payload
//     DynamicJsonDocument doc(256);
//     deserializeJson(doc, payload, length);
//     power = doc["power"];
//     Serial.println(power);

// mevcutSicaklik = doc["mevcut_sicaklik"];
// istenilenSicaklik = doc["istenilen_sicaklik"];
// tolerasDegeri = doc["tolerans_degeri"];

// Serial.print("Mevcut Sıcaklık: ");
// Serial.println(mevcutSicaklik);
// Serial.print("İstenilen Sıcaklık: ");
// Serial.println(istenilenSicaklik);
// Serial.print("tolerasDegeri: ");
// Serial.println(tolerasDegeri);
// sonVeriOkunmaZamani = zaman();
// }

void resetButton()
{
    // check for button press
    if (digitalRead(TRIGGER_PIN) == LOW)
    {
        // poor mans debounce/press-hold, code not ideal for production
        delay(50);
        if (digitalRead(TRIGGER_PIN) == LOW)
        {
            Serial.println("Button Pressed");
            // still holding button for 3000 ms, reset settings, code not ideaa for production
            delay(3000); // reset delay hold
            if (digitalRead(TRIGGER_PIN) == LOW)
            {
                Serial.println("Button Held");
                Serial.println("Erasing Config, restarting");
                // ESP.eraseConfig();
                delay(500);
                ESP.restart();
            }
        }
    }
}

bool veriGuncelmi()
{
    if ((sonVeriOkunmaZamani + verininGecerlilikSuresi) < zaman())
    {
        return false;
    }
    return true;
}

void wifiReconnect()
{
    Serial.println("Connecting to WiFi...");

    // WiFi bağlantısını başlat
    WiFi.begin();

    int attempts = 0;
    while (WiFi.status() != WL_CONNECTED && attempts < 60)
    {
        wifiLedUpdate();
        delay(500);
        Serial.print(".");
        attempts++;
    }
    if (attempts > 60)
    {
        Serial.println("\nESP Reseting...");
        ESP.reset();
    }

    if (WiFi.status() == WL_CONNECTED)
    {
        Serial.println("\nConnected to WiFi");
        wifiLedUpdate();
    }
    else
    {
        Serial.println("\nFailed to connect to WiFi. Please check your credentials.");
    }
}


Debug Messages


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

wdt reset
load 0x4010f000, len 3424, room 16 
tail 0
chksum 0x2e
load 0x3fff20b8, len 40, room 8 
tail 0
chksum 0x2b
csum 0x2b
v000717e0
~ld


Hardware WDT reset


>>>stack>>>

ctx: sys
sp: 3fffeb30 end: 3ffffd30 offset: 0000
3fffeb30:  3ffede50 3fffebe0 3ffee4e0 00000016  
3fffeb40:  40238a00 3fffebe0 3ffee388 3ffedd8c  
3fffeb50:  40238a61 3fffebe0 3fffebe0 40100caa  
3fffeb60:  6f7a656d 61746f70 0061796d 40100caa  
3fffeb70:  00002200 3ffe862c 3ffefbe8 40100caa  
3fffeb80:  40234d59 3ffe862c 0000001c 40100f04  
[...(stripped)]
<<<stack<<<


Hardware WDT Stack Dump - enabled

⸮⸮






Decode Debug Messages

Decoding stack results
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100f04: umm_malloc_core(umm_heap_context_t*, size_t) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_local.c line 47
0x40215812: loop_task(ETSEvent*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 273
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x4021f0b5: _printf_i at /workdir/repo/newlib/newlib/libc/stdio/nano-vfprintf_i.c line 194
0x40100830: _write_r(_reent*, int, char*, int) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\libc_replacements.cpp line 92
0x402249a9: _fflush_r at /workdir/repo/newlib/newlib/libc/stdio/fflush.c line 278
0x40224599: __swbuf_r at /workdir/repo/newlib/newlib/libc/stdio/wbuf.c line 81
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x401002c1: millis() at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_wiring.cpp line 176
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100164: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 236
0x402011d8: callback(char*, unsigned char*, unsigned int) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266/WString.h line 115
0x4020272a: WiFiClient::available() at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266WiFi\src\WiFiClient.cpp line 254
0x40211288: PubSubClient::loop() at C:\Users\KABUK\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.cpp line 387
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238

Decode Debug Messages 2

Decoding stack results
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100caa: check_poison_block(umm_block*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_poison.c line 86
0x40100f04: umm_malloc_core(umm_heap_context_t*, size_t) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\umm_malloc/umm_local.c line 47
0x40215812: loop_task(ETSEvent*) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 273
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x40202b00: WiFiClient::connected() at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266WiFi\src\WiFiClient.cpp line 329
0x40100178: ets_post(uint8, ETSSignal, ETSParam) at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 238
0x4020272a: WiFiClient::available() at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\libraries\ESP8266WiFi\src\WiFiClient.cpp line 254
0x40211288: PubSubClient::loop() at C:\Users\KABUK\Documents\Arduino\libraries\PubSubClient\src\PubSubClient.cpp line 387
0x4020173f: loop() at D:\Users\Google Drive\Akıllı Ev\HomeAsisstant\Moduller\TermostatV2_Arduino/TermostatV2_Arduino.ino line 65
0x40215ab8: loop_wrapper() at C:\Users\KABUK\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\3.1.2\cores\esp8266\core_esp8266_main.cpp line 258

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0