free css templates
รายการสือการสอนของอาจารย์แต่ละท่านที่นำเสนอ

ชื่ออาจารย์ : นายศักดิ์ศรี เสนาลัย

สถานศึกษา : ข้าราชการเกษียน

แผนกวิชา : เทคโนโลยีสารสนเทศ

จังหวัด : มุกดาหาร



วิชาอาจารย์ นายศักดิ์ศรี เสนาลัย

ลำดับ

ชื่อวิชา

1- 1_BASIC_IOT_NETPIE_2020 17
2- 1_test_pid 8
3- 1_visual_foxpro 7
4- 1_การสร้างเว็บไซต์ด้วยMobirise 3
5- 1อบรมnodemcu_oit 8
6- 2อบรมnodemcu_oit 4
7- 3mqtt 5
8- A_WordPress 7
9- ARDUINO_BY_SAKSRI 6
10- basic_ROBOT 7
11- Car_Tracking 1
12- database 14
13- digital 30
14- Firebase 4
15- internet_of_thing(IOT) 6
16- internet_of_thing(IOT2) 13
17- iot_nodemcu_wemos 3
18- JavaBasic 4
19- JSON 4
20- nodemcueps8266 7
21- php_mysql_and_NodeMCU_API 1
22- PYTHON 7
23- thunkable 5
24- VueJS 4
25- การเขียนโปรแกรมphp_mysql 29
26- การเขียนโปรแกรมคอมพิวเตอร์ 9
27- การเขียนโปรแกรมวินฟรอ์ม_database_dbf(visualfoxpro_by_saksri) 3
28- การเขียนโปรแกรมวินฟรอ์ม_database_mysql(visualfoxpro_by_saksri) 2
29- การเขียนโปรแกรมวินฟรอ์ม(visualfoxpro_by_saksri) 16
30- การเขียนโปรแกรมเว็บ2 22
31- การเรียนการสอนแบบออนไลน์ 2
32- ตัวอย่าง_PROJECT 5
33- ตัวอย่างการเขียนโปรแกรม 24
34- ปรับพื้นฐานการเขียนโปรแกรมด้วยภาษาphp 98
35- ระบบเขื่อข่ายคอมพิวเตอร์ 1
36- สร้างเว็บไซต์ด้วยPHPและฐานข้อมูลMySQL 5
37- สอนจาวา 30
38- สอนจาวา(java) 105
39- สอนจาวาGUI 23
40- สอนจาวาMysql 7
41- สอนทำเว็บ_PHP_Databases_Dreamweaver_Bootstrap 44
42- หุ่นยนต์เพื่ออุตสาหกรรม 13
43- หุ่นยนต์เพื่ออุตสาหกรรม2 3
44- หุ่นยนต์เพื่ออุตสาหกรรม3 5
45- หุ่นยนต์เพื่ออุตสาหกรรม4 2
46- เขียนเว็บด้วยHTML_CSS 2
47- เพลงคาราโอเกะ 15
48- โปรแกรมภาษาไพธอน 35
49- โรงงานอุตสาหกรรม 1

รายละเอียดd>internet_of_thing(IOT) > Smart Plug


Smart Plug

รายละเอียดd>internet_of_thing(IOT) > เริ่มศึกษา


 

image/file/prog_on_off_sw_ESP8266_wemod_nano_eeprom_wifi_mana_server_01.rar

image/file/prog_on_off_sw_nano_to_wemos_or_nodemcu_01_v2.rar

รายละเอียดd>internet_of_thing(IOT) > BLYNK


   
 

 

 

 

 

 

 

 เราจะใช้ app ที่มีชื่อว่า Blynk ในการควบคุมการปิดเปิดอุปกรณ์ไฟฟ้า 

 

#define BLYNK_PRINT Serial

#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
  
char auth[] = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
 char ssid[] = "xxxxxxx";
char pass[] = "xxxxxxxxxxx";
  
int dnn; 
  
 
void setup()
{
   
  Serial.begin(9600);
 
  Blynk.begin(auth, ssid, pass);
   
}
 
void loop()
{
  
   
  Blynk.run();
   
}
 
   

 

 

 

รายละเอียดd>internet_of_thing(IOT) > Lab 1 การติดตั้ง Arduino IDE และทดสอบการทำงานเบื้องต้นของ NodeMCU/ESP8266


 

Lab 1

การติดตั้ง Arduino IDE และทดสอบการทำงานเบื้องต้นของ NodeMCU/ESP8266


VDO Link : https://www.youtube.com/watch?v=G9DDhv5OluM


ระดับความยากง่าย

● ง่าย


ประมาณเวลาที่ใช้เรียนรู้ + ลงมือปฏิบัติตาม

● 45 นาที


Prerequisite ต้องผ่านหัวข้อหรือใบงานกิจกรรมใดมาก่อน

● ไม่ต้องผ่าน


วัตถุประสงค์การเรียนรู้

  1. เพื่อติดตั้งโปรแกรม Arduino IDE บนคอมพิวเตอร์
  2. เพื่อทดสอบการใช้งานของ NodeMCU/ESP8266

อุปกรณ์ที่ต้องเตรียม

  1. บอร์ด NodeMCU ESP8266 (ESP-12E)

เนื้อหาเชิงทฤษฎี

ในการสื่อเรียนรู้นี้ เราเลือกใช้โปรแกรม Sketch ของ Arduino (Arduino IDE) ในการเขียนโปรแกรมควบคุมการทำงานของบอร์ด NodeMCU/ESP8266 (ซึ่งในบางครั้ง อาจเรียกบอร์ดลักษณะนี้ว่า WiFi controller) เพราะเป็นโปรแกรมที่ใช้งานง่าย เขียนด้วยภาษา C และความที่เป็น Open Source ทำให้ใช้งานได้โดยไม่มีค่าใช้จ่าย ได้รับความนิยมสูง จึงทำให้มีแหล่งข้อมูลให้ศึกษาค้นคว้าเพิ่มเติมในเว็บบอร์ดหรือเว็บไซต์ในอินเทอร์เน็ตอีกมากมาย และในส่วนของบอร์ด NodeMCU/ESP8266 เองนั้น เป็นบอร์ดไมโครคอนโทลเลอร์ที่มีจำนวนขาพอร์ตอินพุตและเอาต์พุตมากพอสำหรับการนำไปใช้งานจริง สามารถต่อกับเซ็นเซอร์ได้ทั้งแบบดิจิตอลและแอนะล็อก และยังต่อเพื่อขับอุปกรณ์เอาต์พุตให้ทำงาน โดยที่เราจะต้องเขียนโปรแกรมเพื่อสั่งงานให้บอร์ด NodeMCU/ESP8266 สามารถควบคุมอุปกรณ์ต่างๆ เช่น ควบคุมการเปิดปิดหลอดไฟ, ปลั๊กไฟฟ้า หรือเครื่องรดน้ำต้นไม้ เป็นต้น และเนื่องจากมีโมดูล WiFi ในตัว จึงสามารถเชื่อมต่อเพื่อส่งข้อมูลหรือสั่งงานผ่านทางอินเทอร์เน็ตได้โดยไม่ต้องหาซื้ออุปกรณ์มาต่อเพิ่ม นอกจากนั้นยังมีราคาถูก ซึ่งจะช่วยลดต้นทุนลงเป็นอย่างมากหากต้องการนำบอร์ดไปใช้ในการพัฒนาอุปกรณ์ Internet of Things (IoT) โดยในการทดลองนี้เป็นการเริ่มต้นติดตั้ง Arduino IDE และทดสอบ NodeMCU/ESP8266 เบื้องต้นว่าสามารถทำงานร่วมกับคอมพิวเตอร์ได้อย่างไร

ขั้นตอนการปฏิบัติ

1.ดาวน์โหลด Arduino IDE โดยไปที่ https://www.arduino.cc และไปที่ click ที่ Download

2.เลือกระบบปฎิบัติการของเครื่องคอมพิวเตอร์ที่ใช้ในการเขียนโปรแกรม Arduino

3.กด JUST DOWNLOAD (หากต้องการร่วมบริจาคช่วยการพัฒนา Arduino Software สามารถกด CONTRIBUTE & DOWNLOAD)

4.บันทึกไฟล์ติดตั้งโปรแกรมไปยังโฟลเดอร์ที่ต้องการ

5.Unzip ไฟล์ติดตั้ง

6.ดับเบิ้ลคลิกที่ไฟล์ arduino.exe

7.หน้าต่างโปรแกรม Arduino จะปรากฏขึ้นดังรูป

8.สร้าง Shortcut บน Desktop เพื่อความสะดวกในการเปิดโปรแกรมในครั้งต่อๆไป

9.จะปรากฏไอคอนของโปรแกรม Arduino บน Desktop ดังแสดงในรูป

10.ในหน้าต่างโปรแกรม Arduino IDE คลิกไปที่เมนู File -> Preferences เพื่อติดตั้งบอร์ด NodeMCU/ESP8266 แบบออนไลน์

11.เพิ่ม http://arduino.esp8266.com/stable/package_esp8266com_index.json ลงในช่อง Additional Boards Manager URLs ดังภาพ

12.คลิกไปที่เมนู Tools -> Board -> Board Manager

13.พิมพ์คำว่า ESP8266 ลงในช่อง และเริ่มต้นติดตั้งดังภาพ

14.เสียบบอร์ด NodeMCU/ESP8266 เข้ากับคอมพิวเตอร์ จากนั้นไปที่ Device Manager (หากเป็น Window ให้คลิกขวาที่ไอคอน บน Toolbars) เพื่อตรวจสอบว่าคอมพิวเตอร์ตรวจพบ NodeMCU/ESP8266 หรือไม่

15.ใน Device Manager คลิกที่ Ports หากปรากฏดังภาพ หมายความว่า NodeMCU/ESP8266 ติดต่อและพร้อมใช้งานกับคอมพิวเตอร์แล้ว

16.แต่ถ้าหากไม่พบบอร์ดใน Ports ให้ไปดาวน์โหลด Driver มาติดตั้งด้วยตนเองจาก https://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx

17.เปิด Arduino ide ขึ้นมาอีกครั้ง และไปที่เมนู Tools เพื่อตั้งให้บอร์ดและหมายเลขพอร์ตตรงกับที่พบในขั้นตอนที่ 15 ซึ่งจากตัวอย่างในภาพคือพอร์ต COM8

18.ทดสอบด้วยการเขียนโค้ดให้หลอดไฟ LED บนบอร์ดกระพริบ โดยท่านสามารถคัดลอกโค้ดทั้งหมดข้างล่างไปวางทับลงในหน้าโปรแกรม

#define D0 16 #define LED D0 void setup() {   pinMode(LED,OUTPUT); } void loop() {   digitalWrite(LED,HIGH);   delay(250);   digitalWrite(LED,LOW);   delay(250); } 

19.คอมไพล์ (Compile) โดยคลิกที่ปุ่ม เพื่อตรวจสอบว่าโค้ดที่เขียนไม่มีข้อผิดพลาด

20.หากไม่มีข้อผิดพลาด จะปรากฎข้อความว่า “Done compiling” ดังภาพ

21.จากนั้นให้ทำการคลิกที่ปุ่ม  เพื่อทำการอัพโหลดโค้ดเข้าสู่บอร์ด NodeMCU/ESP8266

22.หากไม่มีข้อผิดพลาด จะขึ้นคำว่า “Done uploading” ดังภาพ และไฟบนบอร์ดจะกระพริบทุกๆ 250 ms (2 ครั้งต่อวินาที)

สรุปผล

ในการทดลองนี้เราทำการติดตั้งโปรแกรม Arduino IDE เพื่อใช้เป็นเครื่องมือในการเขียนโปรแกรมควบคุมบอร์ด NodeMCU/ESP8266 และทำการเขียนโปรแกรมให้หลอดไฟกระพริบ เพื่อตรวจสอบดูว่าบอร์ดพร้อมใช้งานรับคำสั่งจากโปรแกรมของเราหรือไม่

รายละเอียดd>internet_of_thing(IOT) > Lab 5 การขับโหลดกระแสไฟฟ้าสูงด้วย Relay


 

Lab 5

การขับโหลดกระแสไฟฟ้าสูงด้วย Relay


VDO Link : https://www.youtube.com/watch?v=q7YnsLM-y5c


ระดับความยากง่าย

● ปานกลาง


ประมาณเวลาที่ใช้เรียนรู้ + ลงมือปฏิบัติตาม

● 45 นาที


Prerequisite ต้องผ่านหัวข้อหรือใบงานกิจกรรมใดมาก่อน

● Module NETPIE on NodeMCU/ESP8266 Lab 1 การติดตั้ง Arduino IDE และทดสอบการทำงานเบื้องต้นของ NodeMCU/ESP8266 (https://netpie.gitbooks.io/nodemcu-esp8266-on-netpie/content/chapter1.html)

● Module NETPIE on NodeMCU/ESP8266 Lab 2 การติดต่อ Digital Output (https://netpie.gitbooks.io/nodemcu-esp8266-on-netpie/content/lab-2.html)


วัตถุประสงค์

  1. เพื่อให้เข้าใจการใช้งานและสามารถประยุกต์ใช้งาน Digital Output ได้
  2. เพื่อให้เข้าใจการใช้งานของรีเลย์ (Relay) เพื่อใช้ในการเปิด-ปิดอุปกรณ์ไฟฟ้า

อุปกรณ์ที่ใช้ในการทดลอง

1.บอร์ด NodeMCU ESP8266 (ESP-12E)

2.Relay Module

3.หลอดไฟพร้อมขั้วหลอดที่สามารถขันสายไฟด้วยน็อตได้

4.สายไฟพร้อมปลั๊กไฟ สามารถหาซื้อได้ที่ร้านอุปกรณ์ไฟฟ้าทั่วไป

5.ไขควง

6.Breadboard

7.สายไฟเชื่อมต่อ (Male to Female)

เนื้อหาเชิงทฤษฎี

การทดลองนี้คือการต่อ Digital Output ของบอร์ด NodeMCU/ESP8266 เข้ากับอุปกรณ์เอาต์พุตเพื่อขับให้ทำงาน โดยในที่นี้เราจะใช้รีเลย์โมดูล (Relay Module) เป็นอุปกรณ์เอาต์พุตเพื่อไปขับอุปกรณ์โหลดสูงอื่นๆ (220 V) อีกทอด เช่น หลอดไฟในบ้าน ดังแสดงในภาพ เป็นต้น

Relay Module

หลักการทำงานวงจรของ Relay module คือการเปิดปิดวงจรด้วยแม่เหล็กไฟฟ้า เมื่อขดลวดเหนี่ยวนำมีกระแสไหลผ่าน จะมีคุณสมบัติเป็นแม่เหล็ก สามารถส่งแรงผลักหรือดูดเพื่อเปลี่ยนตำแหน่งสวิตช์ได้ ดังนั้นใน Relay Module จะประกอบด้วยสองวงจรดังตัวอย่างในรูปข้างล่าง วงจรทางด้านซ้ายเป็นวงจรเพื่อเหนี่ยวนำขดลวดซึ่งจะต่ออยู่กับบอร์ดควบคุม วงจรด้านขวาเป็นวงจรของอุปกรณ์ที่เราต้องการขับ (ในรูปคือหลอดไฟ) โดยมีสวิตช์เปิดปิดวงจรตามแรงดูดของขดลวด หน้าสัมผัสของสวิตช์มี 2 ชนิดคือ

  1. หน้าสัมผัสปกติเปิดหรือ NO (Normally Open) หมายถึงหน้าสัมผัสที่เปิดในภาวะขดลวดไม่เหนี่ยวนำ
  2. หน้าสัมผัสปกติปิดหรือ NC (Normally Closed) หมายถึงหน้าสัมผัสที่ปิดในภาวะขดลวดไม่เหนี่ยวนำ

โดยทั่วไปแล้วหน้าสัมผัส NO คือฝั่งที่ทำให้กระแสครบวงจรในฝั่งอุปกรณ์ ดังแสดงในรูปตัวอย่าง นั่นหมายถึงจะต้องมีการจ่ายไฟให้ขดลวดในวงจรด้านซ้าย เพื่อดูดสวิตช์ในวงจรฝั่งขวามาที่หน้าสัมผัส NO วงจรจึงจะปิด และหลอดไฟจะติด การเปิดปิดกระแสผ่านขดลวดในวงจรฝั่งซ้าย กระทำผ่านการควบคุมไฟเลี้ยงทรานซิสเตอร์ เมื่อทำให้เกิดการจ่ายไฟเลี้ยง (VCC) ทรานซิสเตอร์ จะนำกระแส ทำให้วงจรด้านขดลวดปิด และขดลวดจะทำหน้าที่เป็นแม่เหล็ก ซึ่งบอร์ด Arduino จะสามารถเข้ามาควบคุม Relay ได้ที่จุด ln1 กล่าวคือถ้าส่งลอจิก High จะไม่มีการจ่ายไฟเลี้ยง เนื่องจากไม่มีความต่างศักย์ ในทางกลับกัน หากส่งลอจิก Low จะทำให้วงจรปิด และสวิตช์จะเปลี่ยนทิศทาง ดังนั้นวงจร Relay ลักษณะนี้จึงเป็นแบบ Active Low

ขั้นตอนการทดลอง

1.ต่อวงจรรีเลย์โมดูลเข้ากับบอร์ด NodeMCU/ESP8266 และหลอดไฟกระแสสลับตามภาพ

2.เปิดโปรแกรม Arduino IDE แล้วไปที่ File -> New File

3.เขียนโค้ดลงไปในโปรแกรมดังนี้

#define D0 16 #define LED D0 void setup()  {   pinMode(LED,OUTPUT); // setup output }  void loop()  {   digitalWrite(LED,HIGH); // Pin D0 is HIGH   delay(250);   digitalWrite(LED,LOW); // Pin D0 is LOW   delay(250); } 

คำอธิบายโปรแกรม

การกำหนด #define เป็นกำหนดให้ขา 16 ของ ESP8266 เป็นขา D0 บน NodeMCU และกำหนดให้ขา D0 ของ NodeMCU ต่อกับ LED ที่อยู่บนบอร์ด จึงเรียก LED แทนขา D0

ในส่วนฟังก์ชั่น setup() นั้นกำหนดให้ขา LED เป็นโหมด Digital Output

ส่วนภายในฟังก์ชั่น loop() เริ่มจากสั่งเขียนค่าลอจิก HIGH (5 V) ไปยัง ขา LED จากนั้นประวิงเวลา 250 ms แล้วสั่งให้เขียนค่าลอจิก LOW (0 V) ไปที่ขา LED และประวิงเวลาอีก 250 ms จากนั้นกลับไปยังคำสั่งแรกในฟังก์ชั่น วนลูปซ้ำเช่นนี้ไปเรื่อยๆ

หมายเหตุ หากการกระพริบของหลอดไฟถี่จนเกินไป ทำให้สังเกตผลได้ไม่ชัดเจน สามารถปรับเพิ่มค่าเวลาประวิงได้ตามความเหมาะสม

4.คลิกปุ่ม  เพื่อคอมไพล์โค้ด แล้วทำการบันทึกไฟล์เป็น “Relay” ไว้บน Desktop (ดังภาพตัวอย่างด้านล่าง เมื่อคอมไพล์เสร็จสิ้นและไม่มีข้อผิดพลาด ทำการอัพโหลดโดยคลิกปุ่ม 

5.จากนั้นสังเกตผลลัพธ์ จะเห็นว่าหลอดไฟกระแสสลับมีการกระพริบติดและดับพร้อมๆ กับหลอด LED ที่อยู่บนบอร์ด NodeMCU/ESP8266

สรุปผล

ในการทดลองนี้ เราทดลองการใช้งาน Digital Output ของบอร์ด NodeMCU/ESP8266 ในการขับอุปกรณ์โหลดสูงผ่านโมดูล Relay โดยผู้ศึกษาจำเป็นต้องรู้ว่าวงจรที่นำไปขับทำงานแบบใด Active Low หรือ Active High เพื่อที่เราจะสามารถเขียนโปรแกรมได้อย่างถูกต้อง

แบบฝึกหัดทดสอบความเข้าใจ

  1. หากต้องการให้บอร์ด NodeMCU/ESP8266 ไปใช้ควบคุมการเปิดปิดหลอดไฟ 220 VAC จำเป็นต้องใช้อะไรเป็นอุปกรณ์เสริม
  2. ถ้าหาก Relay module ที่ต่ออยู่ที่ขา D1 จะทำงานก็ต่อเมื่อได้รับลอจิก ‘0’ ต้องคำสั่งที่ทำให้หลอดไฟติด

เฉลย-แบบฝึกหัดทดสอบความเข้าใจ

  1. Relay module รีเลย์โมดูล
  2. digitalWrite(D1,LOW);
  3.  

รายละเอียดd>internet_of_thing(IOT) > การเรียกใช้เวลามาตรฐาน NTP


 WiFi‎ > ‎

การเรียกใช้เวลามาตรฐาน NTP



การดึงค่าเวลามาตรฐานสากลจากอินเตอร์เน็ต จะดึงจาก Server ที่ให้บริการโพรโทคอล NTP โดย NTP Server มีอยู่ด้วยกันหลายที่  

คำว่า "NTP” จาก https://www.thaicert.or.th/papers/technical/2014/pa2014te002.html  ได้อธิบายความหมายของ ว่า  NTP หรือที่ย่อมาจากคำว่า Network Time Protocol เป็นโพรโทคอลสำหรับการเทียบเวลามาตรฐานและตั้งค่าเวลาบนเครื่องคอมพิวเตอร์นั้นๆผ่านระบบเครือข่าย ส่วนใหญ่ถูกนำมาใช้ในองค์กรเพื่อช่วยทำให้เวลาในเครื่องคอมพิวเตอร์หรือเครื่องแม่ข่ายนั้นมีค่าตรงกัน โดยรูปแบบการทำงานนั้นแบ่งเป็น ส่วนหลักๆคืออุปกรณ์ที่ให้บริการเทียบเวลา (NTP Server) กับเครื่องคอมพิวเตอร์หรืออุปกรณ์ที่ต้องการเทียบเวลา (NTP Client)  โดยโพรโทคอล NTP นั้นเชื่อมต่อผ่านทางระบบเครือข่ายด้วยโพรโทคอล UDP ผ่านพอร์ต 123 (โพรโทคอล UDP มีความรวดเร็วในการรับส่งข้อมูลแต่ก็มีข้อเสียตรงที่โพรโทคอล UDP ไม่มีการตรวจสอบความถูกต้องของข้อมูลที่รับส่งกันอยู่เหมือน TCP)”

วัตถุประสงค์

ใช้ ESP8266 NodeMCU สร้าง Station  เพื่อดึงค่าเวลามาตรฐานจาก  NTP Server  แล้วแสดงผลทาง Serial monitor   

 

อุปกรณ์

  1. ESP8266 NodeMCU
  2. บอร์ดทดลอง (Breadboard)

ตัวอย่างโปรแกรม  ใช้ไลบรารี Time.h  และใช้ ฟังก์ชั่นมาตรฐาน localtime() or gmtime() and the struct tm. เพื่อดึงค่าเป็น วัน-เดือน-ปี ชม- นาที และ วินาที  ค่าที่ดึงได้นี้จะเป็นตัวเลข  ใช้การแปลงจากตัวเลขวัน ตัวเลขเดือน  ให้เป็นชื่อเดือน  ชื่อวัน  ส่วนปี ค.ศ. เปลี่ยนเป็นปี พ.ศ.


โปรแกรม time_ntp3.ino

 

#include <ESP8266WiFi.h>

#include <Time.h>

 

const char* ssid = "TOT";  //  your network SSID (name)

const char* password = "0815610067";       // your network password

const String month_name[12] = {"Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"};

const String day_name[7] = {"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};

 

int timezone = 7 * 3600; //ตั้งค่า TimeZone ตามเวลาประเทศไทย

int dst = 0; //กำหนดค่า Date Swing Time

 

void setup()

{

  Serial.begin(115200);

  Serial.setDebugOutput(true);

 

  WiFi.mode(WIFI_STA); //เชื่อมต่อ Wifi

  WiFi.begin(ssid, password);

  Serial.println(" Connecting to WiFi");

  while (WiFi.status() != WL_CONNECTED)

  {

  Serial.print("*");

  delay(1000);

  }

  configTime(timezone, dst, "pool.ntp.org", "time.nist.gov"); //ดึงเวลาจาก Server

  Serial.println(" Loading time");

  while (!time(nullptr)) {

     Serial.print("*");

    delay(1000);

  }

  Serial.println("");

}

 

void loop()

{

   //แสดงเวลาปัจจุบัน

   time_t now = time(nullptr);

   struct tm* p_tm = localtime(&now);

   Serial.print(p_tm->tm_hour);

   Serial.print(":");

   Serial.print(p_tm->tm_min);

   Serial.print(":");

   Serial.print(p_tm->tm_sec);

 

   Serial.print(" / ");

   Serial.print(day_name[(p_tm->tm_wday)]);

   Serial.print("/");

   Serial.print(p_tm->tm_mday);

   Serial.print(" / ");

   Serial.print(month_name[(p_tm->tm_mon)]);

   Serial.print(" / ");

   Serial.print(p_tm->tm_year + 2443);

   Serial.println("");

 

   delay(1000);

}


ความหมาย

1.         configTime  จาก https://github.com/esp8266/Arduino/blob/9913e5210779d2f3c4197760d6813270dbba6232/cores/esp8266/time.c#L58    มีรายละเอียดดังนี้

 

void configTime(int timezone, int daylightOffset_sec, const char* server1, const char* server2, const char* server3)

{

    sntp_stop();

     

    setServer(0, server1);

    setServer(1, server2);

    setServer(2, server3);

     

    sntp_set_timezone(timezone/3600);

    sntp_set_daylight(daylightOffset_sec);

    sntp_init();

}

 

(1)     timezone  ของกรุงเทพเป็น GMT+7  จึงเท่ากับ 7 * 3600

int timezone = 7 * 3600;
ถ้าเป็น San Francisco TimeZone เป็น GMT-7
int timezone = -7 * 3600;

(2)     ค่า 

(3)     server สามารถกำหนด Server ได้ตั้งแต่ 1 ถึง 3 ที่  เช่นถ้าต้องการใช้ NTP Server ของไทยที่มีอยู่หลายแห่งเช่น

Name:    ntp.ku.ac.th

Address:  158.108.212.149

Name:    itoml.live.rmutt.ac.th

Address:  203.158.111.32

Name:    time1.nimt.or.th

Address:  203.185.69.60

Name:    fw.eng.ku.ac.th

Address:  158.108.32.17

Name:    delta.cpe.ku.ac.th

Address:  158.108.32.3

Name:    time2.nimt.or.th

Address:  203.185.69.59

Name:    ilm.live.rmutt.ac.th

Address:  203.158.118.3

Name:   time.navy.mi.th 

Address: 118.175.67.83

Name:    time3.nimt.or.th

Address:  203.185.69.56

Name:    time.uni.net.th

Address:  202.28.18.72

Name:    clock.nectec.or.th

Address:  202.44.204.114

 

 ตัวอย่าง  configTime(timezone, dst,  "time.navy.mi.th");

 2.         โครงสร้างของตัวแปร tm มีดังนี้ 

struct tm {

   int tm_sec;       // วินาที,  มีค่าตั้งแต่ 0 ถึง 59

   int tm_min;      // นาทีมีค่าตั้งแต่ 0 ถึง 59

   int tm_hour;     // ชั่วโมงมีค่าตั้งแต่ 0 ถึง 23

   int tm_mday;   // วันที่มีค่าตั้งแต่ 1 ถึง 31

   int tm_mon;     // เดือนมีค่าตั้งแต่ 0 ถึง 11

   int tm_year;      // ปีคริสศักราช ตั้งแต่ 1900

   int tm_wday;    // วันมีค่าตั้งแต่ 0 ถึง 6 

   int tm_yday;     // วันใน 1 ปีมีค่าตั้งแต่ 0 ถึง 365

   int tm_isdst;     // daylight saving time  

};

        วิธีการเรียกใช้ดูจากตัวอย่างในโปรแกรม

 

 

 การทดสอบ

1.         เมื่อแปลและ Upload ลงไปบน ESP8266 NodeMCU    ให้เปิด Serial Monitor   (อย่าลืมใช้ Baud Rate 115200)  ผลลัพธ์ควรได้ทำนองนี้




 
 
 
Comments