반응형
전에 ESP8266을 이용해서 인터넷으로부터 현재 시간을 받는 코드를 소개한 적이 있다. (http://diy-project.tistory.com/6)
전혀 문제가 없는 코드이지만 가끔씩 서버와 연결이 끊어지고 속도도 맘에 들지 않는다. 그래서 새로운 방법을 찾던 중 괜찮은 방법을 찾았다.
(https://github.com/scanlime/esp8266-Arduino/blob/master/tests/Time/Time.ino)
코드도 훨씬 간단하다. 다만 delay(1000); 동안 다른 작업을 못하기에 mills()를 이용해 코드를 약간 수정했다. 아래는 해당 코드이다.
반응형
#include <ESP8266WiFi.h>
#include <time.h>
const char* ssid = "*****";
const char* password = "*****";
int timezone = 3;
int dst = 0;
unsigned long previousMillis = 0;
const long interval = 1000;
void setup() {
Serial.begin(115200);
Serial.setDebugOutput(true);
WiFi.mode(WIFI_STA);
WiFi.begin(ssid, password);
Serial.println("\nConnecting to WiFi");
while (WiFi.status() != WL_CONNECTED) {
Serial.print(".");
delay(1000);
}
configTime(3 * 3600, 0, "pool.ntp.org", "time.nist.gov");
Serial.println("\nWaiting for time");
while (!time(nullptr)) {
Serial.print(".");
delay(1000);
}
Serial.println("");
}
void loop() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
time_t now = time(nullptr);
Serial.println(ctime(&now));
}
}
이 코드를 ESP8266을 이용하는 wemos d1, nodemcu등에 업로드 한 뒤 시리얼 모니터를 열면 아래와 같이 현재 시간이 출력된다. (한국 시간으로 변환하려면 코드를 추가해야한다.)
반응형
'아두이노' 카테고리의 다른 글
미디파일을 tone()으로 변환하기 [아두이노] (2) | 2018.02.15 |
---|---|
ESP8266에서 MQTT 사용하기 (0) | 2018.02.05 |
비트코인 시세 모니터 만들기 [아두이노/ESP8266] (2) | 2018.01.28 |
아두이노 I2C 주소 스캔하기 (3) | 2018.01.25 |
아두이노를 버튼으로 제어하기 (0) | 2017.12.29 |