Datastreams 是 Device 裝置與 Blynk 雲端之間資料傳輸的通道,以 Datastreams 直接讀取或是設定控制板的實體腳位, 雖較為簡單直接,但這會綁定特定開發板之腳位, 如日後改使用不同的開發板,可能需要重新修改對應,且使用實體腳位無法搭配程式做更多的程序動作,較無擴展性與靈活性,因此建議 Datastreams 使用虛擬腳位。
NodeMCU 上有一個内建的 LED 燈,它連接到 ESP8266 D4(GPIO2)的腳位,此範例為 Blynk 以 Datastreams 虛擬腳位 V1 控制 NodeMCU 上內建的 LED 燈(NodeMCU 上內建的 LED燈,為低電位觸發)。
BLYNK_WRITE(虛擬腳位 vPin) // 當虛擬腳位 vPin 有改變時,便會觸發執行
{
int pinValue = param.asInt(); // param.asInt() 函數:以整數型態讀取虛擬腳位 vPin 的值
}
查看 Template ID、Template Name、AuthToken 資訊:
// Template ID、Template Name、Auth Token 一定要放在程式的最前面
#define BLYNK_TEMPLATE_ID "TMPLoKYO0Ki-"
#define BLYNK_TEMPLATE_NAME "Quickstart Template"
#define BLYNK_AUTH_TOKEN "JW2j1JiRW1br2gR6JdwIPk9bo8NGSRyb"
#include "SSD1306.h" //匯入OLED程式庫
#include "ESP8266WiFi.h" // 匯入WiFi程式庫
#include "BlynkSimpleEsp8266.h" // 匯入Blynk程式庫
SSD1306 display(0x3C, D2, D1); //(位址,SDA,SCL)==SDA>D2,SCL>D1
String LED_text = "";
char ssid[] = "TCGS-IOT"; // 無線基地台SSID名稱
char pass[] = "22205108"; // 無線基地台密碼
BLYNK_CONNECTED() // 當設備成功連接至 Blynk 伺服器後執行
{
Blynk.syncVirtual(V1); // 同步虛擬腳位 V1,會觸發執行 BLYNK_WRITE(V1)
}
BLYNK_WRITE(V1) // 當 Blynk 虛擬腳位 V1 有改變時便觸發
{
int pinValue = param.asInt(); // 以整數型態讀取虛擬腳位 V1 的值
if (pinValue == 1) // pin V1 value 1(ON)、0(OFF)
{
digitalWrite(D4, LOW); // LED ON:0(LOW)
LED_text = "LED ON";
}
else
{
digitalWrite(D4, HIGH); // LED OFF:1(HIGH)
LED_text = "LED OFF";
}
}
void setup()
{
display.init(); // 螢幕初始化
display.flipScreenVertically(); // 螢幕垂直翻轉
display.setFont(ArialMT_Plain_16); // 16字體
display.setTextAlignment(TEXT_ALIGN_LEFT); // 置左對齊
pinMode(D4, OUTPUT); // 設定 D4 為數位輸出模式
Blynk.begin(BLYNK_AUTH_TOKEN, ssid, pass); // 連接到 Blynk 伺服器
}
void loop()
{
Blynk.run(); // 執行Blynk
display.clear(); //清除螢幕
display.drawString(0, 0, LED_text); //x=0,y=0位置顯示LED燈的狀態
display.display();//螢幕顯示畫面
}
搭配繼電器(課程使用之繼電器為低電位觸發),控制電器之接線方式:將剪掉的電線接到繼電器的 COM 及 NO 二點