新着情報

マイクロファン製品用のMicroPythonのv1.22.1対応ファームウェアの配布を始めました。

ぜひご活用ください。


マイクロファン専用ファームウェアの概要

マイクロファンの開発ボード用に作成されたMicroPythonのファームウェアです。以下のような特徴を持っています。

  • マイクロファンの各開発ボードのフラッシュ容量や端子構成などに適合したファームウェアとなっています。
  • マイクロファンの開発ボードで標準的に使用する入出力やセンサーなどに対応したドライバ(ライブラリ)が組み込まれているため、様々なドライバを導入する必要がありません。
  • メモリ容量の制限でフォントの文字数や文字サイズに制約がありますが、日本語表示のためのドライバやフォントを内蔵しています。
  • プログラムで使用する端子の指定を、'PA0', PB1' などのMCUの端子名、'D0', 'A1'など開発ボード上の端子名、'SW1', 'LED2' などの機能名など、用途や目的で分かりやすい名前で指定できます。

マイクロファンの開発ボードを利用する場合には、専用のファームウェアを書き込んで利用すると、MicroPython利用の利便性を向上させることができます。

なお、開発ボードに搭載しているMCUに対応したMicroPythonのオリジナルファームウェアが提供されている場合には、それらのファームウェアをマイクロファンの開発ボードに書き込んで利用することもできます。

MicroPythonのオリジナルのファームウェアは、以下のサイトをご参照ください。

ファームウェアへのドライバ・ライブラリの組込み

ESP32-C3M-TRYを例としてMicroPythonのファームウェアへのドライバ・ライブラリの組込み状況を示します。

MicroPython v1.21.0 on 2023-10-27; MicroFan ESP32-C3M-TRY with ESP32C3

Type "help()" for more information.

>>> help('modules')
__main__          cryptolib         machine           sdcard
_asyncio          dcmotor           math              select
_boot             deflate           microdot          socket
_espnow           dht               microdot_asyncio  ssd1306
_onewire          ds18x20           microdot_asyncio_websocket          ssl
_thread           errno             microdot_session  st7735v2
_webrepl          esp               microdot_utemplate                  struct
aht21             esp32             microdot_websocket                  sys
aioespnow         espnow            micropython       sysfont
apa106            flashbdev         mip/__init__      time
array             framebuf          misakifont        tma_jp_utl
asyncio/__init__  gc                neopixel          tone
asyncio/core      hashlib           network           uasyncio
asyncio/event     hcsr04            ntptime           uctypes
asyncio/funcs     heapq             oledcs            umqtt/robust
asyncio/lock      hmac              oledjp            umqtt/simple
asyncio/stream    inisetup          onewire           upysh
binascii          io                os                urequests
bluetooth         json              platform          utemplate/recompile
btree             jwt               random            webrepl
builtins          kxtj3             rcservo           webrepl_setup
cmath             ledmatrix         re                websocket
collections       ledmatrixjp       requests/__init__
Plus any modules on the filesystem
>>> 

machineやtimeなどの基礎的なライブラリ、ssd1306やneopixelなど一般的によく利用されるドライバの他に、マイクロファンの開発ボードでよく使用しているセンサー用のkxtj3やath21などのドライバ、さらには、マイクロファンが開発した、日本語化されたOLED用のドライバoledjpや日本語化されたneopixelマトリックス用のドライバledmatrixjpなどの名前も見えます。

マイクロファンの専用ファームウェアに追加で組み込まれているドライバ・ライブラリの概要を示します。

これらのすべてのライブラリ・ドライバはファームウェアに組み込まれており、開発ボードにファームウェアを書き込んだ時点で利用できる状態になっているため、利用にあたって改めて導入する必要はありません。

ファームウェアへのドライバ・ライブラリの組込みの利点は以下の文書もご参照ください。

端子の機能名の登録

また、マイクロファンのMicroPythonファームウェアでは、マイクロコントローラーの端子の指定名として、いくつかの別名が定義されています。ESP32-C3M-TRYでは以下のように設定されています。

>>> from machine import Pin
>>> help(Pin.board)

object <class 'board'> is of type type
  D0 -- Pin(0)
  D1 -- Pin(1)
  D2 -- Pin(2)
  D3 -- Pin(3)
  D4 -- Pin(4)
  D5 -- Pin(5)
  D6 -- Pin(6)
  D7 -- Pin(7)
  D8 -- Pin(8)
  D9 -- Pin(9)
  D10 -- Pin(10)
  D20 -- Pin(20)
  D21 -- Pin(21)
  ADC10 -- Pin(0)
  ADC11 -- Pin(1)
  ADC12 -- Pin(2)
  ADC13 -- Pin(3)
  ADC14 -- Pin(4)
  ADC20 -- Pin(5)
  LED -- Pin(0)
  LED1 -- Pin(0)
  RGB -- Pin(10)
  LED10 -- Pin(10)
  BRT -- Pin(1)
  PIR -- Pin(20)
  SW1 -- Pin(2)
  SW2 -- Pin(3)
  SW3 -- Pin(6)
  SW4 -- Pin(9)
  LOAD -- Pin(9)
  SND -- Pin(21)
  SRV1 -- Pin(7)
  DS_TRIG -- Pin(4)
  DS_ECHO -- Pin(5)
  SCL0 -- Pin(9)
  SDA0 -- Pin(8)
>>> 

例えば、SW1を入力用に初期化する場合は、状況や目的によって、以下のようないくつかの方法で記述することができます。特に、'SW1'として指定できると、各入出力と端子の対応を覚えたり確認する必要がなくなるので、プログラムが書きやすく・読みやすく、移植しやすくなります。

from machine import Pin

sw1 = Pin(2, Pin.IN)
sw1 = Pin('D2', Pin.IN)
sw1 = Pin('SW1', Pin.IN)

STM32

UNO, SLIM のファームウェアはそれぞれUNO-PLUS, SLIM-PLUSのファームウェアと共用です。

v1.22.1

v1.21.0

v1.20.0

ファームウェアの開発ボードへの書き込みは、開発ボードとPCをUSBで接続し、STM32CubeProgrammerを使用して行います。以下のページをご参照ください。


RP2040

UNO, SLIM のファームウェアはそれぞれUNO-PLUS, SLIM-PLUSのファームウェアと共用です。

v1.22.1

v1.21.0

v1.20.0


ESP32-S3

v1.22.1

v1.21.0

PSRAMの容量の自動認識は問題なく機能しています。

v1.20.0

原因を調査中ですが、弊社で構築したv1.20.0のファームウェアでは、PSRAM容量の自動認識が実装量の半分になっています。現状では、PSRAMの全容量を利用できない状況ですがご容赦ください。ESP-S3-KEY-R2でPSRAMをフルに使用したい場合には、MicroPythonのサイトで配布されているオリジナルのファームウェアをご利用ください。ESP-S3M-SLIMの場合は、MicroPythonのサイトで配布されているオリジナルのファームウェアはフラッシュが8MBを想定して構成されているためご利用いただけません。

ESP32-C3

v1.22.1

ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。

v1.21.0

ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。

ESP32シリーズ用のMicroPythonは、ESP32が搭載しているほんの一部のSRAMしかヒープ領域として利用できないのがとても残念な点でした。しかしながら今回のバージョンアップでSRAMの割り当てが変更されたようで、使用できるヒープ領域が120KB程度から200KB程度に拡大し、ファームウェアの書き換えだけで大幅なメモリ容量向上を図れます。開発ボードの魅力も大幅に向上しました。

v1.20.0

ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。

ESP32

v1.22.1

v1.21.0

ESP32シリーズ用のMicroPythonは、ESP32が搭載しているほんの一部のSRAMしかヒープ領域として利用できないのがとても残念な点でした。しかしながら今回のバージョンアップでSRAMの割り当てが変更されたようで、使用できるヒープ領域が100KB程度から170KB程度に拡大し、ファームウェアの書き換えだけで大幅なメモリ容量向上を図れます。開発ボードの魅力も大幅に向上しました。

v1.20.0

ファームウェアの開発ボードへの書き込みは、開発ボードとPCをUSBで接続し、esptoolを使用して行います。以下のページをご参照ください。