月刊I/O 2022年5月号『Raspberry Piで作る電子工作』に記事を掲載して頂きました!

ArduinoやESPシリーズのマイコンボードをスマホで操作する。スマホアプリ『RemoteXY』の基本的な使い方!

ArduinoやESPシリーズのマイコンボードをWi-FiやBluetooth接続して操作できるスマホ用のアプリはいろいろとあります。

マイコンを使った無線通信を行う場合、スケッチ(プログラム)の中で一番面倒となるのが無線接続を行う部分だと思います。
例えばWi-Fiを使った無線通信を行う場合、マイコンボードによって使われるライブラリに違いがあり、アクセスポイントの設定などは結構面倒で初めて行う場合、戸惑う部分が多いと思います。

また無線通信を使い製作物を操作する際にスマホからリモート操作できると便利ですが、コントローラーのようなものを作りたい場合ブラウザから実現することも可能なんですが、凝ったUIのものを作ろうとするとHTMLやアプリを作成するなどの知識も必要となってきます。

そこでマイコンを制御するために作られた専用のスマホアプリを使えば、これら面倒な項目をアプリ側が行ってくれるので比較的簡単に実現する事が出来ます。

Arduinoなどマイコンボードを無線接続で操作できるスマホアプリはいくつかあります。
一例ですが、メジャーなもので言えば「Blynk」や「loT Remote」は非常にメジャーなアプリで使われている方多いと思います。

Blynkは非常に人気のあるアプリで最近ではNew Blynkがリリースされましたが、こちらに移行しつつあるのかな?(かなり仕様が変わっちゃいましたが・・・)

マイコンと接続できるスマホ用のアプリはいろいろとありますが、私は主にこのようなアプリを使っています。

基本的にこれらスマホアプリは有料アプリ(無料でも試せます)となり、サブスクでの購入や使用量により課金されるようになっています。

今回は『RemoteXY』というスマホアプリの基本的な使い方を見ていきたいと思います。
初回アプリ起動後、数プロジェクトは無料で試すことが出来ます。
またサブスク契約では3ヶ月370円(2022年7月現在)と他のアプリと比べるとお安く無制限で使うことが出来るので、マイコンボードをスマホアプリで操作するお試しにもいいかと思います。

最近ESP-01(ESP8266)を使った製作物をいくつか作っていたのですが、非常に相性も良くなかなか便利に使えるアプリだと思います。

無線機能を標準で持たないArduinoにBluetoothやWi-Fiモジュールを接続してアプリで制御する事も出来ます。

そしてESPシリーズのマイコンボードで使うことももちろん出来ます。

BluetoothやWi-Fiを使った無線通信で必要となる部分のスケッチはRemoteXY側で自動生成され、スマホ画面のインターフェースもドラッグ&ドロップで簡単に作ることができます。

それではスマホアプリ『RemoteXY』の基本的な使い方を見ていきましょう。

KKHMF HC-05 RS232 モジュール シリアル4ピンポートArduino用
EasyWordMall

マイコンボードをスマホで操作する。スマホアプリ『RemoteXY』の基本的な使い方!

冒頭でご紹介したように、マイコンボードと無線通信で接続して制御出来るスマホ用のアプリはいろいろとあります。

今回『RemoteXY』というスマホ用アプリを見ていきたいと思います。
ArduinoやESPシリーズのマイコンボードとWi-FiやBluetoothで接続して操作する事が出来るアプリとなります。

『RemoteXY』を使ったスケッチ(プログラム)作成の流れはこのようになります。

RemoteXYを使ったスケッチ作成の手順
  1. RemoteXYのWebサイトでベースとなるスケッチを作成する(スマホ側のUIの作成も含め)
  2. 必要に応じてスケッチの修正&追加
  3. マイコンボードへスケッチを書き込みむ

RemoteXYのWebサイトでベースとなるスケッチを作成する(スマホ側のUIの作成)

『RemoteXY』を使ったスケッチ(プログラム)の作成は、まずRemoteXYのWebサイトからベースとなるスケッチを作成します。

無線接続に関係する部分やスマホ側の画面に表示される「ボタン」や「スライダー」などUIの作成をこちらで行います。
あとは自動生成されたスケッチを必要に応じて修正&追加して目的のマイコンボードに書き込んで使う形となります。

参考 RemoteXYトップページRemoteXY

上記RemoteXYのWebサイトにアクセスし、[START NOW]からスマホ画面の作成や無線通信で使用するマイコンボード、無線モジュール等の設定を行いベースとなるスケッチを作成します。

ボタンの配置やハードウェアの設定を行っていくだけなので簡単で、ベーススケッチは自動生成されます。

ハードウェア構成の設定

まず基本となる使用するマイコンボードや無線モジュールなどハードウェア構成の設定を行います。
画面右横の[Configuration]からこれらの設定を行います。

クリックしてハードウェアを定義する4つの項目を選択していきます。

  • Connection 使用する無線方式の選択
  • Board 使用するマイコンボードの選択
  • Module 使用する無線モジュールの選択
  • IDE ベーススケッチを取得するIDEの選択

Connection(接続方法)

接続する無線方式の選択です。
Wi-FiやBluetooth以外にもクラウドサーバー(有料版購入で使えます)を使用する事も出来ます。

Board(マイコンボードの選択)

使用するマイコンボードの選択です。
[Choice by core]をクリックするとマイコンボードに搭載されているCPU(コア)一覧が表示されます。
例えばArduino Unoでは[ATmega328]が搭載されているのでこれを選択し、Arduino Megaでは[ATmega2560]、ESP32では[ESP32 based board]といった感じです。

また、[Choice by brand]ではマイコンボードのブランド名から選択する事も出来ます。
こちらから選択した方が分かりやすいですね!

[Arduino]をクリックすると各種Arduinoボードが表示されます。

ESP32では[NodeMCU]を選択するとボードが表示されます。

ESPシリーズのボードは種類が多いので、[ESP32 based board]と[WiFi on chip]や[Bluetooth on chip]といった組み合わせを選択する方がいいかもしれません。

Module(無線モジュールの選択)

使用する無線モジュールの選択です。
ESPシリーズのマイコンボードでは基本的にボード上に無線モジュールが搭載されているのでオンボードチップを選択する形となります。

Arduinoで使用する場合は、外部接続する無線モジュールを選択します。
Wi-Fiモジュールでは[ESP8266 Wi-Fi module]が使えます。

またBluetoothモジュールを接続する場合は、[HC-05(06) Bluetooth module]や[HM-10 Bluetooth BLE module]を使うことが出来ます。

MEMO
HC-05/HC-06 BluetoothモジュールはAppleのライセンスの問題でiPhoneでは認識されません。
HC-05/HC-06モジュールを使用する場合はAndroid端末を使用する必要があります!

IDE(開発環境の選択)

最後にベーススケッチを取得するIDEの選択です。
他のIDEはよく分かりませんが、Arduino IDEを選択しておけば問題ないかと思います。

ハードウェア構成の例

以上がハードウェアの設定項目となります。
一例としていくつかハードウェアの組み合わせを見ておきます。

ArduinoとWi-FiやBluetooth接続する場合

Arduino UnoとWi-Fi接続する場合、[Arduino Uno]と[ESP8266 Wi-Fi module]という組み合わせになります。

【Arduino】Wi-FiモジュールESP-01を使いArduinoをスマホ「RemoteXYアプリ」で操作してみる![ESP8266(ESP-01)/HC-05/HC-06など]

Bluetoothモジュールを使用する場合は、HC-05やHC-06モジュールを選択します。

ESP-WROOM-32とWi-FiやBluetooth接続する場合

ESP-WROOM-32でWi-Fi接続する場合、[ESP32 based board]と[Wi-Fi on chip]の組み合わせになります。

またBluetooth接続したい場合は、同様にオンボードチップを選択します。

ESP-01(ESP8266)とWi-Fi接続する場合

ESP-01(ESP8266)はWi-Fiモジュールですが、これ自身にスケッチを書き込みArduinoとして動かすことも出来ます。
[ESP8266 based board]と[WiFi on chip]という組み合わせでWi-Fi機能を持ったミニArduinoとして動かすことが出来ます。

ESP8266(ESP-01)にスケッチを書き込みスマホアプリからWi-Fi経由で動かしてみる!

上記はほんの一例ですが、ArduinoやESP32のボードで使うことがメインになるかと思います。

Wi-Fiアクセスポイントの設定

次にWi-Fiアクセスポイントの設定です。
[Module interface]から設定します。
この項目は特に変える必要はありませんが、必要に応じて分かりやすいものに変更するなどすればいいかと思います。

Wi-Fiアクセスポイント名はデフォルトでは[RemoteXY]となっています。
Wi-Fiを検出した際にスマホ側に表示される名称です。

[Password]はデフォルトで[12345678]となっています。
こちらも特に変更する必要はありませんが、任意で変更することも出来ます。(8文字以上必要です)
[Port]設定は特に変える必要はありません。

 

またハードウェアの構成によっては、[Connection interface]という項目が表示されます。
ESP32などオンボードの無線モジュールを使用する場合は表示されませんが、外部モジュールを接続する場合に表示されます。

例えば、ArduinoボードにESP8266 Wi-FiモジュールやHC-05/HC-06 Bluetoothモジュールを接続する場合です。
マイコンボードに無線モジュールを接続するわけなので、その接続の際に「ハードウェアシリアル」を使用するか「ソフトウェアシリアル」で接続するかの選択を行います。

ハードウェアシリアルを選択するとArduino Unoの場合では、D0がRX/D1がTXに設定されるということですね。
接続する無線モジュールのボーレート(通信速度)もここで設定しておきます。

またソフトウェアシリアルを選択すると任意の端子にRX/TXを割り振ることも出来ます。

Arduinoのハードウェアシリアル・ソフトウェアシリアルに関しては、こちらの記事も参考にして下さい!

Arduino入門編㉘ ソフトウェアシリアルを使ってみる!

アクセスパスワードやスマホ画面の基本設定

次に[View]の項目です。
こちらではスマホ画面のベース色や向きを設定します。(お好みで)

またRemoteXYアプリにアクセスするための[Access password]の設定を行います。
何でもいいのですが、今回[12345]と設定しておきます。

以上で基本設定の完了です。
あとはスマホ画面に[ボタン]や[ジョイスティック][スライダー]などパーツを配置していき操作画面を作っていきます。

操作画面の作成

使用するマイコンボードや無線モジュールなどの基本設定が出来ました。
ここからスマホの操作画面を作成していきます。

使える[スイッチ]や[ボタン][スライダー]や[ジョイスティック]などのパーツは画面左横の[Elements]の項目にあります。
これをスマホ画面内にドラッグ&ドロップで配置していくだけなので簡単です。

使えるパーツが結構多いのですが、基本となる[スイッチ]を使った簡単な作例を試してみます。

Arduino UnoにESP-01(ESP8266) Wi-Fiモジュールを接続してオンボードLEDのON/OFFをさせてみたいと思います。
ESP-01はハードウェアシリアルでArduino Unoと接続します。
ESP-01のデフォルトのボーレートは115200bpsなのでハードウェア設定はこのようになります。

[Elements]の項目にある[Switch]を選択してドラッグ&ドロップでスマホ画面内に配置します。

サイズ調整もマウスで直感的に出来るので簡単です。
スマホ画面いっぱいにスイッチを配置してみました。
画面内の[Switch]をクリックすると、画面右横に[Switch]の設定項目が表示されます。
色や形状、表示される文字など変更することも出来ます。

[Snap to pin]から動作させるGPIO端子を割り当てることも出来ます。
スイッチがONになるとArduino UnoのオンボードLED(D13)を点灯させたいので、[Snap to pin]の項目に[13]を割り当てておきます。

今回はLEDのON/OFF点灯スイッチの動作だけなのでこれで完了です!
画面右上の[Get source code]をクリックします。

Arduino Unoに書き込むためのスケッチが自動生成されます。
このスケッチをコピーしてArduino IDEの新規スケッチに貼り付ければ完了です!
これがベーススケッチとなります。
必要に応じてスケッチの追加や修正を行って使用します。

MEMO
「Download code」からZIPファイルとしてスケッチをダウンロードする事も出来ます!

スケッチの追加&修正

あとは通常通りこのスケッチをArduino Unoに書き込めば動作させることが出来ますが、スケッチの動作にはRemoteXYライブラリ』が必要となり事前にインストールしておく必要があります。

[スケッチ]→[ライブラリをインクルード]→[ライブラリを管理]へと進みます。

[remotexy]で検索すると見つかると思います。
このライブラリをインストールすれば、あとは通常通りスケッチの書き込みを行えばArduinoで動かすことが出来ます。

自動生成されたスケッチがこちらです。(コピペで使えます)

特に修正する部分はありませんが、内容を見ておきます。
この部分がライブラリのインクルードとWi-Fi設定部分です。

スマホ画面内の色やボタン配置などはこの部分に書かれています。

作成した変数(スイッチの状態)はこの部分に書かれています。
今回スイッチを1つ配置したので、switch_1という変数が定義されています。(名称は変更も可能です)

そしてvoid loop()内にdigitalWrite関数を使ってオンボードLED(D13)をON/OFFさせるスケッチが書かれています。
生成された変数名(switch_1)の頭に[RemoteXY.]を付ければその値を取得することが出来るということですね。

今回の例ではスケッチの追加&修正は必要ありませんが、生成されたスケッチをベーススケッチとして必要に応じて追加していく形で使います。

動作確認

Arduinoにスケッチの書き込みが完了したら接続です。
ArduinoとESP-01(ESP8266)との接続はこのようになります。

ESP8266との接続方法に関して詳しくはこちらの記事も参考にして下さい。

【Arduino】Wi-FiモジュールESP-01を使いArduinoをスマホ「RemoteXYアプリ」で操作してみる![ESP8266(ESP-01)/HC-05/HC-06など]

ちなみにHC-05/HC-06モジュールを使いBluetooth接続を使う場合の接続はこのようになります。

HC-05/HC-06Bluetoothモジュールに関して詳しくはこちらの記事も参考にして下さい!

Arduinoを使いBluetooth通信をやってみる!HC-05/HC-06 Bluetoothモジュールの使い方!

[動作確認]スマホから操作してみる

スケッチの書き込み&無線モジュールとの接続が完了したら実際にスマホから操作してみます。

Arduinoに電源を投入しスマホからWi-Fiアクセスポイントに接続します。
今回Wi-Fiアクセスポイント名はデフォルトの[RemoteXY]にしました。
スマホ側のネットワーク設定画面に表示されるのでこれをタップします。(写真はiPhoneを使用)

次にパスワードの入力です。
こちらもデフォルトの[12345678]から変えていないのでこれを入力します。

問題なければWi-Fiアクセスポイントとして機能しているESP-01(ESP8266)に接続されます。

次にスマホアプリ「RemoteXY」を起動します。
RemoteXYアプリのインストールはこちらから行って下さい。

参考 Application for remote control your microcontroller boardRemoteXY

iPhoneやiPad、Android端末に対応しています。

アプリを起動し右上の[+]をタップし、[WiFi point]を選択します。

[Connect]をタップし、設定したパスワード(今回12345を設定)を入力します。

問題がなければ、先程Webページで作成した画面がスマホに表示されます。

スイッチをタップしてArduinoのオンボードLEDのON/OFFが出来れば成功です!

LEDのON/OFF制御だけなので簡単でしたが、[スライダー]や[ジョイスティック]など多数あるその他ボタンを使うことも出来ます。
これらは使用用途によりスケッチの記述が変わってくるので、ベーススケッチ作成後にスケッチの追加作業が必要となります。

例えば下記動画は先程のON/OFF制御以外にスライダーによりLEDを点灯させる動作も入れてみました。

ON/OFFの単純な動作は先程のように自動的にスケッチ内にdigitalWrite関数で書かれますが、スライダーなど他の項目では使用用途によりスケッチが変わってくるので、これらはスケッチの追加を行う必要があります。

生成されたスケッチの変数部分のコメント欄にはこのように書かれています。
スライダー(slider_1)は0~100の値の範囲で取得されるようです。

この例ではPWMによるLEDの点灯なので、Arduinoの場合0~255の範囲で指定する必要があります。
map関数を使いこの範囲になるように調整してLEDを点灯させる必要があり、この部分が追加で記述するスケッチとなります。

詳しくはこちらの記事をご覧下さい!

【Arduino】Wi-FiモジュールESP-01を使いArduinoをスマホ「RemoteXYアプリ」で操作してみる![ESP8266(ESP-01)/HC-05/HC-06など]

またRemoteXYの他のボタンの使用方法に関してはこちらを参考にして下さい。

参考 How it worksRemoteXY

最後に!

マイコンボードと無線接続して操作出来るスマホ用のアプリはいろいろとあります。
「Blynk」アプリではトークンの発行が必要だったりと多少の使い方の違いはありますが、基本的な使用方法は他のアプリも同様です。

RemoteXYが特段使いやすいというわけではありませんが、他のアプリと比べサブスクでの使用が非常に安く(3ヶ月で370円)無制限で使うことが出来ます。
いろいろと数をこなす私にとってはありがたい価格で便利に使えるアプリだと思います。

BlynkはNew Blynkがリリースされて使い方がイマイチ・・・?
旧バージョンは新たにアカウントを作成することも出来なくなったようで・・・?

そんな時にSNSで海外の方にRemoteXYアプリの存在を教えて頂き使い出したのですが、使い勝手もなかなか良く簡単に使うことが出来るので最近よく使っています。

面倒な無線部分のスケッチや操作画面の作成などベースとなるスケッチを自動生成してくれるので、製作過程でちょっとした動作テストをしたい場合などでも便利に使うことが出来るので重宝しています。

KKHMF HC-05 RS232 モジュール シリアル4ピンポートArduino用
EasyWordMall

コメントを残す