CircuitPython 7 リリース

コントローラー向けのPython実装であるCircuitPython 7がリリースされました。

CircuitPython 7 リリース
Releases · adafruit/circuitpython
CircuitPython - a Python implementation for teaching coding with microcontrollers - adafruit/circuitpython

CircuitPythonとは

プログラミング言語のランキング上位に入っているPython言語。そのマイコンでも動作するように作られたものが CircuitPythonで Adafruit Industries がリリースしています。

MicroPythonから

CircuitPython は MicroPython をベースにしたソフトウェアです。つまり元々の MicroPython の大部分を利用し、その上に改造や変更を加えたものです。しかし、当初はかなりの部分がMicroPythonでしたが、徐々にCircuitPythonの部分も多くなりつつあります。

通常のPythonとの違い

PC上で利用されている、通常のPythonはWindows/macOS/LinuxなどのOSの上で動作しているのに対し、CircuitPythonはマイコンなどのような限られたメモリやストレージで動作できるようにOSを介さずデバイス上で直接実行される仕組みです。

プログラムを作るユーザーからすると、Python言語で記述することが可能であるため、PC上のPythonと同じように感じますが実際にコードが実行される仕組みはかなり異なっています

そして、その部分をあまりプログラマーが気にしなくても良いのはとても良いですね。

マイコンとは

マイクロコンピューターの略で、その名の通り通常のPCと比べて物理的に小さく、メモリやストレージ等も限られたコンピューティングデバイス。一部のPICのような1つのチップで全てが完結するようなものも含まれ、基本的にはプログラムで制御できるチップの事を指す。近年ではマイクロコントローラーの略とも言われている。

ライブラリの利用

モジュール/ライブラリの利用もPC上ではpipコマンドの利用が一般的ですが、CircuitPythonでは指定の場所にファイルを配置するようになっており、コア部分をコンパクトに保ち制限の多いマイコンでも動作できる仕組みになっています。

プリコンパイル済みライブラリ

CircuitPython ではプリコンパイル済みのライブラリも提供されており、特にマイコンでよく問題となるプログラム領域の容量不足を少しだけ改善できます。

  • ファイルサイズが小さい
  • 実行速度が早い(場合もある)
  • 拡張子はmpx
  • プリコンパイル済みなので当然CircuitPythonバージョン毎に異なる

もちろん完全にPythonのみで書かれたライブラリーであれば基本的にCircuitPythonでも利用することが可能ですが、大規模なライブラリ等はハードの制限により動かせない場合もあります。

MEMO

もちろん通常のPythonもpip以外のファイルを置いたりする方法でライブラリを利用する事が可能です。

ビルドイン機能 (Built-in)

ビルドインと呼ばれる、何も追加しなくても実行できる機能も各ボード向けにカスタマイズされたものになっており、通常のPythonとコードの互換性が無い場合もあります。さらに言えばビルドインモジュールは各デバイスのハードウェア構成により異なっています。

Raspberry Pi Pico のビルドインモジュール : https://circuitpython.org/board/raspberry_pi_pico/

対応デバイス

CircutPythonは、それぞれのデバイスに対応したCircutPythonのファイルをダウンロードしてデバイスに書き込みを行います。

そのため、基本的に他のデバイス用にビルドされたCircutPythonは動作しません

※同一のマイコンチップを採用したボードは形状が異なっても、実質同じ場合があるので動作する場合もあります。
https://circuitpython.org/downloads
対応デバイス

現時点(2021/09/22)で 237 種類のデバイスに対応しています。

あまりにも多いため全てを紹介することは出来ませんが、Raspberry Pi Pico や ESP32などのチップを採用したボードに対応しています。

6.3からの変更箇所

個人的には一部のエラーメッセージが若干ユーザーフレンドリーなったあたりが非常にうれしいです。また、Bluetoothが利用可能なデバイスだけですが、開発をBLE経由で行えるようになっているようです。

個人的にはBLE経由の開発は行っていないですが、便利そうなのでいつかトライしてみようと思っています。

CircuitPython7 での変更箇所 https://github.com/adafruit/circuitpython/releases

qrio: QR code decoding(QRコード)

QRコードのデコードに対応しています。

MicroPython 1.16

CircuitPython 7ではフォーク元のMicroPythonの改善が取り込まれました。

Tracebackモジュール

エラー発生時に原因を探る手がかりは基本的にどのでエラーが発生したのか探る所から始まります。

このモジュールの説明を見る限りでは便利そうです。

traceback – Traceback Module — Adafruit CircuitPython 7.0.0 documentation

Raspberry Pi Picoでも利用可能

豊富なライブラリも用意されており、ちょっとした工作をしたい時に簡単にパッと作れるのでかなりオススメです。

組み込みプログラミングに抵抗があっても、Pythonのような言語で記述できるのでグッとハードルが低くなってナイス!

CircuitPython自体は以下のリンクからダウンロード出来ます。

CircuitPython - Downloads
The easiest way to program microcontrollers
記事の内容は間違いが無いように気をつけていますが、私の認識違いや、ミスなどにより間違っている可能性もあります。もし発見された場合はお問い合わせフォームよりご連絡頂けると幸いです。