Purchased a m5StickV - Fixed in recent firmware update.



  • @xeon No worries, I've been having issues aswell but reflashing does help



  • @ajb2k3
    the problem came back.
    i don't know how.

    :(



  • @xeon said in Purchased a m5StickV:

    @ajb2k3
    the problem came back.
    i don't know how.

    :(

    After a reflash the issue is back?
    Please email the M5Stack support people. something is defiantly not correct.



  • @ajb2k3
    i found a few work arounds.

    1. Cant turn off
      Letting the battery run out seems to solve the power button.
      As it works fine again afterward.

    2. Keeps bugging out after running a script in Maix Py ide
      Disconnect a reconnect



  • device begins doing this when fully charged.



  • Same issues here



  • @fpsychotic
    Did yours get very hot while charging?



  • @xeon said in Purchased a m5StickV:

    @fpsychotic
    Did yours get very hot while charging?

    Yes, mine does get hot
    BTW there is already a MK2 on its way.



  • Mine cant last long with battery.. I left it to charge for couple of hours and after that it worked maybe 2 minutes.. I keep it plugged into powerbank



  • @ajb2k3
    Not really and it last some time with battery.
    v2? the wifi one? if is not wifi, what is the difference and were you got?



  • @fpsychotic I've got the MK1 as the MKII isn't out yet



  • i verified it.
    after reaching 70 to 90% full battery the device wont power off.
    it just reboots.
    after going below this threshold it turns off again normally.



  • Hardmode it with dc-dc stepdown to keep battery outcome always below 70% :))



  • Well my battery is now rotten thanks to this.
    The battery life is fading very fast.

    I want a replacement.
    i bought this device to get a task done.
    it's going to.



  • @xeon have you contacted M5Stack support about this? They should be available now



  • @ajb2k3 said in Purchased a m5StickV:

    @xeon have you contacted M5Stack support about this? They should be available now

    They verified the problem and will release a fix soon.



  • @xeon said in Purchased a m5StickV:

    @ajb2k3 said in Purchased a m5StickV:

    @xeon have you contacted M5Stack support about this? They should be available now

    They verified the problem and will release a fix soon.

    Glad to hear it.



  • @ajb2k3 So far i managed to program a demo with all the source lying around thanks to our great friends here sharing.

    But there are a few source examples i'm looking for.
    i'm trying to make a program that tests as many functions and features as possible.

    import audio
    import gc
    import image
    import lcd
    import sensor
    import sys
    import time
    import utime
    import uos
    import _thread
    import pmu
    import KPU as kpu
    from fpioa_manager import *
    from machine import I2C
    from Maix import I2S, GPIO
    time.sleep(2)

    Initialize

    Lcd setup

    lcd.init()
    lcd.rotation(2)
    i2c = I2C(I2C.I2C0, freq=400000, scl=28, sda=29)

    Speaker setup

    fm.register(board_info.SPK_SD, fm.fpioa.GPIO0)
    spk_sd=GPIO(GPIO.GPIO0, GPIO.OUT)
    spk_sd.value(1) #Enable the SPK output

    fm.register(board_info.SPK_DIN,fm.fpioa.I2S0_OUT_D1)
    fm.register(board_info.SPK_BCLK,fm.fpioa.I2S0_SCLK)
    fm.register(board_info.SPK_LRCLK,fm.fpioa.I2S0_WS)

    wav_dev = I2S(I2S.DEVICE_0)

    Init battery monitor axp192

    axp = pmu.axp192()
    axp.enableADCs(True)

    Setup A and B buttons

    fm.register(board_info.BUTTON_A, fm.fpioa.GPIO1)
    but_a=GPIO(GPIO.GPIO1, GPIO.IN, GPIO.PULL_UP) #PULL_UP is required here!

    fm.register(board_info.BUTTON_B, fm.fpioa.GPIO2)
    but_b = GPIO(GPIO.GPIO2, GPIO.IN, GPIO.PULL_UP) #PULL_UP is required here!

    but_a_pressed = 0
    but_b_pressed = 0
    but_stu = 1
    cnt_f = 0

    Setup LED's

    fm.register(board_info.LED_W, fm.fpioa.GPIO3)
    led_w = GPIO(GPIO.GPIO3, GPIO.OUT) #RGBW "White" LED
    led_w.value(1) #RGBW "White" LED is Active Low

    fm.register(board_info.LED_R, fm.fpioa.GPIO4)
    led_r = GPIO(GPIO.GPIO4, GPIO.OUT) #RGBW "Red" LED
    led_r.value(1) #RGBW "Red" LED is Active Low

    fm.register(board_info.LED_G, fm.fpioa.GPIO5)
    led_g = GPIO(GPIO.GPIO5, GPIO.OUT) #RGBW "Green" LED
    led_g.value(1) #RGBW "Green" LED is Active Low

    fm.register(board_info.LED_B, fm.fpioa.GPIO6)
    led_b = GPIO(GPIO.GPIO6, GPIO.OUT) #RGBW "Blue" LED
    led_b.value(1) #RGBW #RGBW "Blue" LED is Active Low

    Define image filters

    origin = (0,0,0, 0,1,0, 0,0,0)
    edge = (-1,-1,-1,-1,8,-1,-1,-1,-1)
    sharp = (-1,-1,-1,-1,9,-1,-1,-1,-1)
    relievo = (2,0,0,0,-1,0,0,0,-1)

    Subs

    def fade_scrn(fspd,dirr): # Use backlight to fade screen dirr = dirrection 0 = in 1 = out
    for i in range(9):
    if dirr == 0:
    set_backlight(i)
    if dirr == 1:
    ti = 9 - i
    set_backlight(ti)
    time.sleep(fspd)

    def play_sound(filename,vol):
    try:
    player = audio.Audio(path = filename)
    player.volume(vol)
    wav_info = player.play_process(wav_dev)
    wav_dev.channel_config(wav_dev.CHANNEL_1, I2S.TRANSMITTER,resolution = I2S.RESOLUTION_16_BIT, align_mode = I2S.STANDARD_MODE)
    wav_dev.set_sample_rate(wav_info[1])
    while True:
    ret = player.play()
    if ret == None:
    break
    elif ret==0:
    break
    player.finish()
    except:
    pass

    def set_backlight(level): # Set backlight brightness ranges from 0 to 8
    if level > 8:
    level = 8
    if level < 0:
    level = 0
    val = (level+7) << 4
    i2c.writeto_mem(0x34, 0x91,int(val))

    def show_logo():
    led_r.value(0)
    img = image.Image("/sd/startup1.jpg")
    time.sleep(0.15)
    led_r.value(1)
    set_backlight(0)
    lcd.display(img)
    fade_scrn(0.02,0)
    led_w.value(0)
    led_b.value(0)
    play_sound("/sd/logo.wav",70)
    led_b.value(1)
    fade_scrn(0.02,1)
    img = image.Image("/sd/startup2.jpg")
    lcd.display(img)
    fade_scrn(0.02,0)
    play_sound("/sd/ding1.wav",70)
    time.sleep(2)
    led_w.value(1)

    def init_camera(): #initialize sensor
    led_b.value(0)
    led_r.value(0)
    err_counter = 0
    while 1:
    try:
    sensor.reset() # Reset sensor.
    break
    except:
    err_counter = err_counter + 1
    if err_counter == 20:
    led_r.value(0) # Led stays red if sensor failed to initialize.
    lcd.draw_string(lcd.width()//2-100,lcd.height()//2-4, "Error: Sensor Init Failed", lcd.WHITE, lcd.RED)
    time.sleep(0.1)
    continue
    led_b.value(1)
    led_r.value(1)
    led_g.value(0) # Led turns Green meaning all good.
    play_sound("/sd/ding2.wav",70)
    sensor.set_pixformat(sensor.RGB565)
    sensor.set_framesize(sensor.QVGA) #QVGA=320x240
    sensor.run(1)
    time.sleep(0.5)
    led_g.value(1)

    def show_batt_stats():
    val = axp.getVbatVoltage()
    img.draw_string(52, 60, "Bat V:" + str(val), color=(230,0,0))
    val = axp.getBatteryDischargeCurrent()
    img.draw_string(52, 72, "Bat I:" + str(val), color=(230,0,0))
    val = axp.getUSBVoltage()
    img.draw_string(52, 84, "USB V:" + str(val), color=(230,0,0))
    val = axp.getUSBInputCurrent()
    img.draw_string(52, 96, "USB I:" + str(val), color=(230,0,0))
    val = axp.getBatteryInstantWatts()
    img.draw_string(52, 108, "I W:" + str(val), color=(230,0,0))
    val = axp.getTemperature()
    img.draw_string(52, 120, "Temp*:" + str(val), color=(230,0,0))

    def apply_filter(cnt_f):
    if cnt_f==1: #cycle filters 1=edge, 2=sharp, 3=relievo, 4=origin, 0 = skip filter
    img.conv3(edge)
    img.draw_string(52,60, "edge",color=(255,0,0))
    elif cnt_f==2:
    img.conv3(sharp)
    img.draw_string(52,60, "sharp",color=(255,0,0))
    elif cnt_f==3:
    img.conv3(relievo)
    img.draw_string(52,60, "relievo",color=(255,0,0))
    elif cnt_f==4:
    img.conv3(origin) #reset filter
    img.draw_string(52,60, "origin",color=(255,0,0))
    else :
    cnt_f=0

    Main

    show_logo()

    if but_a.value() == 0: #If dont want to run the demo
    img = image.Image("/sd/startup3.jpg")
    lcd.display(img)
    print('[info]: Exit by user operation')
    fade_scrn(0.02,1)
    time.sleep(0.02)
    set_backlight(0)
    sys.exit()

    init_camera()

    Define list of classes

    classes = ['aeroplane', 'bicycle', 'bird', 'boat', 'bottle', 'bus', 'car', 'cat', 'chair', 'cow', 'diningtable', 'dog', 'horse', 'motorbike', 'person', 'pottedplant', 'sheep', 'sofa', 'train', 'tvmonitor']
    task = kpu.load("/sd/model/20class.kmodel")
    task_face = kpu.load(0x300000) # default face detection model on flash memory

    task_face = kpu.load("/sd/model/facedetect.kmodel") # you can extract the model from default .kfpkg

    anchor = (1.889, 2.5245, 2.9465, 3.94056, 3.99987, 5.3658, 5.155437, 6.92275, 6.718375, 9.01025)

    Anchor data is for bbox, extracted from the training sets.

    kpu.init_yolo2(task, 0.5, 0.3, 5, anchor)
    kpu.init_yolo2(task_face, 0.5, 0.3, 5, anchor)

    print('[info]: Started.')
    fade_scrn(0.02,1)
    img = sensor.snapshot()
    lcd.display(img)
    fade_scrn(0.02,0)
    led_g.value(1)
    green_threshold = (0, 80, -70, -10, -0, 30)

    try:
    while(True):

        img=sensor.snapshot() # Take Snapshot
    
        # Press B and A to cycle thru filters
        if but_b.value() == 0 and but_a.value() == 0 and but_b_pressed == 0:
            cnt_f=cnt_f+1
            but_b_pressed=1
            #play_sound("/sd/ding2.wav",70)
        if but_b.value() == 1 and but_a.value() == 0 and but_b_pressed == 1:
            but_b_pressed=0
            #play_sound("/sd/ding2.wav",70)
        if cnt_f==5:
            cnt_f=0
    
        apply_filter(cnt_f)
    
        gc.collect()
        code_obj = kpu.run_yolo2(task, img)
        code_face = kpu.run_yolo2(task_face, img)
        if code_obj: # object detected
            max_id = 0
            max_rect = 0
            for i in code_obj:
                img.draw_rectangle(i.rect())
                text = ' ' + classes[i.classid()] + ' (' + str(int(i.value()*100)) + '%) '
                for x in range(-1,2):
                    for y in range(-1,2):
                        img.draw_string(x+i.x(), y+i.y()+(i.h()>>1), text, color=(255,255,255), scale=1.5,mono_space=False)
                img.draw_string(i.x(), i.y()+(i.h()>>1), text, color=(255,25,25), scale=1.5,mono_space=False) #display detected object name
                id = i.classid()
                rect_size = i.w() * i.h()
                if rect_size > max_rect:
                    max_rect = rect_size
                    max_id = id
            if but_a.value() == 0 and but_b.value() == 1:
                led_w.value(0)
                play_sound("/sd/voice/en/"+str(max_id)+".wav",70)
                led_w.value(1)
    
        if code_face: # face detected
            max_id = 0
            max_rect = 0
            for i in code_face:
                img.draw_rectangle(i.rect(),color=(230,0,0))
    
        if but_b.value() == 0 and but_a.value() == 1: # press B for battery stats overlay
            show_batt_stats()
        #gc.collect()
        #blobs = img.find_blobs([green_threshold])
        #if blobs:
            #for b in blobs:
                #tmp=img.draw_rectangle(b[0:4])
                #tmp=img.draw_cross(b[5], b[6])
                #c=img.get_pixel(b[5], b[6])
        lcd.display(img)
    

    except KeyboardInterrupt:
    kpu.deinit(task)
    kpu.deinit(task_face)
    sys.exit()



  • Xeon, I've noticed pretty same problem on my stick-v today.
    Whenever I press and hold turn-off button stick reboots instead of turning off.
    In my case this happens whenever SD card is plugged in. I've removed it and everything works as intended now