Navigation

    M5Stack Community

    • Register
    • Login
    • Search
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Groups
    • Search
    1. Home
    2. Efried
    3. Topics
    E
    • Continue chat with Efried
    • Start new chat with Efried
    • Flag Profile
    • Profile
    • Following
    • Followers
    • Blocks
    • Topics
    • Posts
    • Best
    • Groups

    Topics created by Efried

    • E

      Brocken Stick
      M5 Stick/StickC • • Efried

      3
      0
      Votes
      3
      Posts
      2445
      Views

      have you set it in usb mode? it seems to keep changing often how you change to usb mode on stickC, but generally if you mash some buttons when it starts up you should se different options
    • E

      New but unusable
      M5 Stick/StickC • • Efried

      2
      0
      Votes
      2
      Posts
      1866
      Views

      @efried https://docs.m5stack.com/#/en/quick_start/m5stickc/m5stickc_quick_start_with_uiflow See the section titled USB programming mode. There you will find instructions to get the device into USB mode. “Click the power button on the left side of the device to restart, after entering the menu, quickly click the right button to select USB mode.”
    • E

      Guidance on operatinal mode
      UIFlow • • Efried

      1
      0
      Votes
      1
      Posts
      1834
      Views

      No one has replied

    • E

      How to save data to SD-card
      Bug Report • • Efried

      3
      0
      Votes
      3
      Posts
      3344
      Views

      E

      Would you mind adding some indication about control characters there, like "\r\n" Please recognize that you promised fast prototyping using the M5Stack but now it is clear that: it is cumbersome, because the high level uiflow functions are not documented, and no working examples in micropython given to validate the high level functions the combination of modules was not testet (ok a lot of variants) the physical design has some flaws - the screen may brake when assembling, disassembling needs force - may be you may invent a receptacle with unlocking lever Do you have a standard before selling modules for quality control, and a test plan?
    • E

      Avoid M5Stack - it is a waste of time
      Bug Report • • Efried

      13
      0
      Votes
      13
      Posts
      10147
      Views

      G

      @felmue said in Avoid M5Stack - it is a waste of time: Hello @Efried I think you might be correct, both modules seem to use UART2 (GPIO16 / GPIO17) to communicate. I am afraid you'll need to use a different UART port for one of the modules in order to have both working at the same time. The GPS module is already prepared for that. Please have a look here: https://docs.m5stack.com/#/en/module/gps Felix ... this is the same with the M5GO CHG Base.
    • E

      Snap in fixture?
      Cores • • Efried

      3
      0
      Votes
      3
      Posts
      2731
      Views

      @efried said in Snap in fixture?: I can't find such in the webshop. https://www.thingiverse.com/thing:3133893 thanks This isn't an M5Stack product, that is a user created free to download addon that needs 3D Printing.
    • E

      GPRS on SIM800L
      Micropython • • Efried

      1
      0
      Votes
      1
      Posts
      1756
      Views

      No one has replied

    • E

      PYP SIM800L
      UIFlow • • Efried

      4
      0
      Votes
      4
      Posts
      3358
      Views

      E

      Nothing spectacular either trials via module or the example do not work what is the order to initiate GPRS transmition - upload to a server? This second attempt throws name 'pyb' isn't defined from m5stack import * from m5ui import * from uiflow import * import module setScreenColor(0x222222) Driver for SIM800L module (using AT commands) MIT License; Copyright (c) 2017 Jeffrey N. Magee https://github.com/jeffmer/micropython-upyphone import math kludge required because "ignore" parameter to decode not implemented def convert_to_string(buf): try: tt = buf.decode('utf-8').strip() return tt except UnicodeError: tmp = bytearray(buf) for i in range(len(tmp)): if tmp[i]>127: tmp[i] = ord('#') return bytes(tmp).decode('utf-8').strip() class SIM800LError(Exception): pass def check_result(errmsg,expected,res): if not res: res = 'None' #print(errmsg+res) if not expected == res and not res == 'None': raise SIM800LError('SIM800L Error {} {}'.format(errmsg,res)) class SIM800L: def __init__(self,uartno): # pos =1 or 2 depending on skin position self._uart = pyb.UART(uartno, 9600, read_buf_len=2048) self.incoming_action = None self.no_carrier_action = None self.clip_action = None self._clip = None self.msg_action = None self._msgid = 0 self.savbuf = None self.credit = '' self.credit_action = None def callback_incoming(self,action): self.incoming_action = action def callback_no_carrier(self,action): self.no_carrier_action = action def callback_clip(self,action): self.clip_action = action def callback_credit_action(self,action): self.credit_action = action def get_clip(self): return self._clip def callback_msg(self,action): self.msg_action = action def get_msgid(self): return self._msgid def command(self, cmdstr, lines=1, waitfor=500, msgtext=None): #flush input #print(cmdstr) while self._uart.any(): self._uart.readchar() self._uart.write(cmdstr) if msgtext: self._uart.write(msgtext) # if waitfor>1000: # pyb.delay(waitfor-1000) buf=self._uart.readline() #discard linefeed etc #print(buf) buf=self._uart.readline() #print(buf) if not buf: return None result = convert_to_string(buf) if lines>1: self.savbuf = '' for i in range(lines-1): buf=self._uart.readline() if not buf: return result #print(buf) buf = convert_to_string(buf) if not buf == '' and not buf == 'OK': self.savbuf += buf+'\n' return result def setup(self): self.command('ATE0\n') # command echo off self.command('AT+CRSL=99\n') # ringer level self.command('AT+CMIC=0,10\n') # microphone gain self.command('AT+CLIP=1\n') # caller line identification self.command('AT+CMGF=1\n') # plain text SMS self.command('AT+CALS=3,0\n') # set ringtone self.command('AT+CLTS=1\n') # enabke get local timestamp mode self.command('AT+CSCLK=0\n') # disable automatic sleep def wakechars(self): self._uart.write('AT\n') # will be ignored # pyb.delay(100) def sleep(self,n): self.command('AT+CSCLK={}\n'.format(n)) def sms_alert(self): self.command('AT+CALS=1,1\n') # set ringtone # pyb.delay(3000) self.command('AT+CALS=3,0\n') # set ringtone def call(self,numstr): self.command('ATD{};\n'.format(numstr)) def hangup(self): self.command('ATH\n') def answer(self): self.command('ATA\n') def set_volume(self,vol): if (vol>=0 and vol<=100): self.command('AT+CLVL={}\n'.format(vol)) def signal_strength(self): result = self.command('AT+CSQ\n',3) if result: params=result.split(',') if not params[0] == '': params2 = params[0].split(':') if params2[0]=='+CSQ': x = int(params2[1]) if not x == 99: return(math.floor(x/6+0.5)) return 0 def battery_charge(self): result = self.command('AT+CBC\n',3,1500) if result: params=result.split(',') if not params[0] == '': params2 = params[0].split(':') if params2[0]=='+CBC': return int(params[1]) return 0 def network_name(self): result = self.command('AT+COPS?\n',3) if result: params=result.split(',') if not params[0] == '': params2 = params[0].split(':') if params2[0]=='+COPS': if len(params)>2: names = params[2].split('"') if len(names)>1: return names[1] return '' def read_sms(self,id): result = self.command('AT+CMGR={}\n'.format(id),99) if result: params=result.split(',') if not params[0] == '': params2 = params[0].split(':') if params2[0]=='+CMGR': number = params[1].replace('"',' ').strip() date = params[3].replace('"',' ').strip() time = params[4].replace('"',' ').strip() return [number,date,time,self.savbuf] return None def send_sms(self,destno,msgtext): result = self.command('AT+CMGS="{}"\n'.format(destno),99,5000,msgtext+'\x1A') if result and result=='>' and self.savbuf: params = self.savbuf.split(':') if params[0]=='+CUSD' or params[0] == '+CMGS': return 'OK' return 'ERROR' def check_credit(self): self.command('AT+CUSD=1,"*100#"\n') def get_credit(self): return self.credit def delete_sms(self,id): self.command('AT+CMGD={}\n'.format(id),1) def date_time(self): result = self.command('AT+CCLK?\n',3) if result: if result[0:5] == "+CCLK": return result.split('"')[1] return '' def check_incoming(self): if self._uart.any(): buf=self._uart.readline() # print(buf) buf = convert_to_string(buf) params=buf.split(',') if params[0] == "RING": if self.incoming_action: self.incoming_action() elif params[0][0:5] == "+CLIP": params2 = params[0].split('"') self._clip = params2[1] if self.clip_action: self.clip_action() elif params[0][0:5] == "+CMTI": self._msgid = int(params[1]) if self.msg_action: self.msg_action() elif params[0][0:5] == "+CUSD": if len(params)>1: st = params[1].find('#') en = params[1].find('.',st) en = params[1].find('.',en+1) if st>0 and en>0: self.credit = '£'+params[1][st+1:en] if self.credit_action: self.credit_action() elif params[0] == "NO CARRIER": self.no_carrier_action() # http get command using gprs def http_get(self,url,apn="giffgaff.com"): resp = None rstate = 0 proto, dummy, surl = url.split("/", 2) is_ssl = 0 if proto == "http:": is_ssl = 0 elif proto == "https:": is_ssl == 1 else: raise ValueError("Unsupported protocol: " + proto) try: # open bearer context res = self.command('AT+SAPBR=3,1,"Contype","GPRS"\n') check_result("SAPBR 1: ",'OK',res) res = self.command('AT+SAPBR=3,1,"APN","{}"\n'.format(apn)) check_result("SAPBR 2: ",'OK',res) res = self.command('AT+SAPBR=1,1\n',1,2000) check_result("SAPBR 3: ",'OK',res) # now do http request res = self.command('AT+HTTPINIT\n',1) check_result("HTTPINIT: ",'OK',res) res = self.command('AT+HTTPPARA="CID",1\n') check_result("HTTPPARA 1: ",'OK',res) res = self.command('AT+HTTPPARA="URL","{}"\n'.format(surl)) check_result("HTTPPARA 2: ",'OK',res) res = self.command('AT+HTTPSSL={}\n'.format(is_ssl)) check_result("HTTPSSL: ",'OK',res) res = self.command('AT+HTTPACTION=0\n') check_result("HTTPACTION: ",'OK',res) for i in range(20): #limit wait to max 20 x readline timeout buf = self._uart.readline() if buf and not buf==b'\r\n': buf = convert_to_string(buf) #print(buf) prefix,retcode,bytes = buf.split(',') rstate = int(retcode) nbytes = int(bytes) break res = self.command('AT+HTTPREAD\n',1) buf = self._uart.read(nbytes) check_result("HTTPACTION: ",'+HTTPREAD: {}'.format(nbytes),res) if buf[-4:] == b'OK\r\n': # remove final OK if it was read buf = buf[:-4] resp = Response(buf) except SIM800LError as err: print(str(err)) self.command('AT+HTTPTERM\n',1) # terminate HTTP task self.command('AT+SAPBR=0,1\n',1) # close Bearer context return resp def test(self): r = self.http_get('http://exploreembedded.com/wiki/images/1/15/Hello.txt') print(r.text) class Response: def __init__(self, buf, status = 200): self.encoding = "utf-8" self._cached = buf self.status = status def close(self): self._cached = None @property def content(self): return self._cached @property def text(self): return str(self.content, self.encoding) def json(self): import ujson return ujson.loads(self.content) phone = SIM800L(1) print(phone.signal_strength())
    • E

      Please check the m5stack firmware 1.4.4.
      Bug Report • • Efried

      2
      0
      Votes
      2
      Posts
      2425
      Views

      please create an issue on https://github.com/m5stack/UiFlow-Bug-Report this will hopefully make it more visible to the engineers. However be aware it is chinese new year holiday now so it may be a week or two before the issue gets looked into
    • E

      1.4.4. and no over the air upload?
      M5stack Grey • • Efried

      2
      0
      Votes
      2
      Posts
      2051
      Views

      Hi @Efried did you try erasing the flash and going back to 1.4.3? sorry about the issues with version 1.4.4 it will be resolved soon
    • E

      how to detect faulty device
      Bug Report • • Efried

      5
      0
      Votes
      5
      Posts
      4098
      Views

      E

      Now the m5stack is dead and I took the white one instead for the Pm25 module. The first attempt was not entirely successful since JSON was sent as field Nr. 0 in an array... Only after updating to UIFlow 1.4.3 it works as expected - let's see if the ENOMEM error will come back...
    • E

      catch network problem
      Micropython • • Efried

      4
      0
      Votes
      4
      Posts
      3976
      Views

      D

      I think that I'm running into something similar: When RUN from visual studio, it works great, but when I disconnect it and start standalone, it hangs shortly after connecting to WiFi. It seems that I can do one more print, and that's it.
    • E

      Experience with OBD bridge?
      General • • Efried

      3
      0
      Votes
      3
      Posts
      3088
      Views

      There is nice project with you could easy googl https://github.com/stanleyhuangyc/ArduinoOBD/ M5 is arduino capable so its not a big deal. Under arduino you can use BT for get all from BT OBD hw.
    • E

      Not recommended
      M5GO • • Efried

      23
      0
      Votes
      23
      Posts
      39163
      Views

      thanks your recommended , we was fix this issues .
    • E

      COM Problems -> SD Card -> GET/POST
      M5Stack Fire • • Efried

      3
      0
      Votes
      3
      Posts
      2816
      Views

      Hi @Efried are you using micropython/uiflow firmware or arduino? make sure you have installed the cp210x drivers first if you haven't already https://m5stack.com/pages/download I made a few simple tutorials on hackster.io to get started with http requests, hope they can be of use to you. https://www.hackster.io/lukasmaximus89/m5stack-and-mit-app-inventor-47bd32 https://www.hackster.io/lukasmaximus89/m5stack-micropython-simple-web-server-20a4c4