0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

BlynkアプリでSPRESENSEをリモートコントロールする

Last updated at Posted at 2020-05-02

Blynkアプリを使ってデバイスコントロールに挑戦しました。スマホからボードを制御したりボードの情報をスマホに送ったりと簡単に自作IoTを実現することができます。そんなに凝ったことをしなければ無料で遊べます。

Blynk アプリの導入

Blynk をご存知ない方のために本家サイトはこちらです。
https://blynk.io/

AndroidやiOS用のスマホアプリが用意されていて、デバイスもArduino、ESP、RaspberryPiなど各種ボード(400以上)に対応しています。デバイスとの接続方法も、WiFi, Ethernet, Cellular(GSM, LTE), Serial, USB, Bluetoothと多種多様です。

BlynkのCommunitiyサイトにこんなやり取りを見つけました。

Spresenseボードはまだサポートされていないけど、オープンソースだからコントリビューションはウェルカムだよとのこと。前回、SPRESENSEでArduino Ethernetライブラリを動かしてみたので、SpresenseボードをEthernetで接続してBlynkアプリでコントロールしてみたいと思います。用意されたまま使うよりも、移植してみたりハマったりした方が理解が深まると思うので(持論)、敢えて茨の道を進んでいきます。

Blynk アプリのインストール手順

iOSを使った手順ですが、Androidでも特に変わらないと思います。

手順
"blynk"を検索してアプリをインストールします。 install.png
初めて使用する場合は、"Create New Account"でアカウントを作成します。 login.png
"Email"と"Password"を入力します。

登録したEmail宛に"Auth Token"が送られてきます。このトークンは後でプログラムに入れて使います。
new_account.png

Blynk アプリの使い方

手順
"New Project"を作成します。
ここでは"test"という名前で
デバイスは"Arduino UNO"、
CONNECTION TYPEは"Ethernet"
を選択します。
new_project.png
キャンバスが現れます。
ここのキャンバスをクリックすると"Widget Box"が現れます。
test.png
色々なWidgetが用意されています。
"YOUR ENERGY BALANCE"として初期状態で2000ポイントが与えられています。つまり2000ポイント以内であれば無料でWidgetを組み合わせて使うことができます。
widget_box.png
例えば、"Button" Widgetの場合、
"PIN"をクリックして使用するピンを選びます。"Digital", "Analog"など物理的なピン番号の他に、"Virtual" という仮想的なピン番号を選ぶこともできます。仮想的なピン番号はこの後で出てくるプログラミングと合わせて使用します。
button_settings.png
例えば、"LED" Widgetの場合、
"PIN"をクリックして使用するピンを選びます。ここでは"Virtual"ピンのみを選ぶことができます。

なんとなく"Button"と"LED"のOUTPUT/INPUTの表示が逆になっているように思うかもしれませんが、"Button"の場合はBlynkアプリでボタンを押したという信号をデバイス側に出力するのでOUTPUT、"LED"の場合はデバイスからの信号を入力してスマホ上のLEDを光らせるので"INPUT"になります。
led_settings.png
2000ポイントで足りなくなったら"Energy Pack"を追加購入することもできます。 energy_store.png

デバイス側のプログラミング

Blynkライブラリはこちらにあります。
https://github.com/blynkkk/blynk-library

Arduinoライブラリマネージャからインストールすることもできますが、
image.png

私はソースコードを編集して使いたいので(構成管理したい)ので、Arduino の libraries フォルダ以下に git clone します(以下はLinuxでの例です)。

$ cd ~/Arduino/libraries
$ git clone https://github.com/blynkkk/blynk-library

blynk-libraryですが、とにかく設計/ソースコードが綺麗です。
色々なサンプルコードが用意されているのですが、ここを眺めてみるのが一番理解が深まると思います。
https://examples.blynk.cc/?board=Arduino%20Uno&shield=Ethernet%20Shield%20W5100&example=GettingStarted%2FBlynkBlink

Arduino_Ethernet スケッチサンプル

Blynk->Boards_Ethernet->Arduino_Ethernetのスケッチを開きます。
~/Arduino/libraries/blynk-library/examples/Boards_Ethernet/Arduino_Ethernet/Arduino_Ethernet.ino

プログラム中の"YourAuthToken"のところをメールで送られてきたTokenに置き換えます。

Arduino_Ethernet.ino
// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "YourAuthToken"; // <=== 置き換える

ビルドするにはEthernetライブラリが必要です。こちらを参考にしてください。
SPRESENSEでArduino Ethernetライブラリを動かしてみた

analogRead()のピン番号がArduino UNOベースになっているので、Spresense用に次のように変更します。

diff --git a/src/BlynkApiArduino.h b/src/BlynkApiArduino.h
index f0b2f8d..8e1231b 100644
--- a/src/BlynkApiArduino.h
+++ b/src/BlynkApiArduino.h
@@ -156,7 +156,7 @@ void BlynkApi<Proto>::processCmd(const void* buff, size_t len)
         BlynkParam rsp(mem, 0, sizeof(mem));
         rsp.add("aw");
         rsp.add(pin);
-        rsp.add(analogRead(pin));
+        rsp.add(analogRead(A0 + pin - 14));
         static_cast<Proto*>(this)->sendCmd(BLYNK_CMD_HARDWARE, 0, rsp.getBuffer(), rsp.getLength()-1);
     } break;

ビルドして動かしてみます。ネットワークへの接続に成功すると以下のようなログが表示されます。
image.png

Blinkyアプリ

動作確認用にシンプルなBlynkアプリとして、次のようなWidgetを使いました。

"GAUGE" Widgetを二つ用意して、A0 と A1 をモニタします。

  • PIN: Analog A0
  • PIN: Analog A1

"BUTTON" Widgetを二つ用意して、D2, D3 に接続します。

  • PIN: Digital D2
  • PIN: Digital D3
test1.png

アプリの右上の ▷ 再生ボタンを押すとデバイスに接続します。

test-exec.png connect.jpg

"GAUGE"にA0, A1 から読み取ったアナログ値が表示されており、リアルタイムに更新されます。

D2<->D3 間に LED をつないで、(D2,D3)=(OFF,ON) にすることで LED が点灯、(D2,D3)=(OFF,OFF) にして LED が消灯します。

さいごに

Widgetは他にもたくさんあります。

"Music Player" Widgetを使って Spresense の Audio Playder につなげる、とか、"Map" Widget を使って Spresense の GPS 情報をスマホで見る、といったことが可能です(たぶん)。このあたりは後日チャレンジして機会があれば作品をアップしようと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?