WiFi 自動對時鐘

話 說 2 年 前 我 也 介 紹 過 淘 寶 上 的 超 便 宜 電 波 鐘 機 芯 ,只 要 幾 十 蚊 ,就 可 以 把 自 家 的 掛 牆 行 針 鐘 ,變 成 一 個 可 以 完 全 自 動 對 時 的 電 波 鐘 。不 過 據 說 電 波 鐘 在 香 港 不 容 易 接 收 到 訊 號 ,這 是 因 為 河 南 商 丘 電 波 發 射 台 和 香 港 的 距 離 有 點 遠 ,加 上 電 波 鐘 一 般 是 放 在 室 內 使 用 ,對 時 電 波 未 必 能 穿 透 石 屎 牆 。

這 個 問 題 在 我 搬 家 後 就 凸 顯 了 出 來 ,舊 居 的 窗 口 原 來 是 向 正 北 的 ,但 新 家 的 窗 口 卻 是 向 南 的 ,正 好 就 是 背 向 了 河 南 商 丘 的 電 波 發 射 台 。搬 家 之 後 在 客 廳 一 直 找 不 到 訊 號 ,要 去 到 特 定 房 間 的 窗 邊 ,才 能 找 到 訊 號 自 動 對 時 。電 波 鐘 其 實 在 收 不 到 訊 號 時 也 會 一 直 運 作 的 ,只 是 自 動 對 時 失 效 ,時 間 就 會 越 走 越 慢 ( 和 普 通 的 行 針 鐘 一 樣 )。

那 有 什 麼 好 的 解 決 方 法 呢 ?又 上 淘 寶 逛 了 一 會 ,就 找 到 WiFi 自 動 對 時 機 芯 。它 的 原 理 十 分 簡 單 ,就 和 你 的 Windows 電 腦 一 樣 ,使 用 Network Time Protocol ( NTP ),定 時 和 網 上 的 Network Time Server 進 行 自 動 對 時 。

不 過 十 分 可 惜 的 是 ,WiFi 機 芯 比 較 大 ,而 且 是 長 方 形 ,和 我 原 來 的 便 宜 掛 牆 鐘 並 不 匹 配 。

再 找 找 之 後 就 見 到 另 一 款 WiFi 時 鐘 機 芯 ,是 正 方 形 的 ,大 小 應 該 合 適 。不 過 這 款 機 芯 有 2 大 問 題 ,首 先 它 是 內 置 充 電 池 的 ,就 是 沒 電 的 時 候 要 取 下 來 插 USB 充 電 。一 般 這 種 小 玩 意 充 電 都 是 比 較 慢 的 ( 肯 定 不 會 有 PD 快 充 ),我 不 太 喜 歡 長 時 間 沒 有 掛 牆 鐘 的 感 覺 。相 對 的 ,如 果 只 是 更 換 充 電 池 的 話 ,不 用 1 分 鐘 就 換 完 了 。第 二 是 它 不 是 連 續 走 針 的 ,而 是 每 秒 一 跳 。一 般 這 種 時 鐘 都 會 比 較 嘈 吵 ,我 更 喜 歡 連 續 走 針 的 靜 音 時 鐘 。

沒 辦 法 ,只 好 直 接 買 個 WiFi 自 動 對 時 鐘 吧 。WiFi 掛 牆 行 針 鐘 的 款 式 並 不 多 ,上 面 的 這 家 北 極 星 已 經 算 是 款 式 多 的 店 了 。當 然 款 式 多 不 代 表 款 式 好 ,北 極 星 的 款 式 也 只 能 算 是 一 般 般 。不 過 如 果 你 google 一 下 「WiFi Clock Hong Kong」,搜 出 來 那 家 店 的 時 鐘 款 式 ( 和 網 站 設 計 ) 更 是 令 人 作 嘔 ( 還 說 是 香 港 科 學 園 的 公 司 呢 ….. )。

最 後 我 在 北 極 星 選 了 一 個 簡 約 風 格 的 12 寸 掛 牆 鐘 ,定 價 ¥189 好 像 有 點 貴 ,不 過 這 家 店 有 提 供 ¥50 元 的 優 惠 券 ,所 以 實 際 付 款 只 要 ¥139。我 覺 得 價 錢 算 是 十 分 合 理 。除 了 WiFi 每 天 自 動 校 正 時 間 之 外 ,這 個 鐘 還 是 靜 音 設 計 ( 連 續 走 針 ),也 有 省 電 功 能 ( 秒 針 在 凌 晨 會 停 止 運 行 )。

這 款 WiFi 鐘 十 分 簡 單 易 用 。首 先 要 拔 除 定 位 針 ( 白 色 那 顆 ),然 後 就 裝 上 電 池 。然 後 時 分 秒 針 會 自 動 轉 圈 ,應 該 是 一 種 自 動 測 試 的 程 序 。先 花 幾 分 鐘 讓 它 走 完 。

然 後 用 手 機 搜 索 WiFi 網 絡 ,就 會 見 到 Wifi-Clock_xxxxx 的 SSID。連 上 這 個 WiFi 網 絡 之 後 ,就 會 自 動 打 開 WiFi 時 鐘 的 設 定 頁 面 。

在 設 定 頁 面 你 可 以 設 置 你 自 己 的 WiFi 的 SSID 和 密 碼 ,還 可 以 設 置 時 區 和 自 動 對 時 的 時 間 。完 成 之 後 就 按 保 存 。然 後 WiFi 時 鐘 reboot 之 後 就 應 該 會 開 始 自 動 對 時 ,稍 等 一 會 指 針 就 會 自 動 行 到 正 確 的 時 間 。不 過 十 分 可 惜 的 是 ,它 並 不 能 設 定 使 用 那 一 個 network time server,所 以 就 不 能 使 用 我 最 愛 的 香 港 天 文 台 網 絡 時 間 服 務

WiFi 鐘 和 電 波 鐘 ,應 該 算 是 各 有 各 好 。電 波 鐘 比 較 省 電 ,在 沒 有 網 絡 的 地 方 也 能 使 用 ( 但 要 在 電 波 接 收 半 徑 之 內 )。WiFi 鐘 就 全 球 通 用 ,有 網 絡 的 地 方 就 用 得 ,而 且 可 以 自 由 設 定 時 區 。但 WiFi 鐘 就 比 較 耗 電 ,要 用 2 顆 電 池 。而 且 WiFi 鐘 對 電 壓 要 求 比 較 高 ( 2.65v – 3.5v ),如 果 用 充 電 電 池 的 話 ,最 好 使 用 兩 顆 「1.5v 恆 壓 充 電 電 池 」。一 般 AA 充 電 電 池 電 壓 大 多 時 候 只 有 1.2v,可 能 很 快 便 會 顯 示 沒 電 。

在 香 港 的 一 般 居 家 環 境 ,大 概 是 用 WiFi 鐘 會 比 電 波 鐘 更 加 適 合 。如 果 你 不 想 時 常 人 手 替 時 鐘 校 正 時 間 ,不 妨 考 慮 入 手 一 個 WiFi 自 動 對 時 鐘 。

Posted in Computer & Network | Tagged , , , , , , , , , , | Leave a comment

Arduino Nano 的 Bootloader

Bootloader 是 Arduino 開 機 時 會 自 動 執 行 的 小 程 式 ,它 的 主 要 功 能 是 接 收 由 電 腦 經 USB 發 送 過 來 的 程 式 ,並 把 程 式 寫 入 Arduino 的 儲 存 空 間 。

Arduino Nano 比 較 特 別 ,曾 經 推 出 過 兩 個 版 本 的 bootloader。一 般 就 被 稱 為 new bootloader 和 old bootloader。新 的 bootloader 佔 位 比 較 少 、上 傳 速 度 比 較 快 和 修 正 了 一 些 bugs,算 是 一 個 小 升 級 。

不 過 ,新 舊 bootloader 並 不 影 響 Nano 本 身 的 功 能 和 效 能 。同 一 個 Arduino 程 序 在 存 有 不 同 bootloader 的 Nano 上 執 行 並 不 會 有 什 麼 分 別 。

不 過 新 舊 bootloader 在 使 用 上 還 是 會 有 一 些 兼 容 性 的 問 題 。如 果 使 用 親 生 的 Arduino IDE 當 然 沒 問 題 。不 過 如 果 使 用 第 三 方 開 發 工 具 的 話 ,就 可 能 會 遇 到 問 題 。例 如 mBlock 3 就 只 支 持 old bootloader,而 mBlock 5 就 只 支 持 new bootloader。

在 某 些 比 較 罕 見 的 情 況 下 ,開 發 人 員 會 刪 除 Arduino 上 的 bootloader 以 把 儲 存 空 間 留 給 應 用 程 式 ( 例 如 某 些 3D 打 印 機 的 特 大 firmware )。也 有 一 些 情 況 刪 除 bootloader 是 為 了 加 快 開 機 時 間 。

在 沒 有 bootloader 的 情 況 下 ,我 們 要 更 新 Arduino 裡 面 的 程 式 ,就 要 靠 一 些 叫 做 microcontroller programmer 或 者 microcontroller burner 的 裝 置 。Programmer 可 以 用 把 Arduino 程 序 直 接 燒 錄 到 Arduino ( 不 經 Arduino IDE ),也 可 以 把 bootloader 燒 錄 到 Arduino。

不 過 有 一 件 很 神 奇 的 事 ,就 是 我 們 可 以 把 任 何 一 台 Arduino 化 身 成 為 Arduino 的 programmer。一 般 玩 Arduino 的 朋 友 手 裡 都 會 有 很 多 個 Arduino,所 以 不 用 購 買 額 外 的 工 具 ,就 可 以 自 己 燒 錄 Arduino 的 bootloader。

不 管 是 新 舊 版 本 的 Nano bootloader,都 是 可 以 自 行 燒 錄 的 。所 以 你 可 以 把 舊 版 Nano 升 級 成 新 的 bootloader,也 可 以 把 新 版 Nano 降 級 成 為 舊 的 bootloader。

但 在 升 級 或 降 級 之 前 ,首 先 要 知 道 手 上 的 Arduino Nano 究 竟 是 新 bootloader 還 是 舊 bootloader 的 。方 法 其 實 很 簡 單 ,我 們 只 要 使 用 新 版 的 Arduino IDE ( 1.8.6 或 之 後 ) 就 可 以 。

在 Arduino IDE 隨 便 打 開 一 個 example ( 一 般 會 用 Blink ),然 後 在 Tools > Board 選 取 了 Arduino Nano 之 後 ,就 會 見 到 Processor 選 項 。三 個 選 項 之 中 ,第 一 個 就 是 new bootloader,第 二 個 就 是 old bootloader。第 三 個 是 更 舊 版 的 Nano,今 時 今 日 應 該 無 乜 人 用 ( 亦 應 該 買 唔 到 )。

然 後 就 可 以 按 Upload。一 定 要 選 對 Processor ( 亦 即 是 bootloader ),upload 才 會 成 功 的 。所 以 只 要 在 Arduino IDE 選 擇 不 同 的 bootloader 再 試 試 能 不 能 成 功 upload,就 可 以 知 道 自 己 手 上 的 Nano 是 那 一 個 版 本 。

如 果 想 用 Arduino 做 programmer,就 要 把 ArduinoISP 程 序 上 傳 到 Arduino 主 板 。這 個 程 序 是 Arduino IDE 自 帶 的 ,在 File > Examples > 11. ArduinoISP 就 找 得 到 。ArduinoISP 也 是 一 個 普 通 的 sketch,只 要 按 照 正 常 步 驟 上 傳 到 Arduino 就 可 以 。

Programmer 其 實 用 什 麼 Arduino 主 板 都 可 以 ,比 如 說 Uno、Nano、Mega 等 等 都 可 以 。建 立 好 Programmer 之 後 ,就 可 以 開 始 燒 錄 bootloader。接 線 圖 中 的 Target 就 是 我 們 想 要 改 變 bootloader 的 Nano。

在 正 式 燒 錄 之 前 ,我 們 要 在 Arduino IDE 先 做 一 點 配 置 。首 先 ,亦 是 最 重 要 的 ,是 要 把 Tools > Programmer 設 定 成 Arduino as ISP。然 後 ,就 是 選 擇 Target 所 想 要 燒 錄 進 去 的 bootloader。如 果 想 要 舊 bootloader,就 選 ATmega328P (Old Bootloader )。如 果 想 要 新 bootloader,就 選 擇 ATmega328P。

確 定 選 擇 妥 當 之 後 ,就 可 以 按 一 下 Tools > Burn Bootloader。因 為 bootloader 是 很 小 巧 的 一 個 程 式 ,所 以 燒 錄 時 間 應 該 是 很 快 的 。如 果 成 功 的 話 ,就 會 見 到 「Done burning bootloader」。

如 果 見 到 錯 誤 訊 息 的 話 ,那 最 大 的 可 能 就 是 接 線 接 錯 了 ,或 者 是 線 沒 有 接 好 。建 議 你 再 三 檢 查 每 個 針 腳 的 接 線 ,還 有 就 是 檢 查 接 線 有 沒 有 訊 號 、通 不 通 電 。

Arduino as ISP and Arduino Bootloaders

開 於 燒 錄 bootloader 的 詳 細 訊 息 ,可 以 參 考 上 面 的 官 方 文 章 。學 會 自 己 燒 錄 bootloader,就 不 用 再 擔 心 新 舊 版 本 Nano 不 兼 容 的 問 題 了 。

如 果 因 為 某 些 原 因 需 要 大 量 或 者 經 常 性 燒 錄 bootloader,也 可 以 考 慮 買 一 個 arduino 專 用 的 offline burner ( 離 線 燒 錄 器 )。不 過 它 裡 面 的 究 竟 是 新 bootloader 還 是 舊 bootloader,我 就 不 得 而 知 了 。

Posted in STEM | Tagged , , , , | Leave a comment