Arduino筆記(34):使用 Blynk 控制NodeMCU LED燈

有了 ESP8266 的無線通訊基礎後,本篇要來探討如何透過手機操控前端的 Arduino 連接的感測器或電子零件。要在智慧型手機上可以操控,需要一個 APP安裝在手機上,今天要實作的是 Bylink 這個知名的 APP。Blynk是一款支持iOS和Android應用的平台,可通過互聯網控制Arduino,Raspberry Pi等。

Blynk可以透過有線或無線網路、藍芽來連接手機跟前端的硬體平台。 以下就來實作一下如何透過手機藉由無線網路跟 NodeMCU連接控制 LED。


Blynk 平台有三個主要組件:

• Blynk App:安裝在智慧型手機上,允許使用Blynk提供的各種小圖件創建界面。
• Blynk Server:負責在智慧型手機和各種硬體間的所有通信。可以使用 Blynk Cloud或是自行建立開源(Opensource)的 Blynk Server。
• Blynk Library:適用於各種常見的硬體平台,如Arduino、Raspberry Pi。

[材料]

•  NodeMCU x 1個
• 麵包板 x 1個
• LED x 1個
• 220歐姆電阻 x1個
• 智慧型手機 x1 (Android 或 IOS系統)

[接線]


[安裝步驟]

• 下載安裝給Arduino的函式庫
  下載網址:https://github.com/blynkkk/blynk-library/releases

• 目前最新版本是 v0.6.1,解壓縮後,內四個資料夾( TinyGSM, Time, BlynkESP8266_Lib, Blynk ),請複製到 Arduino安裝所在目錄的 librarys 目錄中。以我的作業系統是 WIndows 7為例,安裝的 library 目錄位置 C:\Program Files (x86)\Arduino\libraries。

• 使用手機下載 Blynk:iOS 請按 這裡 下載;Android 請按 這裡 下載。安裝完成後,開啟 Blynk APP (如下圖左方),可以選擇新建帳號,或使用 Facebook的帳號進行登入。登入後,會看到如下圖右方的畫面。



• 按下 [New Project] 後,輸入專案名稱,使用的硬體平台,我使用的是 NodeMCU,連接類型選擇 WiFi,按下方的 [Create Project ]後,會看到一個視窗(如下圖右方),要將授權的 Token 寄到登入的信箱,這個 Token是一長串的英數字,屆時修改 Arduino的程式時,會用到這個 Token。


•  到工作底圖,在畫面上點一下,可以出現可以新增的控制項,每一個控制項下,都標有一個數字,有點像是點數,我的等級只能在圖面增加總計 2000點的控制項,如要增加,就需要購買。按下右方的 [+Add]可以看到儲值的選項,儲 1000點需台幣 70元,最高到 28000點,670元。

•  回到控制項畫面,選擇 [Button],會出現下圖右方的畫面,在Output 的地方選擇 D7,我是將 LED的正極接到 NodeMCU 的 D7接腳。標籤名稱改成[ Led Red] 。


• 回到主畫面,如下圖左方,看到底圖有很多點,這是編輯模式,右上角有一個往右的箭頭,按下去會出現一個方塊的形狀,如下圖右方,表示這是執行模式,可以直接按下控制 LED的亮與暗。


• 到這裡還不行控制 LED燈,還需要上傳程式到 NodeMCU才可以。 先到 Arduino IDE 打開範例檔,找到 blynk 的目錄下有一個 [ESP8266_Standalone]的程式。

• 開啟程式後,修改 Token、無線基地台的 SSID跟密碼後,將程式編譯上傳 NodeMCU。

[程式]

/* Comment this out to disable prints and save space */
#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>

// 修改成上述寄到登入郵箱的 Token號碼
char auth[] = "12345678901234567890123456789012";


// 設定無線基地台SSID跟密碼
char ssid[] = "MyHome";          //改成您的SSID 
char pass[] = "12345678";     //改成您的密碼

void setup()
{
  // Debug console
  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);
}

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

[執行結果]

[參考資料]


Post a Comment

較新的 較舊