Article

21 พฤษภาคม 2561


การสร้างนาฬิการัฐสภาด้วยงบราคาถูก


           จากข่าวการซื้อนาฬิการัฐสภาที่จะใช้งบประมาณมากมายในช่วงนี้ ทางทีมงานเป็นห่วงบ้านเมืองจึงขอแสดงวิธีที่ประหยัดกว่านั้นแต่มีประสิทธิภาพเท่ากันกับนาฬิการัฐสภาอันแสนแพง ขอแค่มีอินเตอร์เน็ตที่เสถียรเท่านั้น

 

nodemcu 

 

           อุปกรณ์ที่ใช้ในโปรเจคนี้คือ ESP8266 ซึ่งเป็นโมดูล WiFi ทำงานโดยใช้แรงดันไฟฟ้า 3.3 - 3.6V โมดูลนี้มีราคาถูกมากสามารถซื้อมาติดได้ทั่วทั้งรัฐสภาโดยใช้งบประมาณถูกมาก โค้ดโปรแกรมของเราจะเทียบเวลากับเซิฟเวอร์ time.navy.mi.th เป็นของกรมอุทกศาสตร์กองทัพเรือ หรือถ้าท่านอยากจะสร้างเซิฟเวอร์มาเองเพื่อเทียบเวลาก็ได้เช่นกันครับ

 

เขียนโค้ดดังนี้

 

#include<ESP8266WiFi.h>
#include<time.h>

 

/* ตั้งค่า SSID และ Password ของ WiFi เพื่อเชื่อมต่ออินเตอร์เน็ต */

const char* ssid = "ชื่อ SSID";

const char* password = "รหัส WiFi";

 

/* ตั้งค่า TimeZone ตามเวลาประเทศไทย */

int timezone = 7 * 3600;

 

/* กำหนดค่า Date Swing Time */

int dst = 0;

 

void setup() {

 

/* กำหนดค่า Baud Rate เพื่อแสดงผลทางพอร์ตอนุกรม */

  Serial.begin(115200);

  Serial.println();

  Serial.print("Wifi connecting to ");

  Serial.println( ssid );

 

/* เชื่อมต่อ WiFi */

  WiFi.begin(ssid,password);

 

  Serial.println();

 

  Serial.print("Connecting");

 

  while( WiFi.status() != WL_CONNECTED ){

      delay(500);

      Serial.print(".");       

  }

 

  Serial.println("Wifi Connected Success!");

  Serial.print("NodeMCU IP Address : ");

  Serial.println(WiFi.localIP() );

 

/* ดึงเวลาจาก Server */

  configTime(timezone, dst, "pool.ntp.org","clock.nectec.or.th");

  Serial.println(" Waiting for Internet time");

 

  while(!time(nullptr)){

     Serial.print("*");

     delay(1000);

  }

  Serial.println(" Time response....OK");  

}

 

void loop() {

 

  time_t now = time(nullptr);

  struct tm* p_tm = localtime(&now);

 

  Serial.println("Thailand");

 

/* แสดงวันเดือนปี */

  Serial.print("Date ");

  Serial.print(p_tm->tm_mday);

  Serial.print("/");

  Serial.print(p_tm->tm_mon + 1);

  Serial.print("/");

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

 

/* แสดงเวลา */

  Serial.print(" Time ");

  Serial.print(p_tm->tm_hour);

  Serial.print(":");

  Serial.print(p_tm->tm_min);

  Serial.print(":");

  Serial.println(p_tm->tm_sec);

 

/*  อัพเดทเวลาทุก 1000 millisecond หรือ 1 วินาที */

  delay(1000);

}

 

อธิบายโค้ดแต่ละส่วนไว้ใน Comment ของโค้ดแล้วนะครับ หากมีข้อสงสัยสามารถสอบถามได้ครับ

 

ทดลองรันโปรแกรมเพื่อแสดงเวลาทางพอร์ตอนุกรม

Serial Port

 

           จากการรันโปรแกรมจะเห็นว่าโมดูล ESP8266 สามารถแสดงเวลาจากเซิฟเวอร์ได้อย่างถูกต้องแม่นยำทุกวินาที และเรายังสามารถเขียนโปรแกรมให้แสดงผลได้หลายทาง เช่น 7 Segment, LED Dot Matrix , LCD Module

           โมดูล ESP8266 ยังสามารถเชื่อมต่อกับเซ็นเซอร์ต่างๆได้อีกมากมาย เช่น เซ็นเซอร์วัดอุณหภูมิและความชื้น DHT12 , SHT15 และเซ็นเซอร์อื่นๆอีกมากมาย




กรุณา Login ก่อนถึงจะสามารถแสดงความคิดเห็นได้
Please login for comment
ตรวจสอบสถานะการจัดส่งสินค้า