親子IoTワークショップ

マイコンとクラウドを使ってIoTとプログラミングを学ぼう

[ トップ | 開催予定・概要 | 2024-12開催 | お知らせ | Facebook ]

LEDのON/OFFをiOSのショートカットを使って行う

LEDを使う(点灯、消灯、点滅など)Pythonのプログラムを書いたら、そのプログラムをラズパイの上で実行しなければなりません(当たり前ですが)。つまり、ラップトップやデスクトップのコンピュータからVNC経由でラズパイの画面を見て、ThonnyでPythonのプログラムを開いて、実行ボタンをクリックします。ラップトップやデスクトップではなく、タブレットやスマートフォンでVNCを使うこともできますが、いずれにせよ、ラズパイの画面上でThonnyの実行ボタンをタップする必要はあります。

LEDを使いたいだけなのに、VNCのあの「もったり」した動作に付き合い、Thonnyを動かして。。。というのは面倒なときもありますよね。もっと手軽にLEDを使いたいというニーズに応えるには、iOSのショートカット(Shortcuts)という機能が便利です。これはアップルが開発したiOSアプリで、WiFiでラズパイと通信し、ラズパイ側のPythonプログラムをSSH経由で実行できるようになります(ここではSSHが何かを知っている必要はありません)。以下の動画のような使用感です。

ショートカット(Shortcuts)は、iOSのバージョン12から利用可能です。iOSの最近のバージョンには初めから含まれているので、App Storeからダウンロードする必要はありません。

残念ながら、ショートカットのAndroid版はありません。ただし、Androidからラズパイ上のプログラムを実行する方法はあります(LEDのON/OFFをAndroidとBluetoothで行うを参照)。

セットアップ

まずは、お使いのiPhone/iPadにShortcutsアプリがあることを確認してください。なければApp Storeからダウンロードしてください。ShortcutsはiOSのバージョン12以上で動作します。

次に、ラズパイ画面左上のアイコン(ラズパイのロゴ)をクリックしてメニューを開き、「Preferences」を選択、さらに「Raspberry Pi Configuration」を選択してください。「Raspberry Pi Configuration」というウィンドウが開いたら、「Interfaces」を開き、SSHを「Enable」にします。その後、OKボタンをクリックしてウィンドウを閉じてください。

SSHが正常に使えるようになっていることを確認するために、ラップトップ(あるいはデスクトップ)コンピュータ上でTerminalを起動して、以下のコマンドを実行してください。

ssh pi@<hostname>.local

<hostname>はラズパイの名前です。ラズパイの名前がpandaなら、「ssh pi@panda.local」としてください。パスワードを求められるので、ラズパイ用のパスワードを入力してください。すべてうまく行くと、以下のような行(コマンドプロンプト)が表示されて、$の右側にカーソルが点滅している状態になります。

pi@panda:~ $

これは正常に(SSHを使って)コンピュータからラズパイにログインできたということです。ここでは、これ以上SSHそのものやSSHの使い方には踏み込みません。カーソルが点滅しているところに「exit」と入力してリターンキーを押してください。これで、ラズパイからログアウトします。これで、SSHが正常に動作していることが確認できました。

使う回路とプログラムの準備、テスト

ここでは以下の回路を使います。これは「複数のLEDを点滅させる(複数のGPIOピンを使う)」で作ったものと同じです。

この回路でLEDを点滅させるプログラムがled2-on-off-alternate.pyです。これも「複数のLEDを点滅させる(複数のGPIOピンを使う)」で作ったものと同じです。このプログラムをラズパイ上のThonnyにコピーして保存してください。そして、このプログラムをThonnyを使って実行して、正常に動作することを確認してください。2つのLEDが交互に10回点滅すれば成功です。

次に、同じプログラムの動作を、別の方法でテストします。ラズパイの上でTerminalを開いて、以下のコマンドを実行してください。

python3 ~/iot-python/led2-on-off-alternate.py

「python3」と「~」の間にスペースが入っていることに注意。ここでは、ワークショップ中に作った「iot-python」というフォルダの中にプログラム(led2-on-off-alternate.py)が保存されていると想定しています。先ほどのテストと同じように、2つのLEDが交互に10回点滅すれば成功です。

ShortcutsからLEDを点滅させる

いよいよ、このプログラムをiOSのShortcutsから実行します。iOS上でShortcutsを実行し、画面右上の「+」をタップして、新しいショートカットを作ります。ここでは、ラズパイ上のプログラムを実行するショートカットを作ります。

次の画面の一番下にある検索欄に「ssh」とタイプします。

すると、以下のように「Run Script Over SSH」という項目が表示されるので、それをタップします。

次の画面で「Show More」をタップして、以下のように各情報を入力します。

入力項目 入力値
Host <hostname>.local
Port 22
User pi
Authentication 「Password」を選択
Password ラズパイ用のパスワード
Input 無視(何も入力しなくてよい)
Script python3 ~/iot-python/led2-on-off-alternate.py

<hostname>はラズパイの名前です。ラズパイの名前がpandaなら、「panda.local」としてください。

入力が終わったら、画面右上の「Next」をタップして、作成中のショートカットに名前をつけて、画面右上の「Done」をタップしてください。すると以下のように、作成したショートカットが表示されます。

この例では、ショートカットの名前は「Blink My LEDs」になっています。これをタップすると、ShortcutsがWiFi経由で<hostname>.localに接続(ログイン)し、python3 ~/iot-python/led2…pyというコマンドを実行します。 その結果LEDが点滅します。

ShortcutsはデフォルトでSiriと連携しています。Siriを起動して(「Hey Siri」と話しかけたり、電源ボタンを長押しするなど)、今作ったショートカットの名前を言うと、LEDが点滅します。

ここでは、ShortcutsがSSH経由でリモートマシンのプログラムを実行する機能だけを使っていますが、他にもいろいろと面白い・便利な機能があります。詳細についてはマニュアルをどうぞ。