สร้าง Time Switch Relay ตั้งค่าผ่าน Web browser

รายการอุปกรณ์

  1. ESP8266 WiFi Module D1 Mini Node Board จำนวน 1 ตัว
  2. DS3231 Real time Clock + Battery 3.3V จำนวน 1 ตัว
  3. Resistor ขนาด 220 Ohm จำนวน 1 ตัว
  4. Transistor เบอร์ BC337 จำนวน 1 ตัว

วงจรการทำงาน

วงจรการทำงานของอุปกรณ์

หลักการทำงาน

ภาพรวมการทำงาน

จากวงจรการทำงานจะพบว่า DS3231 ทำหน้าที่เป็น Real Time Clock นับเวลาที่มีความเที่ยงตรง ความละเอียด 1 sec แต่ทั้งนี้ทั้งนั้นต้องมีการปรับตั้งค่าครั้งแรกคล้ายกับนาฬิกาของเรา ดังนั้นจึงอาศัย Web browser ในการปรับเวลาให้เที่ยงตรง และกำหนดเวลาในการทำงานว่าจะ On หรือ Off ที่เวลาเท่าไหร่ เพราะในตัว Web browser เอง เราสามารถเขียน Javascript เพื่อดึงค่าเวลาปัจจุบันจากอุปกรณ์ที่ติดตั้ง Web browser ออกมาได้และโดยปกติแล้ว เวลาบนอุปกรณ์มันจะเที่ยงตรงอยู่แล้ว เพราะเคยเชื่อมต่อกับ Internet

จากโค๊ดในไฟล์ ESP8266_TIME_SWITCH_RELAY_V3.ino ส่วนที่เป็นการดึงค่าในเวลาปัจุบันคือ

var d = new Date();
var dt = d.getFullYear().toString()+syn+d.getMonth().toString()+syn+d.getDate().toString()+syn+d.getHours().toString()+syn+d.getMinutes().toString()+syn+d.getSeconds().toString();

ส่วนการตั้งค่าและอ่านค่าเวลาจาก DS3231 ผู้เขียนเชื่อว่าผู้อ่านสามารถศึกษาเพิ่มเติมได้เองโดยดูจากโค๊ดในไฟล์ ESP8266_TIME_SWITCH_RELAY_V3.ino
ส่วนการตั้งค่า DS3231

RtcDateTime currentTime = RtcDateTime(request[0]<2100? request[0]%2000:request[0]%2100, request[1]+1, request[2], request[3], request[4], request[5]);
rtc.SetDateTime(currentTime); //Configure the RTC 

ส่วนการอ่านค่าเวลาปัจจุบัน

RtcDateTime now = rtc.GetDateTime();    //get the time from the RTC<br>
  byte dw = DayOfWeek(now.Year(), now.Month(), now.Day());<br>
  sprintf(t, "%02d:%02d:%02d %02d/%02d/%02d",  now.Hour(), now.Minute(), now.Second(), now.Day(), now.Month(), now.Year());  <br>
  Serial.print(F("Time/Date: ")); Serial.print(t); Serial.print(" "); Serial.println(day_name[dw-1]);

การใช้งาน

  1. เมื่อจ่ายไฟเข้าอุปกรณ์ WiFi Module จะสร้างเสา WiFi ขึ้นมา เพื่อให้สามารถเข้าไปตั้งค่าของ Timer ได้ ในตอนนี้ WiFi Module ทำหน้าที่เป็น WiFi Access Point (คล้ายกับเราเตอร์ในบ้านของเรา) สังเกตได้จาก LED ติดค้าง
  2. เชื่อมต่อ WiFi โดยมีรหัสผ่านคือ 12345678 ส่วนนี้สามารถแก้ไขเองได้ โดยเปิดไฟล์ Arduino Project แก้ไขที่ผู้เขียน Mark เอาไว้ แล้วกด Upload ไปยังอุปกรณ์ใหม่ แต่ก็ต้องติดตั้งไลบารี่อื่น ๆ ในโปรเจคให้ครบด้วยถึงจะ Complie และ Upload สำเร็จ
  3. เปิด Web browser เช่น Google Chrome เป็นต้น แล้วพิมพ์ที่ URL ว่า 192.168.4.1 เพื่อเข้าสู่หน้าการตั้งค่า
  4. กดปุ่ม New ถ้าต้องการตั้งค่าใหม่
  5. สามารถตั้งค่าได้ทั้ง Timer On และ Timer Off ถ้าอยากตั้งเฉพาะ Timer On ช่อง Timer Off ก็ไม่ต้องระบุ แต่ถ้าอยากตั้งเฉพาะ Timer Off ช่อง Timer On ก็ไม่ต้องระบุ
  6. กด Save หน้า Web จะ Refresh อัฒโนมัติและแสดงการตั้งค่าล่าสุด
  7. เมื่อผ่านไป 10 นาที เสา WiFi จะหายไปอัฒโนมัติ สังเกตได้จาก LED จะกระพริบทุก ๆ 1 วินาที
  8. สามารถดูภาพประกอบข้างล่างนี้ได้

ดาวน์โหลดโปรเจค

TimeSwitchRelay
28 ดาวน์โหลด, ล่าสุด 17 ก.ค.. 2019

ขั้นตอนการอัพโหลด

  1. ดาวน์โหลดโปรเจคจากลิงค์ข้างบน ข้างในประกอบด้วย ไฟล์ .ino เพื่อเปิดในโปรแกรม Arduino IDE เพื่อแก้ไข (อย่าลืมลงไลบารีใน #include ให้ครบด้วย) และ .bin เพื่ออัพโหลดไปยัง ESP8266 โดยไม่ต้อง Complier ใหม่
  2. ดาวน์โหลดโปรแกรม nodemcu-flasher เพื่อใช้สำหรับอัพโหลดไฟล์ .bin ไปยัง ESP8266
  3. เสียบสาย USB เข้ากับบอร์ด ESP8266 และเปิดโปรแกรมให้ตรงตามรุ่นของวินโดวน์เช่น x64 ให้ไปที่ nodemcu-flasher/Win64/Release/ESP8266Flasher.exe
  4. ไปที่แท็ป Advance และกำหนด SPI Mode เป็น DOUT
  5. ไปที่แท็ป Config และกดปุ่มรูปเฟือง แล้วเลือกไฟล์ .bin ที่ TimeRelay-master/Bin/ESP8266_TIME_SWITCH_RELAY_V3.ino.bin
  6. ไปที่แท็ป Operation และกดปุ่ม Flash(F)
  7. รอจนกระทั้งบาร์อัพโหลดเต็มหรือเครื่องหมายถูกสีเขียวสว่างขึ้น
  8. สามารถดูภาพประกอบข้างล่างนี้ได้
Share this:

Leave a Reply

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องที่ต้องการถูกทำเครื่องหมาย *