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에서 확인 할수 있다.

이상.

Files at this revision

API Documentation at this revision

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

SHTx.lib Show annotated file Show diff for this revision Revisions of this file
SNTPClient.lib Show annotated file Show diff for this revision Revisions of this file
WIZnetInterface.lib Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
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