ผู้เขียนบทความ: นายกษิดิ์เดช สังข์แก้ว COE#15
คณะวิศวกรรมศาสตร์: สาขาวิศวกรรมคอมพิวเตอร์
วิชา: 04-513-201 การโปรแกรมคอมพิวเตอร์ขั้นสูง 1/2566
1.ที่มาและความสำคัญ
ในยุคปัจจุบันที่เทคโนโลยีสารสนเทศและการสื่อสารเป็นส่วนสำคัญของชีวิตประจำวันและธุรกิจ ความปลอดภัยของข้อมูลและระบบเครือข่ายมีความสำคัญมากที่สุด การบุกรุกหรือการละเมิดความปลอดภัยของระบบออนไลน์เป็นปัญหาร้ายแรงที่มีการเพิ่มขึ้นอย่างต่อเนื่อง หากไม่มีการตรวจสอบและแจ้งเตือนที่เหมาะสม เหตุการณ์เช่นนี้อาจส่งผลให้เกิดความเสียหายทางธุรกิจและความสูญเสียทางการเงินที่มีค่ามาก ดังนั้นการสร้างระบบแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุกกลายเป็นเครื่องมือที่สำคัญในการรักษาความปลอดภัยและความเป็นส่วนตัวของข้อมูลและระบบในยุคปัจจุบัน
2.วัตถุประสงค์
2.1 เพื่อสร้างระบบแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุก
2.2 เพื่อระบุและบ่งชี้เหตุการณ์ที่ไม่ปกติที่อาจเป็นการบุกรุก
2.3 เพื่อทำให้มีความสะดวกสบายและเข้าถึงได้ง่ายสำหรับผู้รับข้อมูลแจ้งเตือน
3.ขอบเขต
3.1 สามารถแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุกมีหน้าที่ตรวจสอบและตรวจจับเหตุการณ์ที่ไม่ปกติ
3.2 สามารถบันทึกข้อมูลเมื่อมีคนบุกรุกได้
3.3 สามารถนำไปต่อยอดเป็นการแสดงผลผ่านกล้องได้เมื่อมีคนบุกรุก
4.ประโยชน์ที่คาดว่าจะได้รับ
4.1 สามารถรับรู้เมื่อมีคนบุกรุกด้วยการแจ้งเตือนผ่าน Line Notify
4.2 สามารถตรวจจับและแจ้งเตือนทันทีที่เหตุการณ์ไม่ปกติเกิดขึ้น
4.3 สามารถบันทึกข้อมูลเมื่อมีคนบุกรุกได้
5.ความรู้ที่เกี่ยวข้อง
5.1 Line notify
ในส่วนนี้จะใช้ line notify ในการส่งข้อความ เพื่อให้ทราบว่ามีผู้บุกรุกหรือไม่ โดยเราต้องนำ Line Token มาใส่ในโค้ด โดยการสร้าง Line token สามารถทำได้โดยการ เช้าเว็บไซท์ Line Notify แล้วเข้าสู่ระบบด้วยไลน์ เมื่อเข้าสู่ระบบแล้วให้กดลูกศรขวาบน แล้วกดที่ Mypage
จากนั้นให้กด Generate Token ตั้งชื่อ bot สำหรับการแจ้งเตือนและสามารถเลือกได้ว่าจะให้แจ้งเตือนในกลุ่มหรือส่วนตัวได้ โดยในที่นี้จะเลือก 1 on 1 chat with line notify ดังภาพ
เมื่อกด Generate Token แล้ว จะมี Token มาให้ ซึ่งสามารถดูได้ครั้งเดียวเท่านั้น แนะนำให้บันทึกไว้ เราจะนำ Line Token ไปใช้ใน ขั้นตอนอื่น ดังภาพ
5.2 อุปกรณ์ของระบบการแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุก
ประกอบด้วย ESP32,PIR SENSOR,DFplayer mini ซึ่งจะใช้ร่วมกับ SD card (ในส่วนของการตั้งค่า SD card นั้น ต้อง format เป็น FAT32 และต้องมีขนาดไม่เกิน 32 GB) ,และลำโพง
5.2.1 ESP32
ESP32 รองรับการเชื่อมต่อ WiFi และ BLE หรือ Bluetooth ได้โดยไม่ต้องซื้อโมดูลเพิ่มเติม บอร์ด ESP32 เองยังมีการทำงานที่แบ่งเป็น 2 Core และ Pin I/O เลือกฟั่งชั่นการทำงานได้ใน Pin เดียวกัน เช่น การแปลง Analog to Digital หรือ Digital to Analog การเชื่อมต่อ SD Card Camera PWD RTC และ Touch เป็นต้น
5.2.2 PIR SENSOR
PIR SENSOR เป็นอุปกรณ์ตรวจจับการเคลื่อนไหวโดยรับรังสีอินฟราเรด. โดยจะตรวจจับการเปลี่ยนแปลงอย่างรวดเร็วของพลังงานอินฟราเรดและส่งสัญญาณเมื่อมีคนเดินผ่านเซ็นเซอร์
5.2.3 DFplayer mini
DFPlayer Mini โมดูลเล่นไฟล์ MP3 ขนาดเล็ก รองรับการควบคุมผ่านไมโครคอนโทรลเลอร์ ผ่าน UART สามารถต่ออกลำโพงได้โดยตรง หรือสามารถนำไปต่อผ่านวงจรขยายด้วยขา DAC_R และ DAC_L ให้เอาต์พุตแบบสเตอริโอ ในระบบนี้การทำงานคือรับค่ามาจาก PIR SENSOR เมื่อมีคนเดินผ่าน ตัวDFPlayer Mini ก็จะส่งสัญญาณไปยังลำโพง
5.3 โค้ดการทำงาน
เริ่มต้น เราต้องกำหนดตัวแปรสำหรับข้อมูลที่เราได้ทำไว้ก่อนหน้านี้ และนำ Line Token มาใส่ จากนั้นนำไฟล์ library ของอุปกรณือื่นๆมาใส่ด้วย และกำหนดขาของอุปกรณ์ที่จะต่อกับ ESP32
#include <WiFi.h>
#include <HTTPClient.h>
#include "HardwareSerial.h"
#include "DFRobotDFPlayerMini.h"
const char* ssid = "BMFT_2.4G"; // แทนที่ด้วยชื่อ WiFi SSID ของคุณ
const char* password = "0950866858"; // แทนที่ด้วยรหัส WiFi ของคุณ
const char* lineToken = "FIivCTXA5dKr047gLibF6PfWpSeChdBlzOHkaH78uBf"; // แทนที่ด้วย LINE Notify Token ของคุณ
const byte RXD2 = 16; // Connects to module's RX
const byte TXD2 = 17; // Connects to module's TX
const int pirPin = 18; // แทนที่ด้วยขาที่เชื่อมกับ PIR Motion Sensor
จากนั้นจะสร้าง Object เพื่อนำไปใช้ควบคุมอุปกรณ์ภายในโค้ด
HardwareSerial dfSD(1); // Use UART channel 1
DFRobotDFPlayerMini player;
ต่อมาคือการทำงานในส่วนนี้เป็นขั้นตอนที่สำคัญในการตั้งค่าและเตรียมการในการใช้งาน Wi-Fi, Serial Communication สำหรับ DFPlayer Mini และตั้งค่าระดับเสียง
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
dfSD.begin(9600, SERIAL_8N1, RXD2, TXD2); // 16,17
while (WiFi.status() != WL_CONNECTED) {
delay(1000);
Serial.println("Connecting to WiFi...");
}
Serial.println("Connected to WiFi");
if (player.begin(dfSD))
{
Serial.println("OK");
// Set volume to maximum (0 to 30).
player.volume(17); //30 is very loud
}
else
{
Serial.println("Connecting to DFPlayer Mini failed!");
}
}
ส่วนนี้เป็นส่วนหลักในการทำงานของโปรแกรมในลูปหลัก ที่ตรวจสอบการเคลื่อนไหวที่ถูกตรวจจับโดย PIR Motion Sensor และกำหนดเสียงที่จะใช้ในการแจ้งเตือนไปยัง Line Notify
void loop() {
if (digitalRead(pirPin) == HIGH) { // ตรวจสอบว่า PIR Motion Sensor ตรวจจับการเคลื่อนไหวหรือไม่
sendLineNotification("มีคนบุกรุก!"); // ส่งข้อความแจ้งเตือนไปยัง Line
player.volume(25); //เพิ่มระดับเสียง 0-30
player.play(2); // เสียงทึ่2
delay(5000); // รอ 5 วินาทีก่อนที่จะส่งข้อความอีกครั้งเพื่อหลีกเลี่ยงการส่งข้อความซ้ำ
}
}
ส่วนสุดท้ายคือ ฟังก์ชันนี้ทำหน้าที่ส่งข้อความแจ้งเตือนไปยัง Line Notify ด้วยการทำ HTTP POST request และแสดงผลลัพธ์ที่ได้ใน Serial Monitor
void sendLineNotification(String message) {
HTTPClient http;
String url = "https://notify-api.line.me/api/notify";
http.begin(url);
http.addHeader("Authorization", "Bearer " + String(lineToken));
http.addHeader("Content-Type", "application/x-www-form-urlencoded");
int httpCode = http.POST("message=" + message);
String payload = http.getString();
Serial.println(httpCode);
Serial.println(payload);
http.end();
}
6. ผลการดำเนินงาน
วิธีการใช้งาน
ในการเริ่มต้นการใช้งานระบบแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุก ต้องมี Appication Line ภายในมือถือเพื่อรับการแจ้งเตือนเมื่อมีผู้บุกรุก หลังจากนั้นทำการจ่ายไฟให้กับระบบ เมื่อทำการจ่ายไฟเสร็จระบบจะเริ่มใช้งานได้ก็ต่อเมื่อทำการเชื่อม WIFI หลังจากเชื่อม WIFI ระบบก็สามารถทำงานได้ทันที เมื่อมีคนเดินผ่าน PIR SENSOR หรือ เซนเซอร์ตรวจจับการเคลื่อนไหว PIR SENSOR จะส่งค่าไปยัง Line Notify เพื่อทำการแจ้งเตือนว่ามีผู้บุกรุก และ DFplayer mini จะทำการส่งค่าไปยัง ลำโพงเพื่อแจ้งเตือนด้วยเสียง ดังภาพ
7. สรุปผลและข้อเสนอแนะ
7.1 สรุปผล
จากผลการทดสอบของระบบแจ้งเตือนด้วย Line Notify เมื่อมีผู้บุกรุก สามารถทำงานได้อย่างมีประสิทธิภาพ ซึ่งตรงตามเงื่อนไขที่ได้ทดสอบ ได้แก่
7.1.1 สามารถรับรู้เมื่อมีคนบุกรุกด้วยการแจ้งเตือนผ่าน Line Notify
7.1.2 สามารถตรวจจับและแจ้งเตือนทันทีที่เหตุการณ์ไม่ปกติเกิดขึ้น
7.1.3 สามารถทำงานได้อย่างมีประสิทธิภาพ ซึ่งตรงตามเงื่อนไขที่ได้ทดสอบ
7.2 ข้อเสนอแนะ
7.2.1 PIR SENSOR มีโอกาสทำงานผิดพลาดได้ในบางครั้ง
7.2.2 สามารถนำไปต่อยอดเป็นการแจ้งเตือนผ่าน Line notify และส่งรูปมายัง Line ด้วน ESP32 CAM
8. อ้างอิง
8.1 โปรเจค IoT ESP32 แจ้งเตือนด้วย LINE Notify เมื่อมีผู้บุกรุก สืบค้นจาก https://esp32robot.blogspot.com/
8.2 สอนใช้งาน Arduino เล่นเพลง ไฟล์เสียง MP3 DFPlayer Module สืบค้นจาก https://www.cybertice.com/
8.3 สอนการใช้งานบอร์ด Arduino กับ PIR เซ็นเซอร์ สืบค้นจาก https://www.analogread.com/