山姆的編程實作分享。。。

Sam Blog, Sam Sharing, Sam Studio

2020年4月24日

[Arduino][ESP8266] WiFi Switch 的實作


[Arduino][ESP8266]

WiFi Switch 的實作

實作準備

整個實作可以切成以下4部分:

  1. WiFi Switch 的硬體線路:也就ESP8266 以及 Relay 的接線圖。

  2. ESP8266 的程式碼:用來接收Cloud Server傳送來的指令,進而控制家中的電器,如燈泡。

  3. Cloud Server:用來接收手機傳來的指令,然後將指令傳送到你家中的ESP8266 / WiFi Switch。

  4. App:用來連接Blynk Cloud Server,然後控制你家中WiFi Switch以及電器的App。 

WiFi Switch 的硬體線路

我們先從 WiFi Switch 硬體線路這個點開始解說,然後再延伸到整個系統,這樣會比較有感;

實作中我採用的是ESP8266控制板,且選用GPIO13 (D7) ,當作Relay 的控制訊號,

來開關Relay負載端的輸出;Relay的DC+/- ,我依照我手中Relay 的規格,連接DC 5V,

至於Relay負載端的輸出,則是接110 伏特以及燈泡;實際Relay負載端的輸出線路,

大家請依照你手上Relay的規格連接負載,切勿直接套用範例線路。


ESP8266 的程式碼

Step1:安裝 Blynk Library

有了WiFi Switch硬體線路,接下來,當然就是控制WiFi Switch硬體線路的程式碼;

程式碼因為要配合Blynk Cloud Server,所以必須要包含 Blynk Library,也就是說,

要先安裝 Blynk Library for Arduino IDE

How to install Blynk Library for Arduino IDE

上面連接提供了3種方式來安裝 Blynk Library,我個人建議使用第3種-“手動安裝”,

這樣你會更清楚知道 Arduino IDE 以及Blynk Library的檔案結構;安裝完Blynk Library後,

在Arduino IDE安裝路徑下,會分別在\libraries以及 \tools目錄下,新增以下4個資料夾:

/libraries/Blynk
/libraries/BlynkESP8266_Lib
/tools/BlynkUpdater
/tools/BlynkUsbScript

Step2:新增 WiFi Switch 專案

接著就是開啟Arduino IDE,然後按照下面圖示,

選取 ESP8266_Standalone範例來當作 WiFi Switch 的專案;

以下就是ESP8266_Standalone.ino 原始程式碼,這原始程式碼還也3處必須修改,

才能和Blynk Cloud Server連接上。

  1. #define BLYNK_PRINT Serial  

  2.   

  3. #include <ESP8266WiFi.h>  

  4. #include <BlynkSimpleEsp8266.h>  

  5.   

  6. // You should get Auth Token in the Blynk App.  

  7. // Go to the Project Settings (nut icon).  

  8. char auth[] = "YourAuthToken";  

  9.   

  10. // Your WiFi credentials.  

  11. // Set password to "" for open networks.  

  12. char ssid[] = "YourNetworkName";  

  13. char pass[] = "YourPassword";  

  14.   

  15. void setup()  

  16. {  

  17.   // Debug console  

  18.   Serial.begin(9600);  

  19.   

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

  21. }  

  22.   

  23. void loop()  

  24. {  

  25.   Blynk.run();  

  26. }  

Step3:修改程式碼以連接Blynk Cloud Server

首先是 行12以及行13,請修改成為你要連接WiFi AP的ID以及密碼,請注意這WiFi AP 必須能連到外網,

這樣才能連上 Blynk Cloud Server。

再來就是 行8的 auth[],它應該是呈現以下型式:

char auth[] = "53e4da8793764b6197fc44a673ce4e21";

而這串Auth Token,會在你使用Blynk App,來建立一個新專案時被產生,

Blynk 會把這個Token寄到你註冊郵件信箱,目前我們就留空,收到Token,記得要回來改!

做到這個步驟,你就擁有控制WiFi Switch 的ESP8266的程式碼了。

到這個階段,你若有仔細觀看ESP8266_Standalone.ino 原始程式碼,你會發覺,

這原始程式碼並沒有設定以及控制GPIO13 (D7)相關的程式碼,為什麼?這樣Relay 會做動?

告訴你,會的!

至於為何,等我們利用Blynk App 建立專案時,你就會知道原因了😊

Cloud Sever

這塊,Blynk 處理掉了,我們碰不到;

但是 Blynk 有釋出原始碼,放在GitHub,有興趣了解的人,可以參考以下連結。

(https://github.com/blynkkk/blynk-server )

Blynk App

Step1:安裝 Blynk App

Android 手機Blynk - IoT for Arduino, ESP8266/32, Raspberry Pi

iOS 手機 Blynk - IoT for Arduino, ESP32, ESP8266, Raspberry Pi, NodeMCU

Step2:透過Blynk App建立WiFi Switch 控制頁面


打開Blynk ,然後參照以下畫面建立控制頁面




結論

利用Blynk的資源完成WiFi Switch 的IoT實作有何感想?

或實作過程有遇到任何問題,都歡迎留言給我喔!


利用Blynk實現了IoT Home Assistant,我個人有以下幾點感想:

優點:

  1. 省去了手機App 的開發,你只要動動手指頭,把Widget設定好,就可以有美美的控制畫面。

  2. 省去架設Server時間以及費用。

缺點:

  1. 天下沒有白吃的午餐,Blynk這樣類似的應用,基本上都有流量計費的,做實驗還可以,想商業化或長期使用,必須精算一下。

  2. Blynk Library這黑盒子,我個人不喜歡,Blynk 掌控太多了;GPIO的控制,我竟然不必做…


想實現IoT,只能依靠3rd Party App? 

第19集的影片,讓我來介紹另一種,掌控在我們自己手裡的做法吧,敬請期待!


熱門文章