กลับไปหน้ารวมไฟล์
school-bell-ring-65be56.md

ชื่อโปรเจกต์: 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) ข้างในก็จะยังทำหน้าที่กริ่งดังตามตารางเดิมได้เป๊ะๆ ไม่ต้องกลัวเด็กเลิกเรียนช้าเพราะเน็ตหลุดนะน้อง!

ข้อมูล Frontmatter ดั้งเดิม

title: "School Bell Ring"
description: "This project shows you how to automate and control from a mobile phone with Blynk a school bell ring using a ESP8266 module with a relay"
author: "tecnomaker"
category: ""
tags:
  - "esp8266"
  - "blynk"
  - "bell ring"
views: 1901
likes: 0
price: 299
difficulty: "Easy"
components:
  - "1x Arduino Mega 2560"
  - "1x 100-240 VAC to 5 VDC"
  - "1x Soldering iron (generic)"
  - "1x Jumper wires (generic)"
  - "1x PCB Holder, Soldering Iron"
  - "1x ESP8266+relay"
tools: []
apps:
  - "1x Blynk"
downloadableFiles:
  - "https://github.com/blynkkk/blynk-library"
  - "https://github.com/PaulStoffregen/Time"
  - "https://github.com/PaulStoffregen/Time"
  - "https://github.com/blynkkk/blynk-library"
documentationLinks: []
passwordHash: "c1c037fc133156199832a0590b582e6ab5525bb1d89af7f5105e08923ecb0808"
encryptedPayload: "U2FsdGVkX1/JU30OFdtl7R/4AK2JU9lDgX5jWBTEhXjEf8FIWrWzEhKNw6gFt/neEPMz7oWEwYlF8IKObmFbkw=="
seoDescription: "Build an automated School Bell Ring system controlled via mobile phone with Blynk using ESP8266 module and relay for Arduino projects."
videoLinks: []
heroImage: "https://cdn.jsdelivr.net/gh/bigboxthailand/arduino-assets@main/images/projects/school-bell-ring-65be56_cover.jpg"
lang: "th"