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モジュールにおける追加された関数については別記事で記載します。