Arduino에서 NTP 획득 (ESP-WROOM-02 사용)
2687 단어 ntpArduinoESP-WROOM-02
덧붙여서 ESP-WROOM-02는 단독으로 Arduino로 사용할 수 있으며,
라이브러리를 통해 NTP에서 직접 시간을 얻을 수 있습니다.
ESP8266의 ntp 설정은 한 줄로
회로 구성
아래의 기사를 참고로 회로를 조립합니다.
Arduino Leonardo에서 시도했지만 본체의 3.3V로 구동 할 수있었습니다.
그러나 Software Serial이 작동하지 않았기 때문에 10, 9 번 핀으로 변경했습니다.
【Arduino】 ESP-WROOM-02 ( ESP8266 )를 사용하여 Wifi로 무선 통신
샘플 프로그램 개요
샘플 프로그램
NTP.ino#include <TESP8266.h> //ESP-WROOM-02ライブラリ
#include <TimeLib.h>
#include <ArduinoJson.h>
// Wifi Config
const char* host = "ntp-a1.nict.go.jp";
const char* path = "/cgi-bin/json";
// Wifi
const char* ssid = "YOUR SSID";
const char* password = "YOUR WIFI PASSWORD";
TESP8266 httpClient(10, 9);
void setup() {
Serial.begin(9600);
// ESP-WROOM-02との接続確認(ATコマンドのテスト)
while (true) {
if (httpClient.statusAT(true)) {
Serial.println("*** ESP-WROOM-02と接続しました。");
break;
}
else Serial.println("*** ESP-WROOM-02と接続できません。");
delay(1000);
}
// アクセスポイントに接続(DHCP)
while (true) {
if (httpClient.connectAP(ssid, password)) {
Serial.println("*** アクセスポイントに接続しました。");
break;
}
else Serial.println("*** アクセスポイントに接続できませんでした。 再試行中...");
delay(1000);
}
// Wifi接続の確認
while (true) {
if (httpClient.statusWiFi()) {
Serial.println("*** Wifi接続しました。");
break;
}
else Serial.println("*** Wifi接続できません。");
delay(1000);
}
ntp(); //本体へ登録
}
void loop() {
time_t t = now();
char s[20];
const char* format = "%04d-%02d-%02d %02d:%02d:%02d";
sprintf(s, format, year(t), month(t), day(t), hour(t), minute(t), second(t));
Serial.println(s);
delay(1000);
}
void ntp() {
StaticJsonBuffer<200> jsonBuffer;
uint32_t filesize = 0;
String resultString = httpClient.get(host, path, filesize);
JsonObject& root = jsonBuffer.parseObject(resultString);
String ntp = root["st"];
long unsigned int nt = ntp.toInt();
setTime(nt);
}
동작 샘플
Reference
이 문제에 관하여(Arduino에서 NTP 획득 (ESP-WROOM-02 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ys-0-sy/items/046843b8e682c1541b5a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
#include <TESP8266.h> //ESP-WROOM-02ライブラリ
#include <TimeLib.h>
#include <ArduinoJson.h>
// Wifi Config
const char* host = "ntp-a1.nict.go.jp";
const char* path = "/cgi-bin/json";
// Wifi
const char* ssid = "YOUR SSID";
const char* password = "YOUR WIFI PASSWORD";
TESP8266 httpClient(10, 9);
void setup() {
Serial.begin(9600);
// ESP-WROOM-02との接続確認(ATコマンドのテスト)
while (true) {
if (httpClient.statusAT(true)) {
Serial.println("*** ESP-WROOM-02と接続しました。");
break;
}
else Serial.println("*** ESP-WROOM-02と接続できません。");
delay(1000);
}
// アクセスポイントに接続(DHCP)
while (true) {
if (httpClient.connectAP(ssid, password)) {
Serial.println("*** アクセスポイントに接続しました。");
break;
}
else Serial.println("*** アクセスポイントに接続できませんでした。 再試行中...");
delay(1000);
}
// Wifi接続の確認
while (true) {
if (httpClient.statusWiFi()) {
Serial.println("*** Wifi接続しました。");
break;
}
else Serial.println("*** Wifi接続できません。");
delay(1000);
}
ntp(); //本体へ登録
}
void loop() {
time_t t = now();
char s[20];
const char* format = "%04d-%02d-%02d %02d:%02d:%02d";
sprintf(s, format, year(t), month(t), day(t), hour(t), minute(t), second(t));
Serial.println(s);
delay(1000);
}
void ntp() {
StaticJsonBuffer<200> jsonBuffer;
uint32_t filesize = 0;
String resultString = httpClient.get(host, path, filesize);
JsonObject& root = jsonBuffer.parseObject(resultString);
String ntp = root["st"];
long unsigned int nt = ntp.toInt();
setTime(nt);
}
Reference
이 문제에 관하여(Arduino에서 NTP 획득 (ESP-WROOM-02 사용)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ys-0-sy/items/046843b8e682c1541b5a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)