Volodymyr Shymanskyy氏が作成したViperIDEは、MicroPythonコードを作成し、様々なデバイスから実行したい人にとって非常に便利なツールです。ブラウザベースであるため、ViperIDEはノートパソコンやデスクトップパソコンからスマートフォンやChromebookまで、様々なマシンで動作します(私たちはLenovo Chromebookでテストしましたが、問題なく動作しました)。
Pi Cast (6/18) Viper IDE と Blynk IoT MicroPython フレームワーク - YouTube
Shymanskyy氏は先日、Raspberry Piをテーマにした番組「The Pi Cast」にゲスト出演し、ViperIDEのライブデモを披露してくれました。この無料ソフトウェアは使いやすく、今回のハウツーでは、この優れたエディタの使い方を、様々なツールを使って解説していきます。
ラズベリーパイ ピコそして MicroPython。
これら2つの選択肢だけに限定されるわけではありません。ViperIDEは、CircuitPython、ESPボード、Adafruit、Seeed、micro:bitマイクロコントローラーでも動作します。
このプロジェクトに必要なものは
- ラズベリーパイ ピコ / ピコ W
- ブレッドボード
- オス-オスジャンパーワイヤー3本
- ネオピクセルスティック
1.このガイドの最初の 3 つの手順に従って、最新バージョンの MicroPython を Raspberry Pi Pico にフラッシュします。
2.ブラウザを開き、ViperIDE Web サイトにアクセスします。
3. Raspberry Pi Pico が接続されていることを確認し、右上隅の USB アイコンをクリックします。
4.メニューから適切なデバイス(通常はBoard CDC)を選択し、「接続」をクリックします。数秒後、ViperIDEが接続されます。
Viper ユーザーインターフェース
ViperIDE のユーザー インターフェイスは、6 つの主要な領域に分かれています。
Tom's Hardware の最高のニュースと詳細なレビューをあなたの受信箱に直接お届けします。
- Pico上でファイルを保存して実行:緑の保存アイコンをクリックすると、デフォルトでファイルがmain.pyとしてPicoに保存されます。これにより、Picoの電源投入時にコードが実行されます。青い再生ボタンをクリックすると、Pico上でコードが実行され、結果はターミナル(5)に表示されます。
- コード エディター:ここでプロジェクト コードを記述します。
- 接続:アイコンは、WebREPL (Pico に直接アクセスする Web インターフェイス)、Bluetooth 接続、USB (先ほど使用したもの)、フルスクリーン エディター ウィンドウの順になっています。
- マネージャーと設定:アイコンは、順に、ファイル マネージャー (Pico 上のプロジェクト ファイルの管理)、パッケージ マネージャー (追加のモジュールとライブラリをインストールする手段)、ツール (デバイスの接続と REPL)、設定 (ローカリゼーションやその他のコード中心のオプションを構成する)、最後に情報 (GitHub リポジトリの詳細) です。
- ターミナル: REPL (Read-Eval-Print-Loop) とも呼ばれ、コードの出力が印刷され、MicroPython コードを操作できる場所です。
- ターミナル コントロール:ターミナル出力を削除したり、ソフト リセットを実行したり、ハード リセットを実行したり、ターミナルを全画面に設定したりできます。
まずはシンプルなLED点滅から始めましょう。Raspberry Pi PicoとPico WにはオンボードLEDが搭載されており、これを点滅させることで、ボードとの通信と制御が可能かどうかを確認できます。
1.コードエディタ(2)で、2つのモジュールをインポートします。1つ目は「machine」モジュールで、そこからPinをインポートします。このモジュールはGPIOの使用を可能にします。2つ目は「time」モジュールで、そこからコードに遅延を追加するためのsleep関数をインポートします。
from machine import Pin
from time import sleep
2. 「led」というオブジェクトを作成し、そこにLED用のGPIOピンへの参照を作成し、そのピンを出力に設定します。以前のRaspberry Pi Picoでは、オンボードLEDにGPIO25を使用していました。これはPico Wで変更され、「LED」参照はどちらのボードでも機能します。ピンを出力に設定すると、LEDに電流が流れ、LEDが点灯します。
led = Pin("LED", Pin.OUT)
3. forループを追加してコードを10回反復します。forループ内のコードは10回実行され、その後ループが終了し、コードの実行が停止します。
for i in range(10):
4. LEDをオン/オフし、ターミナルにメッセージを出力した後、コードを0.1秒間一時停止します。toggle()関数はGPIOピンの状態を切り替え、オフからオンに、オンからオフに切り替えます。print関数は、ターミナルでコードが実行中であることを示すためのもので、LEDが点滅していない場合に便利です。sleep関数は、MicroPythonコードがすべての処理を一度に実行しないようにするためのものです。
led.toggle() print("TOGGLE") sleep(0.1)
5. 「保存」ボタン(1)をクリックし、「実行」ボタン(1)をクリックしてPico上でコードを実行します。ループが終了するまで、オンボードLEDが点灯と消灯を繰り返します。
from machine import Pin
from time import sleep
led = Pin("LED", Pin.OUT)
for i in range(10): led.toggle() print("TOGGLE")
sleep(0.1)
ViperIDEのパッケージマネージャーは、事前に記述されたコードを含む追加のMicroPythonモジュール(ライブラリと呼ばれることもあります)をインストールするための便利なツールです。これらのモジュールを使用すると、追加のコンポーネントを利用できるようになります。ここでは、NeoPixelスティックを使用します。このスティックには8個のRGB LEDが搭載されており、それぞれNeoPixelモジュールで制御できます。
コードを書く前に、この図に従ってNeoPixelを配線する必要があります。Raspberry Pi PicoのGPIO 16を使用することにしました。アクセスしやすく、配線例も分かりやすいからです。
1.パッケージマネージャーをクリックし、リストからNeopixelを見つけます。その項目の右側にあるダウンロード矢印をクリックします。インストールプロセスにより、neopixel.mpyというファイルがPicoのlibフォルダにインストールされます。
2.ファイルマネージャーアイコン(4)をクリックし、ファイルマネージャーで「/」を探します。「+」記号をクリックして、「blinky.py」という新しいファイルを作成します。
3. blinky.py が選択されていることを確認し、4つのコードモジュールをインポートします。Machine はGPIOへの接続です。NeoPixelはNeoPixelの操作を容易にするモジュールです。Sleep はコードに遅延を追加するために使用します。最後に、random モジュールから疑似乱数ジェネレータ(randint)をインポートします。
import machine
import neopixel
from time import sleep
from random import randint
4.オブジェクト np を作成し、コードをNeoPixelにリンクします。Picoに、NeoPixelがGPIO16に接続されており、8個あることを伝えます。LEDの最終的な数は、実際に使用している数に合わせて変更してください。
np = neopixel.NeoPixel(machine.Pin(16), 8)
5. 10回繰り返すforループで、赤、緑、青を表す3つのオブジェクト(r、g、b)を作成します。randint関数を使って乱数を生成します。これらのオブジェクトにはそれぞれ0から255までの乱数が格納されます。0はオフ、255は最大輝度です。このforループが10回繰り返されるたびに、r、g、bの値が変化し、ランダムな色が生成されます。
for i in range(10): r = randint(0,255) g = randint(0,255) b = randint(0,255)
6.別のforループを使って、NeoPixel内のすべてのLED(今回は8個)を反復処理します。LEDを移動する際の位置はi変数に格納します。iは0から始まり、7で終わります。つまり、i = 0、i = 1、i = 2…となります。
for i in range(8):
7.ループが繰り返されるたびに、現在のピクセル (i) を r、g、b に格納されているランダムに選択された値に設定します。
np[i] = (r,g,b)
8. NeoPixels の色が変化するのが確認できるように変更を記述し、遷移がスムーズになるように 0.1 秒の一時停止を追加します。
np.write() sleep(0.1)
9.もう一つのforループを使って、今度は8から0まで逆方向にカウントし、すべてのピクセルをオフに設定します。範囲を反転することで、8から0まで逆方向にカウントできますが、逆方向にカウントするたびに何ステップ進むかを指定する必要があります。
for i in reversed(range(0,8,1)): np[i] = (0,0,0) np.write() sleep(0.1)
10. 「保存」ボタン(1)をクリックし、「実行」ボタン(1)をクリックしてPicoでコードを実行します。NeoPixelがカウントアップとカウントダウンを繰り返し、そのたびに異なる色が表示されます。
完全なコードリスト
import machine
import neopixel
from time import sleep
from random import randint
np = neopixel.NeoPixel(machine.Pin(16), 8)
for i in range(10): r = randint(0,255) g = randint(0,255) b = randint(0,255) for i in range(8): np[i] = (r,g,b) np.write() sleep(0.1) for i in reversed(range(0,8,1)): np[i] = (0,0,0) np.write()
sleep(0.1)
レス・パウンダーは、トムズ・ハードウェアのアソシエイトエディターです。クリエイティブテクノロジストとして、7年間にわたり、老若男女を問わず、教育と啓発のためのプロジェクトを手がけてきました。Raspberry Pi Foundationと協力し、教師向けトレーニングプログラム「Picademy」の執筆・提供にも携わっています。