first

Dependencies:   SHTx SNTPClient WIZnetInterface mbed

https://developer.mbed.org/users/nanjsk/code/SHT15_WIZwiki-W7500/

지난 글에는 그냥 SHT15의 값만 프린트 해주는 예제를 작성했었다. 이번에는 NTP를 이용하여 네트웍에서 시간정보를 읽어와서 현재의 시간과 온/습도 값을 표시해 보자.

우선 NTP 라이브러리가 mbed에 있는지 확인해 보았다.

/media/uploads/nanjsk/sht15_sntp_1.png

NTP로 검색을 해보니 4개가 나왔는데, 과거에 WIZnet에서 근무했던 Raphael 님이 만든 라이브러리가 있어서 이것을 Import해서 사용했다.

코드 적용에는 큰 어려움이 없었고, DHCP 사용해서 공유기에서 IP를 할당 받아서 구현을 했다. 자세한 내용은 코드를 참고해 보길 바란다.

5초에 한번씩 현재의 시간과 온/습도 값을 읽어서 시리얼로 출력해주는 코드이다.

/media/uploads/nanjsk/sht15_sntp_2.png

위 사진을 보면 현재의 시간과 온/습도 값을 출력하는 코드를 볼수 있다.

mbed에서 작성한 코드는 아래 URL에서 확인 할수 있다.

이상.

Committer:
nanjsk
Date:
Wed Aug 26 23:21:42 2015 +0000
Revision:
0:73a312631ec9
This code is an example of the SHT-15 & SNTP using WIZwiki-W7500.

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nanjsk 0:73a312631ec9 1 #include "mbed.h"
nanjsk 0:73a312631ec9 2 #include "EthernetInterface.h"
nanjsk 0:73a312631ec9 3 #include "SNTPClient.h"
nanjsk 0:73a312631ec9 4 #include "SHTx/sht15.hpp"
nanjsk 0:73a312631ec9 5
nanjsk 0:73a312631ec9 6 uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0xab};
nanjsk 0:73a312631ec9 7
nanjsk 0:73a312631ec9 8 Serial pc(USBTX,USBRX);
nanjsk 0:73a312631ec9 9 EthernetInterface eth;
nanjsk 0:73a312631ec9 10 datetime ntptime;
nanjsk 0:73a312631ec9 11 DigitalOut busy(LED1);
nanjsk 0:73a312631ec9 12 SHTx::SHT15 sensor(D2, D3);
nanjsk 0:73a312631ec9 13
nanjsk 0:73a312631ec9 14 struct tm timeinfo;
nanjsk 0:73a312631ec9 15
nanjsk 0:73a312631ec9 16 int main()
nanjsk 0:73a312631ec9 17 {
nanjsk 0:73a312631ec9 18 pc.baud(115200);
nanjsk 0:73a312631ec9 19 wait(0.5f);
nanjsk 0:73a312631ec9 20 pc.printf("Hello WIZwiki-W7500!\n\r");
nanjsk 0:73a312631ec9 21 pc.printf("===========================================\n\r");
nanjsk 0:73a312631ec9 22
nanjsk 0:73a312631ec9 23
nanjsk 0:73a312631ec9 24 eth.init(mac_addr); //Use DHCP
nanjsk 0:73a312631ec9 25 printf("Check Ethernet Link\r\n");
nanjsk 0:73a312631ec9 26 while(1) //Wait link up
nanjsk 0:73a312631ec9 27 {
nanjsk 0:73a312631ec9 28 if(eth.link() == true)
nanjsk 0:73a312631ec9 29 break;
nanjsk 0:73a312631ec9 30 }
nanjsk 0:73a312631ec9 31
nanjsk 0:73a312631ec9 32 printf("Link up\r\n");
nanjsk 0:73a312631ec9 33 printf("Getting IP address by DHCP...\r\n");
nanjsk 0:73a312631ec9 34 eth.connect();
nanjsk 0:73a312631ec9 35 printf("Server IP Address is %s\r\n", eth.getIPAddress());
nanjsk 0:73a312631ec9 36
nanjsk 0:73a312631ec9 37 printf("Getting time information by using NTP...\r\n");
nanjsk 0:73a312631ec9 38
nanjsk 0:73a312631ec9 39 SNTPClient sntp("time.nist.gov", 40); // timezone: Korea, Republic of
nanjsk 0:73a312631ec9 40 sntp.connect();
nanjsk 0:73a312631ec9 41 if(sntp.getTime(&ntptime) == true)
nanjsk 0:73a312631ec9 42 {
nanjsk 0:73a312631ec9 43 printf("%d-%d-%d, %02d:%02d:%02d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss);
nanjsk 0:73a312631ec9 44 printf("Completed Get and Set Time\r\n\r\n");
nanjsk 0:73a312631ec9 45 }
nanjsk 0:73a312631ec9 46 else
nanjsk 0:73a312631ec9 47 {
nanjsk 0:73a312631ec9 48 while(sntp.getTime(&ntptime) == true)
nanjsk 0:73a312631ec9 49 {
nanjsk 0:73a312631ec9 50 break;
nanjsk 0:73a312631ec9 51 }
nanjsk 0:73a312631ec9 52 }
nanjsk 0:73a312631ec9 53
nanjsk 0:73a312631ec9 54 sensor.setOTPReload(false);
nanjsk 0:73a312631ec9 55 sensor.setResolution(true);
nanjsk 0:73a312631ec9 56 while(1)
nanjsk 0:73a312631ec9 57 {
nanjsk 0:73a312631ec9 58 busy = true;
nanjsk 0:73a312631ec9 59 sensor.update();
nanjsk 0:73a312631ec9 60 busy = false;
nanjsk 0:73a312631ec9 61
nanjsk 0:73a312631ec9 62 sntp.getTime(&ntptime);
nanjsk 0:73a312631ec9 63 printf("< The current time : %d-%d-%d, %02d:%02d:%02d >\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss);
nanjsk 0:73a312631ec9 64
nanjsk 0:73a312631ec9 65 // Temperature in celcius
nanjsk 0:73a312631ec9 66 sensor.setScale(false);
nanjsk 0:73a312631ec9 67 pc.printf("Temperature [ %3.2f C ]\r\n", sensor.getTemperature());
nanjsk 0:73a312631ec9 68
nanjsk 0:73a312631ec9 69 // Temperature in fahrenheit
nanjsk 0:73a312631ec9 70 sensor.setScale(true);
nanjsk 0:73a312631ec9 71 pc.printf(" [ %3.2f F ]\r\n", sensor.getTemperature());
nanjsk 0:73a312631ec9 72
nanjsk 0:73a312631ec9 73 // Relative Humidity
nanjsk 0:73a312631ec9 74 pc.printf("Humdity [ %3.2f %% ]\r\n", sensor.getHumidity());
nanjsk 0:73a312631ec9 75
nanjsk 0:73a312631ec9 76 pc.printf("===========================================\n\r");
nanjsk 0:73a312631ec9 77 wait(5);
nanjsk 0:73a312631ec9 78
nanjsk 0:73a312631ec9 79 }
nanjsk 0:73a312631ec9 80
nanjsk 0:73a312631ec9 81 }