稼働中

micro:bit V2(m_26)MicroPython v1.15-64

MicroPython (BBC micro:bit V2)

micro:bit V2にMicroPythonをインストールしました。V1との差異を調べたので記載します。

micro:bit V2ではメモリなどいろいろ増強されています。さらに、スピーカー、マイクロフォン、ロゴタッチピンの機能が追加されています。MicroPythonで操作するにはmicro:bit V2用のMicroPythonをインストールして使います。

私の場合、初心者向けのPython IDE(統合開発環境 Integrated Development Environment)Thonnyを使っています。
ThonnyでMicroPythonを簡単にインストールできます。(Thonny 3.3.13)
micro:bit V1、V2を自動で判別して以下のMicroPythonをインストールしてくれます。

※micro:bitV1用、V2用のMicroPythonをV1、V2と略記する場合があります。


MicroPython (BBC micro:bit)
# micro:bit V1 ※当サイトで「thonny-microbit」と記載しているものと同じです。
MicroPython v1.9.2-34-gd64154c73 on 2017-09-01; micro:bit v1.0.1 with nRF51822
# micro:bit V2
MicroPython v1.15-64-g1e2f0d280 on 2021-06-30; micro:bit v2.0.0 with nRF52833

__thonny_helper

micro:bitをUSB接続した状態でThonnyを起動すると’__thonny_helper’が読み込まれています。
‘__thonny_helper’には以下の関数があります。V1と比べV2にはencode、decodeが追加されています。※詳細はPythonのドキュメントサイトなどを参照してください。


__thonny_helper
V1              V2
                __class__
count           count
                decode
                encode
endswith        endswith
find            find
format          format
index           index
isalpha         isalpha
isdigit         isdigit
islower         islower
isspace         isspace
isupper         isupper
join            join
lower           lower
lstrip          lstrip
replace         replace
rfind           rfind
rindex          rindex
rsplit          rsplit
rstrip          rstrip
split           split
startswith      startswith
strip           strip
upper           upper

MicroPython v1.9.2-34-gd64154c73 on 2017-09-01; micro:bit v1.0.1 with nRF51822
Type "help()" for more information.
>>> 'あ'.encode()                 # V1ではencode()が無いのでエラーになる
Traceback (most recent call last):
  File "", line 1, in 
AttributeError: 'str' object has no attribute 'encode'
>>> 

MicroPython v1.15-64-g1e2f0d280 on 2021-06-30; micro:bit v2.0.0 with nRF52833
Type "help()" for more information.
>>> 'あ'.encode()
b'\xe3\x81\x82'
>>> b'\xe3\x81\x82'.decode()
'あ'
>>> 

ちなみに関数などのヘルプです。
以下のようにV1のhelpは説明書きがあって分かりやすかったのですが、V2は分かり難いです。


V1では
>>> help(compass.heading)
Gives a compass heading between 0-360 with 0 as north.

V2では
>>> help(compass.heading)
object <bound_method > is of type bound_method

MicroPythonモジュール

V1、V2のmodulesの項目を比較しましたモジュールを以下に並べました。


modules
V1                  V2
__main__            __main__
antigravity         antigravity
array               uarray          'u'で明示
audio               audio
builtins            builtins
collections
ucollections        ucollections    'u'で明示
gc                  gc
love                love
machine             machine
math                math
microbit            microbit
micropython         micropython
music               music
neopixel            neopixel
os                  os
radio               radio
random              urandom     'u'で明示
speech              speech    
struct
ustruct             ustruct     'u'で明示
sys                 usys        'u'で明示
this                this
time
utime               utime       'u'で明示
                    uerrno      新規

micro:bit V1とV2のMicroPythonモジュールの違いは、V1でダブっていたcollections、ucollections、struct、ustruct、time、utimeは接頭辞’u’の付いたucollections、ustruct、utimeにまとめられています。
array、random、sysは接頭辞’u’の付いたuarray、urandom、usysになっています。uerrnoは新規に増えています。
※接頭辞’u’が付いた関数は接頭辞’u’無しでもimportできるモノがあります。

V1、V2で各モジュール内の関数に差異のあるものは、(1)builtins、(2)microbit、(3)micropython、(4)neopixel、(5)os、(6)radio、(7)usys、(8)uerrno でした。※私が調べた範囲なので間違いがあるかも知れません。

差異のあるモジュールだけ見ていきます。他のモジュールは当サイトのモジュールの項を参照ください。こちらにも追記する予定です。

(1)builtinsモジュール

V1からfrozenset’, ‘UnicodeError’が無くなり、’StopAsyncIteration’, ‘complex’, ‘delattr’,’memoryview’, ‘property’が増えています。記事(m_12)に追記しました。※詳細はPythonのドキュメントサイトなどを参照してください。

(2)microbitモジュール

‘Sound’, ‘set_volume’, ‘speaker’, ‘pin_speaker’, ‘pin_logo’, ‘audio’, ‘microphone’, ‘ws2812_write’, ‘SoundEvent’が増えています。別記事に記載します。

(3)micropythonモジュール

関数’schedul’が追加されています。記事(m_14)に追記しました。

(4)neopixelモジュール

関数‘ws2812_write’が追加されています。記事(m_015)に追記しました。

(5)osモジュール

関数’ilistdir’, ‘stat’が追加されています。記事(m_16)に追記しました。

(6)radioモジュール

‘RATE_250KBIT’が消えています。記事(m_16)に補足しました。

(7)usysモジュール

関数’argv’,’maxsize’,’modules’, ‘path’が追加されています。記事(m_19)に追記しました。

(8)uerrnoモジュール

標準の errno システムシンボルの辞書データらしいです。素人の私には使い方などはよくわかりません。


>>> import errorcode
>>> uerrno.errorcode
{1: 'EPERM', 2: 'ENOENT', 5: 'EIO', 9: 'EBADF', 11: 'EAGAIN', 12: 'ENOMEM', 
13: 'EACCES', 17: 'EEXIST', 19: 'ENODEV', 21: 'EISDIR', 22: 'EINVAL', 
95: 'EOPNOTSUPP', 98: 'EADDRINUSE', 103: 'ECONNABORTED', 104: 'ECONNRESET', 
105: 'ENOBUFS', 107: 'ENOTCONN', 110: 'ETIMEDOUT', 111: 'ECONNREFUSED', 
113: 'EHOSTUNREACH', 114: 'EALREADY', 115: 'EINPROGRESS'}

>>> uerrno.errorcode.keys()
dict_keys([1, 2, 5, 9, 11, 12, 13, 17, 19, 21, 22, 95, 98, 103, 104, 
105, 107, 110, 111, 113, 114, 115])

>>> uerrno.errorcode[1]
'EPERM'
>>> uerrno.errorcode[113]
'EHOSTUNREACH'

まとめ

micro:bit V2とV1(thonny-microbit)との差異を調べ記載しました。主にmicrobitモジュール以外のモジュールについて記載しました。microbitモジュールにおける追加された関数については別記事で記載します。