S.M.A.R.T.智慧鬧鐘

九月 17, 2015
Facebook
Twitter
您可以設定它來提醒自己的會議、約會,及待辦事項。此專題使用了Arduino Yún及你的Google行事曆來自動設定鬧鐘,而且看起來超酷!
图片

擁有一個連上網路,而且可以根據你的行事曆自動進行設定的鬧鐘,豈不是一件超棒的事情嗎?你絕對不會錯過早上的約會,也不會忘了設定鬧鐘,並且可以享受舒適的睡眠、解決調鬧鐘的噩夢。這個聰明的鬧鐘甚至可以查看你的電子信箱,並在朋友或家人發送重要email的時候將你喚醒。

材料

工具
  • 電腦及USB連接線,安裝好Arduino IDE 1.5.6-r2 BETA,可從arduino.cc免費下載。

這個S.M.A.R.T.智慧鬧鐘(用來設定會議、約會、待辦事項等提醒)使用了Arduino Yún。這是一個擁有雙處理器的特殊Arduino開發板,其中一個處理器運行嵌入式的Linux系統,並透過Wi-Fi或乙太接頭連結至網路。另一個處理器則使用與Arduino Lreonardo微控制板相同的晶片,這讓Arduino Yún依然可以使用大多數的Arduino擴充板及配件。透過使用Arduino Yún,此專題可以透過Linux處理器連結至複雜的網路服務,並透過另一個處理器來與硬體—一個LCD觸控螢幕—互動。

S.M.A.R.T.智慧鬧鐘的軟體使用了Temboo的服務,來連結上行事曆及電子郵件工具。Temboo是一個簡化許多網路服務的平臺,十分適用於Arduino Yún。在製作此專題前,你需要先在Temboo註冊一個免費帳戶。

S.M.A.R.T.智慧鬧鐘目前是與Google行事曆Gmail連動。如果你也沒有Google帳戶,請在開始製作前註冊一個。

除了這些帳戶,您需要的材料只有Arduino Yún、電源供應器、microSD卡、TFT觸控螢幕Arduino擴充板,以及一個USB喇叭。TFT擴充板會顯示時鐘介面,同時透過USB喇叭播放鬧鈴。請確認USB喇叭可以透過USB接頭同時接收電源以及音訊,如RadioShack #40-380(有些喇叭必須透過另一條連接線來接收音訊,這就無法用在Arduino Yún上)。此專題的軟體包括了一個把你叫醒的惱人鬧鐘,不過你也可以換成你喜歡的MP3檔案,在早上愉快地醒來。

如果你是第一次使用Arduino Yún,花一點時間閱讀使用指南並且觀看設定影片。在專題開始之前,你必須確認你的Arduino Yún已透過無線/有線方式連接上網路。此外,在開啟電源前先將microSD卡插入開發板插槽,它便會將此專題使用的數據儲存至你的microSD卡中。

如果你已經準備好了,就下載軟體然後按照下列的步驟來打造你的S.M.A.R.T.智慧鬧鐘吧!此專題的程式碼是以聯網裝置的範例為基礎,你可以參考並根據需求修改,建立你自己的智慧小工具。如果你有任何程式上的問題,或是有任何事情想分享,請造訪這個Github頁面。同時,享受你的高品質睡眠吧!

步驟1:設定Temdoo帳戶

图片

  • 在你開始進行任何硬體工作前,你需要先在https://temboo.com/上註冊一個免費帳戶。如果你對Temdoo不是很熟悉,你可以透過瀏覽https://temboo.com/videos#intro上的影片來熟悉一下這個平臺。
  • 當你註冊完畢,進入你的帳戶[Account]→應用頁面[Applications],來取得你的帳戶名稱、應用名稱以及密鑰(Key)。 儲存這些名稱,因為我們會將它們使用在Arduino腳本程式碼中。
  • 注意:在此專題中你需要建立幾個帳戶,我們建議你在每個Temboo與Google步驟中取一些容易記憶的名稱——並記得將它們紀錄在你的記事本或是筆記型電腦中,以便使用。

步驟2:設定並連結Google行事曆

  • 按照Temboo Google行事曆資料庫的指示來將Temboo連結至你的行事曆帳戶:https://temboo.com/library/Library/Google/Calendar/
  • 在Google開發者後臺(Google Developers Console: https://code.google.com/apis/console/)中啟用你的Calendar API。確認Calendar API的狀態為「ON」(見圖一)。
  • 接著建立一個新的Client ID(中文註:[憑證]→[新增憑證]→[用戶端編號]→[建立用戶端ID]),並選擇「Web application」(網路應用程式)。按照Temboo提供的指引輸入已授權的重新導向 URI(Authorized Redirect URI):

   https://{你的Temboo帳戶名稱}.temboolive.com/callback/google

  • 也將已授權的 JavaScript 來源(Authorized JavaScript Origins)輸入:

   https://{你的Temboo帳戶名稱}.temboolive.com

  • 參考第二張圖片,在此我的帳戶名稱為「tdicola」,而你的會不一樣。建立帳號後請記下你預設頁面上的Client ID跟密鑰等設定值。
  • 注意:Temboo的指引中並未提到你同時需要在Google開發者後臺設定商品名稱(Product Name)。你可以設定任何名稱,例如「My App Name」,就像我在圖三中做的一樣。
  • 執行名為「IntializeOAuth」(https://www.temboo.com/library/Library/Google/OAuth/InitializeOAuth/)的「choreo」(「choreo」指的是Temboo的程式快捷鍵,應用於各種API Request、SQL查詢等。)輸入你在前述步驟中取得的用戶端ID(ClientID),並在Scope欄位內輸入:

   https://www.googleapis.com/auth/calendar

  • 按下Run之後,查看下方OUTPUT區的Authorization URL,按下「允許」,然後你應會看到一個空白頁面。
  • 再次提醒在繼續下一步之前,確認你已經在上述步驟中獲得以下幾個值:用戶端ID(Client ID)、用戶端密鑰(Client Secret,以及Refresh Token。

步驟3:儲存Google行事曆用戶資料

  • 確認你的Google行事曆帳戶可運作,並執行Temboo的GetCalendar choreo:https://live.temboo.com/library/Library/Google/Calendar/GetCalendar/。輸入你在前述步驟中取得的用戶端ID(Client ID)、密鑰(Client Secre)以及Refresh Token等值。在Calendar ID value的部分,輸入你的Google帳戶名稱(通常是你的email)。你可以參考圖片中我的範例。
  • 然後按下RUN,應會顯示執行成功。如果發生任何錯誤,就回顧前面的步驟,確認你有取得所需的Client ID、Client Secret以及Refresh Token值。
  • 按下右上角的Save Profile按鈕,然後取個「GoogleCalendar」之類的名稱。藉由儲存這些資訊,來讓Arduino腳本程式碼可取得使用行事曆憑證的權限。

步驟4:設定Gmail權限

图片

  • 設定Gmail十分簡單。在 Temboo的Inbox Feed choreo上進行設定:https://live.temboo.com/library/Library/Google/Gmail/InboxFeed。輸入你的Gmail帳戶名稱與密碼,並按下RUN,檢查是否執行成功。
  • 按下Save Profie儲存資訊,就像剛才在Calendar account做的一樣。然後取個「GoogleMail」之類的名稱。
  • 注意:如果choreo無法運行,而且你確認用戶名稱與密碼無誤的話,嘗試連結到你Google帳戶的安全頁面,檢查Temboo是否已被不經意地標記為可疑。連結此頁面:https://security.google.com/settings/security/activity來確認活動是來自於你。等幾分鐘之後再重新嘗試運行Inbox Feed choreo。

步驟5:安裝TFT Arduino程式庫

图片

步驟6:將TFT擴充板連接至Arduino Yún

图片

  • TFT觸控擴充板的排針接上Arduino的針腳,連接至Arduino Yún。
  • 注意:擴充板不會完全齊平,乙太網路接口可能會稍微超出去。不過這沒關係,不應影響連接。您只需要注意擴充板有儘可能好好地接在Arduino上。

步驟7:格式化SD卡

图片

  • SD卡必須正確格式化,以儲存會使用到的聲音檔。按照playground.arduino.cc/Hardware/Yun#using_sd_card上的指示,特別是這個步驟:
  • 在MicroSD卡中建立一個名為arduino/www的資料夾在 microSD的根目錄下。這讓你透過Wi-Fi上傳的東西可以上傳到www資料夾中。
  • 在原廠設定中,Yún 支援的檔案系統包括FAT32(包括vFAT)、 EXT3/4、HFS(+)、 Reiser、Fuse以及NTFS。您可以安裝額外的封包,如MSDOS、ISO、BtrFS、 MinixFS、UDF、XFS、CiFS、NFS,甚至是AutoFS。但不支援FAT64。
  • 在預設情況下,Windows應會允許你將SD卡格式化為FAT32/vFAT/NTFS檔案系統(對於vFAT它可能會顯示「Extended FAT」,不過該選項可能不會出現在XP裡。)
  • Mac OS還可以讓你使用「HFS+」(「Mac OS Extended」)或是vFAT(「ExFAT」)。不過HFS+卡可能不太適合在Linux中運作,所以你最好還是使用FAT檔案系統。
  • Linux使用者在以任何一個完全支援的檔案系統格式化卡片的時候通常不太會遇到問題。

步驟8:安裝Arduino Yún dependency

图片

  • 連接牆壁電源來啟動你的Arduino Yún,並稍等2分鐘讓Linux處理器重啟(所有程式編寫都可以在無線的情況下完成,所以我們不建議你將開發板連接上電腦)。
  • 當你啟動Arduino Yún後,它會建立自己的Wi-Fi網路。在arduino.local/中打開Arduino Yún的Web面板,並將其配置到你家中的Wi-Fi無線網路。Arduino Yún將重新啟動。將你的筆電也連接上Wi-Fi,再次開啟Yún的Web面板,然後複製下IP位址。
  • 現在使用SSH連接到Arduino Yún,以使用Linux命令提示字元。如果你需要更多透過SSH連接上Yún的資訊,可參照http://arduino.cc/en/Tutorial/LinuxCLI。要有耐心,這可能需要25秒以上。
  • 連接上Arduino Yún後,執行下列指令:

   opkg update && opkg install kmod-usb-audio madplay alsa-utils python-openssl

  • 注意:此指令應該在同一行,沒有任何換行符號。

步驟9:連接上USB喇叭

图片

將USB喇叭連接至Arduino Yún的USB埠。

步驟10:設定S.M.A.R.T.智慧鬧鐘腳本程式碼

图片

  • https://github.com/tdicola/SmartAlarmClock/archive/master.zip下載S.M.A.R.T.鬧鐘的腳本程式碼。
  • 解壓縮檔案並在Arduino IDE中開啟。
  • 調整#define的值來對應你的Temboo帳戶資訊。將TEMBOO_ACCOUNT設為你的TEMBOO帳戶名稱,TEMBOO_APP調整為你的Temboo application name,TEMBOO_KEY為你的Temboo application key並將CALENDAR_ID調整為你的Google帳號名稱(與前面設定calendar choreo時相同。如果你使用了不一樣的名稱,將CALENDAR_CREDENTIALS和GMAIL_CREDENTIALS調整為你稍早在Save Profie時設定的名稱。
  • 你現在不用調整其他#define項目的值,不過你還是可以看看等下有哪些項目是你可以在程式碼中調整的。特別是ALARM_FILEvalue指向的MP3檔案,用來做為鬧鈴聲。如果你想改變鬧鈴聲,就將你自己的MP3檔上傳到www子目錄,並更新該項目的值。

步驟11:上傳腳本程式碼

图片

  • 調整好#define的值之後,就將腳本程式碼上傳到你的Arduino Yún上吧。請確認透過Wi-Fi上傳時在Arduino IDE中選擇的是「Arduino at (Arduino Yún)」埠。不要使用USB/序列連接埠,否則會無法安裝Python script。
  • 腳本程式碼上傳完畢後(這可能需要5分鐘左右,請耐心等候)。TFT的顯示器應該會刷新為時鐘圖像,並透過兩種不同的格式(錶盤/數字)來顯示當前時間。
  • 注意:你可以透過調整Arduino Yún的web admin面板來設定時間(通常是位於http://arduino.local/)。

步驟12:使用鬧鐘

图片

  • 測試鬧鐘是否會根據Google行事曆提醒來自行進行設置,在你的Google行事曆上新增一項隔天一早的活動。預設情況下,鬧鐘只會查看中午前的行程,並在最早活動的一小時前響起。你可以藉由調整#define中的ALARM_LATEST_HOUR及ALARM_BUFFER_MINS值來調整鬧鐘的動作。
  • 新增活動後,按下鬧鐘上的REFRESH鈕。時鐘應會更新,並在右上角顯示響鈴。鬧鐘會每兩小時檢查一次你的行事曆,並自行進行設定(這同樣也可以在#define設置中更改)。
  • 如果你啟用響鈴後想取消,請按下CANCEL按鈕。這會移除響鈴並且停止檢查接下來24小時內的活動(直到你按下REFRESH)。
  • 如果鈴聲響起,按下觸控螢幕任一處即可停止。
  • 注意:當你重啟Arduino Yún,時間可能會顯示錯誤。因為Yún必須連接至網路來取得當前時間。在重啟Arduino Yún的幾分鐘後,按下REFRESH按鈕來刷新時間。

步驟13:設定「WAKE UP」郵件

图片

  • Yún會定期檢查你Gmail中的未讀信件,查看是否有標題包含了「WAKE UP」的訊息。這讓你的家人或朋友可以在有需要立即關注的問題時透過郵件叫醒你。
  • 為了測試此功能,請發送一封標題包含「WAKE UP」的郵件給自己(此關鍵字有大小寫之分,再此全都設為大寫。)按下REFRESH按鈕強制時鐘檢查新郵件,這時響鈴應會響起(按下觸控螢幕任一處停止響鈴。)
  • 預設情況下,時鐘會每兩小時檢查一次WAKE UP郵件。您可以在#define的ALARM_KEYWORD_MINS中修改此數值。
  • 注意:每個郵件檢查都會透過choreo來執行,你的免費Temboo帳戶允許每個月執行choreo 1,000次。
  • 你也可以透過修改GMAIL_ALARM_KEYWORD的#define值來修改WAKE UP郵件的關鍵字。請注意這裡是有區分大小寫的!
  • 現在你的S.M.A.R.T.智慧鬧鐘已經準備好叫醒你了!——並且讓你在該睡的時候可以好好睡一覺。

(譯:編輯部)
[原文]
Social media & sharing icons powered by UltimatelySocial