Purchased a m5StickV - Fixed in recent firmware update.
-
@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 outputfm.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 = 0Setup 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 Lowfm.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 Lowfm.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 Lowfm.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 LowDefine 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:
passdef 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=0Main
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 memorytask_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 -
@thrasher
latest Firmware fixes this.http://forum.m5stack.com/topic/1403/m5stickv-firmware_1017-upgrade
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login