イーサネットシールドなどを接続しない裸の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.
必要に応じてヘルプで表示されたオプションを指定して、実行環境にあったパラメータを指定します。
BlynkによるLED制御
Arduino UNO上のLED:L1が下記のBlynkアプリでON/OFFできますが、写真では少し暗くて見えづらいですね。
スマートフォンのBlynkアプリ上で、画面に配置したButtonをD13に接続して、LEDのON/OFFを制御できます。
スマートフォンの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ボードを指定することができます。
ボードとネットワークインターフェースの設定
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を追加できました。