ชื่อโปรเจกต์: School Bell Ring
ฟีเจอร์เด่นๆ ของเจ้ากริ่งอัจฉริยะตัวนี้ก็ตามนี้เลยน้อง:
- เชื่อมต่อ WiFi ได้เลย เอาไว้คุมผ่านแอป Blynk หล่อๆ
- ซิงค์เวลากับ Blynk servers ตลอดเวลา มั่นใจได้ว่าเวลาตรงเป๊ะ ไม่ต้องกลัวนาฬิกาเดินเพี้ยน
- มีระบบ Timers ตั้งเวลาให้กริ่งดังตามคาบเรียนได้เลย
- ตั้งตารางวันหยุดหรือเสาร์-อาทิตย์ได้ด้วยนะน้อง กริ่งจะได้ไม่ดังรบกวนเวลาพักผ่อน
- ไม่ต้องใช้ถ่าน Backup ให้วุ่นวาย เพราะเราเก็บค่าคอนฟิกไว้บน Blynk servers หมดแล้ว
หวังว่าพวกเอ็งจะชอบกันนะ
Step 1: เซ็ตแอป Blynk
Blynk คือแพลตฟอร์ม IoT ตัวตึงที่จะช่วยเชื่อมต่ออุปกรณ์ของเราเข้ากับ Cloud
ถ้าจะใช้งานก็จัดตามนี้เลย:
- โหลดแอป Blynk มาลงเครื่องซะ (มีทั้ง Android และ iOS จัดไป)
- สร้างโปรเจกต์ใหม่ แล้วเลือกบอร์ดเป็น ESP8266 นะวัยรุ่น
- เดี๋ยวพวกเอ็งจะได้ Auth Token ส่งมาทางเมล เก็บไว้ให้ดี เดี๋ยวต้องเอาไปใส่ใน Sketch ของ ESP8266 ทีหลัง
ขั้นตอนที่พี่ทำแอป Blynk มีดังนี้:
STEP 1
เพิ่ม Timer เข้าไปตามคาบเรียนเลยน้อง ใน Timer แต่ละตัว เอ็งก็ระบุไปว่ากริ่งต้องเริ่มดังตอนกี่โมง แล้วจะให้มันหยุดดังตอนกี่โมง พี่ใช้ Virtual Pins ตั้งแต่ V0, V1, V2... ผูกกับ Timer แต่ละตัวไปเลย

STEP 2
เพิ่มปุ่ม Push button เอาไว้กดกริ่งเองแบบ Manual เวลาฉุกเฉิน อันนี้พี่ผูกไว้กับ Virtual Pin V8 นะ

STEP 3
ใส่ Real-time clock (RTC) เข้าไปด้วย เพื่อดึงเวลาจาก Server มาเช็กวันหยุดให้กริ่งเราฉลาดขึ้น

Step 2: เขียน Sketch ลง ESP8266
ใน Sketch นี้ต้องใช้ Library ตามนี้นะน้อง:
- Blynk libraries: ไปที่ Library manager แล้วค้นหาคำว่า Blynk แล้วกด Install ซะ
- TimeLib library: ไปโหลดแบบ zip มา แล้วเลือกเมนู Sketch -> Include Library -> Add .zip library แล้วเลือกไฟล์ที่โหลดมา

ในตัวโค้ดมีจุดที่ต้องเน้นตามนี้:
- ใส่ User/Password เพื่อต่อกับ Blynk server
#define BLYNK_PRINT Serial
#include <esp8266wifi.h>
#include <blynksimpleesp8266.h>
#include <timelib.h>
// เอา Auth Token จากแอป Blynk มาใส่ตรงนี้
// ดูที่ Project Settings (รูปฟันเฟือง)
char auth[] = "your device Auth Token";
// ใส่ชื่อ WiFi กับรหัสผ่านของเอ็งซะ
// ถ้าไม่มีรหัสก็ใส่ "" ว่างไว้
char ssid[] = "your wifi ssid";
char pass[] = "your wifi passwd";
SimpleTimer timer;
WidgetRTC rtc;
- พวก Virtual Pins (V0 ถึง V8) ที่เราผูกไว้กับแต่ละคาบเรียน
BLYNK_WRITE(V0) {
if (param.asInt() == 1) SoundRingBell(1);
else SoundRingBell(0);
}
BLYNK_WRITE(V1) {
if (param.asInt() == 1) SoundRingBell(1);
else SoundRingBell(0);
}<br>
- ฟังก์ชัน "SoundRingBell" ที่พี่เขียนดักไว้ไม่ให้กริ่งดังวันเสาร์-อาทิตย์ แล้วก็ช่วงเดือนกรกฎาฯ กับสิงหาคม (ปิดเทอมฝรั่งเขาน่ะ) ส่วนขา IO0 เอาไว้สั่งงานตัวกริ่งนะน้อง
void SoundRingBell(int value) {
// ไม่ทำงานวันเสาร์หรืออาทิตย์
if ((weekday() == 1) or (weekday() == 7)) return;
// ไม่ทำงานเดือน ก.ค. และ ส.ค.
if ((month() == 7) or (month() == 8)) return;
if (value == 0) digitalWrite(0,LOW);
else digitalWrite(0,HIGH);
}
Step 3: วิธีการเบิร์น Sketch ลงโมดูล ESP8266
ขั้นตอนการโปรแกรม ESP8266 โดยใช้ Arduino IDE มีดังนี้:
STEP 1
เปิดหน้า Preferences ใน Arduino IDE ไปที่ File -> Preferences แล้วก๊อปประโยคนี้ใส่ลงไปในช่อง Additional Board Manager URLs: "http://arduino.esp8266.com/stable/package_esp8266com_index.json"

STEP 2
ไปที่ Tools -> Board -> Boards Manager... ค้นหาคำว่า "esp8266" แล้วกด Install เลยวัยรุ่น

STEP 3
เลือกบอร์ดเป็น Tools > Board > Generic ESP8266 Module
STEP 4
ตอนจะ Upload พี่ใช้บอร์ด ARDUINO MEGA 2560 มาช่วยเบิร์น (จะใช้ NANO หรือ UNO ก็ได้นะ ตามสะดวก)

ต่อสายระหว่าง ESP8266 กับ ARDUINO MEGA 2560 ตามนี้ (ห้ามช็อตนะตัวนี้):
- ต่อขา "3V3" เข้ากับขา "3V" ของ ARDUINO MEGA 2560
- ต่อขา "RX" เข้ากับขา "RX/0"
- ต่อขา "EN" เข้ากับขา "3V"
- ต่อขา "IO0" เข้ากับขา "GND" (เพื่อเข้า Flash Mode)
- ต่อขา "GND" เข้ากับขา "GND"
- ต่อขา "TX" เข้ากับขา "TX/1"
สุดท้ายที่สำคัญ: ให้ต่อขา "RESET" ของ ARDUINO MEGA 2560 ลง "GND" ด้วย เพื่อให้บอร์ด Mega มันหยุดทำงานแล้วทำตัวเป็นแค่ทางผ่าน (Gateway) ให้เราโปรแกรม ESP8266 ได้นั่นเอง

STEP 5
เลือก COM Port ที่ ARDUINO MEGA 2560 เสียบอยู่ แล้วกด Upload โลด!
Step 4: ตัวเครื่องและอุปกรณ์
โปรเจกต์นี้ประกอบด้วยโมดูล ESP-01 กับ Relay ที่รวมร่างกันมาในบอร์ดเดียวเลย ตัว ESP-01 จะมีขา I/O สองขาคือ IO0 กับ IO2 เอาไว้สั่งงาน Relay
บอร์ดนี้ต้องการไฟ 5V มาเลี้ยงนะน้องดูในรูปได้เลย ดังนั้นต้องมีโมดูลแปลงไฟ 100-240 VAC เป็น 5 VDC ด้วยนะ ส่วนการคุมกริ่ง พี่ใช้หน้าสัมผัสแบบ NO (Normally Open) ของ Relay นะน้อง งานนี้หล่อเท่แน่นอน

รายละเอียดทางเทคนิคเพิ่มเติม
ฮับควบคุมตารางกริ่งอัตโนมัติ (Automated Educational Scheduling Hub)
โปรเจกต์นี้คือโซลูชันตัวตึงสำหรับการทำกริ่งโรงเรียนหรือออฟฟิศอัตโนมัติ เลิกใช้คนกดสวิตช์แบบเดิมๆ แล้วเปลี่ยนมาใช้ระบบ IoT Timer ที่แม่นยำกว่าเยอะ
- การเชื่อมต่อ Blynk Cloud-Scheduler: ใช้ Blynk IoT platform เพื่อตั้งค่าจากที่ไหนก็ได้ แอดมินสามารถตั้งเวลากริ่งได้เพียบ ทั้ง "เริ่มเรียน", "พักเที่ยง" หรือ "เลิกเรียน" ผ่านแอปในมือถือได้โดยตรง
- การขับโหลดกริ่งกระแสสูง: ตัว Arduino (ที่ต่อ WiFi ได้) จะไปสั่งงานกริ่งไฟฟ้าตัวเบิ้มผ่าน Relay (หรือ SSR) ตัวโค้ดจะคุมให้กริ่งดังนานเท่าไหร่ก็ได้ (เช่น 5 วินาที) โดยไม่สนว่าเน็ตจะหน่วงแค่ไหน
ความเสถียร (Reliability)
- ระบบ Local Time-Cache Buffer: ตัวบอร์ดจะเก็บตารางเวลาที่ดึงมาจาก Cloud ไว้ในตัวมันเอง ถ้า WiFi เกิดล่มขึ้นมา ระบบ RTC (Real-Time Clock) ข้างในก็จะยังทำหน้าที่กริ่งดังตามตารางเดิมได้เป๊ะๆ ไม่ต้องกลัวเด็กเลิกเรียนช้าเพราะเน็ตหลุดนะน้อง!