Author Archives: 謝 宗翰

7688 Duo 與亞馬遜物聯網服務實作 (三):AWS IoT Arduino Yún SDK

本篇接續「7688 Duo 與亞馬遜物聯網服務實作 (二):建立 AWS IoT 元件」一文,繼續介紹 AWS IoT,此系列的內容節錄自本團隊的將要出版的新書《7688 Duo 雲端應用手冊(暫定)》中,本書目前在校稿階段,最後出版內容可能會有些許不同。

亞馬遜IoT開發套件(AWS IoT Arduino Yún SDK)

AWS IoT 提供了以C語言為基礎的開發套件(Software Development Kit, SDK) 供我們使用, 此開發套件可直接支援三個平台:Arduino Yún、嵌入式C (供Linux 以及其他即時作業系統使用)、以及JavaScript runtime 套件(給有支援Node.js的平台使用)。7688本身可使用任一個SDK,不過由於 7688 Duo 相容於 Arduino Yún,這裡我們就以其作為主要工具,這也是為什麼我們在上一節在產生憑證與金鑰時請您選擇Arduino Yún。請至AWS Arduino Yún 的Github上下載最新的SDK:

https://github.com/aws/aws-iot-device-sdk-arduino-yun/

在畫面中選取複製或下載 (Clone or download),選擇「下載壓縮檔 (Download ZIP)」,如圖8-11所示,下載完後請解壓縮至桌面。

aws11

圖 8-11 下載AWS Arduino Yún SDK。

接著我們要複製憑證以及金鑰到SDK的目錄中, 除了您從AWS取得的私人金鑰以及憑證外,我們還需要 AWS IoT的數位憑證認證機構(Certificate Authority) 憑證檔,此檔案可從賽門鐵克 (Symantec,防毒軟體供應商) 的網站上下載:

https://www.symantec.com/content/en/us/enterprise/verisign/roots/VeriSign-Class%203-Public-Primary-Certification-Authority-G5.pem

(Google 短網址: https://goo.gl/inXOhV)

請將此檔案另儲存為 root-CA.crt,並將其連同私人金鑰以及憑證複製到資料夾 AWS-IoT-Arduino-Yun-SDK/AWS-IoT-Python-Runtime/certs/ 。由於 AWS IoT Arduino Yún SDK 使用到了 Yún Bridge 函式庫,我們需要登入7688 Duo 並啟用它以及一些相關設定。7688已經將這些相關設定全部集合起來內建於一個 UCI 設定檔中,所以我們只要啟用它即可。請開啟終端機或是 PuTTY ,並 ssh 至 7688 Duo:

>ssh root@mylinkit.local

接下來啟用UCI設定檔並重新啟動7688 Duo:

>uci set yunbridge.config.disabled=’0′

>uci commit

>reboot

在7688重啟後,我們就可以開始來安裝SDK了,以下分不同的作業系統介紹:

Mac OS/Linux

開啟終端機,將目錄指到SDK資料夾 AWS-IoT-Arduino-Yun-SDK,並使用 chmod 指令更改批次檔 AWSIoTArduinoYunInstallAll.sh 的權限,以確保它可以正常執行:

>cd AWS-IoT-Arduino-Yun-SDK

>chmod 755 AWSIoTArduinoYunInstallAll.sh

接下來我們就可以執行該批次檔,此檔案會自動幫我們在7688 Duo上下載與安裝所有我們需要的套件 (distribute, python-openssl, pip, AWSIoTPythonSDKv1.0.0)。請確保7688 Duo與你的電腦都已連上同一個網路:

>./AWSIoTArduinoYunInstallAll.sh <IP 位置> <使用者名稱> <密碼>

其中 IP 位置使用 mylinkit.local 即可。這個指令會需要幾分鐘的時間完成,在過程中您會看到畫面不斷跑出個套件的安裝進度。在安裝完成前請不要關掉終端機。

小筆記:UCI 系統

UCI 是 “Unified Configuration Interface”的縮寫,為OpenWrt的中央設定工具。基本上,所有的重要設定都透過它完成,而這些設定通常都攸關系統的主要功能。UCI常出現在路由器或是其他嵌入式裝置的網路介面裡,也就是說,這些裝置在預設情況下應該都要有已經建立好的UCI設定。

最後安裝Arduino 函式庫。複製資料夾 AWS-IoT-Arduino-Yun-SDK/AWS-IoT-Arduino-Yun-Library 到您安裝Arduino函式庫的地方,Mac OS 上預設為Documents/Arduino/libraries。複製完成後重新啟動Arduino,您就可以看到AWS IoT的範例。

之後若是您想要上傳新的憑證與金鑰檔到7688 Duo,除了自己使用scp指令外,也可以透過執行批次檔 AWSIoTArduinoYunScp.sh,用法如下:

>./AWSIoTArduinoYunScp.sh <IP 位置> <使用者名稱> <密碼> <檔案> <目的地>

記得終端機路徑要先切換到 AWS-IoT-Arduino-Yun-SDK。使用這個批次檔的好處是它可以幫您上傳整個目錄,所以您可以直接上傳整個certs 資料夾:

>./AWSIoTArduinoYunScp.sh mylinkit.local root <密碼> ./AWS-IoT-Python-Runtime/certs /root/AWS-IoT-Python-Runtime/

Windows

在安裝之前,請先安裝 WinSCP。WinSCP 是在Windows中使用SSH的開放原始碼的圖形化程式,提供SFTP用戶端 。WinSCP同時也支援SCP通訊協定。它主要的功能是安全的在電腦間傳輸檔案。安裝完後,使用它將AWS-IoT-Python-Runtime/ 資料夾上傳到7688 Duo的根目錄。記得憑證、私人金鑰以及數位憑證必須已在 certs資料夾裡。

接著使用PuTTY ssh到7688 Duo,並執行以下指令以安裝SDK以及相關套件:

>opkg update

>opkg install distribute

>opkg install python-openssl

>easy_install pip pip install AWSIoTPythonSDK==1.0.0

此步驟會需要幾分鐘的時間完成。最後,複製資料夾 AWS-IoT-Arduino-Yun-SDK/AWS-IoT-Arduino-Yun-Library 到您安裝Arduino函式庫的地方 ,完成後重新啟動Arduino,您就可以看到AWS IoT的範例。

上傳資料至AWS

AWS IoT Arduino Yún SDK 提供了三個範例,這裡我們介紹其中一個範例:BasicPubSub。此範例示範了一個簡單的 MQTT 發布以及訂閱功能,您可以透過這個範例來測試7688 Duo是否真的可以連上您的 AWS IoT元件。

當您開啟BasicPubSub時,您會看到同時還有一個標頭檔aws_iot_config.h也被開啟。您必須貼上之前在AWS上取得的程式碼 (圖 8-10) ,取代此標頭檔的第21-27行,以讓7688 Duo順利連上AWS,如圖 8-12所示。如前所述,這段程式碼定義了裝置、憑證以及協定的名稱。

aws12

 

圖 8-12 在aws_iot_config.h貼上裝置的連線資訊。

接下來介紹此程式與SDK有關的語法,之後若是您要撰寫自己的程式,這些都是必要步驟。

  • 宣告一個 AWS IoT 的 MQTT用戶端
aws_iot_mqtt_client myClient;
  • 在 setup() 裡,設定Serial 通訊,並連線至AWS,若是有錯誤則顯示到 Serial monitor上
Serial.begin(115200);
...
if((rc = myClient.setup(AWS_IOT_CLIENT_ID)) == 0) {
    // Load user configuration
    if((rc = myClient.config(AWS_IOT_MQTT_HOST, ... == 0) {
        // Use default connect: 60 sec for keepalive
        if((rc = myClient.connect()) == 0) {
            success_connect = true;
            ...
        }
        else {...}
    }
    else {...}
}
else {...}
...
  • 同樣在setup(),訂閱一個MQTT主題「topic1」並等待幾秒,若是有錯誤同樣會顯示。
if((rc = myClient.subscribe("topic1", 1, msg_callback)) != 0) {
    Serial.println(F("Subscribe failed!"));
    Serial.println(rc);
}
delay(2000);
  • 在loop() 裡,每隔5秒使用publish指令發布訊息到所訂閱的主題中,並使用yield指令檢查所訂閱主題回傳的訊息。此指令另外還會檢查連線狀態以及釋放多餘的資源,若是迴圈上傳資料的時間間隔大於十秒,在這十秒內您必須至少呼叫yield指令兩次,以維持連線穩定。
sprintf(msg, "new message %d", cnt);
if((rc = myClient.publish("topic1", msg, strlen(msg), 1, false)) != 0) {
    Serial.println(F("Publish failed!"));
    Serial.println(rc);
}
if((rc = myClient.yield()) != 0) {
    Serial.println(F("Yield failed!"));
    Serial.println(rc);
}
...
delay(5000);

若是您在執行程式時看到錯誤代碼 -1,請試著重新上傳程式到7688 Duo裡。若是收到其他錯誤代碼,那表示您的AWS IoT環境沒有建立好,請檢查您是否有漏掉前面所提到的步驟。

7688 Duo 與亞馬遜物聯網服務實作 (二):建立 AWS IoT 元件

本篇接續「7688 Duo 與亞馬遜物聯網服務實作 (一):什麼是雲端服務?」一文,繼續介紹 AWS IoT,此系列的內容節錄自本團隊的將要出版的新書《7688 Duo 雲端應用手冊(暫定)》中,本書目前在校稿階段,最後出版內容可能會有些許不同。

建立亞馬遜IoT元件

在瞭解 AWS IoT 的架構後,現在我們就來進行實際的操作。要讓您的IoT裝置 (也就是7688 duo) 連上 AWS IoT,首先您必須在 AWS IoT 裡建立一個 IoT 元件,而該元件的所有活動都將會記錄在您的 AWS IoT 帳號裡。請照著以下的步驟以建立元件:

1. 登入您的 AWS 帳號並進入 AWS IoT 頁面。選擇創立元件 (Create a thing),並輸入您想要的名稱,如圖 9-6 所示。這裡我們輸入test。如果您想要為您的元件加入更多說明,可以點選新增屬性 (Add Attribute),不過那並非必要。

6

圖  9-6 建立一個新的IoT元件。

2.  選擇檢視元件 (View thing),您將會看到該元件的相關資訊,如圖  9-7所示。

7

圖  9-7 檢視元件相關資訊。

3. 如同我們在上一節所提到的,任何IoT裝置與AWS IoT的聯繫都經由 X.509 憑證所保護。因此,要讓我們的裝置連上AWS IoT,我們需要創立一個 X.509 憑證。除了憑證外,IoT裝置還需要透過AWS產生協定(policy)以授權裝置與AWS之前的連線。要產生這些東西,請點選您剛剛新增的AWS IoT裝置,點選連接裝置(Connect a device)。接著在裝置列選擇Arduino Yún,並點選產生憑證與協定(Generate certificate and policy),如圖 9-8所示。

8

圖  9-8 產生憑證與協定。

4. 完成後,下載憑證(Download certificate)以及私人金鑰(Download private key) 到您的電腦中,我們之後就會用到它們, 最後點選確認並開始連接(Confirm & start connecting),如圖 9-9所示。

9

圖  9-9 下載憑證與私人金鑰到電腦中。

5. 點選確認後您會看到AWS幫您產生的一段程式碼,如圖 9-10所示。請把它複製並存在一個文字檔中。這段程式碼定義了裝置、憑證以及協定的名稱,我們等下需要把這段程式加到Arduino的程式碼中。

10

圖  9-10  複製並儲存此段程式碼,之後將用在Arduino程式中。

參考資料

  • AWS IoT Developer Guide

http://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html

 

 

7688 Duo 與亞馬遜物聯網服務實作 (一):什麼是雲端服務?

從本篇我們將開始發布一系列的文章介紹如何結合 7688 Duo (或是 Arduino Yun)與亞馬遜物聯網服務。此系列的內容節錄自本團隊的將要出版的新書《7688 Duo 雲端應用手冊(暫定)》中,本書目前在校稿階段,最後出版內容可能會有些許不同。

本章我們將介紹如何結合7688 Duo以及亞馬遜雲端服務(Amazon Web Service, 簡稱AWS)。在前面的章節我們介紹了 MCS雲端服務,雖然MCS在設定與使用上都非常簡單快速,功能也非常豐富,然而與AWS相比,AWS則是包山包海。AWS不僅提供物聯網服務,還有其他各式各樣的服務,也因此,透過AWS,我們可以發展更多應用 。事實上,MCS就是以AWS為基礎開發出來的。接下來我們會先簡單介紹什麼是AWS、帶領您認識並使用AWS IoT的開發環境、以及如何讓AWS IoT與7688 溝通。

什麼是雲端服務?

無論您是在執行擁有數百萬行動使用者的照片共享應用程式,還是要為您業務的關鍵營運提供支援,「雲端」都可讓您快速存取靈活且成本低廉的 IT 資源。透過雲端運算,您無需預先在硬體投資巨額資金,然後花大量時間和精力來維護和管理這些硬體。反之,您可以精準佈建所需的類型和規模的運算資源,為您的新點子提供助力,或者協助您的 IT 部門運作。您可以借助雲端運算來即時存取所需的資源,且只需要為使用量付費。

雲端運算提供一種簡單的方式透過網路來存取伺服器、儲存、資料庫和各種應用程式服務。像 Amazon Web Services 這樣的雲端運算提供商,他們擁有和維護此類應用程式服務所需的硬體,而您只需要透過 Web 應用程式就可以佈建和使用所需的資源。

雲端運算有三種主要類型,通常分別稱為基礎設施即服務 (Infrastructure as a Service, IaaS)、平台即服務 (Platform as a Service, PaaS) 和軟體即服務 (Software as a Service, SaaS)。針對您的需求選擇正確的雲端運算類型,有助於您在繁重工作中取得良好平衡。

基礎設施即服務包含基本的雲端 IT 建構區塊,且通常能提供聯網功能、電腦 (可以是虛擬的,或是專屬的硬體) 及資料儲存空間的存取。基礎設施即服務可為您擁有最大彈性和最高層級管理控制的 IT 資源,且與目前許多 IT 部門和開發人員熟悉的現有資源最類似。平台即服務可讓公司與組織無須管理基礎設施 (通常是硬體和作業系統),並讓您能專注於應用程式的部署和管理。因為您不需要擔心執行應用程式時的資源採購、容量規劃、軟體維護、修補,或任何其他相關的繁重工作,所以能協助您更有效率地工作。軟體即服務可提供您由服務供應商執行和管理的完整產品。在大部分情況下,一般所說的軟體即服務指的是最終使用者應用程式。有了 SaaS 產品,您就不需要考慮如何維護服務或如何管理基礎設施;您只需要思考如何運用該特定軟體。最常見的 SaaS 應用程式範例就是網路電子郵件,您可以在該應用程式收發電子郵件,而不需管理電子郵件產品中額外的功能,或維護執行電子郵件程式的伺服器和作業系統。

亞馬遜雲端服務產品

  • AWS提供了各式各樣的雲端服務解決方案,主要有以下幾類:
  • 網站以及網路應用程式(Websites & Web Apps) • 行動服務(Mobile Services)
  • 備份、儲存以及封存服務(Backup, Storage, & Archive)
  • 巨量資料以及高效能運算(Big Data & High Performance Computing)
  • 財務金融服務(Financial Services)
  • 遊戲開發(Game Development)
  • 數位媒體(Digital Media)
  • 健保與生命科學(Healthcare & Life Sciences)
  • 商務應用(Business Apps)

在各個解決方案下,則包含許多不同的產品,圖9-1即為AWS所有雲端服務產品。由於AWS包含的內容非常廣泛,這裡我們就不一一介紹各個領域。您只需要知道個服務都可以互通有無,舉例來說,我們可以透過AWS IoT將IoT裝置的資料上傳,而在資料上傳後,則可以使用AWS的資料庫產品來儲存資料,或是高效能運算產品進行資料分析。

1

圖 9-1 AWS 提供的所有雲端服務產品一覽。

註冊帳號

在開始使用AWS IoT服務前,我們需要先註冊一個AWS帳號。請連至https://aws.amazon.com/,並點選「建立免費帳號(Create a Free Account)」,如圖9-2所示。您可以在畫面右上角切換語言為繁體中文,但是並不是所有的頁面都有中文版本。

2

圖 9-2 註冊一個AWS帳號。

接著您會進入登入畫面,如圖9-3所示。請點選「新使用者(I am a new user)」並登入(sign in),接下來只要照個畫面上的指示操作即可。

3

圖 9-3 登入AWS以建立帳號。

目前若您是一般使用者且沒有要開發商業應用,註冊帳號後的第一年免費(少數服務還是需要付費例如AWS Kinesis)。但是您仍要輸入您的信用卡資訊以啟用帳號。 註冊完帳號後,您即可登入AWS IoT的後台了,請將游標移至產品(Products),並點選AWS IoT,如圖 9-4 所示。

4

圖9-4 註冊完帳號後即可登入AWS IoT 後台。

亞馬遜物聯網服務(AWS IoT)

在正式開始體驗AWS IoT的各項功能前,先讓我們來瞭解一下其架構與背景。透過AWS IoT,物聯網裝置可以輕易地存取AWS雲,並與AWS各項雲端服務互動。常見的物聯網應用則包含收集以及處理各式遙測數據,與硬體的遠端控制等等。AWS IoT與物聯網裝置的互動可以透過 MQTT以及HTTP協定來進行,基本上是以MQTT為主。

在AWS IoT中,物聯網裝置透過上傳JSON格式的訊息至特定的MQTT主題以回報它們的狀態。因此,在上傳資料到AWS IoT時,請務必確保您的資料符合JSON格式,且上傳到正確的MQTT主題上。每個MQTT主題都具有一個階層式的名稱架構,用來表示AWS IoT元件 (Things) 的更新狀態,我們在後面的範例中即會看到這樣架構的實際應用。在這裡,AWS IoT元件並不是指實體的物聯網元件 (例如7688 Duo),AWS IoT元件是AWS所提供的服務,讓您的實體裝置可以跟AWS溝通。

當一個訊息被發布到一個MQTT主題上時,此訊息會先被AWS IoT 的 MQTT訊息仲介 (Message Broker) 所接收。這個訊息仲介的用途在於接收並轉發所有被發布到MQTT主題的訊息至全部有訂閱該主題的用戶端中。物聯網裝置與AWS 之間的連線是透過 X.509 憑證所保護。您可以使用自己的憑證,或是讓AWS IoT幫您產生憑證,而此憑證必須在AWS IoT上被註冊以及啟用,且附加到AWS IoT元件上,您的物聯網裝置將透過此憑證來與AWS IoT服務連線。關於元件的資訊以及憑證都會被儲存在該元件的目錄(Thing Registry) 中。

AWS IoT強大的地方在於您可以輕易地透過其規則引擎 (Rules Engine) 來結合亞馬遜所提供的其他雲端服務,以及將資料傳送到其他雲端裝置。舉例來說,您可以設立一個簡易的規則,將物聯網裝置所上傳到AWS IoT的資料轉存到亞馬遜的雲端資料庫 AWS DynamoDB 中,或是使用雲端運算服務AWS Lambda執行程式以分析資料,或是透過訊息服務AWS SNS傳送簡訊給手機回報裝置最新狀態。AWS IoT的規則引擎使用其專有的語法來過濾訊息,一旦物聯網裝置上傳的資料符合特定語法,就會執行相對應的動作。規則引擎本身也結合了亞馬遜的身份與存取管理服務 (Identity and Access Management, IAM),以保護整個過程的安全性。圖 9-5即為AWS IoT的架構圖。

5

圖9-5 AWS IoT 架構 (圖片取自http://docs.aws.amazon.com/)。

每個 AWS IoT 元件都具備一個元件映像 (Thing Shadow) 來讀取與儲存元件的狀態,其中狀態則包含應用程式所要求的狀態以及元件的上一個狀態。當一個應用程式對 AWS IoT 元件要求當前狀態時,元件映像會回傳一個含有元件狀態、註解、版本的 JSON 格式檔案給程式端。也就是說,一個應用程式可以透過要求改變AWS IoT元件的狀態來操控一個實體的物聯網元件。 AWS IoT 的元件映像會接收應用程式的要求、更新元件的狀態,並回傳一個訊息以讓用戶端確認狀態已被更新,而AWS IoT 元件也會同步更新。 讓我們舉一個實際應用的例子來進一步說明元件映像的功用。假設您的物聯網裝置是一個可以透過手機應用程式遙控的三色LED燈,也就是說,您可以透過手機控制燈光的顏色。當您產生一個相對應的 AWS IoT 元件後,其元件映像就會儲存此 LED 燈的狀態(在這裡就是燈的顏色) 。現在,假如您使用手機將燈光顏色設定為紅色,然後關掉 LED 的電源,接著再利用手機將燈光顏色改為綠色,接著打開電源,您會發現 LED 變為綠色而不是停留在紅色,即便您是在它沒有電時更改顏色。這就是元件映像的功用:即使您的實體物聯網元件沒有在運作,您仍可以使用應用程式改變元件的狀態,這時 AWS IoT上 的元件映像就會儲存此狀態,當您的實體裝置恢復運作後,元件映像就會與它更新最新的狀態。

小筆記:JSON

JSON 是”JavaScript Object Notation” 的縮寫,為一種用來統一資料與數據的文字格式,具有輕便以及易讀的特性。JSON格式的資料常用於網路應用程式與伺服器之間的溝通,是除了傳統的XML (Extensible Markup Language) 格式外的另一個選擇。

舉例來說,以下的JSON檔案範例描述了一間公司員工的姓名,包含一個物件「員工 (employees)」以及一個陣列「姓名 (firstName, lastName)」:

{"employees": [
    {"firstName":"John", "lastName":"Doe"},
    {"firstName":"Anna", "lastName":"Smith"},
    {"firstName":"Peter", "lastName":"Jones"}
]}

同樣的內容若是改寫成XML 則會具有以下的形式:

<employees>
    <employee>
        <firstName>John</firstName> <lastName>Doe</lastName>
    </employee>
    <employee>
        <firstName>Anna</firstName> <lastName>Smith</lastName>
    </employee>
    <employee>
        <firstName>Peter</firstName> <lastName>Jones</lastName>
    </employee>
</employees>

相比之下,JSON是否更加簡潔易讀呢?

參考資料

  • What is Cloud Computing?

https://aws.amazon.com/what-is-cloud-computing/?nc2=h_l2_cc

  • AWS IoT Developer Guide

http://docs.aws.amazon.com/iot/latest/developerguide/what-is-aws-iot.html

  •  What is JSON?

http://developers.squarespace.com/what-is-json/

[LabVIEW] 單字小幫手

以前小時候在背單字時,老師常常會建議學生做單字卡,然後現今科技進步,人手一隻智慧型手機,有許多技術也可以用在背單字上。以我為例,我喜歡用 Evernote 來整理單字,Evernote 就等於是我的數位單字卡,可以隨身攜帶且不占空間。

EvernoteEXAMPLE

 

筆者習慣用Evernote來協助記憶單字,左邊的圖取自 Homeroad.net.

在背單字時,我習慣加入一些例句,這樣會比較知道這個字要怎麼用,我通常會使用  Yahoo字典Cambridge 字典以及 Merriam-Webster 字典,然而在複製它們的註解或是例句到 Evernote 上時,會連格式一起複製,這樣看起來就很亂。

layout

從字典貼上文字時會連格式一起貼上,看起來很亂

雖然 Evernote 本身有去除格式的功能,但是除了要去掉格式外,我還需要在例句前面加上 – 的符號,且還要確保每一句都有句號(請參考第一張圖)。因此,我用 LabVIEW 寫了一個分析字串的程式,除了可以去除格式,它還會自動找出句子的開頭跟結尾(透過分析大小寫)來加上我要的符號。

VolPlusEx-e1373821904823

此程式可以去除格式並整理成我要的格式

程式的介面則如下圖:

VolPlusProgram

程式介面

在操作上,使用者只需要把例句貼到字串輸入欄中,並按下 OK,程式就會自動整理格式並複製到剪貼簿上,要利用LabVIEW實現複製到剪貼簿的功能,可以參考此討論串。同時還有一個欄位可以輸入同義字,也一樣會整理成我想要的格式。

最後附上此程式,有興趣的朋友們可以下載來玩玩看喔!

1. 複製到剪貼簿: http://ppt.cc/RbqW

2. 字串分析程式: http://ppt.cc/yCVc

PROGRAM_volplus

[DesignSpark PCB] 強大的免費PCB設計軟體-DesignSpark PCB

說到電路圖設計或電路板 (Printed circuit board, PCB) 設計軟體,也就是所謂的”電子設計自動化軟體 (Electronic design automation, EDA)”,大家會想到的或許是 Altium Designer,然而,這幾年電子元件公司 RS Components 推出了功能同樣強大的軟體 – DesignSpark PCB,而且還供使免費註冊使用。自 2010 年推出後,目前已有超過 160000 次的產品啟用,而且還在快速成長中。DesignSpark 另外還有 DesignSpark Mechanical,可用來設計 3D 零件,我們之後也會撰文介紹。

本篇說明如何安裝 DesignSpark,並啟用產品,步驟如下:

1. 到 DesignSpark PCB 的頁面,點選”DOWNLOAD DESIGNSPARK PCB”,如圖一所示。

downloadDS_PCB
圖一、下載DesignSPCB。

2. 下載完後點開安裝檔安裝,基本上一直按Next即可(圖二)。

InstallWizardDS_PCB
圖二、安裝過程很簡單,不太需要設定,一直按Next即可。

3. 安裝完後打開桌面捷徑,如果是初次安裝,開啟時會跳出要求啟用的視窗,如圖三所示。

ActivateRequestDS_PCB
圖三、初次安裝時,程式會要求您註冊並啟用。

4. 按Yes,瀏覽器會自動開啟並引導您至帳號創建的頁面,建立好使用者帳號後,系統會寄一封確認信給您,帳號啟用後,就可以接著啟用DesignSpark PCB,系統會寄序號(Serial Number)以及啟用碼(Activation code)至您的email信箱,如圖四所示。

ActivateDS_PCB
圖四、註冊並啟用帳號後,就可以接著啟用DesignSpark PCB。

至此就安裝完成了! 除了註冊啟用需要花一點時間外,其他程序都非常方便迅速。

最後,打開一個範例檔來看看是否一切順利,請在打開DesignSpark PCB後選擇畫面左上角File -> Open,路徑會自動導引到範例資料夾,您可以點選任意的檔案來測試,這裡我們則是選擇 ChipKitMax32 資料夾內的chipKIT Max32.pcb,如圖五所示。

Example_DS_PCB

圖五、開啟一個範例來確認是否可以正常執行。

是否很方便呢? 趕快也來安裝吧!

[作品分享] 居家防盜 – LabVIEW 動作偵測

跟各位分享一個之前用 LabVIEW 寫的小程式:居家防盜系統。

當初會寫這個程式主要是用來防範學校實驗室過年時被侵入,本程式透過讀取 webcam 影像,偵測畫面中是否有物體移動,若是有的話就會寄 email 到筆者的信箱,並附上照片。

由於相關的功能在網路上已經有非常多範例,所以在網路上大概搜尋一下就可以找到許多現成的工具,在 NI Developer Community 中,DOC-4717 這篇文章就說明如何實做將連續影像相減並偵測畫面中是否有物體在移動。這是動作偵測最簡單的方法之一,考慮到我的環境是在室內,而且過年期間本來就不會有人,所以也不需要再做人臉辨識之類的,因此這個範例程式就已經非常符合我的需求。若是環境是在室外,環境較為複雜,就沒有這麼容易了。

MDBlockDiagram

圖一  在 NI Developer Community 中,文章 DOC-4717  說明如何讀取webcam並相減連續影像以偵測動作。

另外一個實用的工具則是在文章 DOC-2041 中提到如何實做 Gmail 登入、附加檔案並傳送的程式。電子郵件是基於 Simple Mail Transfer Protocol (SMTP) 運作,而 LabVIEW 本身也有提供 SMTP 的指令,當初想說自己寫就好,後來才發現沒這麼簡單,LabVIEW 本身的指令並不直接支援需要帳號登入的 email 提供者,所以要在 LabVIEW 中呼叫 System.SmtpClient 這個 class 來用才行。好在也有人寫好了,所以我要做的就只有整理這些程式碼以符合我的需求而已。

gmail

圖二  DOC-2041 這篇文章則說明如何呼叫 System.SmtpClient 來實做 Gmail 應用。

結合這兩個程式,我設計了我自己的程式:LabSecurity,我使用的是羅技 C120 攝影機,當初購買時價錢為 500元。

C120

圖三  我使用羅技C120攝影機 (圖片出自 http://www.logitech.com/zh-tw/product/6065?crid=34)。

程式執行的流程為:迴圈中持續相減前後兩張影像,將相減的結果乘上一個增益值(gain),並設一個閾值(threshold),當計算結果超過閾值時,警報就會響起,同時攝影機會連拍20張相片,並將其中的第 1、5、15、20張照片寄到我的 Gmail 信箱,如下圖所示:

demo

圖四  偵測到入侵者後程式會將影像傳送到筆者的 Gmail。

以下則為實際的測試影片:


本文原文可至 http://robinhsieh.com/?p=345 閱讀。

Boston Dynamics 新作: WildCat

Boston Dynamics 日前在他們的 youtube 頻道上公布了幾個最新的影片,其中最引人注目的就是 WildCat 了。由原本的獵豹機器人發展而來,這個機器人可以獨自運作,而且速度非常快,還可以轉彎。影片才上傳三天觀看人數就已經突破700萬了,身為一個分類在”科學與技術”的影片,可以有這樣的點播率,實在是要非常厲害才有可能。

影片示範了兩種跑步的步態(gait),第一種是 “galloping” ,第二種是 “bounding”,前者是類似馬奔跑時的步態,後者則是獵豹等貓科動物衝刺時的步態,所以雖然說是  “Cat” 但是其實是有多種步態在裡面。