網頁

Blynk雲端平台的RTC工具-讓開發板線上更新實時時間



在Blynk雲端平台中,Real-time clock(RTC)能夠從伺服器中獲取當前的時間,因此不需要在硬體上外接時鐘模組(例如DS1302之類的)來進行時間的運算,同時這個工具也能夠設定你指定的時區去同步時間。

這個工具的設定不需要任何虛擬引腳(Virtual Pin),只需要指定你所需要的時區(timezone)即可。接著燒錄官方提供的程式碼到硬體端,當硬體啟動時會自動抓取伺服器上的時間。這個工具的特色是只要有新增在APP中,並運行過一次(APP端離線也沒關係),Blynk的伺服器就會記住你設定的時區,並告訴你的硬體目前的時間。要注意的是如果移除RTC工具,Blynk的伺服器就不會提供RTC的時間給硬體,這時硬體就會從1970年1月1日開始計算,請參考UNIX時間


接著我們在APP中在新增一個LCD工具,並在SIMPLE模式中設定[0]為V1;[1]為V2,這個是範例程式碼中,會發送時間與日期的虛擬引腳。

// Send time to the App 
Blynk.virtualWrite(V1, currentTime); 
// Send date to the App 
Blynk.virtualWrite(V2, currentDate); 



如此一來運行後就可以看到即時的時間在LCD工具上面了。


同時我們也可以打開序列視窗,可以看到時間也同時發送在上面。


這個工具可以讓我們簡單的做一個實體的RTC時鐘。然而這個程式是不是僅止於RESET時讀取RTC時間我不得而知。因此我必須要在程式碼的初始階段(void setup)的rtc.begin();程式碼後加入一個setSyncInterval(Second)的程式碼(參考這篇文章),這個程式碼可以讓硬體定時的上線去更新時間,可以在Second中指定更新的間隔,如此一來才能達到及時同步的效果。當同步時完成序列會跟著顯示[142079] Time sync: OK的提示。

之後有一個小目標是能做一個時鐘,同時顯示溫溼度與PM2.5和當前時間,放在床邊做一個雲端居家監控系統與時鐘(還可以做鬧鐘喔)。

最後建議在程式的timer.setInterval(10000, clockDisplay);其數值不要設定的太小,不然似乎會出現斷線的現象(這一點尚待驗證就是)。