機器人如何知道時間?

機器人是怎麼知道時間的呢?像我們一樣看錶?聽起來很古怪,不過還真的這樣!可以讓Arduino連接一個互聯網“時間服務器”來得到正確時間。更簡單的方式是,可以讓Arduino用它自己的(不是很準確的)內部定時器來得到時間,或是使用專門的真實時鐘模塊(RTC)來保持小時和分鐘的數據。

機器人如何知道時間?

一個基於Arduino的交互時鐘

時間服務器

使機器人掌握時鐘的一個方法是通過Wi-Fi不斷地訪問一個基於互聯網的時間服務器,這通常需要Wi-Fi盾板。這些服務器站點叫作NTP(網絡時間協議)服務器,它們給連在互聯網上的小裝置提供精確的時間。其實手機上的時間也是利用NTP服務器。

Arduino的定時器

Arduino的主芯片是ATmega328p,裡面有一個定時電路,用於記錄時間還算不錯。就像你可能用delay(1000);命令來讓Arduino等待1000毫秒一樣,在ATmega裡內置的那個定時器能告訴Arduino經過了多少時間。

機器人如何知道時間?

Arduino的單片機芯片

由於這個板子的某些架構的原因,它只能記錄49天的時間,然後就溢出而必須重啟。另外,它的精度也不夠準確,ATmega每天會誤差大約2秒。基本上,當它達到49天的上限時,誤差就會很大了,差不多誤差100秒。如果需要精確的時間度量,得利用RTC時鐘模塊。

真實時鐘模塊RTC

RTC裡有一塊電路板,上面有高度精確的定時器芯片以及一顆紐扣電池,即使板子沒接電線也能保持時間設置。由於它具有溫度補償,正確配置之後,ChronoDot每年的誤差還不到一分鐘,而且新的電池能用8年之久。

機器人如何知道時間?

插在麵包板上的真實RTC模塊


分享到:


相關文章: