このページの目次
新着情報
マイクロファン製品用のMicroPythonのv1.22.1対応ファームウェアの配布を始めました。
- オリジナルv1.22.0のリリースノート
ぜひご活用ください。
マイクロファン専用ファームウェアの概要
マイクロファンの開発ボード用に作成された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などの名前も見えます。
マイクロファンの専用ファームウェアに追加で組み込まれているドライバ・ライブラリの概要を示します。
- oledcs: 通常の表示端末のように座標を指定せずに文字列を出力できる様にしたssd1306の拡張版
- oledjp: 日本語(美咲フォント)表示機能が付与されたoledcsの拡張版
- st7735v2: ST7735を使用したTFTディスプレイのドライバ
- sysfont: st7735v2用のフォントライブラリ
- ledmatrix: neopixel の機能をマトリックス状に拡張し文字やグラフィックス表示ができるようにしたもの
- ledmatrixjp: 日本語(美咲フォント)表示機能が付与されたledmatrixの拡張版
- aht21: 温度、湿度センサーATH21のドライバ
- kxth3: 加速度センサーKXTJ3のドライバ
- stm32pwm: STM32用のPWMライブラリ
- tone: 圧電スピーカ用の発音ライブラリ
- hcsr04: 超音波距離センサーHC-SR04のドライバ
- misakifont: 美咲フォント(日本語)のライブラリ
- sdcard: SDCARDのライブラリ
- microdot: WEBサーバーのフレームワーク
- WiFiでネットワーク利用できるESP32のファームウェアのみに組み込まれています。
- https://github.com/miguelgrinberg/microdot
これらのすべてのライブラリ・ドライバはファームウェアに組み込まれており、開発ボードにファームウェアを書き込んだ時点で利用できる状態になっているため、利用にあたって改めて導入する必要はありません。
ファームウェアへのドライバ・ライブラリの組込みの利点は以下の文書もご参照ください。
端子の機能名の登録
また、マイクロファンの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
- STM32F446-UNO-20240201-v1.22.1.hex
- STM32F412-UNO-20240201-v1.22.1.hex
- STM32F446-SLIM-20240201-v1.22.1.hex
- STM32F412-SLIM-20240201-v1.22.1.hex
v1.21.0
- STM32F446-UNO-20231027-v1.21.0.hex
- STM32F412-UNO-20231027-v1.21.0.hex
- STM32F446-SLIM-20231027-v1.21.0.hex
- STM32F412-SLIM-20231027-v1.21.0.hex
v1.20.0
- STM32F446-UNO-20231011-v1.20.0.hex
- STM32F412-UNO-20231011-v1.20.0.hex
- STM32F446-SLIM-20231011-v1.20.0.hex
- STM32F412-SLIM-20231011-v1.20.0.hex
ファームウェアの開発ボードへの書き込みは、開発ボードとPCをUSBで接続し、STM32CubeProgrammerを使用して行います。以下のページをご参照ください。
RP2040
UNO, SLIM のファームウェアはそれぞれUNO-PLUS, SLIM-PLUSのファームウェアと共用です。
v1.22.1
- RP2040-UNO-20240201-v1.22.1.uf2
- RP2040-SLIM-20240201-v1.22.1.uf2
- RP2040-PLAY-20240201-v1.22.1.uf2
- RP2040-ROBO-20240201-v1.22.1.uf2
v1.21.0
- RP2040-UNO-20231027-v1.21.0.uf2
- RP2040-SLIM-20231027-v1.21.0.uf2
- RP2040-PLAY-20231027-v1.21.0.uf2
- RP2040-ROBO-20231027-v1.21.0.uf2
v1.20.0
- RP2040-UNO-20231011-v1.20.0.uf2
- RP2040-SLIM-20231011-v1.20.0.uf2
- RP2040-PLAY-20231011-v1.20.0.uf2
- RP2040-ROBO-20231011-v1.20.0.uf2
ESP32-S3
v1.22.1
- ESP32-S3-KEY-R2-N16R8-20240201-v1.22.1.bin
- ESP32-S3-KEY-R2-N8R2-20240201-v1.22.1.bin
- ESP32-S3M-SLIM-N4R2-20240201-v1.22.1.bin
v1.21.0
PSRAMの容量の自動認識は問題なく機能しています。
- ESP32-S3-KEY-R2-N16R8-20231103-v1.21.0.bin
- ESP32-S3-KEY-R2-N8R2-20231103-v1.21.0.bin
- ESP32-S3M-SLIM-N4R2-20231103-v1.21.0.bin
v1.20.0
原因を調査中ですが、弊社で構築したv1.20.0のファームウェアでは、PSRAM容量の自動認識が実装量の半分になっています。現状では、PSRAMの全容量を利用できない状況ですがご容赦ください。ESP-S3-KEY-R2でPSRAMをフルに使用したい場合には、MicroPythonのサイトで配布されているオリジナルのファームウェアをご利用ください。ESP-S3M-SLIMの場合は、MicroPythonのサイトで配布されているオリジナルのファームウェアはフラッシュが8MBを想定して構成されているためご利用いただけません。
- ESP32-S3-KEY-R2-N16R8-20231011-v1.20.0.bin
- ESP32-S3-KEY-R2-N8R2-20231011-v1.20.0.bin
- ESP32-S3M-SLIM-N4R2-20231011-v1.20.0.bin
ESP32-C3
v1.22.1
ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。
- ESP32-C3M-KEY-20240201-v1.22.1.bin
- ESP32-C3M-SLIM-20240201-v1.22.1.bin
- ESP32-C3M-TRY-20240201-v1.22.1.bin
- ESP32-C3-SLIM-20240201-v1.22.1.bin
- ESP32-C3-IOT-20240201-v1.22.1.bin
v1.21.0
ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。
ESP32シリーズ用のMicroPythonは、ESP32が搭載しているほんの一部のSRAMしかヒープ領域として利用できないのがとても残念な点でした。しかしながら今回のバージョンアップでSRAMの割り当てが変更されたようで、使用できるヒープ領域が120KB程度から200KB程度に拡大し、ファームウェアの書き換えだけで大幅なメモリ容量向上を図れます。開発ボードの魅力も大幅に向上しました。
- ESP32-C3M-KEY-20231103-v1.21.0.bin
- ESP32-C3M-SLIM-20231103-v1.21.0.bin
- ESP32-C3M-TRY-20231103-v1.21.0.bin
- ESP32-C3-SLIM-20231103-v1.21.0.bin
- ESP32-C3-IOT-20231103-v1.21.0.bin
v1.20.0
ESP32-C3-KEYはESP32-C3M-KEYのファームウェアをご利用ください。
- ESP32-C3M-KEY-20231011-v1.20.0.bin
- ESP32-C3M-SLIM-20231011-v1.20.0.bin
- ESP32-C3M-TRY-20231011-v1.20.0.bin
ESP32
v1.22.1
- ESP32-WROVER-KEY-R2-20240201-v1.22.1.bin
- PSRAM容量の自動認識に問題があり、実装量の半分の4MBしか使用できません。オリジナルのファームウェアも同様な状況です。
- ESP32-KEY-R2-20240201-v1.22.1.bin
- ESP32-KEY-R3-20240201-v1.22.1.bin
- ESP32-SLIM-20240201-v1.22.1.bin
- ESP32-PIXEL-20240201-v1.22.1.bin
- ESP32-ROBO-20240201-v1.22.1.bin
v1.21.0
ESP32シリーズ用のMicroPythonは、ESP32が搭載しているほんの一部のSRAMしかヒープ領域として利用できないのがとても残念な点でした。しかしながら今回のバージョンアップでSRAMの割り当てが変更されたようで、使用できるヒープ領域が100KB程度から170KB程度に拡大し、ファームウェアの書き換えだけで大幅なメモリ容量向上を図れます。開発ボードの魅力も大幅に向上しました。
- ESP32-WROVER-KEY-R2-N8R4-20231103-v1.21.0.bin
- PSRAM容量の自動認識に問題があり、実装量の半分の4MBしか使用できません。オリジナルのファームウェアも同様な状況です。
- ESP32-KEY-N16-20231103-v1.21.0.bin
- ESP32-SLIM-N16-20231103-v1.21.0.bin
- ESP32-PIXEL-N8-20231103-v1.21.0.bin
- ESP32-ROBO-N16-20231103-v1.21.0.bin
v1.20.0
- ESP32-KEY-N16-20231011-v1.20.0.bin
- ESP32-SLIM-N16-20231011-v1.20.0.bin
- ESP32-PIXEL-N8-20231011-v1.20.0.bin
- ESP32-ROBO-N16-20231011-v1.20.0.bin
ファームウェアの開発ボードへの書き込みは、開発ボードとPCをUSBで接続し、esptoolを使用して行います。以下のページをご参照ください。