Sense HAT編の連載は前回でひと区切りしたところですが、公式サイトで気になる記事を発見!
Sense HAT emulator
Desktop Sense HAT emulator
Sense HAT エミュレータ!
Sense HAT本体に夢中になっている間に、便利なツールが2種類もリリースされていました……(どちらかと言うと本体を触る前に使いたいツールですね……)。
センサの値を自由に調節できるなど、Sense HATユーザーにもうれしい機能が満載!これまでに覚えてきた内容を復習しつつ、エミュレータを使って気軽にSense HATを楽しんでみたいと思います!
Sense HAT emulator ブラウザ版
先にリリースされたのはブラウザ版のエミュレータです。Sense HATどころかRaspberry Pi本体が無くても遊べてしまいます!ということで、Sense HATの購入を迷っている方にもオススメのツールです。
上図がエミュレータの初期画面です。ラズベリーパイ公式サイトのブログやAstro Piのページ にも埋め込まれていますね。
from sense_hat import SenseHat sense = SenseHat() red = (255, 0, 0) sense.show_message("How cool is this?", text_colour = red)
あらかじめ5行のソースコードが用意されています。「How cool is this?」という文章が赤い文字で流れていく、というプログラムになります(show_message関数をはじめ、LEDディスプレイ表示に関する内容は、第44回「ラズベリーパイ専用アドオンボード Sense HATで遊ぼう!(1)LEDディスプレイの操作」を参考にしてください)。
この画面はエディタになっているので、編集して好きなプログラムを動かすことも可能です。
動画では、最初はデフォルトのまま赤文字で、2回目はエディタでソースコードを編集して青文字に変えて実行してみました。
プログラムを実行するには、上のメニューバーにある三角形の再生ボタンをクリックします。画面が切り替わり、Sense HAT搭載ラズベリーパイの画面が表示され、プログラムの内容が実行されます。
エディタ画面に戻るには、再生ボタンの左にあるペンのアイコンをクリックします。
また、左下の青いアイコンをクリックすると、下記のようなメッセージが表示されます。
Use the arrow keys and enter key of your keyboard to control the Sense HAT joystick. Adjust the sliders above to control the simulated temperature, pressure, and humidity.
温度・気圧・湿度のセンサ値をスライダー、本体の向きを変えるボタンも付いています。また、キーボードの矢印キーとEnterキーで、ジョイスティックの操作も可能です。
ジョイスティックの入力は、プログラム実行中のみ可能です。
ブラウザ版のエミュレータは、Firefoxとは少し相性が悪いようで、処理が遅かったり、フリーズしてしまったり、うまく動作しないことが多くありました。Chromeの方がオススメです!
Sense HAT emulator デスクトップ版
「Desktop Sense HAT emulator」は、Raspbianにインストールして使うエミュレータです。インストール方法は、ラズベリーパイ公式サイトのブログで紹介されている他にも、専用のドキュメントページも公開されています。
Installation – Sense-Emu 1.0 documentation
「apt-get」コマンドで簡単にインストール可能です!いつもの「update」コマンドを実行後、4種類のパッケージをインストールします。
sudo apt-get update
sudo apt-get install python-sense-emu python3-sense-emu python-sense-emu-doc sense-emu-tools -y
インストールが完了すると、再起動なしで、すぐに使用できます。
デスクトップのメニューを見てみると……
「Programing」の中に「Sense HAT Emulator」が追加されています!
ちなみに、リモートデスクトップ接続などでの外部からの操作には対応していないので注意しましょう。
こちらが初期画面です。ブラウザ版エミュレータとの大きな違いは、「Yaw」「Pitch」「Roll」の項目が増えているところでしょうか。ジョイスティック用のボタンも画面上に用意されています。
下部にある矢印ボタンをクリックすると、ラズベリーパイを裏返すことができます。「Yaw」「Pitch」「Roll」の向きが描かれていて、分かりやすいですね。
サンプルプログラムがいくつか用意されているので、早速動かしてみましょう!
右上のメニューから[File]-[Open example]-[Simple]-[humidity.py]を選択します。
IDEL3が起動し、サンプルソースが表示されました!
キーボードの[F5]キーを押すか、メニューバーの[Run]-[Run Module]からプログラムを実行してみましょう。
「Humidity」のバーを上下させると、連動して、ラズベリーパイのLEDディスプレイの緑色の領域が増減します。
温度・湿度・気圧といったセンサでの取得値は、実際の環境で任意の値に設定することはむずかしいので、エミュレータのありがたみを実感させられます。プログラミングだけでなく、デバッグ要員としても大活躍してくれそうです!
Desktop Sense HAT emulator用ソースコードについて
このプログラムを実際にSense HAT本体で動かすには、ソースコードを一部修正する必要があります。
Desktop Sense HAT emulator
Write your code in IDLE as before; there are also a number of examples that can be opened from the emulator’s built-in menu. If you then want to port your code to a physical Sense HAT, you just need to change
sense_emu
to
sense_hat
at the top of your program. Reverse this if you’re porting a physical Sense HAT program to the emulator, perhaps from one of our educational resources; this step isn’t required in the web version of the emulator.
答えは公式サイトのブログに書いてありました。要約すると、「sense_emu」の部分を「sense_hat」に変更する必要がある、内容です。
このことを頭に入れて、先程のプログラムをもう一度よく見てみましょう。
from sense_emu import SenseHat sense = SenseHat() green = (0, 255, 0) white = (255, 255, 255) while True: humidity = sense.humidity humidity_value = 64 * humidity / 100 pixels = [green if i < humidity_value else white for i in range(64)] sense.set_pixels(pixels)
1行目の、モジュールの呼び出し部分に「sense_emu」がありますね!Sense HAT本体を動かす場合とブラウザ版エミュレータは「sense_hat」ですが、デスクトップ版エミュレータは「sense_emu」が使われていました。デスクトップ版エミュレータは、IDELを使ってプログラムを動作させるため、Sense HAT本体を動かすか、エミュレータを起動するかをソースコード内で切り分ける必要があるのですね。
まとめ
エディタ付きのブラウザ版エミュレータは、これからSense HATをはじめたい方にぴったりのツール!ちょっとした動作確認や、プログラミングの練習にも便利ですね。そして、Sense HATどころか、ラズベリーパイが無くても遊べてしまうのが最大の魅力……文字通りブラウザさえあればどこでもSense HATが楽しめます!
ラズベリーパイをお持ちの方には、機能の多いデスクトップ版エミュレータがオススメです。まずはプログラミングと動作確認をエミュレータで行い、その後はソースコードを3文字変えて、Sense HAT本体で実機確認……という流れで、よりスムーズに開発が進められそうですね!
Sense HAT編は、ここで一旦終了です。
次回は、「Ubuntu MATE」というOSのインストールに挑戦してみたいと思います!