MAiX Qube 奮闘記


OpenMVを使った画像処理に興味があって小型のMAiX Qubeを買っちゃいました!!
まずはラズパイからの癖でファームウェアを最新にアップデート。
ファームウェアはここから
https://dl.sipeed.com/shareURL/MAIX/MaixPy/release/master/maixpy_v0.6.2_72_g22a8555b5
いろいろ試したけど結局一番下の
「maixpy_*.bin」に相当する「maixpy_v0.6.2_72_g22a8555b5.bin」
が良さそうと解る。
てかその前にインストール ツールが必要な事が分かる。
RaspberryPi4にラズパイ版のKflashをなんとかインストール成功。(簡単には出来なかったです;;)

ファームウェアをダウンロードし書き込むと、、
あらら、青一色の画面になりなにも表示されなくなりました。
やらかした。
なにもしなければ良かった;;

解決策としてjsonファイルを書き込んでみる。
製品毎に異なる周辺機器のGPIOピンへの割り付けを吸収するためのファイルみたい。
https://wiki.sipeed.com/soft/maixpy/zh/api_reference/builtin_py/board_info.html
ここから
0.6. Maix Cube#
を入手しPC上のMaixPy ideから実行
ファイル操作は行わずこのプログラムを実行する事でプログラムが修正してくれるみたい。

config_maix_cube.py
import json

config = {
    "type": "cube",
    "lcd": {
        "height": 240,
        "width": 240,
        "invert": 1,
        "dir": 96
    },
    "sdcard":{
        "sclk":27,
        "mosi":28,
        "miso":26,
        "cs":29
    },
    "board_info": {
        'BOOT_KEY': 16,
        'LED_R': 13,
        'LED_G': 12,
        'LED_B': 14,
        'LED_W': 32,
        'BACK': 11,
        'ENTER': 10,
        'NEXT': 16,
        'WIFI_TX': 6,
        'WIFI_RX': 7,
        'WIFI_EN': 8,
        'I2S0_MCLK': 19,
        'I2S0_SCLK': 35,
        'I2S0_WS': 33,
        'I2S0_IN_D0': 34,
        'I2S0_OUT_D2': 18,
        'I2C_SDA': 31,
        'I2C_SCL': 30,
        'SPI_SCLK': 21,
        'SPI_MOSI': 8,
        'SPI_MISO': 15,
        'SPI_CS': 20,
        'ESP32_MOSI': 28,
        'ESP32_MISO': 26,
        'ESP32_SCLK': 27,
        'ESP32_CS': 29,
    }
}

cfg = json.dumps(config)
print(cfg)

# config lcd back_light
try:
    os.remove('/flash/boot.py')
except:
    pass
with open('/flash/boot.py', 'wb') as f:
    cfg_sensor = b'from fpioa_manager import fm\nfrom Maix import GPIO\nfm.register(17, fm.fpioa.GPIOHS28)\nlcd_en = GPIO(GPIO.GPIOHS28, GPIO.OUT)\nlcd_en.value(0)\n'
    f.write(cfg_sensor)
    del cfg_sensor

try:
    with open('/flash/config.json', 'rb') as f:
        tmp = json.loads(f.read())
        print(tmp)
        if tmp["type"] != config["type"]:
            raise Exception('config.json no exist')
except Exception as e:
    with open('/flash/config.json', "w") as f:
        f.write(cfg)
    import machine
    machine.reset()

そして再度起動させると

画面が表示されました。
めでたしめでたし。