You are here

裸のArduino UNOでBlynk

Blynkの最小スケッチ

イーサネットシールドなどを接続しない裸のArduino UNOとBlynkで遊ぶ最少のスケッチ。
誰でも(たぶん)持っているArduino UNOだけで、Blynkできます。

Arduino UNOを使用する場合には、正攻法としてはイーサネットシールドを載せてインターネットに接続してBlynkを使用するのでしょうが、ここでは、裸のArduino UNOで手軽にBlynkを利用する方法を示します。
サンプルはBlynkのスケッチ例にもドキュメントにも示されていて、私が頑張ったわけではないけどね。
http://help.blynk.cc/how-to-connect-different-hardware-with-blynk/arduin...

Arduino UNOを使用する際には、スケッチを書き込むためにUSBでPCに接続していますが、そのUSBを通じてPCのネットワーク通信機能を利用してインターネットに接続します。
要するに、PCをイーサネットシールドとして使う!というある意味豪胆な手法です。かなり高価なイーサネットシールドですね。:-P
高価なイーサネットシールド(PC)の電源を切ると、ネットワーク接続が切れるのであしからず。

このスケッチはBlynkの実質的に最少のスケッチで、特定の目的のための特別なコードは含まれていません。
ほんとに短いスケッチですね。
実質的に、初期化のbegin()メソッドと、基本的な処理のrun()メソッドだけで何ができるでしょう?

#include <BlynkSimpleStream.h>

// BlynkのAuth Tokenを設定
char auth[] = "YOURAPPAUTHTOKEN" ;

void setup()
{
  Serial.begin(9600) ; // シリアルはモニター用ではなくネット通信に使用
  Blynk.begin(Serial, auth) ; // USBのシリアル通信でネットと接続
  Blynk.syncAll() ; // サーバーに記録されているピンの状態を復元
}

void loop()
{
  Blynk.run() ;
}

以下の記述はWindows用です。
操作の詳細や、Mac用の操作は以下のページを参照してください。
http://docs.blynk.cc/#hardware-set-ups-arduino-over-usb-no-shield
http://help.blynk.cc/how-to-connect-different-hardware-with-blynk/arduin...

上記のスケッチをArduino UNOに書き込んだら、その状態で、Arduino IDEにインストールしたBlynkライブラリのフォルダのなかのscript内にあるblynk-ser.batを起動します。

まず、cmd.exeを起動します。

次に、Arduino IDEのツールメニューからArduino UNOが接続されているUSBの仮想シリアルポートを確認し、それを-cオプションを使ってblynk-ser.batの起動時に指定します。
私の環境では、COM19だったので以下の様に -c COM19と指定します。

E:\arduino\libraries\Blynk\scripts>blynk-ser.bat -c COM19
Connecting device at COM19 to blynk-cloud.com:8442...
OpenC0C("\\.\COM19", baud=9600, data=8, parity=no, stop=1) - OK
Connect("blynk-cloud.com", "8442") - OK
InOut() START
DSR is OFF

上記のバッチファイルを起動すると、USBケーブルがネットワークケーブルとして利用されます。
このため、Arduino UNOのBlynkスケッチを修正して再書き込みする場合には、上記のバッチファイルの実行を中断してUSBケーブルを解放する必要があります。
バッチファイルの中断は、CTRL-Cで行うことができます。

blynk-ser.batを-hオプションで起動すると、以下のようにオプションの概要が表示されます。

E:\arduino\libraries\Blynk\scripts>blynk-ser.bat -h

   This script redirects serial communication to the server.

   You can specify port, baud rate, and server endpoint like this:
     blynk-ser.bat -c <serial port> -b <baud> -s <server> -p <port>

   The defaults are:
     -c    /dev/ttyUSB0       (on Linux)
           COM1               (on Windows)
           /dev/tty.usbserial (on OSX)
     -b    9600
     -s    blynk-cloud.com
     -p    8442

   If the specified serial port is not found, it will ask to enter another one.
   The script also tries to reestablish connection if it was lost.

必要に応じてヘルプで表示されたオプションを指定して、実行環境にあったパラメータを指定します。


ネットワークインターフェースがない裸のArduino UNOですが、USBとPCを経由してインターネットに接続し、世界中から接続・操作可能なIoTデバイスが出来上がりました。

BlynkによるLED制御

Arduino UNO上のLED:L1が下記のBlynkアプリでON/OFFできますが、写真では少し暗くて見えづらいですね。
スマートフォンのBlynkアプリ上で、画面に配置したButtonをD13に接続して、LEDのON/OFFを制御できます。

スマートフォンのBlynkアプリ


Blynkアプリの設定

画面上にButton Widgetを配置します。

Button Widgetの設定

Button Widget をタップして設定画面を開きます。
(この画面はすでにPINの設定などをしています。)

[MODE]は[PUSH]だとボタンを押したときだけLEDが点灯し、[SWITCH]だとボタンを押すたびにLEDの点灯と消灯が切り替わります。

Button WidgetをD13に接続

設定画面のPINをタップしてPINの接続を[Digital]の[D13]に設定します。

スマートフォンのBlynkアプリ

IoTデバイスに利用するボードをArduino UNOに、ネットワークインターフェースをUSBに設定します。
Arduino UNOの他に、MEGA,NANOを含め、多くのArduinoボードを指定することができます。

ボードとネットワークインターフェースの設定


PWMによるLEDの明るさ制御の追加

Arduino UNOに組み込まれているLEDは、PWM制御ができないD13に接続されています。
このため、LEDのON/OFFしか制御できませんでしたが、LEDが手元にあれば、PWMが利用できるデジタルピンとGNDにLEDを接続すると、Sliderをそのデジタルピンに接続して、LEDの明るさを制御できます。

ここではLEDに適当な抵抗(330Ωを使いました)を直列につなぎ、GNDとPWM機能を持つD6に接続しました。

D6に接続したLEDのPWM制御

スライダーを追加

画面にスライダーを追加します。

スライダーの設定

スライダーをPWM機能を持つDigitalピンのD6に接続します。
また、スライダーでの値の設定範囲を0~255に設定します。

PWM出力を持つD6を選択

Arduino UNOのスケッチを一切変更していませんが、Blynkアプリ側の設定だけで、明るさを制御できるLEDを追加できました。


開発ソフト: 
チップファミリー: 
MCUチップ: 
技術: