I've been trying to make a simple HTTP request with my Atom Matrix.
I want to implement:
A single Button Click sends a HTTP request and shows me the success or error state via the Matrix LEDs
But my problem is that the request seems to fail consistently and I couldn't print any information about the actual request. It seems as if it fails before or while executing the request. I was able to print the exception thrown: [Errno 12] ENOMEM
Which looks like the Atom ran out of memory. But I'm confused why? The whole code snippet is already pretty small and barely does anything.
from m5stack import *
from m5ui import *
from uiflow import *
import wifiCfg
import urequests
gc.collect()
rgb.set_screen([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0])
def buttonA_wasPressed():
  # global params
  wifiCfg.autoConnect(lcdShow=False)
  if wifiCfg.wlan_sta.isconnected():
    try:
      print(urequests.request)
      req = urequests.request(method='GET', url='https://dummyjson.com/products/1', headers={})
      print(req.text)
      print("stuff never get executed")
     
      # Show some green lights indicating success state
      rgb.set_screen([0x03ff33,0,0,0,0,0x03ff33,0,0,0x00ff33,0,0,0x03ff33,0x00bd26,0x00ff33,0,0,0x03ff33,0x00ff33,0x00ff33,0x03ff33,0,0,0x03ff33,0x03ff33,0x03ff33])
      gc.collect()
      req.close()
    except Exception as e:
      print('Failed')
      print(str(e))
      # Show some red lights indicating error state
      rgb.set_screen([0,0,0,0,0,0,0,0,0xff0000,0,0,0xff0000,0x9e0000,0xff0000,0,0,0xff0000,0xff0000,0xff0000,0xff0000,0,0,0xff0000,0xff0000,0xff0000])
  pass
btnA.wasPressed(buttonA_wasPressed)
This is the log after pushing the button on my Atom Matrix
<function request at 0x3ffe7220>
Failed
[Errno 12] ENOMEM
<function request at 0x3ffe7220> proves that (some) request function is loaded
[Errno 12] ENOMEM is the exception printed in the except block
The Issue is clearly related to the request because if I remove the request, the success case is executed (green light etc.)
...
 try:
      print(urequests.request)
      #req = urequests.request(method='GET', url='https://dummyjson.com/products/1', headers={})
      #print(req.text)
      print("stuff never get executed")
     
      # Show some green lights indicating success state
      rgb.set_screen([0x03ff33,0,0,0,0,0x03ff33,0,0,0x00ff33,0,0,0x03ff33,0x00bd26,0x00ff33,0,0,0x03ff33,0x00ff33,0x00ff33,0x03ff33,0,0,0x03ff33,0x03ff33,0x03ff33])
      gc.collect()
      #req.close()
...
Context:
- I flashed the device with UIFlow_Matrix v1.12.9 (latest)
 - I'm using Arduino Lab for Micropython to upload and execute code on the Atom Matrix because I found it to be the most reliable connection over USB and giving me a fast response through the console.