Research

การพัฒนาระบบ IoT เบื้องต้นด้วย Blynk App


การพัฒนาระบบ IoT เบื้องต้นด้วย Blynk App

 

          IoT ย่อมาจาก Internet of Things คือ การที่สิ่งของต่างๆ (things) เชื่อมต่อกันเป็นเครือข่าย เพื่อทำการแลกเปลี่ยน ประมวลผลหรือรับส่งข้อมูล หรือเพื่อควบคุมการทำงานของอุปกรณ์ด้วย โดยสิ่งของต่างๆนั้นจะมีเซนเซอร์ที่ทำหน้าที่ตรวจจับสภาวะแวดล้อมต่างๆ อาจเป็นเครื่องมือในสำนักงาน เครื่องจักรการเกษตร เครื่องจักรในโรงงาน หุ่นยนต์ แขนกล และอุปกรณ์ในที่พักอาศัย เป็นต้น จึงทำให้เทคโนโลยี IoT เข้ามาเกี่ยวข้องกับการดำรงชีวิตของคนเราเป็นอย่างมาก ดังแสดงในรูปที่ 1

รูปที่ 1 รูปแบบการใช้งาน IoT ในชีวิตประจำวัน

[จาก https://javascriptly.com/internet-of-things-iot/]

 

Blynk App กับการใช้งาน IoT

          Blynk เป็น platform สำหรับการควบคุมหรือเชื่อมต่ออุปกรณ์ด้าน IoT กับ mobile apps โดย Blynk ทำหน้าที่เป็นตัวกลางระหว่างอุปกรณ์ IoT กับ smart phone ดังรูปที่ 2 ซึ่ง Blynk มี 3 ส่วนประกอบหลัก คือ

          1. Blynk app เป็น application บนมือถือมีทั้งระบบ Android และ ระบบ iOS ทีใช้ควบคุมอุปกรณ์ต่างๆ

          2. Blynk server เป็นแม่ข่ายหรือตัวกลางในรูป cloud service สำหรับทำให้อุปกรณ์ IoT สื่อสารกันได้กับ smart phone

          3. Blynk library เป็นส่วนที่ช่วยเกื้อหนุนงานด้านเขียน code เพื่อรองรับการสื่อสารหรือติดต่อกันระหว่างอุปกรณ์ IoT กับ Blynk server และ App ด้วย

รูปที่ 2 รูปแบบการประยุกต์ใช้งาน Blynk

[จาก https://www.slideshare.net/andri_yadi/internet-of-things-intro-and-demo]

1.1 เตรียมพร้อมใช้งาน Blynk app

          ส่วน smart phone .ให้ติดตั้ง blynk app ลงใน smart phone  แล้วให้สมัครสมาชิกโดยกด create new account โดยใช้อีเมล์และใส่ password ตามต้องการหรือใช้ facebook ก็ได้ เมื่อลงทะเบียนเสร็จจะมีขั้นตอนการใช้งานดังนี้ คือ

1. เปิด Blynk app แล้วทำการ log in โดยใส่ชื่ออีเมล์และ password ที่ได้ลงทะเบียนไว้ จะได้หน้าจอดังรูปที่ 3

รูปที่ 3 หน้าจอ Blynk เมื่อ log in เรียบร้อย

2. คลิกที่  New project แล้วกรอกข้อมูลดังในรูปที่ 4 โดยตั้งชื่อ test1 esp32 ให้เลือกบอร์ดที่ใช้ ชนิดการเชื่อมและ theme หน้า แล้วกด create ก็จะได้หน้าจอตามรูปที่ 5 เพื่อใช้สำหรับสร้างปุ่มควบคุมหน้าจอ ระบบ Blynk จะสร้างรหัส Token โดยส่งไปทางอีเมล์ที่ได้สมัครสมาชิกไว้

รูปที่ 4 การตั้งชื่อ project บน Blynk app

รูปที่ 5 หน้าต่าง Project

ส่วนบอร์ด Arduino ที่ใช้ต่อกับอุปกรณ์ IoT  ให้เตรียมการใช้งานบอร์ด NodeMCU ESP32S โดยดูจากเวป https://www.mcucity.com/product/2967/38pin-nodemcu-esp32-wifibluetooth-dual-core-esp-32-esp-32s-esp-32 แล้วจึงติดตั้ง Blynk library ลงใน Arduino IDE โดยมีขั้นตอน คือ

          1. คลิกที่ sketch>include library >manage libraries

          2. ตรงช่อง search ให้พิมพ์คำว่า blynk แล้วเมื่อมีชื่อรายการ library ปรากฏ ให้คลิก install รอจนกว่าจะเสร็จ

3. การทดสอบการเชื่อมต่อของบอร์ด NodeMCU ESP32S กับ Blynk server ให้พิมพ์คำสั่งด้านล่างบน Arduino IDE เสร็จแล้วให้ upload ไปที่บอร์ด หลังจากนั้นให้กดปุ่ม reset ของบอร์ด ที่หน้าจอ serial monitor จะได้ดังรูปที่ 6

 

/* Wifi connection test */

#define BLYNK_PRINT Serial

#include <WiFi.h>

#include <WiFiClient.h>

#include <BlynkSimpleEsp32.h>

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

char auth[] = "ใส่รหัส Token ที่ได้จากอีเมล์";

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

char ssid[] = "ใส่ชื่อ WiFi node ที่จะใช้งาน";

char pass[] = "ใส่รหัสของ WiFi node ที่ใช้งาน";

void setup()

{

  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);

}

void loop()

{

  Blynk.run();

}

รูปที่ 6 ผลการทดสอบ Blynk

 

1.2 การสร้างปุ่มควบคุมบน Blynk app

          จากผลลัพธ์ตามรูปที่ 6 แสดงว่า บอร์ด NodeMCU ESP32S สามารถติดต่อกับ Blynk app ได้แล้ว ในหัวข้อนี้จะนำเสนอการสร้างปุ่มควบคุมขา GPIO ของบอร์ดนี้บน smart phone โดยจะสร้างปุ่มเปิด-ปิดหลอดไฟด้วยขา GPIO19 ซึ่งมีขั้นตอนดังนี้ คือ

   1. ที่ Blynk app บน smart phone ตรงหน้าโปรเจค test1 esp32 ให้แตะที่ปุ่ม + บริเวณด้านบนของโปรเจคนี้ ก็จะได้เมนู Widget box ดังรูปที่ 7 ให้แตะเลือกปุ่มชื่อ Button ก็จะได้ปุ่มนี้บนหน้าต่างของโปรเจคนี้ดังรูปที่ 8

รูปที่ 7 เมนู Widget box

รูปที่ 8 ปุ่ม Button บนหน้าต่างโปรเจค test1 esp32

2. แตะปุ่มบนโปรเจค เพื่อตั้งค่าของปุ่ม โดยตั้งชื่อปุ่มว่า LAMP ON-OFF ที่ช่อง OUTPUT เลือกเป็น gp19 และ MODE เลือกเป็นแบบ SWITCH เมื่อตั้งค่าเสร็จแล้ว จะได้ดังรูปที่ 9 ซึ่งเป็นหน้าต่างที่พร้อมใช้งาน

รูปที่ 9 ปุ่มควบคุม ON-OFF หลอดไฟ

3. ให้เสียบสาย usb ของบอร์ดเข้ากับคอมพิวเตอร์ ที่โปรแกรม Arduino IDE คลิกที่ File >new เพื่อสร้างหน้าต่าง sketch ใหม่ แล้วให้ copy คำสั่งตามนี้ไปวางที่หน้าต่างนี้ แล้ว upload ไปที่บอร์ด

// blynk control Lamp

#define BLYNK_PRINT Serial

#include <WiFi.h>

#include <WiFiClient.h>

#include <BlynkSimpleEsp32.h>

// GPIO pin control lamp

int Lpin = 19; //กำหนดขา ตามชื่อขาที่ติดบนฐานหลอดไฟ แต่ละกลุ่มใช้ขาไม่เหมือนกัน

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

char auth[] = "ใส่รหัส Token ที่ได้จากอีเมล์";

// Set password to "" for open networks.

char ssid[] = "ใส่ชื่อ WiFi node ที่จะใช้งาน";

char pass[] = "ใส่รหัสของ WiFi node ที่ใช้งาน";

void setup()

{

  // Debug console

  pinMode(Lpin, OUTPUT);

  digitalWrite(Lpin, LOW);

  // WiFi test

  Serial.begin(115200);

  delay(10);

  Serial.print("Connecting to ");

  Serial.println(ssid);

  WiFi.begin(ssid, pass);

  int wifi_ctr = 0;

  while (WiFi.status() != WL_CONNECTED) {

  delay(500);

  Serial.print(".");

  }

  Serial.println("WiFi connected"); 

  Blynk.begin(auth, ssid, pass);

}

void loop()

{

  Blynk.run();

}

4. ทำการต่อวงจรชุดหลอดไฟและรีเลย์เข้ากับบอร์ดดังรูปที่ 10 ทั้งนี้ เนื่องจากระดับแรงดันที่ออกจากขา GPIO19 มีค่า 3.3 V เมื่อต่อร่วมกับโมดูลรีเลย์แบบ 5V จึงต้องต่อตัวต้านทาน 2.2 kΩ และทรานซิสเตอร์ 2N3904 ร่วมด้วย

รูปที่ 10 การต่อบอร์ด NodeMCU เข้ากับชุดหลอดไฟ

5. กดปุ่ม play (รูปสามเหลี่ยม) บน Blynk app แล้วให้ลองแตะปุ่ม ON-OFF ควบคุมหลอดไฟบน smart phone จะเห็นว่า หลอดไฟมีการติดดับตามสถานะของปุ่มกดตามรูปที่ 9

1.3 การสร้างมาตรวัด (gauge) บน Blynk app

          ในหัวข้อนี้ จะเพิ่มมาตรวัดหรือ gauge ที่ใช้ในการรับค่าจากเซนเซอร์จากอุปกรณ์ IoT ให้เลือกปุ่ม gauge จาก Widget box แล้วให้ตั้งค่าตามรูปที่ 11 ซึ่ง Blynk app จะมีขา virtual V0, V1, V2,… ใช้ในการรับค่าจากเซนเซอร์ที่กำหนดในการตั้งค่าของปุ่ม gauge สำหรับการแสดงอุณหภูมิจากเซนเซอร์ DHT11 ทำตามขั้นตอน ดังนี้ คือ

   1. สำหรับในส่วน Blynk app บน smart phone เมื่อ log in แล้วให้ตั้ง new project ชื่อ DHT11 LAB ให้ตั้งค่า gauge ดังรูปที่ 11 และจะได้ตัว gauge ดังในรูปที่ 12

รูปที่ 11 การตั้งค่า gauge สำหรับวัดอุณหภูมิ

รูปที่ 12 รูป gauge ของ Blynk

2. เปิดโปรแกรม Arduino IDE แล้วเสียบสาย usb ของบอร์ดเข้ากับคอมพิวเตอร์ ให้เพิ่ม library ของเซนเซอร์ DHT11 โดยคลิกที่เมนู sketch>Include library> Manage libraries ตรง search ให้พิมพ์คำว่า dht แล้วเลือก install ชื่อ DHT sensor library และ DHT sensor library for ESPxหลังจากนั้นให้คลิกเมนู File>new แล้ว copy คำสั่งตามด้านล่างนี้ไปวางที่หน้าต่างใหม่นี้

 

// DHT11 temperature measurement and display with Blynk

#define BLYNK_PRINT Serial

// sensor setting

#include "DHT.h"

#define DHTPIN 19

#define DHTTYPE  DHT11

// WiFi and Blynk setting

#include <WiFi.h>

#include <WiFiClient.h>

#include <BlynkSimpleEsp32.h>

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

char auth[] = "ใส่รหัส Token ที่ได้จากอีเมล์";

// Set password to "" for open networks.

char ssid[] = "ใส่ชื่อ WiFi node ที่จะใช้งาน";

char pass[] = "ใส่รหัสของ WiFi node ที่ใช้งาน";

DHT dht(DHTPIN, DHTTYPE);

void setup()

{

  Serial.begin(9600);

  Blynk.begin(auth, ssid, pass);

  dht.begin();

}

void loop()

{

  delay(2000);

  float h = dht.readHumidity();

  float t = dht.readTemperature();

  float f = dht.readTemperature(true);

  if (isnan(h)|| isnan(t)|| isnan(f)) {

    Serial.println("Failed to read from DHT sensor");

    return; 

  }

  Blynk.run();

  Blynk.virtualWrite(V1,String(t)); // ส่งค่าอุณหภูมิจากตัวแปร t ไปที่ขา virtual V1 บน gauge

  Serial.print(t);

// Serial.println(h);

  delay(1000);

}

3. ต่อขาเซนเซนต์ DHT11 เข้ากับบอร์ดดังรูปที่ 13

รูปที่ 13 การต่อบอร์ด NodeMCU เข้ากับโมดูล DHT11

   4. กดปุ่ม play (รูปสามเหลี่ยม) บน Blynk apps แล้วจะเห็นว่าตัว gauge จะแสดงค่าอุณหภูมิตามที่ตัวเซนเซอร์ DHT11 วัดได้

เอกสารอ้างอิง

1. พัฒนา IOT บนแพลตฟอร์ม Arduino และ Raspberry Pi, ดร.กอบเกียรติ สระอุบล , สำนักพิมพ์อินเตอร์มีเดีย, 2561

 

จัดทำโดย ดร.วินัย ศิลารวม

   1 กุมภาพันธ์ 2564

<< ย้อนกลับ