I'm testing the ENVPro and M5Station for a video guide but between 30 mins and an hour the Station resets with the rolling error log:
E (2903049) mqtt_client: Error create mqtt task
E (2918550) mqtt_client: esp_mqtt_set_config(415): Memory exhausted
E (2918551) event: event_loop was NULL
A fatal error occurred. The crash dump printed below may be used to help
determine what caused it. If you are not already running the most recent
version of MicroPython, consider upgrading. New versions often fix bugs.
To learn more about how to debug and/or report this crash visit the wiki
page at: https://github.com/micropython/micropython/wiki/ESP32-debugging
MPY version : v1.24.0-dirty on 2025-01-18
IDF version : v5.2.2-dirty
Machine : M5STACK Station with ESP32
Guru Meditation Error: Core 1 panic'ed (LoadProhibited). Exception was unhandled.
Core 1 register dump:
PC : 0x4016dee7 PS : 0x00060030 A0 : 0x8010d60f A1 : 0x3ffd24b0
A2 : 0x3ffe1d40 A3 : 0xffffffff A4 : 0x40111be4 A5 : 0x00000000
A6 : 0x3f4073a4 A7 : 0x00000000 A8 : 0x00000000 A9 : 0x3ffd2460
A10 : 0x002c8356 A11 : 0x3f435f7c A12 : 0xffffffff A13 : 0x40111be4
A14 : 0x00000000 A15 : 0x00001000 SAR : 0x0000000a EXCCAUSE: 0x0000001c
EXCVADDR: 0x00000000 LBEG : 0x40083b51 LEND : 0x40083b59 LCOUNT : 0x00000027
Backtrace: 0x4016dee4:0x3ffd24b0 0x4010d60c:0x3ffd24d0 0x401125a1:0x3ffd26a0
ELF file SHA256: 041d1f64b
Rebooting...
ets Jul 29 2019 12:21:46
rst:0xc (SW_CPU_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0030,len:5128
load:0x40078000,len:15884
ho 0 tail 12 room 4
load:0x40080400,len:4
load:0x40080404,len:3696
entry 0x400805c4
_ __ _
_ _(_)/ _| | _____ __
| | | | | |_| |/ _ \ \ /\ / /
| |_| | | _| | (_) \ V V /
\__,_|_|_| |_|\___/ \_/\_/ V2.2.1
E (2100) i2c: i2c driver install error
E (2116) time: The current date/time in Shanghai is: Fri Nov 30 20:13:11 2001
E (2978) i2c: i2c driver install error
E (431156) mqtt_client: No PING_RESP, disconnected
E (542578) mqtt_client: No PING_RESP, disconnected
E (573085) esp-tls: [sock=54] select() timeout
E (573085) transport_base: Failed to open a new connection: 32774
E (573086) mqtt_client: Error transport connect
E (573091) M5Things: Last error reported from esp-tls: 0x8006
E (610673) mqtt_client: No PING_RESP, disconnected
E (642541) mqtt_client: No PING_RESP, disconnected
E (764053) mqtt_client: No PING_RESP, disconnected
I've tried enabling gc (garbage collection) to clear the memory each loop but it make no difference and if you check out my code I don't have any MQTT function enabled!
import os, sys, io
import M5
from M5 import *
from hardware import I2C
from hardware import Pin
from unit import ENVPROUnit
from hardware import RGB
import time
label0 = None
rect0 = None
label3 = None
label1 = None
label2 = None
i2c0 = None
rgb = None
envpro_0 = None
def setup():
global label0, rect0, label3, label1, label2, i2c0, rgb, envpro_0
M5.begin()
label0 = Widgets.Label("label0", -3, 10, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18)
rect0 = Widgets.Rectangle(-1, 111, 30, 20, 0x000000, 0xffffff)
label3 = Widgets.Label("label3", -1, 60, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18)
label1 = Widgets.Label("label1", -1, 35, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18)
label2 = Widgets.Label("label2", -1, 87, 1.0, 0xffffff, 0x000000, Widgets.FONTS.DejaVu18)
import gc
i2c0 = I2C(0, scl=Pin(33), sda=Pin(32), freq=100000)
envpro_0 = ENVPROUnit(i2c0)
rgb = RGB()
rect0.setColor(color=0x000000, fill_c=0x33cc00)
def loop():
global label0, rect0, label3, label1, label2, i2c0, rgb, envpro_0
M5.update()
gc.collect()
label0.setText(str((str('Temperature: ') + str((envpro_0.get_temperature())))))
label1.setText(str((str('Pressure: ') + str((envpro_0.get_pressure())))))
label2.setText(str((str('Humidity: ') + str((envpro_0.get_humidity())))))
label3.setText(str((str('Gas RES: ') + str((envpro_0.get_gas_resistance())))))
if (envpro_0.get_humidity()) > 60:
rgb.set_color(6, 0x3333ff)
rect0.setColor(color=0x330033, fill_c=0x3333ff)
else:
rgb.set_color(6, 0x33cc00)
rect0.setColor(color=0x330033, fill_c=0x33cc00)
rect0.setSize(w=((int(envpro_0.get_humidity())) * 2), h=20)
time.sleep(5)
if __name__ == '__main__':
try:
setup()
while True:
loop()
except (Exception, KeyboardInterrupt) as e:
try:
from utility import print_error_msg
print_error_msg(e)
except ImportError:
print("please update to latest firmware")
I'm at a loss here and wondering if this is a firmware issue.