This is module that i purchased on AliExpress good while ago. And now i tired to install Micro Python on it.
Here is small fix for you if you too got

invalid header: 0xffffffff Problem

Let’s start the most important thing to have the the bin file.
Download it from this page.

Now download esptool … git clone
Now probably you will missing pyserial so just to be sure pip install pyserial

Okay now you can see where the trick is. If you will use the comand from official site of Micro python you will end up with that 0xffffff problem.
But if you will use instead of 0x0 just 0 everything will work right.


And the result will show this:


Hope this will help anyone that have to went trough similar thing.

Now a bit of candy helpful repo where you find a code for neopixel rgb is:


And bonus:

Controling onboard button

import machine
from machine import Pin

button = Pin(9, Pin.IN, pull=Pin.PULL_DOWN
#What happens if you press the button
def handleme(pin):
  print("Btn presssssed")

#Interrupt set on the button,
button.irq(trigger=Pin.IRQ_RISING, handler=handleme)

# Breaks main loop and alows it to run code from the button

Controling neopixels

import machine
from machine import Pin
from neopixel import NeoPixel
import time

neopin = Pin(8, Pin.OUT) # NeoPixel control on Pin 8
pixels = 25 # we have 25 pixels, set as a constant here for loops
np = NeoPixel(neopin, pixels)

eyes = [1,5,6,3,9,8]
color = (0,255,0,31)

for i in eyes:
  np[i] = color

mouth = [15,21,22,23,19]
color = (255,0,0,31)
for i in mouth:
np[i] = color


# Off all the LEDs
np.fill((0, 0, 0))

#Light up one led
np[0] = (255,255,255)

Hex to RGB walues

def hex_to_rgb(hex_string):
  str_len = len(hex_string)
  if hex_string.startswith("#"):
    if str_len == 7:
      r_hex = hex_string[1:3]
      g_hex = hex_string[3:5]
      b_hex = hex_string[5:7]
    elif str_len == 4:
      r_hex = hex_string[1:2] * 2
      g_hex = hex_string[2:3] * 2
      b_hex = hex_string[3:4] * 2
    elif str_len == 3:
      r_hex = hex_string[0:1] * 2
      g_hex = hex_string[1:2] * 2
      b_hex = hex_string[2:3] * 2
      r_hex = hex_string[0:2]
      g_hex = hex_string[2:4]
      b_hex = hex_string[4:6]

return int(r_hex, 16), int(g_hex, 16), int(b_hex, 16)


You can find more from original github repo but there is only c++

Great news! I’ve discovered a fantastic library that handles all the functions we require.
The only thing left to do in this case is to download the library folder onto the device and modify file like this.
Also make sure do decrease screen brightness to some managable value like 0.09, otherwise the led will be really bright.

Use then this code to display scrolling message

from machine import Pin
import matrix
import urandom
import time

def smile():
    #assign randint function to r
    r = urandom.randint
    #create matrix class object
    s = matrix.matrix

    s.pixel_color( r(0,360) )
    s.text_scroll("->> ->>)", 50)

def handleme(pin):
button = Pin(9, Pin.IN, pull=Pin.PULL_DOWN)
button.irq(trigger=Pin.IRQ_RISING, handler=handleme)