![](/media/cache/profiles/b4fcae87a46c0afe6dd16d9cff8a209a.jpg.50x50_q85.jpg)
first
Dependencies: SHTx SNTPClient WIZnetInterface mbed
https://developer.mbed.org/users/nanjsk/code/SHT15_WIZwiki-W7500/
지난 글에는 그냥 SHT15의 값만 프린트 해주는 예제를 작성했었다. 이번에는 NTP를 이용하여 네트웍에서 시간정보를 읽어와서 현재의 시간과 온/습도 값을 표시해 보자.
우선 NTP 라이브러리가 mbed에 있는지 확인해 보았다.
NTP로 검색을 해보니 4개가 나왔는데, 과거에 WIZnet에서 근무했던 Raphael 님이 만든 라이브러리가 있어서 이것을 Import해서 사용했다.
코드 적용에는 큰 어려움이 없었고, DHCP 사용해서 공유기에서 IP를 할당 받아서 구현을 했다. 자세한 내용은 코드를 참고해 보길 바란다.
5초에 한번씩 현재의 시간과 온/습도 값을 읽어서 시리얼로 출력해주는 코드이다.
위 사진을 보면 현재의 시간과 온/습도 값을 출력하는 코드를 볼수 있다.
mbed에서 작성한 코드는 아래 URL에서 확인 할수 있다.
이상.
Revision 0:73a312631ec9, committed 2015-08-26
- Comitter:
- nanjsk
- Date:
- Wed Aug 26 23:21:42 2015 +0000
- Commit message:
- This code is an example of the SHT-15 & SNTP using WIZwiki-W7500.
Changed in this revision
diff -r 000000000000 -r 73a312631ec9 SHTx.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SHTx.lib Wed Aug 26 23:21:42 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/NegativeBlack/code/SHTx/#8465801be23f
diff -r 000000000000 -r 73a312631ec9 SNTPClient.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/SNTPClient.lib Wed Aug 26 23:21:42 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/users/xeon011/code/SNTPClient/#137fc24033c4
diff -r 000000000000 -r 73a312631ec9 WIZnetInterface.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/WIZnetInterface.lib Wed Aug 26 23:21:42 2015 +0000 @@ -0,0 +1,1 @@ +http://developer.mbed.org/teams/WIZnet/code/WIZnetInterface/#3b64df29662f
diff -r 000000000000 -r 73a312631ec9 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Aug 26 23:21:42 2015 +0000 @@ -0,0 +1,81 @@ +#include "mbed.h" +#include "EthernetInterface.h" +#include "SNTPClient.h" +#include "SHTx/sht15.hpp" + +uint8_t mac_addr[6] = {0x00, 0x08, 0xDC, 0x11, 0x22, 0xab}; + +Serial pc(USBTX,USBRX); +EthernetInterface eth; +datetime ntptime; +DigitalOut busy(LED1); +SHTx::SHT15 sensor(D2, D3); + +struct tm timeinfo; + +int main() +{ + pc.baud(115200); + wait(0.5f); + pc.printf("Hello WIZwiki-W7500!\n\r"); + pc.printf("===========================================\n\r"); + + + eth.init(mac_addr); //Use DHCP + printf("Check Ethernet Link\r\n"); + while(1) //Wait link up + { + if(eth.link() == true) + break; + } + + printf("Link up\r\n"); + printf("Getting IP address by DHCP...\r\n"); + eth.connect(); + printf("Server IP Address is %s\r\n", eth.getIPAddress()); + + printf("Getting time information by using NTP...\r\n"); + + SNTPClient sntp("time.nist.gov", 40); // timezone: Korea, Republic of + sntp.connect(); + if(sntp.getTime(&ntptime) == true) + { + printf("%d-%d-%d, %02d:%02d:%02d\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss); + printf("Completed Get and Set Time\r\n\r\n"); + } + else + { + while(sntp.getTime(&ntptime) == true) + { + break; + } + } + + sensor.setOTPReload(false); + sensor.setResolution(true); + while(1) + { + busy = true; + sensor.update(); + busy = false; + + sntp.getTime(&ntptime); + printf("< The current time : %d-%d-%d, %02d:%02d:%02d >\r\n", ntptime.yy, ntptime.mo, ntptime.dd, ntptime.hh, ntptime.mm, ntptime.ss); + + // Temperature in celcius + sensor.setScale(false); + pc.printf("Temperature [ %3.2f C ]\r\n", sensor.getTemperature()); + + // Temperature in fahrenheit + sensor.setScale(true); + pc.printf(" [ %3.2f F ]\r\n", sensor.getTemperature()); + + // Relative Humidity + pc.printf("Humdity [ %3.2f %% ]\r\n", sensor.getHumidity()); + + pc.printf("===========================================\n\r"); + wait(5); + + } + +}
diff -r 000000000000 -r 73a312631ec9 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Wed Aug 26 23:21:42 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/8ed44a420e5c \ No newline at end of file