2013年1月6日 星期日

Arduino Physical Gmail Notifier

本篇將示範如何把 Arduino 變成一個實體的 Gmail Notifier,當 Gmail 信箱有未讀的信件時,LED 就會閃爍。

Arduino-LED     ygmlogo

材料表
  • Arduino 主板一張
  • LED x 1

把 LED 直接接到 Arduino 板子上就好,長腳接在 13 腳位,短腳接在 GND。

準備軟體環境

1) 到 ww.python.org 下載並安裝 Python - 我們的 Gmail 信箱檢查程式是用 Python 寫成的,所以需要 Python 執行環境。

2) 安裝 Python 的套件管理程式 easy_install 和 pip - 我們需要 pip 來安裝幾個 Python 套件。安裝辦法可以參考「安裝 easy_install 與 pip」。

3) 安裝 pyserial 與 feedparser 套件 – pyserial 是用來與 Arduino 通訊的套件,而 feedparser 則是用來檢查 gmail 信箱的套件。當你裝好 pip 套件管理程式後,接著執行下列指令把 pyserial 與 feedparser 裝起來:

pip install pyserial
pip install feedparser

Gmail Notifier

連到底下的位置下載 Gmail Notifier 程式:

http://bit.ly/UsG3wR

下載回來的是一個壓縮檔,解開後會看到這些檔案:

image

接著進行底下兩個步驟:

1) 把 prototype 資料夾下的 prototype.ino 上傳到 Arduino 板子上

2) 用編輯器打開 mail_notifier.py:

你需要修改幾個參數,包括 USERNAME, PASSWORD 與 Arduino 所在的 Serial port。

修改好後,最後只要輸入下列指令執行 mail_notifier.py,程式就會開始檢查 Gmail 信箱囉。程式預設是每 5 秒鐘檢查一次信箱,你可以自行調整。如果你發現 LED 會閃爍的話,就代表你的信箱裏有未讀的信件:

python mail_notifier.py

image

恭禧你,這樣就完成囉!

備註: Gmail Notifier 這支程式是以 extended-python-arduino-prototyping-api 為基礎修改而成的。

參考資料

2013年1月2日 星期三

Amarino with SoftwareSerial

Amarino 官方的 MeetAndroid Library 只支援 Hardware Serial,我做了一個新的版本,這個版本增加 SoftwareSerial Library 的支援,所以現在你可以用 Arduino 任意 2 支 IO Pin 當作 TX 與 RX 腳位來銜接藍芽模組了。你可以在底下的網址取得我改過的 MeetAndroid Library:

https://github.com/coopermaa/MeetAndroid

當你裝好 MeetAndroid Library 後,可以打開 File > Examples > MeetAndroid > SoftwareSerialTest 這個範例來測試:

image

SoftwareSerialTest 範例完整程式碼如下:

在這個範例中,比較重要是底下這兩行程式碼,這兩行便是 Amarino with SoftwareSerial 的使用方法:

這會用 pin 2 和 pin 3 當作 RX 和 TX 接腳,而第二行把 mySerial 物件傳給 meetAndroid,表示要用 mySerial 當作與藍芽模組通訊的 Serial Port。由於我們現在使用 SoftwareSerial,沒用到 Hardware Serial,所以 Hardware Serial 就可以拿來 Debug:

當你用 Amarino 測試時,可以切到 Monitoring 畫面觀察 Amarino 背後通訊的過程,Amarino 測試連線的 Event 訊息如下,你會看到 Android 端每隔幾秒鐘就會送一個數值介於 0 到 255 的 random number 給 Arduino:

image

而在 Serial Monitor 視窗中也會同步看到一樣的訊息:

image

你或許會想要參考我整理的 Getting Started with Arduino 簡報,這份簡報可以帶你快速上手 Amarino:

參考資料

Getting Started with nano1768

前言

這篇將告訴你如何開始使用 nano1768。只要跟著這篇的步驟做一遍,你就可以學會透過 Subversion 取出 uCXpresso Framework、下載 Blink 範例程式,以及學會如何上傳程式到 nano1768 上,完成最基本的入門工作。

註:我假設你作業系統上已經裝好了 LPCXpresso,如果你還沒裝,可以參考「安裝 LPCXpresso」先把軟體環境裝起來。

材料表

1) 一張 nano1768 板子

21207130289072_508

2) 一條 USB A/Mini-B cable 與一條 Ethernet 網路線

USBmini       network_cable__350_mhz__cat_5e

 

STEP 1:取出 uCXpresso

參考下圖,在 SVN 檔案庫中點一下 image 圖示:

image

之後會看到這個視窗,此時輸入 http://ucxpresso.googlecode.com/svn/trunk/nano1768/,然後按下 Finish:

image

如果連線順利,應該會看到如下的結果:

image

接著在 uCXpresso 上按滑鼠右鍵,並在右鍵選單中點「取出為 (A)…」:

image

完成後,切到 Project Explorer,如果有看到底下的結果,表示已經成功從 google 取出 uCXpresso:

image

STEP 2: 取出與編譯 blinkLED 專案

接著取出 BlinkLED 範例,我們將用 BlinkLED 範例學習如何編譯與上傳程式到 nano1768 板子上。

nano1768 所有範例都放在網路上,所以取出的方式也是一樣的:先切到 SVN 檔案庫,展開 examples/majorLab,在 blinkLED 上按滑鼠右鍵,然後點選「取出為(A)…」:

image

接著直接按下 Finish:

image

完成後,Project Explorer 中就會多出一個 blinkLED 專案:

image

底下是 blinkLED 主程式 main.cpp 的完整程式碼:

本文是教你編譯與上傳程式到 nano1768 板子上,介紹程式的寫法不是本文的目的,因此這裏將不特別解釋上列程式。

接著只要確定 Project Explorer 中有選取 blinkLED 專案,然後再按下工具列的 image 圖示就可以編譯 blinkLED。編譯完成後,在專案 Debug 資料夾下就會產生 blinkLED.bin 程式檔。

image

接著你就可以繼續進行 STEP 3 把 blinkLED.bin 上傳到 nano1768 板子上。

註:由於 LPCXpresso 版本更迭頻繁,新的版本可能會影響範例程式的運作,如果在編譯時遇到 "blinkLED.axf section `.bss' will not fit in region `RamLoc32'" 之類的錯誤,請不要擔心,你只要把 main.cpp L23 這行 static uint8_t pool[24000]; 的陣列大小縮小一點即可,例如改成 14 * 1024。

STEP 3: 上傳程式到 nano1768

如下圖,所有的 nano1768 在出廠後,在其 microSD 中預設會有這樣的目錄結構。要把程式上傳到 nano1768 上,方法很簡單,只要把程式檔 (例如 blinkLED.bin) 上傳到 kernel 資料夾即可。

image

上傳程式的方法有兩種,一種是 FTP,另一種是用 USB。我們先來學習用 FTP 上傳程式:

你可以用任一套 FTP 軟體來上傳檔案,這裏以 FileZilla 為例說明。首先連線到 nano1768,你必須輸入主機名稱或 IP 位址以及使用者名稱與密碼,nano1768 的主機名稱預設是 nano1768,而使用者名稱與密碼預設為 admin/admin:

image

登入後,只要把 blinkLED.bin 上傳到 nano1768 的 kernel 資料夾即可:

image

當 FTP 斷線後,nano1768 會自動檢查 kernel 資料夾裏的檔案,如果發現 kernel 資料夾裏有 bin 檔,就會自動燒錄 bin 檔到晶片上並重開機。所以接著我們只要關閉 FileZilla 的連線,nano1768 就會自動更新韌體了。

註:我發現,在 FileZilla 按 Ctrl+D 後,連線斷的不是很乾淨。當你把程式檔上傳到 nano1768 後,建議把 FileZilla 程式整個關閉,就可以確保 nano1768 會自動更新並重開機。

blinkLED 這支程式會讓 nano1768 的 LED1 每隔 200 ms 閃爍一下,所以當你完成上傳的動作後,這時候應該就會 nano1768 的 LED1 會一下亮、一下滅,不停的切換:
nano1768-leds-00

前面提到,nano1768 上傳程式的方法有兩種,另一種是用 USB,方法為:

(1) 先按一下 nano1768 的 ISP 按鈕,此時板子上四顆 LED 會同時閃爍 ,而且如下圖所示,這時候電腦上會多出一個磁碟機。
(2) 把程式檔 (如 blinkLED.bin) 放到 kernel 資料夾。
(3) 再按一下 ISP 按鈕,完成。

image

用 USB 上傳程式也是很簡單,只是你必須動手去按 ISP 按鈕,按久了可能會覺得麻煩,而且人必須親臨現場才能做,不如 FTP 方便。

到這裏,你已經學會編譯 nano1768 的程式,而且也知道如何用上傳程式到 nano1768 了,現在你已經可以開始使用 nano1768 來開發程式。你也許想順便參考英倍達國際網站上的 "2-1-2 Burn Code (USB)" 與 "2-1-3 Burn Code (FTP)",這兩篇文章教你如何在 LPCXpresso 裏上傳程式。

如果你要建立新專案,方法一樣是從 SVN 檔案庫取出,如下圖,你可以選擇取出 new_arduino 或是取出 new_project,取出之後,你只要按 F2 重新命名專案即可。詳細的說明可以參考英倍達國際網站上 "2-1-1 Blink LED" 一文。

image

備註:

當你用 USB cable 把 nano1768 接到電腦 USB 埠時,如下圖,在裝置管理員中,可能會看到無法辨識的裝置:

image

你可以到英倍達國際網站上下載 USB CDC Driver 回來安裝驅動程式。不過,其實 nano1768 的 microSD 上也有驅動程式,你只要先按一下 ISP 按鈕,參考下圖把 driver 目錄下的 usbser.inf 複製一份到電腦上,接著再按一下 ISP 按鈕讓 nano1768 回到 Run mode,回到裝置管理員更新驅動程式,然後把驅動程式路徑指到 usbser.inf 所在的資料夾即可。

image

如下圖,之後在連接埠底下就會多出一個 Virtual COM Port:

image 

參考資料