ラズベリーパイPicoでMicroPythonプログラミング入門
世界中で人気のあるプログラミング言語、Pythonのマイコン向け言語MicroPythonをラズパイPicoを使って学んでみましょう!
MicroPython(マイクロパイソン)とは
そもそもPythonとは
ラズパイが公式に推しているプログラミング言語です。Raspberry PiのPi(パイ)は、お菓子のPie(パイ)とPythonのPy(パイ)をかけたシャレで、「子供にPythonを使ってプログラミングを勉強してほしい」という思いが込められています。
Pythonは2022年現在、無数にあるプログラミング言語のうち、人気順位でJavaScriptに次ぐ2位につけています。
これだけPythonが好まれる理由は、誰でもシンプルに書け、機能が充実しており、ラズパイなどのコンピューターの操作だけでなくWeb開発やデータ処理、機械学習など、使える分野がとても広いからです。子供のうちからPythonをできるようになったらすごいことになりそうですね。
マイコン向けPythonがMicroPython
MicroPythonはPythonから派生したシンプルなプログラミング言語で、マイコンを動かすために作られました。
マイコンの制御というと、一般的にはCやC++を使用して複雑になりやすいとイメージがありますが、MicroPythonを使用するとプログラミングやハードウェアにそれほど慣れていない初心者でもコードが書きやすい、というメリットがあります。文法はPythonと同じで、Pythonを学んだ方であればすぐに使い始めることができます。
動作速度としてはCやC++に比べて多少劣るところはありますが、通常はあまり気になりません。
MicroPythonからの派生として、CircuitPythonというのもあります。これはアメリカのAdafruit社が開発した、MicroPythonをさらに初心者向けに簡単にしたプログラミング言語です。
REPL(read-evaluate-print loop)が使える
MicroPythonのほかの特徴として、REPL(read-evaluate-print loop)があります。これは、プログラムを最初から最後まで一括で実行するのではなく、式などのかたまりごとに実行し、その結果を表示しながら進めていけるやり方です。
Python同様ライブラリーがある
Pythonと同じくMicroPythonでもライブラリーが充実しています。高速な処理を行うライブラリーをC/C++で開発することもできます。現在あるライブラリーは https://docs.micropython.org/en/latest/library/index.html から見ることができます。
MicroPythonプログラムの例
それでは早速MicroPythonで書かれたプログラムを見てみましょう。これは画面にHello World! と表示するプログラムです。Pythonと同じですね😁
print("Hello World")
実際にやってみよう
お使いのWindows/MacにラズパイPicoをつなぎ、ThonnyでHello Worldと表示するMicroPythonプログラムを作成し、Picoで実行するのをこれからやっていきましょう。
Thonnyのインストール
Thonny(ソニー)という使いやすいソフトがありますので、これを使いましょう。まず https://thonny.org/ にアクセスし、Thonnyをダウンロードしてインストールします。
インストール後、初回起動時に以下のような画面が表示されますので、
・Language: English
・Initial settings: Standard
としてLet’s go!ボタンをクリックします。
PCとRaspberry Pi Picoの接続
購入したばかりのPicoボードはまっさらな状態ですので、ファームウェアと呼ばれるソフトを書き込んだあとから使用できるようになります。今回はMicroPythonでPicoボードを使用しますので、ベースとなるMicroPythonファームウェアを書き込みます。
ファームウェアの書き込みの方法は2通りあります。1つ目は、インターネットから手動でダウンロードしたファームウェアを使用する方法です。
2つ目は、Thonnyを使ってファームウェアのダウンロードと書き込みをまとめて行う方法です。今回はこちらの方法で進めていきましょう。
まずは以下のパーツを準備します。
・Raspberry Pi Picoボード x 1
・USBケーブル x 1
準備ができたらUSBケーブルをお使いのPCに接続します。
次にRaspberry Pi PicoボードのBOOTSELボタンを押しながら、USBケーブルをRaspberry Pi Picoボードに接続します。これでPC上でPicoボードがUSBのマスストレージデバイス(USBドライブ)として認識されます。一旦USBケーブルを接続したあとはBOOTSELボタンから手を離して大丈夫です。
MacではFinderで、WindowsではExplorerでRaspberry Pi PicoがUSBドライブとして認識されたのを確認します。
MicroPythonファームウェアのインストール
Thonnyを開き、右下のLocal Python 3となっている部分をクリックします。
選択肢がいくつか表示されますので、Install MicroPython…をクリックします。
MicroPythonのインストール画面が開くので、以下のように選択し、Installボタンをクリックします。
Target volume: USBストレージとして認識されているボリューム
MicroPython variant: Raspberry Pi・Pico / Pico H
version: 1.19.1
左下にステータスバーが表示されますのでしばらく待ち、Done! となったら、右下のCloseボタンをクリックします。
最後にIDE右下のLocal Python 3となっている部分をクリックし、MicroPython (Raspberry Pi Pico) ・ポート名 をクリックします(ポート名はMacでは/dev/cu.usbmodem145101、WindowsではCOM3など)。
以上でファームウェアのインストールが完了し、Picoボードを使用する準備が整いました。
Hello Worldプログラムの実行
Thonnyに以下のMicroPythonコードをコピー&ペーストしましょう。
print("Hello World")
ペーストできたら、Thonny上部の左から3番目のボタン(Save As, 名前を付けて保存ボタン)をクリックします。
どこに保存するか聞かれるので、This computerをクリックし、hello.pyという名前でデスクトップに保存します。
保存できたら、IDE上部のボタン(Run current script、実行ボタン)をクリックし、コードをRaspberry Pi Picoボードで実行します。
動作チェック
以下のようにHello Worldと表示されましたか?
うまく表示されていれば成功です。
MicroPythonの機能やきまりごと
ここからはMicroPythonについて、変数や繰り返し、インデントなどについて説明します。Pythonに慣れていれば全く同じなので違和感はないかと思います。
変数
MicroPythonでは変数を簡単に扱うことができます。変数とは、中に好きなものを入れ、あとで取り出したり入れ替えたりできる、名前のついた箱です。
例えば、動物の種類を3ヶ所に表示するプログラムを考えてみましょう。3ヶ所のそれぞれに
print("cat")
と書いていたとします。すると、今度はdogと表示したくなった時、3ヶ所すべてを直さなくてはいけません。3ヶ所ぐらいならすぐ直せそうですが、1万ヶ所あったらどうでしょうか? 1個ずつやっていたらそれだけで1日が終わってしまいそうです(置換すればよいという話はおいておきましょう)。
そんな時便利なのが変数です。こんなふうにすることで、catをdogに買えるだけで、あとは1万ヶ所は全部一瞬で変わります。
animal = "cat" print(animal)
繰り返し
プログラムを書いていると、同じようなことを何回もやりたい場合が出てきます。例えば、動物の種類を10回連続で表示したいような場合です。この時、print(animal)を10回書いてもいいのですが、これが1万回表示しないといけなくなった時、とても大変です。
そこで使える便利なものが繰り返しです。例えば以下のように書くと、1万回動物の種類を表示できます。
animal = "cat" for i in range(10000): print(animal)
ちなみに、永遠に繰り返したい場合はこのように書きます。
animal = "cat" while True: print(animal)
繰り返しを使うと、プログラムをたくさん書く手間を省くことができるわけですね。
インデント
さっきのプログラムのprintの前にスペースが4つ入っていたのに気づきましたか? Pythonでは:(コロン)のあとの行はタブやスペースで字下げをする必要があります。
これをインデントといい、このルールのことをオフサイドルールといいます。このルールのおかげで、:のあとどこまでが直前の処理の続きなのかがわかるようになっています。
このルールをきちんと守らないとプログラムが正しく動かないので注意しましょう。
分岐
プログラムを書いていると、変数(名前のついた箱でしたね)に何が入っているか確認し、その内容によってプログラムの動きを変えたい場合が出てきます。例えば、変数に入っている動物の種類が猫だったらA CAT IS HERE.と表示し、犬だったらA DOG IS HERE.と表示したい場合です。あと、ねこでもいぬでもないとしたら、UNKNOWNと表示したい場合を考えます。
以下のプログラムで実現できます。
animal = "cat" if animal == "cat": print("A CAT IS HERE.") elif animal == "dog": print("A DOG IS HERE") else: print("UNKNOWN")
繰り返しと組み合わせることで色々なことに使えそうですね。
機能拡張
MicroPythonは外部のモジュールと呼ばれるものを追加して、機能を増やすことができます。例えば、1秒おきに動物の種類を表示したいとします。この時、1秒おやすみするsleepという機能がtimeというモジュールに入っていますので、以下のようにするとできます。
import time animal = "cat" while True: print(animal) time.sleep(1)
PythonはラズパイのGPIOの操作用からデータ処理用、機械学習用、画像処理用と、とてもたくさんのモジュールがあります。少しずつ学んでいってできることを増やしていきましょう。
おわりに
さて、いかがだったでしょうか。MicroPythonは覚えることがとても少なく、初心者でも嫌にならずに始められるプログラミング言語だと思います。できそうだと思ったら、ラズベリーパイPicoで電子工作の始め方を参考に、Lチカからやってみてくださいね。
みなさまがたのしくPythonやMicroPythonの学習を進められるよう、ラズパイスクールはお手伝いをしていきます😊