การสร้างแอปพลิเคชันเพื่อควบคุมสิ่งประดิษฐ์ด้วย Blynk

แนะนำ Blynk App

Blynk เป็นชื่อโดยรวมของการบริการให้ผู้ใช้งานได้ใช้งานเครื่องแม่ข่าย คือ Blynk Server ที่เป็น IoT Cloud ซึ่ง ถูกพัฒนามาจากภาษา Java ทำให้สามารถทำงานภายใต้ระบบปฏิบัติการที่หลากหลาย เช่น Windows, Mac หรือ Linux โดยเครื่องแม่ข่าย (Blynk Server) พัฒนาเป็นแบบเปิด (open-source) ภายใต้ลิขสิทธิ์แบบ GNU ทำให้เราสามารถนำ Blynk ไปใช้งานประกอบการสร้างนวัตกรรมเพื่อการค้า แก้ไข ดัดแปลง เผยแพร่ หรือแจกจ่ายได้ ซึ่งสามารถดูภาพรวมของระบบได้ตามรูปที่ 12.1

 

1

 

รูปที่ 12.1 ภาพรวมของการเชื่อมต่อผ่าน Blynk Server

 

Blynk App คือ แอปพลิเคชันสำเร็จรูปที่ใช้สำหรับงานที่เกี่ยวกับอินเทอร์เน็ตของสรรพสิ่ง (Internet of Things, IoT) ที่ทำให้เราสามารถเชื่อมต่ออุปกรณ์ต่าง ๆ เข้ากับอินเทอร์เน็ตในลักษณะการเชื่อมต่อเครื่องแม่ข่าย (Server) ไปยังอุปกรณ์ลูกข่าย (Client) เช่น Arduino, ESP-8266, ESP-32, NodeMCU และ Raspberry Pi ซึ่งแอปพลิเคชัน Blynk สามารถใช้งานได้ฟรีและใช้งานได้ทั้งบนระบบปฏิบัติการ IOS และ Android รูปที่ 12.2 แสดงภาพรายการอุปกรณ์ต่าง ๆ ที่สามารถเชื่อมต่อ แสดงผล และ/หรือ ควบคุมด้วย Blynk App ได้ โดยเริ่มต้นหลังจากสมัครเข้าใช้งาน เราจะได้รับ “Energy” ซึ่งเปรียบเสมือนเงินในโปรแกรมนี้ ในการเรียกใช้งานอุปกรณ์แต่ละตัว เราจะต้องแลกด้วย “Energy” และหาก “Energy” นี้ไม่เพียงพอ เราก็สามารถซื้อเพิ่มเติมได้ภายหลัง

 

figCh12BlynkApp

 

รูปที่ 12.2 รายการอุปกรณ์ต่าง ๆ ที่เชื่อมต่อ แสดงผล และ/หรือ ควบคุมด้วย Blynk App ได้

 

 

การเริ่มต้นใช้งาน Blynk App

ขั้นตอนการสมัครและเปิดใช้งานแอปพลิเคชัน Blynk App มีดังนี้

1. ค้นหาและติดตั้งแอปพลิเคชัน Blynk – IoT for Arduino ESP8266/32, Raspberry Pi (เรียกย่อ ๆ ว่า Blynk App) บนโทรศัพท์มือถือที่จะใช้ทดสอบ (ใช้ได้ทั้งระบบ Android และ IOS แต่ในการทดลองนี้เราจะแสดงเฉพาะหน้าจอบนระบบ Android เท่านั้น) ดังรูปที่ 12.3

 

1

 

รูปที่ 12.3 หน้าต่างแสดงการดาวน์โหลดและติดตั้ง Blynk App บนโทรศัพท์มือถือระบบปฏิบัติการแอนดรอยด์

 

2. เปิดโปรแกรม Blynk App แล้วทำการสร้างบัญชีผู้ใช้ (account) แล้วเข้าใช้ (sign up) ดังรูปที่ 12.4

 

3. เมื่อเชื่อมต่อ Blynk Server ได้แล้ว โปรแกรมจะพร้อมให้เราสร้างโปรเจคใหม่ โดยการเลือก ‘+ New Project’ แล้วตั้งชื่อโปรเจค เป็น Blynk Test จากนั้นจึงเลือกอุปกรณ์เป็น NodeMCU และเลือกการเชื่อมต่อเป็นแบบ Wi-Fi (ดังแสดงในรูปที่ 12.5) จากนั้นจึงกดปุ่ม Create ก็จะมีการส่งอีเมลรหัส Token มาให้ในอีเมลที่ลงทะเบียนไว้ เพื่อให้ผู้ใช้นำไปเป็นรหัสที่ใช้ในการเชื่อมต่อระหว่าง NodeMCU และ Blynk ต่อไป

 

4. ภายใน Blynk จะมีปุ่มต่าง ๆ ให้เลือกสร้าง App ได้ตามที่ผู้ใช้ต้องการ

 

1

 

รูปที่ 12.4 ขั้นตอนการสร้างบัญชีและเข้าใช้ Blynk App

 

1

 

รูปที่ 12.5 ขั้นตอนการโปรเจคใหม่และเลือกฮาร์ดแวร์ที่เชื่อมต่อ Blynk App

 

 

การติดตั้งไลบรารีเพื่อเชื่อมต่อกับ NodeMCU

การใช้งานแอปปลิเคชั่น Blynk กับ NodeMCU เราจำเป็นต้องติดตั้งไลบรารีบนโปรแกรมที่ใช้ในการเขียนโปรแกรมของไมโครคอนโทรลเลอร์ (ในที่นี้คือ Arduino IDE 1.8.8 IoT) เพื่อให้สามารถเรียกใช้งานคำสั่งเชื่อมต่อได้ ซึ่งสามารถดาวน์โหลดไลบรารี Blynk ได้จาก https://github.com/blynkkk/blynk-library ดังแสดงในรูปที่ 12.6

เมื่อดาวน์โหลดแล้วก็นำมาคัดลอก (ติดตั้ง) ลงในโปรแกรม Arduino IDE ที่ C:\Arduino18\libraries ดังรูปที่ 12.7

 

1

 

รูปที่ 12.6 หน้าต่างแสดงการดาวน์โหลดไลบรารี Blynk

 

Ch11BlynkLib

 

รูปที่ 12.7 หน้าต่างแสดงโฟลเดอร์ที่ติดตั้งไลบรารี Blynk

 

 

การทดลองควบคุมสิ่งประดิษฐ์ผ่าน Blynk App

วัตถุประสงค์

1. สามารถเชื่อมต่อ NodeMCU กับ Blynk App ได้

2. สามารถเขียนโปรแกรมประยุกต์ใช้งานควบคุมด้วย Blynk App ได้

 

อุปกรณ์ที่ใช้ในการทดลอง

 

1.     เครี่องคอมพิวเตอร์ที่มีระบบปฏิบัติการ Windows (ตั้งแต่ Windows 7 ขึ้นไป)
พร้อมติดตั้งโปรแกรม
Arduino IDE 1.8.8 IoT                            1 เครื่อง

2.     NodeMCU v.3                                                             1 บอร์ด

3.     NodeMCU Base Ver 1.0                                                 1 บอร์ด

4.     บอร์ดรีเลย์ชนิด 4 ช่อง                                                      1 บอร์ด

5.     เซอร์โวมอเตอร์                                                              1 ตัว

6.     อะแดปเตอร์ 9 V                                                            1 ตัว

7.     สาย USB                                                                    1 เส้น

8.     สายต่อวงจร (สายจัมพ์ เมีย-เมีย)                                           6 เส้น

9.     สายต่อวงจร (สายจัมพ์ ผู้-เมีย)                                             3 เส้น

 

วิธีการทดลอง

ตอนที่ 1 การสร้างแอปพลิเคชันบน Blynk App เพื่อควบคุมรีเลย์

1. ต่อวงจรตามรูปที่ 12.8 โดยให้ต่อขา D1, D2, D3, D4 ของ NodeMCU เข้ากับขา IN1, IN2, IN3, IN4 ของโมดูลรีเลย์ ตามลำดับ

 

1

 

รูปที่ 12.8 การต่อวงจรเพื่อควบคุมรีเลย์

 

2. เขียนโค้ดโปรแกรมดังแสดงข้างล่าง โดยในโค้ดมีตัวแปรข้อความ (สตริง, String) ที่ผู้เขียนต้องเปลี่ยนแปลงแก้ไข คือ

- auth คือรหัส Auth Token ที่ Blynk App ส่งให้ทางอีเมล สำหรับโปรเจคที่สร้าง (เป็นรหัสเลขฐาน 16) ตัวอย่างเช่น “960110e6cf014314bcb5fbdf05448a1e”

- ssid คือชื่อ WiFi ที่ใช้เชื่อมต่อ เช่น “WiFi NU”

- pass คือรหัส WiFi ที่ตั้งไว้ หากไม่มี ก็ใส่เป็นสตริงว่าง “”

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

// Control NodeMCU ESP8266 by Blynk

// Switch Relays

 

// Comment this out to disable prints

#define BLYNK_PRINT Serial

 

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

 

char auth[] = "9c687abf4897467992e46e7249af7209";

char ssid[] = "XXXXXXX";

char pass[] = "XXXXXXX";

 

void setup() {

    Serial.begin(9600);

    Blynk.begin(auth, ssid, pass);

}

 

void loop() {

    Blynk.run();

    delay(100);

}

 

 

3. อัปโหลดโปรแกรมลงใน NodeMCU เพื่อให้ฮาร์ดแวร์รอรับคำสั่งเชื่อมต่อ โดยหากการเชื่อมต่อสำเร็จดี Blynk ก็จะส่งข้อมูลผ่าน Serial Monitor ดังแสดงในรูปที่ 12.9

4. เปิด Blynk App สร้างปุ่ม (Button) 4 ปุ่ม (ดังรูปที่ 12.10) โดยกำหนด OUTPUT PIN เป็น D1, D2, D3 และ D4 ตามลำดับ และ เลือกโหมดของปุ่มเป็นแบบ SWITCH (ดังรูปที่ 12.11) โดยทำเหมือนกันทั้ง 4 ตัว

 

1

 

รูปที่ 12.9 หน้าต่างแสดงข้อความการเชื่อมต่อระหว่าง NodeMCU
และ Blynk Server
ที่แสดงผ่าน Serial Monitor

 

1

 

รูปที่ 12.10 ขั้นตอนการสร้างปุ่ม 4 ตัวสำหรับการควบคุมรีเลย์

 

2

 

รูปที่ 12.11 ขั้นตอนการกำหนดการเชื่อมต่อของปุ่ม 4 ตัวสำหรับการควบคุมรีเลย์

5. รันโปรแกรม ดังรูปที่ 12.12 แล้วทดสอบการควบคุมรีเลย์ โดยสังเกตไฟแอลอีดีที่บอร์ดรีเลย์ โดยบอร์ดรีเลย์ทำงานแบบ Active low ดังนั้น สถานะ ‘ON’ ใน Blynk หมายถึงไฟแอลอีดีไม่ติด

 

3

 

รูปที่ 12.12 การรันโปรแกรมควบคุมรีเลย์ผ่าน Blynk App

 

 

ตอนที่ 2 การสร้างแอปพลิเคชันบน Blynk App เพื่อควบคุมเซอร์โวมอเตอร์

1. ต่อวงจรดังรูปที่ 12.13

 

2

 

รูปที่ 12.13 การเชื่อมต่อ NodeMCU กับเซอร์โวมอเตอร์ เพื่อควบคุมผ่าน Blynk App

2. เขียนโค้ดโปรแกรมดังที่แสดงข้างล่างนี้ โดยอาจจะต้องแก้ไขค่าในสตริง auth ซึ่งก็คือรหัส Auth Token ที่ Blynk App ส่งให้ทางอีเมล หลังจากกดปุ่มสร้างโปรเจคใหม่

 

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

 

23

24

25

26

27

28

29

30

31

32

// Control NodeMCU ESP8266 by Blynk

// Control Servo motor

 

// Comment this out to disable prints

#define BLYNK_PRINT Serial

 

#include <ESP8266WiFi.h>

#include <BlynkSimpleEsp8266.h>

#include <Servo.h>

 

Servo myservo;

char auth[] = "9c687abf4897467992e46e7249af7209";

char ssid[] = "XXXXXXX";

char pass[] = "XXXXXXX";

 

void setup() {

    Serial.begin(9600);

    Blynk.begin(auth, ssid, pass);

    myservo.attach(D0);

}

 

// This function gets called every time the Virtual Button on V3 changes state

 

BLYNK_WRITE(V3) {

    myservo.write(param.asInt());

}

 

void loop() {

    Blynk.run();

    delay(100);

}

 

ในโค้ดนี้จะมีการรับค่าจากปุ่ม V3 ใน Blynk App มา แล้วส่งไปยังเซอร์โวมอเตอร์ชื่อ myservo ผ่านฟังก์ชัน BLYNK_WRITE ซึ่งจะถูกเรียกทุกครั้งที่มีการเปลี่ยนแปลงค่า V3

3. อัปโหลดโปรแกรมลงใน NodeMCU เพื่อให้ฮาร์ดแวร์รอรับคำสั่งเชื่อมต่อ

 

4. เปิด Blynk App โดยอาจสร้างโปรเจคใหม่ (ขอ Token ใหม่) หรือลบอุปกรณ์ในโปรเจคเดิมก็ได้ จากนั้นจึงสร้างแถบเลื่อน (Slider) 1 แถบ แล้วขยายขนาด (ดังรูปที่ 12.14) โดยกำหนดชื่อเป็น myservo, OUTPUT PIN เป็นปุ่มเสมือน (Virtual pin) V3 และเปลี่ยนค่าสูงสุดจาก 1023 เป็น 180 (ซึ่งคือมุมการหมุนสูงสุดของเซอร์โวมอเตอร์) ดังรูปที่ 12.14 จากนั้นจึงรันโปรแกรมเพื่อทดสอบการควบคุมเซอร์โวมอเตอร์

 

1

 

รูปที่ 12.14 ขั้นตอนการสร้างและกำหนดคุณสมบัติของแถบเลื่อน
เพื่อควบคุมเซอร์โวมอเตอร์ผ่าน
Blynk App

 

แบบฝึกหัดท้ายการทดลอง

การสร้างแอปพลิเคชันบน Blynk App เพื่อควบคุมเซอร์โวมอเตอร์ผ่านจอยสติ๊ก

หากเราจะใช้วงจรควบคุมเซอร์โวมอเตอร์เดิม (รูปที่ 12.13) โดยเปลี่ยนวิธีการควบคุม จากแถบเลื่อนเป็นจอยสติ๊ก (Joystick) เราสามารถทำได้โดยตั้งค่าการเชื่อมต่อ ปุ่มเสมือน V3 กับจอยสติ๊กที่เรียกขึ้นมาใช้แทนแถบเลื่อน ดังรูปที่ 12.15 ซึ่งเราสามารถเลือกว่าจะควบคุมแบบแยกแกน (SPLIT คือ แยกแกนตั้งและแกนนอน) หรือ รวมแกน (MERGE) ก็ได้ สำหรับค่าสูงสุดของปุ่ม เราจะกำหนดให้เป็น 180 เนื่องจากเซอร์โวที่ใช้ รับค่าเป็นมุมองศา และมีค่าสูงสุดประมาณ 180º เท่านั้น

 

1

 

รูปที่ 12.15 การตั้งค่าจอยสติ๊กใน Blynk App เพื่อควบคุมเซอร์โวมอเตอร์