รายการอุปกรณ์
- ESP8266 WiFi Module D1 Mini Node Board จำนวน 1 ตัว
- DS3231 Real time Clock + Battery 3.3V จำนวน 1 ตัว
- Resistor ขนาด 220 Ohm จำนวน 1 ตัว
- 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]);
การใช้งาน
- เมื่อจ่ายไฟเข้าอุปกรณ์ WiFi Module จะสร้างเสา WiFi ขึ้นมา เพื่อให้สามารถเข้าไปตั้งค่าของ Timer ได้ ในตอนนี้ WiFi Module ทำหน้าที่เป็น WiFi Access Point (คล้ายกับเราเตอร์ในบ้านของเรา) สังเกตได้จาก LED ติดค้าง
- เชื่อมต่อ WiFi โดยมีรหัสผ่านคือ 12345678 ส่วนนี้สามารถแก้ไขเองได้ โดยเปิดไฟล์ Arduino Project แก้ไขที่ผู้เขียน Mark เอาไว้ แล้วกด Upload ไปยังอุปกรณ์ใหม่ แต่ก็ต้องติดตั้งไลบารี่อื่น ๆ ในโปรเจคให้ครบด้วยถึงจะ Complie และ Upload สำเร็จ
- เปิด Web browser เช่น Google Chrome เป็นต้น แล้วพิมพ์ที่ URL ว่า 192.168.4.1 เพื่อเข้าสู่หน้าการตั้งค่า
- กดปุ่ม New ถ้าต้องการตั้งค่าใหม่
- สามารถตั้งค่าได้ทั้ง Timer On และ Timer Off ถ้าอยากตั้งเฉพาะ Timer On ช่อง Timer Off ก็ไม่ต้องระบุ แต่ถ้าอยากตั้งเฉพาะ Timer Off ช่อง Timer On ก็ไม่ต้องระบุ
- กด Save หน้า Web จะ Refresh อัฒโนมัติและแสดงการตั้งค่าล่าสุด
- เมื่อผ่านไป 10 นาที เสา WiFi จะหายไปอัฒโนมัติ สังเกตได้จาก LED จะกระพริบทุก ๆ 1 วินาที
- สามารถดูภาพประกอบข้างล่างนี้ได้
ดาวน์โหลดโปรเจค
TimeSwitchRelay
183 ดาวน์โหลด, ล่าสุด 17 ก.ค.. 2019
ขั้นตอนการอัพโหลด
- ดาวน์โหลดโปรเจคจากลิงค์ข้างบน ข้างในประกอบด้วย ไฟล์ .ino เพื่อเปิดในโปรแกรม Arduino IDE เพื่อแก้ไข (อย่าลืมลงไลบารีใน #include ให้ครบด้วย) และ .bin เพื่ออัพโหลดไปยัง ESP8266 โดยไม่ต้อง Complier ใหม่
- ดาวน์โหลดโปรแกรม nodemcu-flasher เพื่อใช้สำหรับอัพโหลดไฟล์ .bin ไปยัง ESP8266
- เสียบสาย USB เข้ากับบอร์ด ESP8266 และเปิดโปรแกรมให้ตรงตามรุ่นของวินโดวน์เช่น x64 ให้ไปที่ nodemcu-flasher/Win64/Release/ESP8266Flasher.exe
- ไปที่แท็ป Advance และกำหนด SPI Mode เป็น DOUT
- ไปที่แท็ป Config และกดปุ่มรูปเฟือง แล้วเลือกไฟล์ .bin ที่ TimeRelay-master/Bin/ESP8266_TIME_SWITCH_RELAY_V3.ino.bin
- ไปที่แท็ป Operation และกดปุ่ม Flash(F)
- รอจนกระทั้งบาร์อัพโหลดเต็มหรือเครื่องหมายถูกสีเขียวสว่างขึ้น
- สามารถดูภาพประกอบข้างล่างนี้ได้