跳到主要內容

 自 109 / 2 /25 起啟用

物聯網 / Blynk / Blynk 虛擬腳位控制 LED 燈(建議)

BLYNK_WRITE
Datastreams 是 Device 裝置與 Blynk 雲端之間資料傳輸的通道,以 Datastreams 直接讀取或是設定控制板的實體腳位, 雖較為簡單直接,但這會綁定特定開發板之腳位, 如日後改使用不同的開發板,可能需要重新修改對應,且使用實體腳位無法搭配程式做更多的程序動作,較無擴展性與靈活性,因此建議 Datastreams 使用虛擬腳位
 
NodeMCU 上有一個内建的 LED 燈,它連接到 ESP8266  D4(GPIO2)的腳位,此範例為 Blynk 以 Datastreams 虛擬腳位 V1 控制 NodeMCU 上內建的 LED 燈(NodeMCU 上內建的 LED燈,為低電位觸發
 
Datastreams
 
LED Pin
LED Datastreams
 
參考修改 Blynk Example 網站 https://examples.blynk.cc/ 之 Virtual Pin Read 範例程式
 
BLYNK_WRITE(虛擬腳位 vPin)   // 當虛擬腳位 vPin 有改變時,便會觸發執行
{
     int pinValue = param.asInt();   // param.asInt() 函數:以整數型態讀取虛擬腳位 vPin 的值
}
 
Example Blynk
 
查看 Template ID、Template Name、AuthToken 資訊:
 
BLYNK_TEMPLATE_ID
 
// 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();//螢幕顯示畫面 
}

搭配繼電器(課程使用之繼電器為低電位觸發),控制電器之接線方式:將剪掉的電線接到繼電器的 COMNO 二點

relay

消息公佈欄

時間類別單位標題發佈點閱
跳至網頁頂部